@kosuke-ai/cli 0.0.44 ā 0.0.45
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 +94 -1
- package/claude.costs.json +34 -0
- package/dist/index.js +27 -0
- package/dist/index.js.map +1 -1
- package/dist/kosuke/commands/build.d.ts +5 -1
- package/dist/kosuke/commands/build.d.ts.map +1 -1
- package/dist/kosuke/commands/build.js +297 -3
- package/dist/kosuke/commands/build.js.map +1 -1
- package/dist/kosuke/commands/migrate.d.ts +6 -1
- package/dist/kosuke/commands/migrate.d.ts.map +1 -1
- package/dist/kosuke/commands/migrate.js +124 -37
- package/dist/kosuke/commands/migrate.js.map +1 -1
- package/dist/kosuke/commands/plan.d.ts +4 -20
- package/dist/kosuke/commands/plan.d.ts.map +1 -1
- package/dist/kosuke/commands/plan.js +471 -679
- package/dist/kosuke/commands/plan.js.map +1 -1
- package/dist/kosuke/commands/requirements.js +2 -2
- package/dist/kosuke/commands/requirements.js.map +1 -1
- package/dist/kosuke/commands/review.d.ts +6 -1
- package/dist/kosuke/commands/review.d.ts.map +1 -1
- package/dist/kosuke/commands/review.js +168 -68
- package/dist/kosuke/commands/review.js.map +1 -1
- package/dist/kosuke/commands/serve.d.ts +9 -0
- package/dist/kosuke/commands/serve.d.ts.map +1 -0
- package/dist/kosuke/commands/serve.js +17 -0
- package/dist/kosuke/commands/serve.js.map +1 -0
- package/dist/kosuke/commands/ship.d.ts +6 -1
- package/dist/kosuke/commands/ship.d.ts.map +1 -1
- package/dist/kosuke/commands/ship.js +226 -67
- package/dist/kosuke/commands/ship.js.map +1 -1
- package/dist/kosuke/commands/test.d.ts +6 -1
- package/dist/kosuke/commands/test.d.ts.map +1 -1
- package/dist/kosuke/commands/test.js +171 -73
- package/dist/kosuke/commands/test.js.map +1 -1
- package/dist/kosuke/commands/tickets.d.ts +7 -15
- package/dist/kosuke/commands/tickets.d.ts.map +1 -1
- package/dist/kosuke/commands/tickets.js +14 -58
- package/dist/kosuke/commands/tickets.js.map +1 -1
- package/dist/kosuke/serve/middleware/error-handler.d.ts +13 -0
- package/dist/kosuke/serve/middleware/error-handler.d.ts.map +1 -0
- package/dist/kosuke/serve/middleware/error-handler.js +34 -0
- package/dist/kosuke/serve/middleware/error-handler.js.map +1 -0
- package/dist/kosuke/serve/middleware/validation.d.ts +13 -0
- package/dist/kosuke/serve/middleware/validation.d.ts.map +1 -0
- package/dist/kosuke/serve/middleware/validation.js +39 -0
- package/dist/kosuke/serve/middleware/validation.js.map +1 -0
- package/dist/kosuke/serve/routes/build.d.ts +6 -0
- package/dist/kosuke/serve/routes/build.d.ts.map +1 -0
- package/dist/kosuke/serve/routes/build.js +224 -0
- package/dist/kosuke/serve/routes/build.js.map +1 -0
- package/dist/kosuke/serve/routes/health.d.ts +6 -0
- package/dist/kosuke/serve/routes/health.d.ts.map +1 -0
- package/dist/kosuke/serve/routes/health.js +11 -0
- package/dist/kosuke/serve/routes/health.js.map +1 -0
- package/dist/kosuke/serve/routes/plan.d.ts +6 -0
- package/dist/kosuke/serve/routes/plan.d.ts.map +1 -0
- package/dist/kosuke/serve/routes/plan.js +104 -0
- package/dist/kosuke/serve/routes/plan.js.map +1 -0
- package/dist/kosuke/serve/server.d.ts +16 -0
- package/dist/kosuke/serve/server.d.ts.map +1 -0
- package/dist/kosuke/serve/server.js +63 -0
- package/dist/kosuke/serve/server.js.map +1 -0
- package/dist/kosuke/serve/validation/build.d.ts +41 -0
- package/dist/kosuke/serve/validation/build.d.ts.map +1 -0
- package/dist/kosuke/serve/validation/build.js +20 -0
- package/dist/kosuke/serve/validation/build.js.map +1 -0
- package/dist/kosuke/serve/validation/plan.d.ts +26 -0
- package/dist/kosuke/serve/validation/plan.d.ts.map +1 -0
- package/dist/kosuke/serve/validation/plan.js +15 -0
- package/dist/kosuke/serve/validation/plan.js.map +1 -0
- package/dist/kosuke/types.d.ts +205 -0
- package/dist/kosuke/types.d.ts.map +1 -1
- package/dist/kosuke/utils/claude-agent.d.ts +82 -6
- package/dist/kosuke/utils/claude-agent.d.ts.map +1 -1
- package/dist/kosuke/utils/claude-agent.js +381 -180
- package/dist/kosuke/utils/claude-agent.js.map +1 -1
- package/dist/lib.d.ts +4 -4
- package/dist/lib.d.ts.map +1 -1
- package/dist/lib.js +2 -1
- package/dist/lib.js.map +1 -1
- package/dist/package.json +6 -2
- package/package.json +6 -2
|
@@ -25,9 +25,9 @@
|
|
|
25
25
|
*/
|
|
26
26
|
import { existsSync, statSync } from 'fs';
|
|
27
27
|
import { resolve } from 'path';
|
|
28
|
-
import { formatCostBreakdown,
|
|
28
|
+
import { formatCostBreakdown, logAssistantMessage, logToolUsage, runAgentStream, } from '../utils/claude-agent.js';
|
|
29
29
|
import { runComprehensiveLinting } from '../utils/validator.js';
|
|
30
|
-
import {
|
|
30
|
+
import { reviewCoreStream } from './review.js';
|
|
31
31
|
/**
|
|
32
32
|
* Validate ticket data has all required fields
|
|
33
33
|
*/
|
|
@@ -94,29 +94,66 @@ ${ticket.description}
|
|
|
94
94
|
Begin by exploring the current codebase, then implement the ticket systematically.`;
|
|
95
95
|
}
|
|
96
96
|
/**
|
|
97
|
-
*
|
|
98
|
-
* Implements a ticket without managing its lifecycle (status updates, etc.)
|
|
97
|
+
* Streaming version of shipCore - yields events for SSE integration
|
|
99
98
|
*/
|
|
100
|
-
export async function
|
|
99
|
+
export async function* shipCoreStream(options) {
|
|
101
100
|
// Validate ticket data
|
|
102
|
-
|
|
101
|
+
try {
|
|
102
|
+
validateTicketData(options.ticketData);
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
106
|
+
yield {
|
|
107
|
+
type: 'done',
|
|
108
|
+
data: {
|
|
109
|
+
success: false,
|
|
110
|
+
implementationFixCount: 0,
|
|
111
|
+
lintFixCount: 0,
|
|
112
|
+
reviewFixCount: 0,
|
|
113
|
+
tokensUsed: { input: 0, output: 0, cacheCreation: 0, cacheRead: 0 },
|
|
114
|
+
cost: 0,
|
|
115
|
+
error: errorMessage,
|
|
116
|
+
},
|
|
117
|
+
};
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
103
120
|
const ticket = options.ticketData;
|
|
104
121
|
const { review = false, directory, dbUrl = 'postgres://postgres:postgres@localhost:5432/postgres', } = options;
|
|
105
122
|
// 1. Validate and resolve directory
|
|
106
123
|
const cwd = directory ? resolve(directory) : process.cwd();
|
|
107
124
|
if (directory) {
|
|
108
125
|
if (!existsSync(cwd)) {
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
126
|
+
yield {
|
|
127
|
+
type: 'done',
|
|
128
|
+
data: {
|
|
129
|
+
success: false,
|
|
130
|
+
implementationFixCount: 0,
|
|
131
|
+
lintFixCount: 0,
|
|
132
|
+
reviewFixCount: 0,
|
|
133
|
+
tokensUsed: { input: 0, output: 0, cacheCreation: 0, cacheRead: 0 },
|
|
134
|
+
cost: 0,
|
|
135
|
+
error: `Directory not found: ${cwd}`,
|
|
136
|
+
},
|
|
137
|
+
};
|
|
138
|
+
return;
|
|
112
139
|
}
|
|
113
140
|
const stats = statSync(cwd);
|
|
114
141
|
if (!stats.isDirectory()) {
|
|
115
|
-
|
|
142
|
+
yield {
|
|
143
|
+
type: 'done',
|
|
144
|
+
data: {
|
|
145
|
+
success: false,
|
|
146
|
+
implementationFixCount: 0,
|
|
147
|
+
lintFixCount: 0,
|
|
148
|
+
reviewFixCount: 0,
|
|
149
|
+
tokensUsed: { input: 0, output: 0, cacheCreation: 0, cacheRead: 0 },
|
|
150
|
+
cost: 0,
|
|
151
|
+
error: `Path is not a directory: ${cwd}`,
|
|
152
|
+
},
|
|
153
|
+
};
|
|
154
|
+
return;
|
|
116
155
|
}
|
|
117
|
-
console.log(`š Using project directory: ${cwd}\n`);
|
|
118
156
|
}
|
|
119
|
-
console.log(`š Implementing ticket: ${ticket.id} - ${ticket.title}\n`);
|
|
120
157
|
// Determine ticket type
|
|
121
158
|
const isSchemaTicket = ticket.id.toUpperCase().startsWith('SCHEMA-');
|
|
122
159
|
// Track metrics
|
|
@@ -127,89 +164,211 @@ export async function shipCore(options) {
|
|
|
127
164
|
let totalCost = 0;
|
|
128
165
|
let implementationFixCount = 0;
|
|
129
166
|
let reviewFixCount = 0;
|
|
167
|
+
let lintFixCount = 0;
|
|
130
168
|
try {
|
|
131
169
|
// 2. Implementation phase
|
|
132
|
-
|
|
133
|
-
console.log(`š Phase 1: Implementation`);
|
|
134
|
-
console.log(`${'='.repeat(60)}\n`);
|
|
170
|
+
yield { type: 'phase', data: { phase: 'implementation', status: 'started' } };
|
|
135
171
|
const systemPrompt = buildImplementationPrompt(ticket, dbUrl);
|
|
136
|
-
const
|
|
172
|
+
const implementationStream = runAgentStream(`Implement ticket ${ticket.id}: ${ticket.title}`, {
|
|
137
173
|
systemPrompt,
|
|
138
174
|
cwd,
|
|
139
175
|
maxTurns: 40,
|
|
140
176
|
verbosity: 'normal',
|
|
141
177
|
});
|
|
178
|
+
let implementationResult = null;
|
|
179
|
+
// Yield events from implementation stream
|
|
180
|
+
for await (const event of implementationStream) {
|
|
181
|
+
if (event.type === 'message') {
|
|
182
|
+
yield { type: 'message', data: event.data };
|
|
183
|
+
}
|
|
184
|
+
else if (event.type === 'agent_result') {
|
|
185
|
+
implementationResult = event.data;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
if (!implementationResult) {
|
|
189
|
+
throw new Error('Implementation stream ended without result');
|
|
190
|
+
}
|
|
142
191
|
implementationFixCount = implementationResult.fixCount;
|
|
143
|
-
totalInputTokens
|
|
144
|
-
totalOutputTokens
|
|
145
|
-
totalCacheCreationTokens
|
|
146
|
-
totalCacheReadTokens
|
|
147
|
-
totalCost
|
|
148
|
-
|
|
149
|
-
|
|
192
|
+
totalInputTokens = implementationResult.tokensUsed.input;
|
|
193
|
+
totalOutputTokens = implementationResult.tokensUsed.output;
|
|
194
|
+
totalCacheCreationTokens = implementationResult.tokensUsed.cacheCreation;
|
|
195
|
+
totalCacheReadTokens = implementationResult.tokensUsed.cacheRead;
|
|
196
|
+
totalCost = implementationResult.cost;
|
|
197
|
+
yield {
|
|
198
|
+
type: 'phase',
|
|
199
|
+
data: {
|
|
200
|
+
phase: 'implementation',
|
|
201
|
+
status: 'completed',
|
|
202
|
+
result: {
|
|
203
|
+
implementationFixCount,
|
|
204
|
+
tokensUsed: {
|
|
205
|
+
input: totalInputTokens,
|
|
206
|
+
output: totalOutputTokens,
|
|
207
|
+
cacheCreation: totalCacheCreationTokens,
|
|
208
|
+
cacheRead: totalCacheReadTokens,
|
|
209
|
+
},
|
|
210
|
+
cost: totalCost,
|
|
211
|
+
},
|
|
212
|
+
},
|
|
213
|
+
};
|
|
150
214
|
// 3. Linting phase
|
|
151
|
-
|
|
152
|
-
console.log(`š§ Phase 2: Linting & Quality Checks`);
|
|
153
|
-
console.log(`${'='.repeat(60)}\n`);
|
|
215
|
+
yield { type: 'phase', data: { phase: 'linting', status: 'started' } };
|
|
154
216
|
const lintResult = await runComprehensiveLinting(cwd);
|
|
155
|
-
|
|
217
|
+
lintFixCount = lintResult.fixCount;
|
|
218
|
+
yield {
|
|
219
|
+
type: 'phase',
|
|
220
|
+
data: { phase: 'linting', status: 'completed', result: { lintFixCount } },
|
|
221
|
+
};
|
|
156
222
|
// 4. Review phase (if review flag is set) - SKIP for SCHEMA tickets
|
|
157
223
|
if (review && !isSchemaTicket) {
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
const reviewResult = await reviewCore({
|
|
224
|
+
yield { type: 'phase', data: { phase: 'review', status: 'started' } };
|
|
225
|
+
// Stream review events
|
|
226
|
+
for await (const event of reviewCoreStream({
|
|
162
227
|
directory: cwd,
|
|
163
228
|
context: {
|
|
164
229
|
ticketId: ticket.id,
|
|
165
230
|
ticketTitle: ticket.title,
|
|
166
231
|
ticketDescription: ticket.description,
|
|
167
232
|
},
|
|
168
|
-
})
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
233
|
+
})) {
|
|
234
|
+
if (event.type === 'message') {
|
|
235
|
+
yield { type: 'message', data: event.data };
|
|
236
|
+
}
|
|
237
|
+
else if (event.type === 'done') {
|
|
238
|
+
const reviewResult = event.data;
|
|
239
|
+
reviewFixCount = reviewResult.fixesApplied;
|
|
240
|
+
totalInputTokens += reviewResult.tokensUsed.input;
|
|
241
|
+
totalOutputTokens += reviewResult.tokensUsed.output;
|
|
242
|
+
totalCacheCreationTokens += reviewResult.tokensUsed.cacheCreation;
|
|
243
|
+
totalCacheReadTokens += reviewResult.tokensUsed.cacheRead;
|
|
244
|
+
totalCost += reviewResult.cost;
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
yield {
|
|
248
|
+
type: 'phase',
|
|
249
|
+
data: { phase: 'review', status: 'completed', result: { reviewFixCount } },
|
|
250
|
+
};
|
|
179
251
|
}
|
|
180
252
|
// 5. Return success result
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
253
|
+
yield {
|
|
254
|
+
type: 'done',
|
|
255
|
+
data: {
|
|
256
|
+
success: true,
|
|
257
|
+
implementationFixCount,
|
|
258
|
+
lintFixCount,
|
|
259
|
+
reviewFixCount,
|
|
260
|
+
tokensUsed: {
|
|
261
|
+
input: totalInputTokens,
|
|
262
|
+
output: totalOutputTokens,
|
|
263
|
+
cacheCreation: totalCacheCreationTokens,
|
|
264
|
+
cacheRead: totalCacheReadTokens,
|
|
265
|
+
},
|
|
266
|
+
cost: totalCost,
|
|
191
267
|
},
|
|
192
|
-
cost: totalCost,
|
|
193
268
|
};
|
|
194
269
|
}
|
|
195
270
|
catch (error) {
|
|
196
|
-
// Return error result
|
|
197
271
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
272
|
+
yield {
|
|
273
|
+
type: 'done',
|
|
274
|
+
data: {
|
|
275
|
+
success: false,
|
|
276
|
+
implementationFixCount,
|
|
277
|
+
lintFixCount,
|
|
278
|
+
reviewFixCount,
|
|
279
|
+
tokensUsed: {
|
|
280
|
+
input: totalInputTokens,
|
|
281
|
+
output: totalOutputTokens,
|
|
282
|
+
cacheCreation: totalCacheCreationTokens,
|
|
283
|
+
cacheRead: totalCacheReadTokens,
|
|
284
|
+
},
|
|
285
|
+
cost: totalCost,
|
|
286
|
+
error: errorMessage,
|
|
209
287
|
},
|
|
210
|
-
cost: totalCost,
|
|
211
|
-
error: errorMessage,
|
|
212
288
|
};
|
|
213
289
|
}
|
|
214
290
|
}
|
|
291
|
+
/**
|
|
292
|
+
* Core ship logic (ticket-agnostic, reusable)
|
|
293
|
+
* Implements a ticket without managing its lifecycle (status updates, etc.)
|
|
294
|
+
* Consumes shipCoreStream and adds console logging
|
|
295
|
+
*/
|
|
296
|
+
export async function shipCore(options) {
|
|
297
|
+
const ticket = options.ticketData;
|
|
298
|
+
const { review = false, directory } = options;
|
|
299
|
+
if (directory) {
|
|
300
|
+
const cwd = directory ? resolve(directory) : process.cwd();
|
|
301
|
+
console.log(`š Using project directory: ${cwd}\n`);
|
|
302
|
+
}
|
|
303
|
+
console.log(`š Implementing ticket: ${ticket.id} - ${ticket.title}\n`);
|
|
304
|
+
// Determine ticket type
|
|
305
|
+
const isSchemaTicket = ticket.id.toUpperCase().startsWith('SCHEMA-');
|
|
306
|
+
let result = null;
|
|
307
|
+
// Consume the stream and add console logging
|
|
308
|
+
for await (const event of shipCoreStream(options)) {
|
|
309
|
+
if (event.type === 'phase') {
|
|
310
|
+
const { phase, status, result: phaseResult } = event.data;
|
|
311
|
+
if (status === 'started') {
|
|
312
|
+
if (phase === 'implementation') {
|
|
313
|
+
console.log(`\n${'='.repeat(60)}`);
|
|
314
|
+
console.log(`š Phase 1: Implementation`);
|
|
315
|
+
console.log(`${'='.repeat(60)}\n`);
|
|
316
|
+
}
|
|
317
|
+
else if (phase === 'linting') {
|
|
318
|
+
console.log(`\n${'='.repeat(60)}`);
|
|
319
|
+
console.log(`š§ Phase 2: Linting & Quality Checks`);
|
|
320
|
+
console.log(`${'='.repeat(60)}\n`);
|
|
321
|
+
}
|
|
322
|
+
else if (phase === 'review') {
|
|
323
|
+
console.log(`\n${'='.repeat(60)}`);
|
|
324
|
+
console.log(`š Phase 3: Code Review (Git Diff)`);
|
|
325
|
+
console.log(`${'='.repeat(60)}\n`);
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
else if (status === 'completed' && phaseResult) {
|
|
329
|
+
if (phase === 'implementation') {
|
|
330
|
+
console.log(`\n⨠Implementation completed (${phaseResult.implementationFixCount} changes made)`);
|
|
331
|
+
console.log(`š° Implementation cost: ${formatCostBreakdown({
|
|
332
|
+
tokensUsed: phaseResult.tokensUsed,
|
|
333
|
+
cost: phaseResult.cost,
|
|
334
|
+
response: '',
|
|
335
|
+
fixCount: phaseResult.implementationFixCount,
|
|
336
|
+
filesReferenced: new Set(),
|
|
337
|
+
})}`);
|
|
338
|
+
}
|
|
339
|
+
else if (phase === 'linting') {
|
|
340
|
+
console.log(`\nā
Linting completed (${phaseResult.lintFixCount} fixes applied)`);
|
|
341
|
+
}
|
|
342
|
+
else if (phase === 'review') {
|
|
343
|
+
console.log(`\n⨠Review completed (${phaseResult.reviewFixCount} fixes applied)`);
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
else if (event.type === 'message') {
|
|
348
|
+
// Log Claude messages for CLI context
|
|
349
|
+
const msg = event.data;
|
|
350
|
+
if (msg.type === 'assistant' && msg.message?.content) {
|
|
351
|
+
for (const block of msg.message.content) {
|
|
352
|
+
if (block.type === 'text' && block.text) {
|
|
353
|
+
// Use shared logging with verbosity: 'normal'
|
|
354
|
+
logAssistantMessage(block.text, 'normal');
|
|
355
|
+
}
|
|
356
|
+
else if (block.type === 'tool_use' && block.name) {
|
|
357
|
+
// Log tool usage (logToolUsage filters file modifications internally)
|
|
358
|
+
const filesReferenced = new Set();
|
|
359
|
+
logToolUsage(block.name, block.input, filesReferenced);
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
else if (event.type === 'done') {
|
|
365
|
+
result = event.data;
|
|
366
|
+
// Show skip message for SCHEMA tickets
|
|
367
|
+
if (review && isSchemaTicket) {
|
|
368
|
+
console.log('\nā¹ļø Skipping code review for SCHEMA ticket (review focuses on application code, not database migrations)');
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
return result;
|
|
373
|
+
}
|
|
215
374
|
//# sourceMappingURL=ship.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ship.js","sourceRoot":"","sources":["../../../kosuke/commands/ship.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"ship.js","sourceRoot":"","sources":["../../../kosuke/commands/ship.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,9 +25,14 @@
|
|
|
25
25
|
* context: { ticketId, ticketTitle, ticketDescription },
|
|
26
26
|
* });
|
|
27
27
|
*/
|
|
28
|
-
import type { TestOptions, TestResult } from '../types.js';
|
|
28
|
+
import type { TestOptions, TestResult, TestStreamEvent } from '../types.js';
|
|
29
|
+
/**
|
|
30
|
+
* Streaming version of testCore - yields events for SSE integration
|
|
31
|
+
*/
|
|
32
|
+
export declare function testCoreStream(options: TestOptions): AsyncGenerator<TestStreamEvent, void, void>;
|
|
29
33
|
/**
|
|
30
34
|
* Core test logic (atomic - single execution, no retries, no fixes)
|
|
35
|
+
* Consumes testCoreStream and adds console logging
|
|
31
36
|
*/
|
|
32
37
|
export declare function testCore(options: TestOptions): Promise<TestResult>;
|
|
33
38
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../../kosuke/commands/test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../../kosuke/commands/test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAoY5E;;GAEG;AACH,wBAAuB,cAAc,CACnC,OAAO,EAAE,WAAW,GACnB,cAAc,CAAC,eAAe,EAAE,IAAI,EAAE,IAAI,CAAC,CAwD7C;AAED;;;GAGG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAqDxE;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAuCrE"}
|