gameforge-cli 0.2.0 → 0.2.1

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 (40) hide show
  1. package/README.md +38 -5
  2. package/dist/agents/core/Architect.d.ts +4 -0
  3. package/dist/agents/core/Architect.d.ts.map +1 -1
  4. package/dist/agents/core/Architect.js +150 -0
  5. package/dist/agents/core/Architect.js.map +1 -1
  6. package/dist/agents/core/DocumentUpdater.d.ts +13 -0
  7. package/dist/agents/core/DocumentUpdater.d.ts.map +1 -0
  8. package/dist/agents/core/DocumentUpdater.js +165 -0
  9. package/dist/agents/core/DocumentUpdater.js.map +1 -0
  10. package/dist/agents/specialists/CreativeSpecialist.d.ts.map +1 -1
  11. package/dist/agents/specialists/CreativeSpecialist.js +68 -0
  12. package/dist/agents/specialists/CreativeSpecialist.js.map +1 -1
  13. package/dist/agents/specialists/EntitySpecialist.d.ts.map +1 -1
  14. package/dist/agents/specialists/EntitySpecialist.js +16 -0
  15. package/dist/agents/specialists/EntitySpecialist.js.map +1 -1
  16. package/dist/agents/specialists/FeatureSpecialist.d.ts +4 -0
  17. package/dist/agents/specialists/FeatureSpecialist.d.ts.map +1 -1
  18. package/dist/agents/specialists/FeatureSpecialist.js +61 -0
  19. package/dist/agents/specialists/FeatureSpecialist.js.map +1 -1
  20. package/dist/agents/specialists/TechSpecialist.d.ts.map +1 -1
  21. package/dist/agents/specialists/TechSpecialist.js +100 -0
  22. package/dist/agents/specialists/TechSpecialist.js.map +1 -1
  23. package/dist/index.js +316 -138
  24. package/dist/index.js.map +1 -1
  25. package/dist/utils/disambiguationHelper.d.ts.map +1 -1
  26. package/dist/utils/disambiguationHelper.js +18 -8
  27. package/dist/utils/disambiguationHelper.js.map +1 -1
  28. package/dist/utils/fileManager.d.ts +7 -0
  29. package/dist/utils/fileManager.d.ts.map +1 -1
  30. package/dist/utils/fileManager.js +47 -0
  31. package/dist/utils/fileManager.js.map +1 -1
  32. package/dist/utils/issueReviewer.d.ts +4 -0
  33. package/dist/utils/issueReviewer.d.ts.map +1 -1
  34. package/dist/utils/issueReviewer.js +47 -0
  35. package/dist/utils/issueReviewer.js.map +1 -1
  36. package/dist/utils/pdfGenerator.d.ts +12 -0
  37. package/dist/utils/pdfGenerator.d.ts.map +1 -0
  38. package/dist/utils/pdfGenerator.js +341 -0
  39. package/dist/utils/pdfGenerator.js.map +1 -0
  40. package/package.json +20 -15
package/README.md CHANGED
@@ -377,15 +377,48 @@ The modify command allows you to make changes to previously generated GDDs using
377
377
 
378
378
  ## Roadmap
379
379
 
380
- - [x] Interactive editing mode (Modifier agent implemented)
380
+ GameForge aims to be a complete **Game Idea → Production-Ready Tasks** pipeline:
381
+
382
+ ### ✅ Phase 1: Game Design Document (Complete)
383
+ - [x] Interactive discovery interview
384
+ - [x] Multi-agent GDD generation
385
+ - [x] Validation & remediation system
381
386
  - [x] Interactive issue review system
