@kosuke-ai/cli 0.0.37 → 0.0.38

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.
@@ -19,78 +19,187 @@
19
19
  * kosuke tickets --directory=./projects/my-app # Analyze specific directory
20
20
  * kosuke tickets --dir=./my-app --path=docs/spec.md # Custom directory and requirements path
21
21
  */
22
- import { readFileSync, writeFileSync, existsSync, statSync } from 'fs';
22
+ import { existsSync, readFileSync, statSync, writeFileSync } from 'fs';
23
23
  import { join, resolve } from 'path';
24
- import { runAgent, formatCostBreakdown } from '../utils/claude-agent.js';
24
+ import { formatCostBreakdown, runAgent } from '../utils/claude-agent.js';
25
25
  import { logger, setupCancellationHandler } from '../utils/logger.js';
26
26
  /**
27
- * Build system prompt for ticket generation
27
+ * Build system prompt for ticket generation with integrated analysis
28
28
  */
29
- function buildTicketGenerationPrompt(phase, requirementsContent, projectPath) {
29
+ function buildTicketGenerationPrompt(phase, ticketType, requirementsContent, projectPath) {
30
+ const phaseTypeKey = `${phase}_${ticketType}`;
30
31
  const phaseInstructions = {
31
- schema: `
32
- **PHASE 1: DATABASE SCHEMA TICKETS**
32
+ schema_scaffold: `
33
+ **GENERATE: ONE DATABASE SCHEMA SCAFFOLD TICKET**
33
34
 
34
- Generate ONE comprehensive schema ticket that includes:
35
- - All database tables needed
36
- - Relationships between tables
37
- - Indexes and constraints
38
- - Data types and validation rules
39
- - Any special considerations (soft deletes, timestamps, etc.)
35
+ This ticket should handle infrastructure/setup database changes based on the analysis:
36
+ - Modifications to auth tables (if organizations needed or removed)
37
+ - Billing/subscription tables (if changed or removed)
38
+ - Email verification/notification tables
39
+ - Any template baseline schema adjustments
40
40
 
41
- Ticket ID: SCHEMA-1
41
+ **Key Focus:**
42
+ - What needs to be REMOVED from template (e.g., organization tables if not needed)
43
+ - What needs to be ADDED for infrastructure (e.g., organization support if needed)
44
+ - Updates to existing template tables for new requirements
45
+
46
+ Ticket ID: SCHEMA-SCAFFOLD-1
42
47
  `,
43
- backend: `
44
- **PHASE 2: BACKEND/API TICKETS**
48
+ schema_logic: `
49
+ **GENERATE: ONE DATABASE SCHEMA BUSINESS LOGIC TICKET**
50
+
51
+ This ticket should handle core business domain tables based on the analysis:
52
+ - Main application entities (e.g., tasks, projects, posts, campaigns)
53
+ - Business-specific relationships
54
+ - Domain-specific fields and constraints
55
+ - Application data models
56
+
57
+ **Key Focus:**
58
+ - Core business entities unique to this application
59
+ - Relationships between business entities
60
+ - NOT infrastructure tables (auth, billing, etc.)
61
+
62
+ Ticket ID: SCHEMA-LOGIC-1
63
+ `,
64
+ backend_scaffold: `
65
+ **GENERATE: BACKEND SCAFFOLD TICKETS**
66
+
67
+ Generate tickets for infrastructure/setup backend changes:
68
+ - Auth modifications (add/remove organization support, change providers)
69
+ - Billing API changes (remove Stripe, add different tiers, etc.)
70
+ - Email template setup (create transactional email templates)
71
+ - Landing page API routes (if needed)
72
+ - Third-party integrations setup
73
+
74
+ **Granularity:**
75
+ - ONE ticket per infrastructure area (auth, billing, email, landing)
76
+ - Let Claude decide granularity based on complexity
77
+ - Each ticket should be independently implementable
45
78
 
46
- Generate backend tickets for:
47
- - API endpoints and routes
79
+ Ticket IDs: BACKEND-SCAFFOLD-1, BACKEND-SCAFFOLD-2, etc. (sequential)
80
+ `,
81
+ backend_logic: `
82
+ **GENERATE: BACKEND BUSINESS LOGIC TICKETS**
83
+
84
+ Generate tickets for core application backend features:
85
+ - API endpoints for business entities
48
86
  - Service layer logic
49
- - Authentication and authorization
50
- - Business logic implementation
51
- - Data validation and processing
52
- - Third-party integrations
87
+ - Business rules and validation
88
+ - Application-specific data processing
89
+ - Feature-specific integrations
90
+
91
+ **Granularity:**
92
+ - ONE ticket per feature/module
93
+ - Let Claude decide granularity based on complexity
94
+ - Each ticket should be independently implementable
95
+
96
+ Ticket IDs: BACKEND-LOGIC-1, BACKEND-LOGIC-2, etc. (sequential)
97
+ `,
98
+ frontend_scaffold: `
99
+ **GENERATE: FRONTEND SCAFFOLD TICKETS**
100
+
101
+ Generate tickets for infrastructure/setup frontend changes:
102
+ - Auth UI modifications (add/remove organization switcher, change auth flow)
103
+ - Billing UI changes (subscription management, pricing page updates)
104
+ - Landing page customization
105
+ - Email template previews
106
+ - Navigation/layout updates for infrastructure changes
53
107
 
54
- Create ONE ticket per feature/module. Each ticket should be independently implementable.
108
+ **Granularity:**
109
+ - ONE ticket per infrastructure area
110
+ - Let Claude decide granularity based on complexity
111
+ - Each ticket should be independently implementable
55
112
 
56
- Ticket IDs: BACKEND-1, BACKEND-2, BACKEND-3, etc. (sequential)
113
+ Ticket IDs: FRONTEND-SCAFFOLD-1, FRONTEND-SCAFFOLD-2, etc. (sequential)
57
114
  `,
58
- frontend: `
59
- **PHASE 3: FRONTEND/UI TICKETS**
115
+ frontend_logic: `
116
+ **GENERATE: FRONTEND BUSINESS LOGIC TICKETS**
60
117
 
61
- Generate frontend tickets for:
62
- - Pages and routing
63
- - UI components
64
- - Forms and validation
65
- - State management
66
- - User interactions
67
- - Responsive design
118
+ Generate tickets for core application frontend features:
119
+ - Application-specific pages
120
+ - Feature-specific UI components
121
+ - Business logic forms
122
+ - User workflows
123
+ - Application state management
68
124
 
69
- Create ONE ticket per PAGE. Each ticket should cover all components and functionality for that page.
125
+ **Granularity:**
126
+ - ONE ticket per PAGE or major feature
127
+ - Let Claude decide granularity based on complexity
128
+ - Each ticket should cover all components and functionality for that area
70
129
 
71
- Ticket IDs: FRONTEND-1, FRONTEND-2, FRONTEND-3, etc. (sequential)
130
+ Ticket IDs: FRONTEND-LOGIC-1, FRONTEND-LOGIC-2, etc. (sequential)
72
131
  `,
73
132
  };
74
- return `You are an expert software architect and project planner analyzing a requirements document to generate implementation tickets.
133
+ const categoryGuidance = ticketType === 'scaffold'
134
+ ? `
135
+ **Category Assignment:**
136
+ Assign appropriate category to each ticket:
137
+ - "auth" - Authentication and authorization changes
138
+ - "billing" - Payment and subscription changes
139
+ - "email" - Transactional email setup
140
+ - "landing" - Public marketing pages
141
+ - "infrastructure" - General setup/configuration
142
+ `
143
+ : `
144
+ **Category Assignment:**
145
+ Assign appropriate category based on business domain:
146
+ - Use the main entity name (e.g., "tasks", "projects", "campaigns")
147
+ - Or use feature name (e.g., "user-management", "notifications", "analytics")
148
+ - Keep categories consistent across related tickets
149
+ `;
150
+ const templateBaseline = `
151
+ **Kosuke Template Baseline (what the template already includes):**
152
+ - **Authentication**: Better Auth with Email OTP
153
+ - **User Model**: Individual users (no organizations/multi-tenancy by default)
154
+ - **Billing**: Stripe with subscription tiers (free, pro, business)
155
+ - **Email**: Resend for transactional emails
156
+ - **Landing Page**: Basic marketing site with pricing
157
+ - **Database**: PostgreSQL with Drizzle ORM
158
+ - **Stack**: Next.js 15, React 19, TypeScript, Tailwind, Shadcn UI
159
+
160
+ **Analysis Instructions:**
161
+ Before generating tickets, analyze the requirements to understand:
162
+ 1. **Auth**: Does it need organizations/multi-tenancy? Different auth provider?
163
+ 2. **Billing**: Keep Stripe? Remove billing entirely? Different tiers?
164
+ 3. **Email**: What transactional emails are needed? Custom templates?
165
+ 4. **Landing**: Customize marketing pages? Remove landing page?
166
+ 5. **Core Domain**: What are the main business entities and workflows?
167
+
168
+ For SCAFFOLD tickets:
169
+ - Identify what needs to be REMOVED from template (if not needed)
170
+ - Identify what needs to be ADDED to template (if needed)
171
+ - Identify what needs to be CUSTOMIZED (landing page, email templates, etc.)
172
+
173
+ For LOGIC tickets:
174
+ - Focus on core business functionality
175
+ - Implement application-specific features
176
+ - Build domain models and workflows
177
+ `;
178
+ return `You are an expert software architect generating implementation tickets for a Kosuke Template project.
75
179
 
76
180
  **Your Task:**
77
- ${phaseInstructions[phase]}
181
+ ${phaseInstructions[phaseTypeKey]}
78
182
 
79
183
  **Requirements Document:**
80
184
  ${requirementsContent}
81
185
 
186
+ ${templateBaseline}
187
+
82
188
  **Context:**
83
189
  You have access to the project directory at: ${projectPath}
190
+ The template baseline is documented in CLAUDE.md.
84
191
  Explore the codebase to understand the tech stack, architecture patterns, and coding conventions.
85
- Use read_file, grep, and codebase_search tools to understand the existing implementation.
86
192
 
87
193
  **Ticket Structure:**
88
194
  Each ticket must be a JSON object with:
89
- - id: string (e.g., "SCHEMA-1", "BACKEND-1", "FRONTEND-1")
195
+ - id: string (e.g., "SCHEMA-SCAFFOLD-1", "BACKEND-LOGIC-2")
90
196
  - title: string (clear, concise title)
91
197
  - description: string (detailed description with acceptance criteria)
198
+ - type: "${ticketType}" (scaffold or logic)
92
199
  - estimatedEffort: number (1-10, where 1=very easy, 10=very complex)
93
200
  - status: "Todo" (all tickets start as Todo)
201
+ - category: string (see guidance below)
202
+ ${categoryGuidance}
94
203
 
95
204
  **Output Format:**
96
205
  Return ONLY a valid JSON array of tickets. No markdown, no code blocks, just raw JSON.
@@ -98,34 +207,39 @@ Return ONLY a valid JSON array of tickets. No markdown, no code blocks, just raw
98
207
  Example:
99
208
  [
100
209
  {
101
- "id": "SCHEMA-1",
102
- "title": "Design and implement complete database schema",
103
- "description": "Create database schema including:\\n- Users table with authentication fields\\n- Organizations table with multi-tenant support\\n- Posts table for social media content\\n- Automations table for campaign configuration\\n- Leads table with status tracking\\n\\nRelationships:\\n- User belongs to many Organizations\\n- Posts and Automations belong to Organization\\n- Leads belong to Automation and Post\\n\\nAcceptance Criteria:\\n- Schema validates successfully\\n- Migrations run successfully\\n- All relationships properly defined\\n- Indexes on foreign keys and frequently queried fields",
104
- "estimatedEffort": 8,
105
- "status": "Todo"
210
+ "id": "BACKEND-SCAFFOLD-1",
211
+ "title": "Remove organization support from authentication",
212
+ "description": "Remove multi-tenancy/organization features from the template:\\n- Remove organization tables from schema\\n- Update user model to remove org references\\n- Simplify auth middleware (no org context)\\n- Remove org switcher from UI\\n\\nAcceptance Criteria:\\n- All organization references removed from codebase\\n- Auth flow works for individual users only\\n- Database migrations remove org tables\\n- No compilation errors",
213
+ "type": "scaffold",
214
+ "estimatedEffort": 6,
215
+ "status": "Todo",
216
+ "category": "auth"
106
217
  }
107
218
  ]
108
219
 
109
220
  **Critical Instructions:**
110
- 1. Analyze the requirements thoroughly
111
- 2. Explore the project directory to understand existing patterns (use read_file, grep, codebase_search tools)
221
+ 1. Analyze requirements against template baseline
222
+ 2. Explore the project directory to understand existing patterns (use read_file, grep, codebase_search)
112
223
  3. Generate tickets that are actionable and specific
113
224
  4. Return ONLY valid JSON - no explanations, no markdown formatting
114
- 5. Ensure ticket IDs follow the naming convention (${phase.toUpperCase()}-N)
225
+ 5. Ensure ticket IDs follow the naming convention (${phase.toUpperCase()}-${ticketType.toUpperCase()}-N)
115
226
  6. Make descriptions detailed with clear acceptance criteria
116
227
  7. Estimate effort realistically (consider complexity, dependencies, testing)
228
+ 8. Assign appropriate categories for organization and filtering
229
+ 9. For scaffold tickets: focus on infrastructure changes (add/remove/customize template features)
230
+ 10. For logic tickets: focus on business domain implementation
117
231
 
118
- Begin by exploring the project directory, then generate the tickets.`;
232
+ Begin by exploring the project directory, analyzing requirements, then generate the tickets.`;
119
233
  }
120
234
  /**
121
235
  * Parse tickets from Claude's response
122
236
  */
123
- function parseTicketsFromResponse(response, phase) {
237
+ function parseTicketsFromResponse(response, phase, ticketType) {
124
238
  try {
125
239
  // Extract JSON from response (in case Claude includes extra text)
126
240
  const jsonMatch = response.match(/\[[\s\S]*\]/);
127
241
  if (!jsonMatch) {
128
- throw new Error(`No JSON array found in ${phase} response`);
242
+ throw new Error(`No JSON array found in ${phase} ${ticketType} response`);
129
243
  }
130
244
  const tickets = JSON.parse(jsonMatch[0]);
131
245
  // Validate tickets
@@ -136,6 +250,9 @@ function parseTicketsFromResponse(response, phase) {
136
250
  if (!ticket.id || !ticket.title || !ticket.description) {
137
251
  throw new Error(`Invalid ticket structure: ${JSON.stringify(ticket)}`);
138
252
  }
253
+ if (!ticket.type || (ticket.type !== 'scaffold' && ticket.type !== 'logic')) {
254
+ throw new Error(`Invalid or missing type for ticket ${ticket.id}: ${ticket.type}`);
255
+ }
139
256
  if (typeof ticket.estimatedEffort !== 'number' ||
140
257
  ticket.estimatedEffort < 1 ||
141
258
  ticket.estimatedEffort > 10) {
@@ -148,64 +265,64 @@ function parseTicketsFromResponse(response, phase) {
148
265
  return tickets;
149
266
  }
150
267
  catch (error) {
151
- console.error(`\nāŒ Failed to parse tickets from ${phase} phase:`);
268
+ console.error(`\nāŒ Failed to parse tickets from ${phase} ${ticketType} phase:`);
152
269
  console.error(`Raw response:\n${response.substring(0, 500)}...\n`);
153
- throw new Error(`Failed to parse ${phase} tickets: ${error instanceof Error ? error.message : String(error)}`);
270
+ throw new Error(`Failed to parse ${phase} ${ticketType} tickets: ${error instanceof Error ? error.message : String(error)}`);
154
271
  }
155
272
  }
156
273
  /**
157
274
  * Write tickets to file incrementally
158
275
  */
159
- function writeTicketsToFile(outputPath, schemaTickets, backendTickets, frontendTickets) {
160
- const allTickets = [...schemaTickets, ...backendTickets, ...frontendTickets];
276
+ function writeTicketsToFile(outputPath, tickets) {
161
277
  const outputData = {
162
278
  generatedAt: new Date().toISOString(),
163
- totalTickets: allTickets.length,
164
- tickets: allTickets,
279
+ totalTickets: tickets.length,
280
+ tickets,
165
281
  };
166
282
  writeFileSync(outputPath, JSON.stringify(outputData, null, 2), 'utf-8');
167
283
  }
168
284
  /**
169
- * Generate tickets for a specific phase
285
+ * Generate tickets for a specific phase and type
170
286
  */
171
- async function generatePhaseTickets(phase, requirementsContent, projectPath, outputPath, existingSchemaTickets, existingBackendTickets) {
287
+ async function generatePhaseTickets(phase, ticketType, requirementsContent, projectPath, outputPath, existingTickets) {
172
288
  const phaseEmoji = {
173
289
  schema: 'šŸ—„ļø',
174
290
  backend: 'āš™ļø',
175
291
  frontend: 'šŸŽØ',
176
292
  };
293
+ const typeEmoji = {
294
+ scaffold: 'šŸ—ļø',
295
+ logic: 'šŸ’”',
296
+ };
177
297
  const phaseName = {
178
298
  schema: 'Schema',
179
299
  backend: 'Backend',
180
300
  frontend: 'Frontend',
181
301
  };
302
+ const typeName = {
303
+ scaffold: 'Scaffold',
304
+ logic: 'Logic',
305
+ };
182
306
  console.log(`\n${'='.repeat(60)}`);
183
- console.log(`${phaseEmoji[phase]} Phase ${phase === 'schema' ? '1' : phase === 'backend' ? '2' : '3'}: ${phaseName[phase]} Tickets`);
307
+ console.log(`${phaseEmoji[phase]} ${typeEmoji[ticketType]} ${phaseName[phase]} ${typeName[ticketType]} Tickets`);
184
308
  console.log(`${'='.repeat(60)}\n`);
185
- const systemPrompt = buildTicketGenerationPrompt(phase, requirementsContent, projectPath);
186
- const agentResult = await runAgent(`Generate ${phaseName[phase]} tickets from the requirements document.`, {
309
+ const systemPrompt = buildTicketGenerationPrompt(phase, ticketType, requirementsContent, projectPath);
310
+ const agentResult = await runAgent(`Generate ${phaseName[phase]} ${typeName[ticketType]} tickets from the requirements.`, {
187
311
  systemPrompt,
188
312
  cwd: projectPath,
189
313
  maxTurns: 25,
190
314
  verbosity: 'normal',
191
- captureConversation: true, // Capture full conversation for backend logging
315
+ captureConversation: true,
192
316
  });
193
317
  // Parse tickets from response
194
- const tickets = parseTicketsFromResponse(agentResult.response, phase);
195
- console.log(`\nāœ… Generated ${tickets.length} ${phaseName[phase]} ticket${tickets.length === 1 ? '' : 's'}`);
318
+ const tickets = parseTicketsFromResponse(agentResult.response, phase, ticketType);
319
+ console.log(`\nāœ… Generated ${tickets.length} ${phaseName[phase]} ${typeName[ticketType]} ticket${tickets.length === 1 ? '' : 's'}`);
196
320
  tickets.forEach((ticket) => {
197
- console.log(` ${phaseEmoji[phase]} ${ticket.id}: ${ticket.title} (Effort: ${ticket.estimatedEffort}/10)`);
321
+ console.log(` ${phaseEmoji[phase]} ${ticket.id}: ${ticket.title} (Effort: ${ticket.estimatedEffort}/10${ticket.category ? `, Category: ${ticket.category}` : ''})`);
198
322
  });
199
323
  // Write tickets incrementally after each phase
200
- if (phase === 'schema') {
201
- writeTicketsToFile(outputPath, tickets, [], []);
202
- }
203
- else if (phase === 'backend') {
204
- writeTicketsToFile(outputPath, existingSchemaTickets, tickets, []);
205
- }
206
- else if (phase === 'frontend') {
207
- writeTicketsToFile(outputPath, existingSchemaTickets, existingBackendTickets, tickets);
208
- }
324
+ const allTickets = [...existingTickets, ...tickets];
325
+ writeTicketsToFile(outputPath, allTickets);
209
326
  console.log(` šŸ’¾ Progress saved to: ${outputPath}\n`);
210
327
  return {
211
328
  tickets,
@@ -244,7 +361,7 @@ export async function ticketsCore(options) {
244
361
  // 3. Determine output path for incremental writes
245
362
  const outputFilename = options.output || 'tickets.json';
246
363
  const outputPath = join(projectPath, outputFilename);
247
- // 4. Generate tickets in three phases (written incrementally)
364
+ // 4. Generate tickets in six phases (scaffold + logic for each)
248
365
  let totalInputTokens = 0;
249
366
  let totalOutputTokens = 0;
250
367
  let totalCacheCreationTokens = 0;
@@ -252,37 +369,74 @@ export async function ticketsCore(options) {
252
369
  let totalCost = 0;
253
370
  // Collect all conversation messages from all phases
254
371
  const allConversationMessages = [];
255
- // Phase 1: Schema
256
- const schemaResult = await generatePhaseTickets('schema', requirementsContent, projectPath, outputPath, [], []);
257
- totalInputTokens += schemaResult.tokensUsed.input;
258
- totalOutputTokens += schemaResult.tokensUsed.output;
259
- totalCacheCreationTokens += schemaResult.tokensUsed.cacheCreation;
260
- totalCacheReadTokens += schemaResult.tokensUsed.cacheRead;
261
- totalCost += schemaResult.cost;
262
- allConversationMessages.push(...schemaResult.conversationMessages);
263
- // Phase 2: Backend
264
- const backendResult = await generatePhaseTickets('backend', requirementsContent, projectPath, outputPath, schemaResult.tickets, []);
265
- totalInputTokens += backendResult.tokensUsed.input;
266
- totalOutputTokens += backendResult.tokensUsed.output;
267
- totalCacheCreationTokens += backendResult.tokensUsed.cacheCreation;
268
- totalCacheReadTokens += backendResult.tokensUsed.cacheRead;
269
- totalCost += backendResult.cost;
270
- allConversationMessages.push(...backendResult.conversationMessages);
271
- // Phase 3: Frontend
272
- const frontendResult = await generatePhaseTickets('frontend', requirementsContent, projectPath, outputPath, schemaResult.tickets, backendResult.tickets);
273
- totalInputTokens += frontendResult.tokensUsed.input;
274
- totalOutputTokens += frontendResult.tokensUsed.output;
275
- totalCacheCreationTokens += frontendResult.tokensUsed.cacheCreation;
276
- totalCacheReadTokens += frontendResult.tokensUsed.cacheRead;
277
- totalCost += frontendResult.cost;
278
- allConversationMessages.push(...frontendResult.conversationMessages);
279
- const totalTickets = schemaResult.tickets.length + backendResult.tickets.length + frontendResult.tickets.length;
372
+ // Track all tickets
373
+ let allTickets = [];
374
+ // SCAFFOLD TICKETS (Infrastructure changes)
375
+ // Phase 1: Schema Scaffold
376
+ const schemaScaffoldResult = await generatePhaseTickets('schema', 'scaffold', requirementsContent, projectPath, outputPath, allTickets);
377
+ allTickets = [...allTickets, ...schemaScaffoldResult.tickets];
378
+ totalInputTokens += schemaScaffoldResult.tokensUsed.input;
379
+ totalOutputTokens += schemaScaffoldResult.tokensUsed.output;
380
+ totalCacheCreationTokens += schemaScaffoldResult.tokensUsed.cacheCreation;
381
+ totalCacheReadTokens += schemaScaffoldResult.tokensUsed.cacheRead;
382
+ totalCost += schemaScaffoldResult.cost;
383
+ allConversationMessages.push(...schemaScaffoldResult.conversationMessages);
384
+ // Phase 2: Backend Scaffold
385
+ const backendScaffoldResult = await generatePhaseTickets('backend', 'scaffold', requirementsContent, projectPath, outputPath, allTickets);
386
+ allTickets = [...allTickets, ...backendScaffoldResult.tickets];
387
+ totalInputTokens += backendScaffoldResult.tokensUsed.input;
388
+ totalOutputTokens += backendScaffoldResult.tokensUsed.output;
389
+ totalCacheCreationTokens += backendScaffoldResult.tokensUsed.cacheCreation;
390
+ totalCacheReadTokens += backendScaffoldResult.tokensUsed.cacheRead;
391
+ totalCost += backendScaffoldResult.cost;
392
+ allConversationMessages.push(...backendScaffoldResult.conversationMessages);
393
+ // Phase 3: Frontend Scaffold
394
+ const frontendScaffoldResult = await generatePhaseTickets('frontend', 'scaffold', requirementsContent, projectPath, outputPath, allTickets);
395
+ allTickets = [...allTickets, ...frontendScaffoldResult.tickets];
396
+ totalInputTokens += frontendScaffoldResult.tokensUsed.input;
397
+ totalOutputTokens += frontendScaffoldResult.tokensUsed.output;
398
+ totalCacheCreationTokens += frontendScaffoldResult.tokensUsed.cacheCreation;
399
+ totalCacheReadTokens += frontendScaffoldResult.tokensUsed.cacheRead;
400
+ totalCost += frontendScaffoldResult.cost;
401
+ allConversationMessages.push(...frontendScaffoldResult.conversationMessages);
402
+ // LOGIC TICKETS (Business functionality)
403
+ // Phase 4: Schema Logic
404
+ const schemaLogicResult = await generatePhaseTickets('schema', 'logic', requirementsContent, projectPath, outputPath, allTickets);
405
+ allTickets = [...allTickets, ...schemaLogicResult.tickets];
406
+ totalInputTokens += schemaLogicResult.tokensUsed.input;
407
+ totalOutputTokens += schemaLogicResult.tokensUsed.output;
408
+ totalCacheCreationTokens += schemaLogicResult.tokensUsed.cacheCreation;
409
+ totalCacheReadTokens += schemaLogicResult.tokensUsed.cacheRead;
410
+ totalCost += schemaLogicResult.cost;
411
+ allConversationMessages.push(...schemaLogicResult.conversationMessages);
412
+ // Phase 5: Backend Logic
413
+ const backendLogicResult = await generatePhaseTickets('backend', 'logic', requirementsContent, projectPath, outputPath, allTickets);
414
+ allTickets = [...allTickets, ...backendLogicResult.tickets];
415
+ totalInputTokens += backendLogicResult.tokensUsed.input;
416
+ totalOutputTokens += backendLogicResult.tokensUsed.output;
417
+ totalCacheCreationTokens += backendLogicResult.tokensUsed.cacheCreation;
418
+ totalCacheReadTokens += backendLogicResult.tokensUsed.cacheRead;
419
+ totalCost += backendLogicResult.cost;
420
+ allConversationMessages.push(...backendLogicResult.conversationMessages);
421
+ // Phase 6: Frontend Logic
422
+ const frontendLogicResult = await generatePhaseTickets('frontend', 'logic', requirementsContent, projectPath, outputPath, allTickets);
423
+ allTickets = [...allTickets, ...frontendLogicResult.tickets];
424
+ totalInputTokens += frontendLogicResult.tokensUsed.input;
425
+ totalOutputTokens += frontendLogicResult.tokensUsed.output;
426
+ totalCacheCreationTokens += frontendLogicResult.tokensUsed.cacheCreation;
427
+ totalCacheReadTokens += frontendLogicResult.tokensUsed.cacheRead;
428
+ totalCost += frontendLogicResult.cost;
429
+ allConversationMessages.push(...frontendLogicResult.conversationMessages);
430
+ // Separate tickets by phase for result
431
+ const schemaTickets = allTickets.filter((t) => t.id.startsWith('SCHEMA-'));
432
+ const backendTickets = allTickets.filter((t) => t.id.startsWith('BACKEND-'));
433
+ const frontendTickets = allTickets.filter((t) => t.id.startsWith('FRONTEND-'));
280
434
  return {
281
- schemaTickets: schemaResult.tickets,
282
- backendTickets: backendResult.tickets,
283
- frontendTickets: frontendResult.tickets,
284
- totalTickets,
285
- projectPath, // Include project path for output file resolution
435
+ schemaTickets,
436
+ backendTickets,
437
+ frontendTickets,
438
+ totalTickets: allTickets.length,
439
+ projectPath,
286
440
  tokensUsed: {
287
441
  input: totalInputTokens,
288
442
  output: totalOutputTokens,
@@ -313,13 +467,28 @@ export async function ticketsCommand(options) {
313
467
  logger.trackTokens(logContext, result.tokensUsed);
314
468
  logContext.conversationMessages = result.conversationMessages;
315
469
  // Display summary
470
+ const scaffoldTickets = [
471
+ ...result.schemaTickets,
472
+ ...result.backendTickets,
473
+ ...result.frontendTickets,
474
+ ].filter((t) => t.type === 'scaffold');
475
+ const logicTickets = [
476
+ ...result.schemaTickets,
477
+ ...result.backendTickets,
478
+ ...result.frontendTickets,
479
+ ].filter((t) => t.type === 'logic');
316
480
  console.log(`\n${'='.repeat(60)}`);
317
- console.log('šŸ“Š Summary');
481
+ console.log('šŸ“Š Ticket Generation Summary');
318
482
  console.log(`${'='.repeat(60)}`);
319
- console.log(`šŸ—„ļø Schema Tickets: ${result.schemaTickets.length}`);
320
- console.log(`āš™ļø Backend Tickets: ${result.backendTickets.length}`);
321
- console.log(`šŸŽØ Frontend Tickets: ${result.frontendTickets.length}`);
322
- console.log(`šŸ“ Total Tickets: ${result.totalTickets}`);
483
+ console.log(`\nšŸ—ļø Scaffold Tickets (Infrastructure): ${scaffoldTickets.length}`);
484
+ console.log(` šŸ—„ļø Schema: ${result.schemaTickets.filter((t) => t.type === 'scaffold').length}`);
485
+ console.log(` āš™ļø Backend: ${result.backendTickets.filter((t) => t.type === 'scaffold').length}`);
486
+ console.log(` šŸŽØ Frontend: ${result.frontendTickets.filter((t) => t.type === 'scaffold').length}`);
487
+ console.log(`\nšŸ’” Logic Tickets (Business Functionality): ${logicTickets.length}`);
488
+ console.log(` šŸ—„ļø Schema: ${result.schemaTickets.filter((t) => t.type === 'logic').length}`);
489
+ console.log(` āš™ļø Backend: ${result.backendTickets.filter((t) => t.type === 'logic').length}`);
490
+ console.log(` šŸŽØ Frontend: ${result.frontendTickets.filter((t) => t.type === 'logic').length}`);
491
+ console.log(`\nšŸ“ Total Tickets: ${result.totalTickets}`);
323
492
  console.log(`${'='.repeat(60)}\n`);
324
493
  // Display cost breakdown
325
494
  const costBreakdown = formatCostBreakdown({
@@ -1 +1 @@
1
- {"version":3,"file":"tickets.js","sourceRoot":"","sources":["../../../kosuke/commands/tickets.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tickets.js","sourceRoot":"","sources":["../../../kosuke/commands/tickets.ts"],"names":[],"mappings":"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"}
@@ -77,8 +77,10 @@ export interface Ticket {
77
77
  id: string;
78
78
  title: string;
79
79
  description: string;
80
+ type: 'scaffold' | 'logic';
80
81
  estimatedEffort: number;
81
82
  status: 'Todo' | 'InProgress' | 'Done' | 'Error';
83
+ category?: string;
82
84
  error?: string;
83
85
  }
84
86
  export interface TicketsResult {
@@ -122,8 +124,8 @@ export interface BuildOptions {
122
124
  review?: boolean;
123
125
  test?: boolean;
124
126
  url?: string;
125
- headed?: boolean;
126
- debug?: boolean;
127
+ headless?: boolean;
128
+ verbose?: boolean;
127
129
  noLogs?: boolean;
128
130
  }
129
131
  export interface ReviewContext {
@@ -166,8 +168,8 @@ export interface TestOptions {
166
168
  ticket?: string;
167
169
  prompt?: string;
168
170
  url?: string;
169
- headed?: boolean;
170
- debug?: boolean;
171
+ headless?: boolean;
172
+ verbose?: boolean;
171
173
  ticketsFile?: string;
172
174
  directory?: string;
173
175
  noLogs?: boolean;
@@ -193,8 +195,8 @@ export interface TestRunnerOptions {
193
195
  ticket: Ticket;
194
196
  cwd: string;
195
197
  url?: string;
196
- headed?: boolean;
197
- debug?: boolean;
198
+ headless?: boolean;
199
+ verbose?: boolean;
198
200
  maxRetries?: number;
199
201
  }
200
202
  export interface TestRunnerResult {