sw-plan 0.1.14 → 0.1.16
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/dist/cli.js +155 -251
- package/dist/cli.js.map +1 -1
- package/dist/compile2.d.ts +70 -0
- package/dist/compile2.d.ts.map +1 -0
- package/dist/compile2.js +408 -0
- package/dist/compile2.js.map +1 -0
- package/dist/docs.d.ts +31 -0
- package/dist/docs.d.ts.map +1 -0
- package/dist/docs.js +199 -0
- package/dist/docs.js.map +1 -0
- package/dist/index.d.ts +68 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +299 -0
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/README.md +0 -66
package/dist/docs.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docs.js","sourceRoot":"","sources":["../docs.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -220,4 +220,72 @@ export type PlanVerificationOutput = z.infer<typeof PlanVerificationOutputSchema
|
|
|
220
220
|
export type PlanNextStepsOutput = z.infer<typeof PlanNextStepsOutputSchema>;
|
|
221
221
|
export type SectionSummary = z.infer<typeof SectionSummarySchema>;
|
|
222
222
|
export type IntegrationPlan = z.infer<typeof IntegrationPlanSchema>;
|
|
223
|
+
export type Stage = 'start' | 'questions' | 'plan1' | 'plan2' | 'plan3' | 'complete';
|
|
224
|
+
export type InternalMessage = {
|
|
225
|
+
type: 'tool_call';
|
|
226
|
+
tool_name: string;
|
|
227
|
+
tool_params: any;
|
|
228
|
+
tool_use_id: string;
|
|
229
|
+
} | {
|
|
230
|
+
type: 'tool_result';
|
|
231
|
+
tool_use_id: string;
|
|
232
|
+
tool_response: string;
|
|
233
|
+
} | {
|
|
234
|
+
type: 'agent_response';
|
|
235
|
+
text: string;
|
|
236
|
+
} | {
|
|
237
|
+
type: 'status';
|
|
238
|
+
message: string;
|
|
239
|
+
} | {
|
|
240
|
+
type: 'questions';
|
|
241
|
+
questions: Question[];
|
|
242
|
+
} | {
|
|
243
|
+
type: 'plan';
|
|
244
|
+
plan: IntegrationPlan;
|
|
245
|
+
} | {
|
|
246
|
+
type: 'sdk_session';
|
|
247
|
+
sessionId: string;
|
|
248
|
+
} | {
|
|
249
|
+
type: 'stage';
|
|
250
|
+
stage: Stage;
|
|
251
|
+
} | {
|
|
252
|
+
type: 'progress';
|
|
253
|
+
message: string;
|
|
254
|
+
} | {
|
|
255
|
+
type: 'document_chunk';
|
|
256
|
+
content: string;
|
|
257
|
+
} | {
|
|
258
|
+
type: 'complete';
|
|
259
|
+
document: string;
|
|
260
|
+
};
|
|
261
|
+
/**
|
|
262
|
+
* Get the last written file path from Write tool calls
|
|
263
|
+
*/
|
|
264
|
+
export declare function getLastWrittenFilePath(): string | null;
|
|
265
|
+
/**
|
|
266
|
+
* Reset the last written file path (useful for new sessions)
|
|
267
|
+
*/
|
|
268
|
+
export declare function resetLastWrittenFilePath(): void;
|
|
269
|
+
/**
|
|
270
|
+
* Set the allowed session directory for write validation
|
|
271
|
+
*/
|
|
272
|
+
export declare function setAllowedSessionDir(dir: string): void;
|
|
273
|
+
/**
|
|
274
|
+
* Format internal message for display
|
|
275
|
+
*/
|
|
276
|
+
export declare function displayInternalMessage(msg: InternalMessage): void;
|
|
277
|
+
/**
|
|
278
|
+
* Run a stage with structured output (for questions)
|
|
279
|
+
*/
|
|
280
|
+
export declare function runStructuredStage<T>(prompt: string, schema: any, cwd: string, outputMode: 'json' | 'pretty', sessionId?: string): Promise<{
|
|
281
|
+
output: T;
|
|
282
|
+
sessionId: string;
|
|
283
|
+
}>;
|
|
284
|
+
/**
|
|
285
|
+
* Run a stage and collect text response (for plan generation)
|
|
286
|
+
*/
|
|
287
|
+
export declare function runTextStage(prompt: string, cwd: string, outputMode: 'json' | 'pretty', sessionId?: string): Promise<{
|
|
288
|
+
response: string;
|
|
289
|
+
sessionId: string;
|
|
290
|
+
}>;
|
|
223
291
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -3,7 +3,10 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Exports schemas and types for integration planning.
|
|
5
5
|
*/
|
|
6
|
+
import { query } from '@anthropic-ai/claude-agent-sdk';
|
|
6
7
|
import { z } from 'zod';
|
|
8
|
+
import zodToJsonSchema from 'zod-to-json-schema';
|
|
9
|
+
import { resolve as pathResolve } from 'path';
|
|
7
10
|
// Define the schema for questions
|
|
8
11
|
export const QuestionSchema = z.object({
|
|
9
12
|
question: z.string(),
|
|
@@ -65,4 +68,300 @@ export const IntegrationPlanSchema = z.object({
|
|
|
65
68
|
nextSteps: z.string()
|
|
66
69
|
})
|
|
67
70
|
});
|
|
71
|
+
// Track active tool calls to match with results
|
|
72
|
+
const activeToolCalls = new Map();
|
|
73
|
+
// Track written file paths from Write tool calls
|
|
74
|
+
let lastWrittenFilePath = null;
|
|
75
|
+
// Track allowed session directory for write validation
|
|
76
|
+
let allowedSessionDir = null;
|
|
77
|
+
/**
|
|
78
|
+
* Get the last written file path from Write tool calls
|
|
79
|
+
*/
|
|
80
|
+
export function getLastWrittenFilePath() {
|
|
81
|
+
return lastWrittenFilePath;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Reset the last written file path (useful for new sessions)
|
|
85
|
+
*/
|
|
86
|
+
export function resetLastWrittenFilePath() {
|
|
87
|
+
lastWrittenFilePath = null;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Set the allowed session directory for write validation
|
|
91
|
+
*/
|
|
92
|
+
export function setAllowedSessionDir(dir) {
|
|
93
|
+
allowedSessionDir = dir;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Validate that a file path is within the allowed session directory
|
|
97
|
+
*/
|
|
98
|
+
function validateFilePath(filePath) {
|
|
99
|
+
if (!allowedSessionDir) {
|
|
100
|
+
// No restriction set, allow all paths
|
|
101
|
+
return true;
|
|
102
|
+
}
|
|
103
|
+
// Normalize paths for comparison
|
|
104
|
+
const normalizedFilePath = pathResolve(filePath);
|
|
105
|
+
const normalizedSessionDir = pathResolve(allowedSessionDir);
|
|
106
|
+
// Check if file path is within session directory
|
|
107
|
+
const isWithinSession = normalizedFilePath.startsWith(normalizedSessionDir);
|
|
108
|
+
if (!isWithinSession) {
|
|
109
|
+
console.error(`[WRITE VALIDATION ERROR] Attempted to write outside session directory!`);
|
|
110
|
+
console.error(` File path: ${normalizedFilePath}`);
|
|
111
|
+
console.error(` Allowed directory: ${normalizedSessionDir}`);
|
|
112
|
+
}
|
|
113
|
+
return isWithinSession;
|
|
114
|
+
}
|
|
115
|
+
function getMCPServersConfig() {
|
|
116
|
+
return {
|
|
117
|
+
"context7": {
|
|
118
|
+
type: "http",
|
|
119
|
+
url: "https://mcp.context7.com/mcp",
|
|
120
|
+
headers: {
|
|
121
|
+
"CONTEXT7_API_KEY": process.env.CONTEXT7_API_KEY || "",
|
|
122
|
+
},
|
|
123
|
+
},
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
function getAllowedTools() {
|
|
127
|
+
return ['Read', 'Write', 'Glob', 'Grep', 'mcp__context7__resolve-library-id', 'mcp__context7__get-library-docs'];
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Parse SDK messages into internal format
|
|
131
|
+
*/
|
|
132
|
+
function parseSDKMessage(message) {
|
|
133
|
+
const results = [];
|
|
134
|
+
switch (message.type) {
|
|
135
|
+
case 'stream_event':
|
|
136
|
+
const event = message.event;
|
|
137
|
+
if (event.type === 'content_block_delta') {
|
|
138
|
+
const delta = event.delta;
|
|
139
|
+
if (delta.type === 'text_delta') {
|
|
140
|
+
results.push({ type: 'agent_response', text: delta.text });
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
break;
|
|
144
|
+
case 'user':
|
|
145
|
+
if (!message.isSynthetic) {
|
|
146
|
+
const content = message.message.content;
|
|
147
|
+
if (Array.isArray(content)) {
|
|
148
|
+
for (const block of content) {
|
|
149
|
+
if (block.type === 'tool_result') {
|
|
150
|
+
const response = typeof block.content === 'string'
|
|
151
|
+
? block.content
|
|
152
|
+
: JSON.stringify(block.content);
|
|
153
|
+
results.push({ type: 'tool_result', tool_use_id: block.tool_use_id, tool_response: response });
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
break;
|
|
159
|
+
case 'assistant':
|
|
160
|
+
if (message.message.content) {
|
|
161
|
+
for (const block of message.message.content) {
|
|
162
|
+
if (block.type === 'tool_use') {
|
|
163
|
+
activeToolCalls.set(block.id, { tool_name: block.name, tool_params: block.input });
|
|
164
|
+
results.push({ type: 'tool_call', tool_name: block.name, tool_params: block.input, tool_use_id: block.id });
|
|
165
|
+
// Capture and validate file path from Write tool calls
|
|
166
|
+
if (block.name === 'Write' && block.input && typeof block.input === 'object' && 'file_path' in block.input) {
|
|
167
|
+
const filePath = block.input.file_path;
|
|
168
|
+
lastWrittenFilePath = filePath;
|
|
169
|
+
// Validate that write is within allowed session directory
|
|
170
|
+
validateFilePath(filePath);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
else if (block.type === 'text') {
|
|
174
|
+
results.push({ type: 'agent_response', text: block.text });
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
break;
|
|
179
|
+
case 'system':
|
|
180
|
+
if (message.subtype === 'init') {
|
|
181
|
+
results.push({ type: 'status', message: `Session started (model: ${message.model})` });
|
|
182
|
+
}
|
|
183
|
+
else if (message.subtype === 'status' && message.status) {
|
|
184
|
+
results.push({ type: 'status', message: `Status: ${message.status}...` });
|
|
185
|
+
}
|
|
186
|
+
break;
|
|
187
|
+
}
|
|
188
|
+
return results;
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Format internal message for display
|
|
192
|
+
*/
|
|
193
|
+
export function displayInternalMessage(msg) {
|
|
194
|
+
switch (msg.type) {
|
|
195
|
+
case 'tool_call':
|
|
196
|
+
const paramsStr = JSON.stringify(msg.tool_params).substring(0, 80);
|
|
197
|
+
console.error(`Tool call: ${msg.tool_name}(${paramsStr}${JSON.stringify(msg.tool_params).length > 80 ? '...' : ''})`);
|
|
198
|
+
break;
|
|
199
|
+
case 'tool_result':
|
|
200
|
+
const toolCall = activeToolCalls.get(msg.tool_use_id);
|
|
201
|
+
const toolName = toolCall ? toolCall.tool_name : 'unknown';
|
|
202
|
+
const size = msg.tool_response.length;
|
|
203
|
+
console.error(`Tool result: ${toolName} -> ${size} bytes`);
|
|
204
|
+
// Debug: Print full StructuredOutput content
|
|
205
|
+
if (toolName === 'StructuredOutput') {
|
|
206
|
+
console.error(`[DEBUG] StructuredOutput full response:\n'${msg.tool_response}'`);
|
|
207
|
+
}
|
|
208
|
+
activeToolCalls.delete(msg.tool_use_id);
|
|
209
|
+
break;
|
|
210
|
+
case 'agent_response':
|
|
211
|
+
console.error(`Agent message: ${msg.text}`);
|
|
212
|
+
break;
|
|
213
|
+
case 'status':
|
|
214
|
+
console.error(msg.message);
|
|
215
|
+
break;
|
|
216
|
+
case 'questions':
|
|
217
|
+
console.error(`\n[Received ${msg.questions.length} questions from agent]`);
|
|
218
|
+
break;
|
|
219
|
+
case 'plan':
|
|
220
|
+
console.error(`\n[Generated ${msg.plan.difficulty} plan: ${msg.plan.title}]`);
|
|
221
|
+
break;
|
|
222
|
+
case 'stage':
|
|
223
|
+
console.error(`\n[Stage: ${msg.stage}]`);
|
|
224
|
+
break;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Run a stage with structured output (for questions)
|
|
229
|
+
*/
|
|
230
|
+
export async function runStructuredStage(prompt, schema, cwd, outputMode, sessionId) {
|
|
231
|
+
const jsonSchema = zodToJsonSchema(schema, {
|
|
232
|
+
$refStrategy: 'none',
|
|
233
|
+
target: 'jsonSchema7'
|
|
234
|
+
});
|
|
235
|
+
const result = query({
|
|
236
|
+
prompt,
|
|
237
|
+
options: {
|
|
238
|
+
cwd,
|
|
239
|
+
model: 'haiku',
|
|
240
|
+
settingSources: [],
|
|
241
|
+
mcpServers: getMCPServersConfig(),
|
|
242
|
+
maxTurns: 30,
|
|
243
|
+
allowedTools: getAllowedTools(),
|
|
244
|
+
outputFormat: {
|
|
245
|
+
type: 'json_schema',
|
|
246
|
+
schema: jsonSchema
|
|
247
|
+
},
|
|
248
|
+
resume: sessionId
|
|
249
|
+
}
|
|
250
|
+
});
|
|
251
|
+
let capturedSessionId = sessionId || '';
|
|
252
|
+
let structuredOutput = null;
|
|
253
|
+
let sessionIdOutputted = false;
|
|
254
|
+
for await (const message of result) {
|
|
255
|
+
if ('session_id' in message && message.session_id) {
|
|
256
|
+
const newSessionId = message.session_id;
|
|
257
|
+
// Only output if session ID changed or first time
|
|
258
|
+
if (capturedSessionId !== newSessionId) {
|
|
259
|
+
capturedSessionId = newSessionId;
|
|
260
|
+
// Output SDK session ID as internal message (once per new session)
|
|
261
|
+
if (outputMode === 'json' && !sessionIdOutputted) {
|
|
262
|
+
console.log(JSON.stringify({ type: 'sdk_session', sessionId: capturedSessionId }));
|
|
263
|
+
sessionIdOutputted = true;
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
if (message.type === 'result' && message.subtype === 'success') {
|
|
268
|
+
if (message.structured_output) {
|
|
269
|
+
structuredOutput = message.structured_output;
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
// Parse and display messages
|
|
273
|
+
const internalMsgs = parseSDKMessage(message);
|
|
274
|
+
if (outputMode === 'json') {
|
|
275
|
+
// In JSON mode, output internal messages as JSON to stdout
|
|
276
|
+
for (const internalMsg of internalMsgs) {
|
|
277
|
+
console.log(JSON.stringify(internalMsg));
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
else {
|
|
281
|
+
// In pretty mode, display to stderr
|
|
282
|
+
for (const internalMsg of internalMsgs) {
|
|
283
|
+
displayInternalMessage(internalMsg);
|
|
284
|
+
}
|
|
285
|
+
if (message.type === 'result') {
|
|
286
|
+
if (message.subtype === 'success') {
|
|
287
|
+
console.error(`\nStage complete (${message.num_turns} turns, $${message.total_cost_usd.toFixed(4)})`);
|
|
288
|
+
}
|
|
289
|
+
else {
|
|
290
|
+
console.error(`[ERROR] Agent returned error subtype: ${message.subtype}`);
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
if (!structuredOutput) {
|
|
296
|
+
console.error('[WARNING] No structured output received from agent - returning empty object');
|
|
297
|
+
// Return empty object instead of throwing to allow fallback handling
|
|
298
|
+
return { output: {}, sessionId: capturedSessionId };
|
|
299
|
+
}
|
|
300
|
+
return { output: structuredOutput, sessionId: capturedSessionId };
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* Run a stage and collect text response (for plan generation)
|
|
304
|
+
*/
|
|
305
|
+
export async function runTextStage(prompt, cwd, outputMode, sessionId) {
|
|
306
|
+
const result = query({
|
|
307
|
+
prompt,
|
|
308
|
+
options: {
|
|
309
|
+
cwd,
|
|
310
|
+
model: 'haiku',
|
|
311
|
+
mcpServers: getMCPServersConfig(),
|
|
312
|
+
settingSources: [],
|
|
313
|
+
maxTurns: 30,
|
|
314
|
+
allowedTools: getAllowedTools(),
|
|
315
|
+
resume: sessionId
|
|
316
|
+
}
|
|
317
|
+
});
|
|
318
|
+
let capturedSessionId = sessionId || '';
|
|
319
|
+
let responseText = '';
|
|
320
|
+
let sessionIdOutputted = false;
|
|
321
|
+
for await (const message of result) {
|
|
322
|
+
if ('session_id' in message && message.session_id) {
|
|
323
|
+
const newSessionId = message.session_id;
|
|
324
|
+
// Only output if session ID changed or first time
|
|
325
|
+
if (capturedSessionId !== newSessionId) {
|
|
326
|
+
capturedSessionId = newSessionId;
|
|
327
|
+
// Output SDK session ID as internal message (once per new session)
|
|
328
|
+
if (outputMode === 'json' && !sessionIdOutputted) {
|
|
329
|
+
console.log(JSON.stringify({ type: 'sdk_session', sessionId: capturedSessionId }));
|
|
330
|
+
sessionIdOutputted = true;
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
// Collect text from assistant messages
|
|
335
|
+
if (message.type === 'assistant') {
|
|
336
|
+
for (const block of message.message.content) {
|
|
337
|
+
if (block.type === 'text') {
|
|
338
|
+
responseText += block.text;
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
// Parse and display messages
|
|
343
|
+
const internalMsgs = parseSDKMessage(message);
|
|
344
|
+
if (outputMode === 'json') {
|
|
345
|
+
// In JSON mode, output internal messages as JSON to stdout
|
|
346
|
+
for (const internalMsg of internalMsgs) {
|
|
347
|
+
console.log(JSON.stringify(internalMsg));
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
else {
|
|
351
|
+
// In pretty mode, display to stderr
|
|
352
|
+
for (const internalMsg of internalMsgs) {
|
|
353
|
+
displayInternalMessage(internalMsg);
|
|
354
|
+
}
|
|
355
|
+
if (message.type === 'result') {
|
|
356
|
+
if (message.subtype === 'success') {
|
|
357
|
+
console.error(`\nStage complete (${message.num_turns} turns, $${message.total_cost_usd.toFixed(4)})`);
|
|
358
|
+
}
|
|
359
|
+
else {
|
|
360
|
+
console.error(`[ERROR] Agent returned error subtype: ${message.subtype}`);
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
return { response: responseText, sessionId: capturedSessionId };
|
|
366
|
+
}
|
|
68
367
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sw-plan",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.16",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "CLI tool for running integration planner in sandbox",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
".": "./dist/index.js"
|
|
16
16
|
},
|
|
17
17
|
"scripts": {
|
|
18
|
-
"build": "cd
|
|
18
|
+
"build": "cd ../sourcewizard/ && bun run build && cd ../sw-plan && tsc",
|
|
19
19
|
"dev": "bun run build && node ./dist/cli.js"
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
package/README.md
DELETED
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
# Planner CLI
|
|
2
|
-
|
|
3
|
-
A standalone CLI tool for generating integration plans for software projects using Claude Agent SDK.
|
|
4
|
-
|
|
5
|
-
## Overview
|
|
6
|
-
|
|
7
|
-
This CLI runs inside a git repository and uses Claude's Agent SDK to:
|
|
8
|
-
|
|
9
|
-
1. **Analyze the codebase** - Explores project structure, dependencies, and patterns
|
|
10
|
-
2. **Ask clarifying questions** - Gathers requirements about the integration
|
|
11
|
-
3. **Generate three integration plans** - Provides Easy, Medium, and Hard difficulty options
|
|
12
|
-
|
|
13
|
-
## Usage
|
|
14
|
-
|
|
15
|
-
The CLI is designed to run in sandboxed environments (like Vercel Sandbox) where it can safely analyze codebases.
|
|
16
|
-
|
|
17
|
-
```bash
|
|
18
|
-
planner-cli '{"integration": "Stripe", "apiKey": "sk-...", "jsonSchema": {...}, ...}'
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
### Parameters
|
|
22
|
-
|
|
23
|
-
The CLI expects a JSON string with the following parameters:
|
|
24
|
-
|
|
25
|
-
- `integration` (required): The name of the integration (e.g., "Stripe", "Supabase")
|
|
26
|
-
- `apiKey` (required): Anthropic API key for Claude
|
|
27
|
-
- `jsonSchema` (required): JSON Schema defining the expected output structure
|
|
28
|
-
- `projectContext` (optional): Pre-analyzed project context
|
|
29
|
-
- `clarifications` (optional): User answers to clarifying questions
|
|
30
|
-
- `conversationHistory` (optional): Previous conversation messages for continuation
|
|
31
|
-
- `cwd` (optional): Working directory (defaults to current directory)
|
|
32
|
-
|
|
33
|
-
### Output
|
|
34
|
-
|
|
35
|
-
The CLI outputs JSON lines to stdout:
|
|
36
|
-
|
|
37
|
-
```json
|
|
38
|
-
{"type":"assistant","message":{...}}
|
|
39
|
-
{"type":"tool_use","message":{...}}
|
|
40
|
-
{"type":"result","structured_output":{...}}
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
## Development
|
|
44
|
-
|
|
45
|
-
### Build
|
|
46
|
-
|
|
47
|
-
```bash
|
|
48
|
-
pnpm build
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
### Type Check
|
|
52
|
-
|
|
53
|
-
```bash
|
|
54
|
-
pnpm run dev # Watch mode
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
## Architecture
|
|
58
|
-
|
|
59
|
-
- **src/index.ts** - Main CLI entry point
|
|
60
|
-
- Runs in sandbox environments with Claude Agent SDK
|
|
61
|
-
- Outputs structured JSON for easy parsing by parent processes
|
|
62
|
-
- Uses Claude's tool use capabilities (Read, Write, Glob, Grep) for codebase analysis
|
|
63
|
-
|
|
64
|
-
## Integration
|
|
65
|
-
|
|
66
|
-
This CLI is compiled and injected into sandbox environments by the parent planner application. The compilation is handled by `compile-sandbox-runner.ts` using esbuild.
|