382
- - [ ] PDF export using Puppeteer
387
+ - [x] Interactive editing mode (Modifier agent)
388
+ - [x] Genre templates
389
+
390
+ ### 🎨 Phase 2: Art Design Document
391
+ Transform the GDD into a comprehensive Art Design Document (ADD):
392
+ - [ ] UI/UX specifications with AI-generated mockups
393
+ - [ ] AI-generated concept art for characters, environments, items
394
+ - [ ] Branding guidelines (logo concepts, color palettes, typography)
395
+ - [ ] Sound design specifications
396
+ - [ ] Music direction and composition guidelines
397
+ - [ ] Asset pipeline and naming conventions
398
+
399
+ ### 🔧 Phase 3: Technical Design Document
400
+ Generate a detailed Technical Design Document (TDD) from the GDD:
401
+ - [ ] Comprehensive codebase architecture breakdown
402
+ - [ ] Major systems design (rendering, physics, networking, AI, etc.)
403
+ - [ ] AI-generated flow charts as Mermaid diagrams
404
+ - [ ] API specifications and data models
405
+ - [ ] Performance budgets and optimization strategies
406
+ - [ ] Platform-specific implementation notes
407
+
408
+ ### 📋 Phase 4: Task Management Integration
409
+ Populate a task management system with implementation tasks using [Beads](https://github.com/steveyegge/beads):
410
+ - [ ] Auto-generate tasks from TDD and ADD specifications
411
+ - [ ] Dependency mapping between tasks
412
+ - [ ] Priority and complexity estimation
413
+ - [ ] Sprint/milestone organization
414
+ - [ ] Integration with existing project management tools
415
+
416
+ ### 🔮 Future Enhancements
417
+ - [ ] PDF export
383
418
  - [ ] Notion/Confluence integration
384
419
  - [ ] Team collaboration features
385
- - [ ] Asset generation integration (DALL-E, Midjourney)
386
- - [ ] More genre templates
387
420
  - [ ] Multi-language support
388
- - [ ] Enhanced remediation strategies
421
+ - [ ] Real-time asset generation previews
389
422
 
390
423
  ## Contributing
391
424
 
@@ -18,6 +18,10 @@ export declare class Architect extends BaseAgent {
18
18
  * Returns additional transcript entries with clarifications
19
19
  */
20
20
  private checkForAmbiguities;
21
+ /**
22
+ * Check the generated GameBible for structural issues and ask clarifying questions
23
+ */
24
+ private checkPostGenerationAmbiguities;
21
25
  private generateMetaAndFeatures;
22
26
  private generateGameObjects;
23
27
  private generateCreativeAndTech;
@@ -1 +1 @@
1
- {"version":3,"file":"Architect.d.ts","sourceRoot":"","sources":["../../../src/agents/core/Architect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAe,MAAM,mBAAmB,CAAC;AAE3D,OAAO,EAAmB,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAKjE,KAAK,eAAe,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,OAAO,CAAA;CAAE,CAAC;AAEpF,qBAAa,SAAU,SAAQ,SAAS;gBAC1B,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG;IAmB1D,OAAO,CACX,UAAU,EAAE,eAAe,EAAE,EAC7B,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GACrC,OAAO,CAAC,SAAS,CAAC;IAsFrB;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAsG1B;;;OAGG;YACW,mBAAmB;YA0EnB,uBAAuB;YA2EvB,mBAAmB;YA+EnB,uBAAuB;IA6ErC,OAAO,CAAC,SAAS;IAoGjB,OAAO,CAAC,oBAAoB;CA8C7B"}
1
+ {"version":3,"file":"Architect.d.ts","sourceRoot":"","sources":["../../../src/agents/core/Architect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAe,MAAM,mBAAmB,CAAC;AAE3D,OAAO,EAAmB,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAKjE,KAAK,eAAe,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,OAAO,CAAA;CAAE,CAAC;AAEpF,qBAAa,SAAU,SAAQ,SAAS;gBAC1B,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG;IAmB1D,OAAO,CACX,UAAU,EAAE,eAAe,EAAE,EAC7B,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GACrC,OAAO,CAAC,SAAS,CAAC;IAyFrB;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAsG1B;;;OAGG;YACW,mBAAmB;IAiHjC;;OAEG;YACW,8BAA8B;YA0J9B,uBAAuB;YA2EvB,mBAAmB;YA+EnB,uBAAuB;IA6ErC,OAAO,CAAC,SAAS;IAoGjB,OAAO,CAAC,oBAAoB;CA8C7B"}
@@ -58,6 +58,8 @@ Do NOT wrap the JSON in \`\`\`json or \`\`\` tags.`,
58
58
  creative: creativeAndTech.creative,
59
59
  technical: creativeAndTech.technical
60
60
  };
61
+ // Check post-generation ambiguities
62
+ await this.checkPostGenerationAmbiguities(gameBible, enhancedTranscript, onProgress);
61
63
  // Normalize/coerce common LLM output issues before validation
62
64
  this.normalizeGameBible(gameBible);
63
65
  try {
@@ -247,11 +249,159 @@ Do NOT wrap the JSON in \`\`\`json or \`\`\` tags.`,
247
249
  autoGenerated: result.wasAIGenerated
248
250
  });
249
251
  }
252
+ // Check for vague target audience
253
+ const audienceAnswer = transcript.find(t => t.question.toLowerCase().includes('audience') ||
254
+ t.question.toLowerCase().includes('target'))?.answer || '';
255
+ const normalizedAudience = audienceAnswer.toLowerCase();
256
+ if (audienceAnswer.length < 15 ||
257
+ normalizedAudience.includes('everyone') ||
258
+ normalizedAudience.includes('all ages') ||
259
+ normalizedAudience.includes('casual and hardcore') ||
260
+ normalizedAudience.includes('broad')) {
261
+ const result = await this.askClarification('The target audience is very broad. Who is the PRIMARY audience? (e.g., "competitive FPS players 18-35" vs "everyone")', transcript, 'Target Audience Clarification');
262
+ clarifications.push({
263
+ question: 'Clarification: Target Audience',
264
+ answer: result.answer,
265
+ autoGenerated: result.wasAIGenerated
266
+ });
267
+ }
268
+ // Check for genre mixing overload
269
+ const genreAnswer = transcript.find(t => t.question.toLowerCase().includes('genre'))?.answer || '';
270
+ const genreCount = genreAnswer.split(/[,/&+]/).filter(g => g.trim().length > 0).length;
271
+ if (genreCount > 3) {
272
+ const result = await this.askClarification(`You're mixing ${genreCount} genres. This can dilute the experience. What's the PRIMARY genre?`, transcript, 'Genre Focus');
273
+ clarifications.push({
274
+ question: 'Clarification: Primary Genre',
275
+ answer: result.answer,
276
+ autoGenerated: result.wasAIGenerated
277
+ });
278
+ }
250
279
  if (clarifications.length > 0) {
251
280
  onProgress?.(`Added ${clarifications.length} clarifications`);
252
281
  }
253
282
  return clarifications;
254
283
  }
284
+ /**
285
+ * Check the generated GameBible for structural issues and ask clarifying questions
286
+ */
287
+ async checkPostGenerationAmbiguities(bible, transcript, onProgress) {
288
+ // Check for too many features for scope
289
+ const scope = bible.meta.estimatedScope;
290
+ const featureCount = bible.features.length;
291
+ const featureLimits = {
292
+ 'Prototype': 5,
293
+ 'Vertical Slice': 8,
294
+ 'MVP': 12,
295
+ 'Full Game': 20
296
+ };
297
+ const limit = featureLimits[scope] || 12;
298
+ if (featureCount > limit) {
299
+ const result = await this.askClarification(`You have ${featureCount} features for a "${scope}" project. This may be too ambitious. Should we prioritize the most critical features?`, bible, 'Feature Count');
300
+ // Note: We inform but don't auto-reduce features - user decides
301
+ onProgress?.(`Feature count acknowledged: ${featureCount} features for ${scope} scope`);
302
+ }
303
+ // Check for core gameplay loop
304
+ const hasGameplayLoop = bible.features.some((f) => f.gameplayLoop && f.gameplayLoop.length > 0);
305
+ if (!hasGameplayLoop) {
306
+ const result = await this.askClarification('No gameplay loops are defined. What does the player DO moment-to-moment in this game?', bible, 'Core Gameplay Loop');
307
+ onProgress?.('Core gameplay loop clarified');
308
+ }
309
+ // Check for genre-specific features
310
+ const genres = bible.meta.genre.map((g) => g.toLowerCase());
311
+ // RPG without progression
312
+ if (genres.some((g) => g.includes('rpg')) &&
313
+ !bible.features.some((f) => f.progression)) {
314
+ const result = await this.askClarification('RPG games typically need a progression system. Should we add character/player progression?', bible, 'RPG Progression');
315
+ const decision = (result.answer || '').toLowerCase();
316
+ if (decision.includes('yes') || decision.includes('add') || decision.includes('should')) {
317
+ onProgress?.('Note: User confirmed RPG progression system should be added - consider this for future feature expansion');
318
+ }
319
+ else {
320
+ onProgress?.('RPG progression acknowledged as intentional design decision');
321
+ }
322
+ }
323
+ // Multiplayer genre without networking
324
+ if ((genres.some((g) => g.includes('multiplayer') || g.includes('mmo') || g.includes('competitive')) ||
325
+ bible.features.some((f) => f.multiplayer)) &&
326
+ !bible.technical?.networking) {
327
+ const result = await this.askClarification('Multiplayer features detected but no networking architecture specified. What network model should we use?', bible, 'Multiplayer Networking');
328
+ const decision = (result.answer || '').toLowerCase();
329
+ // Extract network architecture from user response
330
+ if (!bible.technical) {
331
+ bible.technical = { engine: { primary: 'Unity', version: '2023.2', reasoning: 'Default engine' }, buildTargets: [] };
332
+ }
333
+ if (decision.includes('client-server') || decision.includes('client server')) {
334
+ bible.technical.networking = { architecture: 'Client-Server', maxPlayers: 8 };
335
+ onProgress?.('Added Client-Server networking architecture');
336
+ }
337
+ else if (decision.includes('peer-to-peer') || decision.includes('p2p')) {
338
+ bible.technical.networking = { architecture: 'Peer-to-Peer', maxPlayers: 4 };
339
+ onProgress?.('Added Peer-to-Peer networking architecture');
340
+ }
341
+ else if (decision.includes('relay')) {
342
+ bible.technical.networking = { architecture: 'Relay Server', maxPlayers: 8 };
343
+ onProgress?.('Added Relay Server networking architecture');
344
+ }
345
+ else {
346
+ onProgress?.('Multiplayer networking clarified - manual specification may be needed');
347
+ }
348
+ }
349
+ // Card game without cards
350
+ if (genres.some((g) => g.includes('card') || g.includes('ccg') || g.includes('tcg')) &&
351
+ !bible.gameObjects.some((e) => e.category === 'Card')) {
352
+ const result = await this.askClarification('Card game genre but no card entities defined. Should we add card definitions?', bible, 'Card Game Entities');
353
+ const decision = (result.answer || '').toLowerCase();
354
+ if (decision.includes('yes') || decision.includes('add') || decision.includes('should')) {
355
+ onProgress?.('Note: User confirmed cards should be added - consider expanding entity list');
356
+ }
357
+ else {
358
+ onProgress?.('Card-less design acknowledged as intentional');
359
+ }
360
+ }
361
+ // Horror without atmosphere
362
+ if (genres.some((g) => g.includes('horror')) &&
363
+ !bible.creative?.horror?.atmosphere) {
364
+ const result = await this.askClarification('Horror game but no horror atmosphere defined. What kind of horror experience are you creating?', bible, 'Horror Atmosphere');
365
+ const decision = (result.answer || '').toLowerCase();
366
+ // Attempt to add horror atmosphere based on user response
367
+ if (bible.creative && decision.length > 10) {
368
+ if (!bible.creative.horror) {
369
+ bible.creative.horror = {};
370
+ }
371
+ const horror = bible.creative.horror;
372
+ // Extract atmosphere keywords from response
373
+ if (decision.includes('psychological')) {
374
+ horror.atmosphere = 'Psychological tension and unease';
375
+ }
376
+ else if (decision.includes('survival')) {
377
+ horror.atmosphere = 'Survival horror with resource scarcity';
378
+ }
379
+ else if (decision.includes('jump scare') || decision.includes('jumpscare')) {
380
+ horror.atmosphere = 'Jump scares and sudden frights';
381
+ }
382
+ else if (decision.includes('cosmic') || decision.includes('lovecraft')) {
383
+ horror.atmosphere = 'Cosmic horror and existential dread';
384
+ }
385
+ else {
386
+ horror.atmosphere = result.answer.substring(0, 100);
387
+ }
388
+ onProgress?.('Added horror atmosphere based on user input');
389
+ }
390
+ }
391
+ // Story/narrative game without NPCs
392
+ if ((genres.some((g) => g.includes('rpg') || g.includes('adventure') || g.includes('story')) ||
393
+ bible.features.some((f) => f.narrative)) &&
394
+ !bible.gameObjects.some((e) => e.category === 'NPC')) {
395
+ const result = await this.askClarification('Story-driven game with no NPCs. Should we add key characters to populate the world?', bible, 'Story Characters');
396
+ const decision = (result.answer || '').toLowerCase();
397
+ if (decision.includes('yes') || decision.includes('add') || decision.includes('should')) {
398
+ onProgress?.('Note: User confirmed NPCs should be added - consider expanding entity list');
399
+ }
400
+ else {
401
+ onProgress?.('NPC-less design acknowledged as intentional (e.g., environmental storytelling)');
402
+ }
403
+ }
404
+ }
255
405
  async generateMetaAndFeatures(transcriptStr, onProgress) {
256
406
  const prompt = `Generate the meta section and core features for a Game Design Document.
257
407
 
@@ -1 +1 @@
1
- {"version":3,"file":"Architect.js","sourceRoot":"","sources":["../../../src/agents/core/Architect.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Architect.js","sourceRoot":"","sources":["../../../src/agents/core/Architect.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { BaseAgent } from '../base/BaseAgent';
2
+ import { GameBible } from '../../config/schema';
3
+ export interface DocumentUpdateResult {
4
+ updatedDocument: string;
5
+ sectionsModified: string[];
6
+ errors: string[];
7
+ }
8
+ export declare class DocumentUpdater extends BaseAgent {
9
+ constructor(apiKey: string, costTracker: any, modelSelector: any);
10
+ execute(previousDocument: string, changesSummary: string[], updatedBible: GameBible, onProgress?: (message: string) => void): Promise<DocumentUpdateResult>;
11
+ private parseResult;
12
+ }
13
+ //# sourceMappingURL=DocumentUpdater.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DocumentUpdater.d.ts","sourceRoot":"","sources":["../../../src/agents/core/DocumentUpdater.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAe,MAAM,mBAAmB,CAAC;AAE3D,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGhD,MAAM,WAAW,oBAAoB;IACnC,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,qBAAa,eAAgB,SAAQ,SAAS;gBAChC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG;IAqC1D,OAAO,CACX,gBAAgB,EAAE,MAAM,EACxB,cAAc,EAAE,MAAM,EAAE,EACxB,YAAY,EAAE,SAAS,EACvB,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GACrC,OAAO,CAAC,oBAAoB,CAAC;IAqDhC,OAAO,CAAC,WAAW;CA4EpB"}
@@ -0,0 +1,165 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DocumentUpdater = void 0;
4
+ const BaseAgent_1 = require("../base/BaseAgent");
5
+ const modelSelector_1 = require("../../utils/modelSelector");
6
+ const debugLogger_1 = require("../../utils/debugLogger");
7
+ class DocumentUpdater extends BaseAgent_1.BaseAgent {
8
+ constructor(apiKey, costTracker, modelSelector) {
9
+ const config = {
10
+ systemPrompt: `You are a Document Update Specialist. Your role is to make TARGETED, SURGICAL modifications to existing Game Design Documents.
11
+
12
+ CRITICAL RULES:
13
+ 1. PRESERVE all existing content that is NOT affected by the changes
14
+ 2. Only modify text that directly references the changed elements
15
+ 3. Do NOT rewrite descriptions, narratives, or creative content unless explicitly changed
16
+ 4. Do NOT add new sections or expand existing ones
17
+ 5. Do NOT change writing style, tone, or level of detail
18
+ 6. Treat the existing document as authoritative - your job is to update references, not improve content
19
+
20
+ When changing names/titles:
21
+ - Find-and-replace the old name with the new name throughout
22
+ - Update any references, headings, and mentions
23
+ - Keep all surrounding prose EXACTLY as it was
24
+
25
+ When adding new elements:
26
+ - Add a new section in the appropriate location
27
+ - Keep it brief and consistent with existing style
28
+ - Do NOT modify existing sections
29
+
30
+ When removing elements:
31
+ - Remove the relevant section
32
+ - Remove references to it from other sections
33
+ - Do NOT fill the gap with new content
34
+
35
+ When modifying element properties:
36
+ - Update only the specific property mentioned
37
+ - Keep all other descriptions unchanged
38
+
39
+ Output the COMPLETE updated document, preserving all markdown formatting.`,
40
+ temperature: 0.1 // Very low temperature for consistency
41
+ };
42
+ super(apiKey, config, costTracker, modelSelector);
43
+ }
44
+ async execute(previousDocument, changesSummary, updatedBible, onProgress) {
45
+ // If there are no changes, return the original document
46
+ if (changesSummary.length === 0) {
47
+ return {
48
+ updatedDocument: previousDocument,
49
+ sectionsModified: [],
50
+ errors: []
51
+ };
52
+ }
53
+ const prompt = `Apply the following changes to this Game Design Document. Make ONLY the changes described - preserve everything else EXACTLY as it is.
54
+
55
+ ## CHANGES TO APPLY:
56
+ ${changesSummary.map((change, i) => `${i + 1}. ${change}`).join('\n')}
57
+
58
+ ## UPDATED GAME BIBLE (for reference only - use this to verify correct values):
59
+ Game Title: ${updatedBible.meta.title}
60
+ Genre: ${updatedBible.meta.genre.join(', ')}
61
+ Features: ${updatedBible.features.map(f => f.name).join(', ')}
62
+ Entities: ${updatedBible.gameObjects.map(e => e.name).join(', ')}
63
+
64
+ ## CURRENT DOCUMENT:
65
+ ${previousDocument}
66
+
67
+ ## INSTRUCTIONS:
68
+ 1. Apply ONLY the changes listed above
69
+ 2. For name changes: find-and-replace throughout the document
70
+ 3. For new elements: add minimal sections matching existing style
71
+ 4. For removals: delete the relevant sections and references
72
+ 5. PRESERVE all existing prose, descriptions, and creative content
73
+ 6. Maintain all markdown formatting, headings, and structure
74
+ 7. Do NOT rewrite or expand any content that wasn't explicitly changed
75
+
76
+ ## RESPONSE FORMAT:
77
+ {
78
+ "updatedDocument": "COMPLETE markdown document with changes applied",
79
+ "sectionsModified": ["List of section names that were modified"],
80
+ "errors": ["Any issues encountered"]
81
+ }
82
+
83
+ CRITICAL: Output valid JSON. The updatedDocument must be the COMPLETE document, not just the changed parts.`;
84
+ onProgress?.('Applying targeted changes to document...');
85
+ const result = await this.callLLMWithAutoRetry(prompt, modelSelector_1.TaskComplexity.COMPLEX, {
86
+ initialMaxTokens: 32000,
87
+ maxRetries: 2,
88
+ onProgress
89
+ });
90
+ return this.parseResult(result.content, previousDocument);
91
+ }
92
+ parseResult(content, originalDocument) {
93
+ let jsonStr = content.trim();
94
+ // Handle markdown code blocks
95
+ const codeBlockMatch = content.match(/```(?:json)?\n?([\s\S]*?)\n?```/);
96
+ if (codeBlockMatch) {
97
+ jsonStr = codeBlockMatch[1].trim();
98
+ }
99
+ // Find JSON object boundaries
100
+ if (!jsonStr.startsWith('{')) {
101
+ const firstBrace = jsonStr.indexOf('{');
102
+ const lastBrace = jsonStr.lastIndexOf('}');
103
+ if (firstBrace !== -1 && lastBrace > firstBrace) {
104
+ jsonStr = jsonStr.substring(firstBrace, lastBrace + 1);
105
+ }
106
+ else {
107
+ // No JSON object found at all
108
+ const errorMsg = 'No JSON object found in response';
109
+ debugLogger_1.debugLogger.logJSONParsing({
110
+ agent: 'DocumentUpdater',
111
+ success: false,
112
+ rawContent: content,
113
+ error: errorMsg
114
+ });
115
+ return {
116
+ updatedDocument: originalDocument,
117
+ sectionsModified: [],
118
+ errors: [errorMsg]
119
+ };
120
+ }
121
+ }
122
+ try {
123
+ const parsed = JSON.parse(jsonStr);
124
+ if (parsed.updatedDocument && typeof parsed.updatedDocument === 'string') {
125
+ return {
126
+ updatedDocument: parsed.updatedDocument,
127
+ sectionsModified: parsed.sectionsModified || [],
128
+ errors: parsed.errors || []
129
+ };
130
+ }
131
+ // If no valid document in response, return original
132
+ const errorMsg = `Response JSON did not contain valid updatedDocument field. Keys found: ${Object.keys(parsed).join(', ')}`;
133
+ debugLogger_1.debugLogger.logJSONParsing({
134
+ agent: 'DocumentUpdater',
135
+ success: false,
136
+ rawContent: jsonStr,
137
+ parsedObject: parsed,
138
+ error: errorMsg
139
+ });
140
+ return {
141
+ updatedDocument: originalDocument,
142
+ sectionsModified: [],
143
+ errors: [errorMsg]
144
+ };
145
+ }
146
+ catch (error) {
147
+ // JSON parsing failed - log detailed error and return original document
148
+ const errorMessage = error instanceof Error ? error.message : 'Unknown parsing error';
149
+ const errorMsg = `JSON parse failed: ${errorMessage}`;
150
+ debugLogger_1.debugLogger.logJSONParsing({
151
+ agent: 'DocumentUpdater',
152
+ success: false,
153
+ rawContent: jsonStr,
154
+ error: errorMsg
155
+ });
156
+ return {
157
+ updatedDocument: originalDocument,
158
+ sectionsModified: [],
159
+ errors: [errorMsg]
160
+ };
161
+ }
162
+ }
163
+ }
164
+ exports.DocumentUpdater = DocumentUpdater;
165
+ //# sourceMappingURL=DocumentUpdater.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DocumentUpdater.js","sourceRoot":"","sources":["../../../src/agents/core/DocumentUpdater.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"CreativeSpecialist.d.ts","sourceRoot":"","sources":["../../../src/agents/specialists/CreativeSpecialist.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAe,MAAM,mBAAmB,CAAC;AAE3D,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,qBAAa,kBAAmB,SAAQ,SAAS;gBACnC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG;IAa1D,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;CAgIzF"}
1
+ {"version":3,"file":"CreativeSpecialist.d.ts","sourceRoot":"","sources":["../../../src/agents/specialists/CreativeSpecialist.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAe,MAAM,mBAAmB,CAAC;AAE3D,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,qBAAa,kBAAmB,SAAQ,SAAS;gBACnC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG;IAa1D,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;CA6NzF"}
@@ -74,6 +74,74 @@ Focus on the creative vision, not production pipeline details.`
74
74
  if (overages.length > 0) {
75
75
  await this.askClarification(`The following asset categories exceed typical limits for a "${scope}" scope:\n\n${overages.map(o => `- ${o}`).join('\n')}`, bible, 'Asset Scope');
76
76
  }
77
+ // Check for art style-genre mismatch
78
+ const genres = bible.meta.genre.map((g) => g.toLowerCase());
79
+ const artStyle = bible.creative.artStyle.toLowerCase();
80
+ // Horror game check - more nuanced to allow horror-comedy or intentional contrast
81
+ if (genres.some((g) => g.includes('horror'))) {
82
+ // Only flag if BOTH bright/cheerful AND no indication of comedy/intentional contrast
83
+ const hasConflictingStyle = (artStyle.includes('bright') || artStyle.includes('cheerful') || artStyle.includes('colorful')) &&
84
+ !artStyle.includes('contrast') && !artStyle.includes('ironic');
85
+ const isHorrorComedy = genres.some((g) => g.includes('comedy')) || artStyle.includes('comedy');
86
+ if (hasConflictingStyle && !isHorrorComedy) {
87
+ const result = await this.askClarification(`Art style "${bible.creative.artStyle}" seems unusual for a horror game. Is this intentional (e.g., horror-comedy, ironic contrast)?`, bible, 'Art Style Genre Match');
88
+ const decision = (result.answer || '').toLowerCase();
89
+ if (decision.includes('comedy') || decision.includes('ironic') || decision.includes('contrast')) {
90
+ onProgress?.('Unconventional horror art style acknowledged as intentional design choice');
91
+ }
92
+ else if (decision.includes('change') || decision.includes('darken')) {
93
+ onProgress?.('Note: Consider darkening art style to match horror atmosphere');
94
+ }
95
+ }
96
+ }
97
+ if (genres.some((g) => g.includes('realistic') || g.includes('simulation') || g.includes('military'))) {
98
+ if (artStyle.includes('stylized') || artStyle.includes('anime') ||
99
+ artStyle.includes('cartoon') || artStyle.includes('cute')) {
100
+ const result = await this.askClarification(`Art style "${bible.creative.artStyle}" seems unusual for a ${genres.join('/')} game. Is this intentional?`, bible, 'Art Style Realism');
101
+ const decision = (result.answer || '').toLowerCase();
102
+ if (decision.includes('yes') || decision.includes('intentional') || decision.includes('stylized')) {
103
+ onProgress?.('Stylized art for realistic game acknowledged as design choice');
104
+ }
105
+ }
106
+ }
107
+ if (genres.some((g) => g.includes('serious') || g.includes('tactical'))) {
108
+ if (artStyle.includes('cute') || artStyle.includes('whimsical') ||
109
+ artStyle.includes('playful')) {
110
+ const result = await this.askClarification(`Art style "${bible.creative.artStyle}" seems unusual for a serious/tactical game. Is this a deliberate contrast?`, bible, 'Art Style Tone');
111
+ const decision = (result.answer || '').toLowerCase();
112
+ if (decision.includes('yes') || decision.includes('deliberate') || decision.includes('contrast')) {
113
+ onProgress?.('Contrasting art style acknowledged as deliberate design choice');
114
+ }
115
+ else {
116
+ onProgress?.('Note: Consider aligning art style with serious/tactical tone');
117
+ }
118
+ }
119
+ }
120
+ // Check for audio-genre mismatch
121
+ const audioMood = bible.creative.audioMood.toLowerCase();
122
+ if (genres.some((g) => g.includes('horror'))) {
123
+ if (audioMood.includes('upbeat') || audioMood.includes('cheerful') ||
124
+ audioMood.includes('lighthearted') || audioMood.includes('happy')) {
125
+ const result = await this.askClarification(`Audio mood "${bible.creative.audioMood}" seems unusual for a horror game. Is this intentional?`, bible, 'Audio Mood Genre Match');
126
+ const decision = (result.answer || '').toLowerCase();
127
+ if (decision.includes('yes') || decision.includes('intentional') || decision.includes('contrast')) {
128
+ onProgress?.('Unconventional horror audio mood acknowledged as design choice');
129
+ }
130
+ }
131
+ }
132
+ if (genres.some((g) => g.includes('puzzle') || g.includes('relaxing'))) {
133
+ if (audioMood.includes('intense') || audioMood.includes('aggressive') ||
134
+ audioMood.includes('heavy metal') || audioMood.includes('chaotic')) {
135
+ const result = await this.askClarification(`Audio mood "${bible.creative.audioMood}" seems unusual for a ${genres.join('/')} game. Is this intentional?`, bible, 'Audio Mood Intensity');
136
+ const decision = (result.answer || '').toLowerCase();
137
+ if (decision.includes('yes') || decision.includes('intentional') || decision.includes('tension')) {
138
+ onProgress?.('High-intensity audio for puzzle game acknowledged as design choice');
139
+ }
140
+ else {
141
+ onProgress?.('Note: Consider calmer audio mood for puzzle/relaxing game');
142
+ }
143
+ }
144
+ }
77
145
  const prompt = `Generate creative direction documentation focused on vision and mood:
78
146
 
79
147
  Game: ${bible.meta.title} (${bible.meta.genre.join(', ')})