gameforge-cli 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +366 -0
  3. package/dist/agents/base/BaseAgent.d.ts +45 -0
  4. package/dist/agents/base/BaseAgent.d.ts.map +1 -0
  5. package/dist/agents/base/BaseAgent.js +179 -0
  6. package/dist/agents/base/BaseAgent.js.map +1 -0
  7. package/dist/agents/core/Architect.d.ts +16 -0
  8. package/dist/agents/core/Architect.d.ts.map +1 -0
  9. package/dist/agents/core/Architect.js +487 -0
  10. package/dist/agents/core/Architect.js.map +1 -0
  11. package/dist/agents/core/Chaos.d.ts +14 -0
  12. package/dist/agents/core/Chaos.d.ts.map +1 -0
  13. package/dist/agents/core/Chaos.js +67 -0
  14. package/dist/agents/core/Chaos.js.map +1 -0
  15. package/dist/agents/core/Consistency.d.ts +16 -0
  16. package/dist/agents/core/Consistency.d.ts.map +1 -0
  17. package/dist/agents/core/Consistency.js +132 -0
  18. package/dist/agents/core/Consistency.js.map +1 -0
  19. package/dist/agents/core/Inquisitor.d.ts +20 -0
  20. package/dist/agents/core/Inquisitor.d.ts.map +1 -0
  21. package/dist/agents/core/Inquisitor.js +159 -0
  22. package/dist/agents/core/Inquisitor.js.map +1 -0
  23. package/dist/agents/core/Remediation.d.ts +16 -0
  24. package/dist/agents/core/Remediation.d.ts.map +1 -0
  25. package/dist/agents/core/Remediation.js +151 -0
  26. package/dist/agents/core/Remediation.js.map +1 -0
  27. package/dist/agents/specialists/CreativeSpecialist.d.ts +7 -0
  28. package/dist/agents/specialists/CreativeSpecialist.d.ts.map +1 -0
  29. package/dist/agents/specialists/CreativeSpecialist.js +70 -0
  30. package/dist/agents/specialists/CreativeSpecialist.js.map +1 -0
  31. package/dist/agents/specialists/EntitySpecialist.d.ts +8 -0
  32. package/dist/agents/specialists/EntitySpecialist.d.ts.map +1 -0
  33. package/dist/agents/specialists/EntitySpecialist.js +74 -0
  34. package/dist/agents/specialists/EntitySpecialist.js.map +1 -0
  35. package/dist/agents/specialists/FeatureSpecialist.d.ts +8 -0
  36. package/dist/agents/specialists/FeatureSpecialist.d.ts.map +1 -0
  37. package/dist/agents/specialists/FeatureSpecialist.js +83 -0
  38. package/dist/agents/specialists/FeatureSpecialist.js.map +1 -0
  39. package/dist/agents/specialists/TechSpecialist.d.ts +7 -0
  40. package/dist/agents/specialists/TechSpecialist.d.ts.map +1 -0
  41. package/dist/agents/specialists/TechSpecialist.js +62 -0
  42. package/dist/agents/specialists/TechSpecialist.js.map +1 -0
  43. package/dist/config/budget.d.ts +36 -0
  44. package/dist/config/budget.d.ts.map +1 -0
  45. package/dist/config/budget.js +37 -0
  46. package/dist/config/budget.js.map +1 -0
  47. package/dist/config/schema.d.ts +1336 -0
  48. package/dist/config/schema.d.ts.map +1 -0
  49. package/dist/config/schema.js +134 -0
  50. package/dist/config/schema.js.map +1 -0
  51. package/dist/config/templates.d.ts +10 -0
  52. package/dist/config/templates.d.ts.map +1 -0
  53. package/dist/config/templates.js +202 -0
  54. package/dist/config/templates.js.map +1 -0
  55. package/dist/core/CheckpointManager.d.ts +16 -0
  56. package/dist/core/CheckpointManager.d.ts.map +1 -0
  57. package/dist/core/CheckpointManager.js +52 -0
  58. package/dist/core/CheckpointManager.js.map +1 -0
  59. package/dist/core/Orchestrator.d.ts +11 -0
  60. package/dist/core/Orchestrator.d.ts.map +1 -0
  61. package/dist/core/Orchestrator.js +46 -0
  62. package/dist/core/Orchestrator.js.map +1 -0
  63. package/dist/core/SessionManager.d.ts +68 -0
  64. package/dist/core/SessionManager.d.ts.map +1 -0
  65. package/dist/core/SessionManager.js +162 -0
  66. package/dist/core/SessionManager.js.map +1 -0
  67. package/dist/core/StateMachine.d.ts +46 -0
  68. package/dist/core/StateMachine.d.ts.map +1 -0
  69. package/dist/core/StateMachine.js +82 -0
  70. package/dist/core/StateMachine.js.map +1 -0
  71. package/dist/index.d.ts +3 -0
  72. package/dist/index.d.ts.map +1 -0
  73. package/dist/index.js +830 -0
  74. package/dist/index.js.map +1 -0
  75. package/dist/utils/costTracker.d.ts +30 -0
  76. package/dist/utils/costTracker.d.ts.map +1 -0
  77. package/dist/utils/costTracker.js +64 -0
  78. package/dist/utils/costTracker.js.map +1 -0
  79. package/dist/utils/debugLogger.d.ts +48 -0
  80. package/dist/utils/debugLogger.d.ts.map +1 -0
  81. package/dist/utils/debugLogger.js +179 -0
  82. package/dist/utils/debugLogger.js.map +1 -0
  83. package/dist/utils/fileManager.d.ts +14 -0
  84. package/dist/utils/fileManager.d.ts.map +1 -0
  85. package/dist/utils/fileManager.js +135 -0
  86. package/dist/utils/fileManager.js.map +1 -0
  87. package/dist/utils/modelSelector.d.ts +11 -0
  88. package/dist/utils/modelSelector.d.ts.map +1 -0
  89. package/dist/utils/modelSelector.js +38 -0
  90. package/dist/utils/modelSelector.js.map +1 -0
  91. package/package.json +49 -0
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EntitySpecialist = void 0;
4
+ const BaseAgent_1 = require("../base/BaseAgent");
5
+ const modelSelector_1 = require("../../utils/modelSelector");
6
+ class EntitySpecialist extends BaseAgent_1.BaseAgent {
7
+ constructor(apiKey, costTracker, modelSelector) {
8
+ const config = {
9
+ systemPrompt: `You are an Entity Design Specialist.
10
+ Generate detailed specifications for game entities (NPCs, Items, Monsters) including:
11
+ - Stat tables and attribute breakdowns
12
+ - Behavior descriptions
13
+ - Narrative context
14
+ - Balance formulas
15
+
16
+ Be specific and create production-ready documentation.`
17
+ };
18
+ super(apiKey, config, costTracker, modelSelector);
19
+ }
20
+ async execute(bible, onProgress) {
21
+ const sections = ['# 03. Game Objects & Entities\n'];
22
+ // Group by category
23
+ const categories = ['NPC', 'Monster', 'Item', 'Interactable'];
24
+ for (const category of categories) {
25
+ const entities = bible.gameObjects.filter(e => e.category === category);
26
+ if (entities.length > 0) {
27
+ sections.push(`## ${category}s\n`);
28
+ for (const entity of entities) {
29
+ onProgress?.(`Processing ${category} ${entity.name}...`);
30
+ const markdown = await this.generateEntityDoc(entity, bible, onProgress);
31
+ sections.push(markdown);
32
+ }
33
+ }
34
+ }
35
+ return sections.join('\n\n');
36
+ }
37
+ async generateEntityDoc(entity, bible, onProgress) {
38
+ const prompt = `Generate detailed documentation for this game entity:
39
+
40
+ Entity: ${JSON.stringify(entity, null, 2)}
41
+ Game Context: ${bible.meta.title}
42
+
43
+ Create markdown documentation with:
44
+
45
+ ### ${entity.name}
46
+ **ID**: ${entity.id}
47
+ **Category**: ${entity.category}
48
+
49
+ ${entity.narrative ? `**Backstory**: ${entity.narrative.backstory}\n` : ''}
50
+
51
+ **Attributes**:
52
+ ${Object.entries(entity.stats.attributes).map(([key, val]) => `- ${key}: ${val}`).join('\n')}
53
+
54
+ **Behaviors**:
55
+ ${entity.stats.behaviors.map(b => `- ${b}`).join('\n')}
56
+
57
+ ${entity.stats.balanceFormulas && entity.stats.balanceFormulas.length > 0 ? `
58
+ **Balance Formulas**:
59
+ ${entity.stats.balanceFormulas.map(f => `- ${f.expression}`).join('\n')}
60
+ ` : ''}
61
+
62
+ ${entity.references.features.length > 0 ? `**Used In Features**: ${entity.references.features.join(', ')}` : ''}
63
+
64
+ Generate this in clean markdown format.`;
65
+ const result = await this.callLLMWithAutoRetry(prompt, modelSelector_1.TaskComplexity.SIMPLE, {
66
+ initialMaxTokens: 8000,
67
+ maxRetries: 2,
68
+ onProgress: (msg) => onProgress?.(`${entity.name}: ${msg}`)
69
+ });
70
+ return result.content;
71
+ }
72
+ }
73
+ exports.EntitySpecialist = EntitySpecialist;
74
+ //# sourceMappingURL=EntitySpecialist.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EntitySpecialist.js","sourceRoot":"","sources":["../../../src/agents/specialists/EntitySpecialist.ts"],"names":[],"mappings":";;;AAAA,iDAA2D;AAC3D,6DAA2D;AAG3D,MAAa,gBAAiB,SAAQ,qBAAS;IAC7C,YAAY,MAAc,EAAE,WAAgB,EAAE,aAAkB;QAC9D,MAAM,MAAM,GAAgB;YAC1B,YAAY,EAAE;;;;;;;uDAOmC;SAClD,CAAC;QACF,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,KAAgB,EAAE,UAAsC;QACpE,MAAM,QAAQ,GAAa,CAAC,iCAAiC,CAAC,CAAC;QAE/D,oBAAoB;QACpB,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,CAAU,CAAC;QAEvE,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE,CAAC;YAClC,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;YACxE,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,QAAQ,CAAC,IAAI,CAAC,MAAM,QAAQ,KAAK,CAAC,CAAC;gBACnC,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;oBAC9B,UAAU,EAAE,CAAC,cAAc,QAAQ,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC;oBACzD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;oBACzE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC1B,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAAC,MAAc,EAAE,KAAgB,EAAE,UAAsC;QACtG,MAAM,MAAM,GAAG;;UAET,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;gBACzB,KAAK,CAAC,IAAI,CAAC,KAAK;;;;MAI1B,MAAM,CAAC,IAAI;UACP,MAAM,CAAC,EAAE;gBACH,MAAM,CAAC,QAAQ;;EAE7B,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,kBAAkB,MAAM,CAAC,SAAS,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,EAAE;;;EAGxE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,KAAK,GAAG,KAAK,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;EAG1F,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;EAEpD,MAAM,CAAC,KAAK,CAAC,eAAe,IAAI,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;;EAE1E,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;CACtE,CAAC,CAAC,CAAC,EAAE;;EAEJ,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,yBAAyB,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;;wCAEvE,CAAC;QAErC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,8BAAc,CAAC,MAAM,EAAE;YAC5E,gBAAgB,EAAE,IAAI;YACtB,UAAU,EAAE,CAAC;YACb,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,UAAU,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;SAC5D,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,OAAO,CAAC;IACxB,CAAC;CACF;AAxED,4CAwEC"}
@@ -0,0 +1,8 @@
1
+ import { BaseAgent } from '../base/BaseAgent';
2
+ import { GameBible } from '../../config/schema';
3
+ export declare class FeatureSpecialist extends BaseAgent {
4
+ constructor(apiKey: string, costTracker: any, modelSelector: any);
5
+ execute(bible: GameBible, onProgress?: (message: string) => void): Promise<string>;
6
+ private generateFeatureDoc;
7
+ }
8
+ //# sourceMappingURL=FeatureSpecialist.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FeatureSpecialist.d.ts","sourceRoot":"","sources":["../../../src/agents/specialists/FeatureSpecialist.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAe,MAAM,mBAAmB,CAAC;AAE3D,OAAO,EAAE,SAAS,EAAW,MAAM,qBAAqB,CAAC;AAEzD,qBAAa,iBAAkB,SAAQ,SAAS;gBAClC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG;IAc1D,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;YAY1E,kBAAkB;CAqDjC"}
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FeatureSpecialist = void 0;
4
+ const BaseAgent_1 = require("../base/BaseAgent");
5
+ const modelSelector_1 = require("../../utils/modelSelector");
6
+ class FeatureSpecialist extends BaseAgent_1.BaseAgent {
7
+ constructor(apiKey, costTracker, modelSelector) {
8
+ const config = {
9
+ systemPrompt: `You are a Feature Design Specialist.
10
+ Generate comprehensive technical specifications for game features including:
11
+ - Mermaid sequence diagrams for gameplay loops
12
+ - Math formulas with variable definitions
13
+ - Agile user stories with acceptance criteria
14
+ - Data structure pseudo-code
15
+
16
+ Be specific and technical. Use industry-standard notation.`
17
+ };
18
+ super(apiKey, config, costTracker, modelSelector);
19
+ }
20
+ async execute(bible, onProgress) {
21
+ const sections = ['# 02. Systems & Features\n'];
22
+ for (const feature of bible.features) {
23
+ onProgress?.(`Processing feature ${feature.name}...`);
24
+ const markdown = await this.generateFeatureDoc(feature, bible, onProgress);
25
+ sections.push(markdown);
26
+ }
27
+ return sections.join('\n\n---\n\n');
28
+ }
29
+ async generateFeatureDoc(feature, bible, onProgress) {
30
+ const prompt = `Generate detailed technical documentation for this game feature:
31
+
32
+ Feature: ${JSON.stringify(feature, null, 2)}
33
+ Game Context: ${bible.meta.title} (${bible.meta.genre.join(', ')})
34
+
35
+ Create markdown documentation with:
36
+
37
+ ## ${feature.name}
38
+ **Epic**: ${feature.agile.epic}
39
+
40
+ ### Intent
41
+ ${feature.intent}
42
+
43
+ ### Gameplay Loop
44
+ \`\`\`mermaid
45
+ sequenceDiagram
46
+ ${feature.gameplayLoop.map((step, i) => ` participant Step${i} as ${step}`).join('\n')}
47
+ \`\`\`
48
+
49
+ ### User Stories
50
+ ${feature.agile.userStories.map(s => `- ${s}`).join('\n')}
51
+
52
+ ### Technical Specification
53
+ **Data Structure**:
54
+ \`\`\`cpp
55
+ ${feature.technical.dataStructure}
56
+ \`\`\`
57
+
58
+ **Math Formulas**:
59
+ ${feature.technical.mathFormulas?.map(f => `
60
+ - Formula: \\\`${f.expression}\\\`
61
+ - Variables: ${Object.entries(f.variables).map(([k, v]) => `${k} (${v.type})`).join(', ')}
62
+ `).join('\n') || 'None'}
63
+
64
+ **File Location**: \`${feature.technical.fileLocation}\`
65
+
66
+ **Complexity**: ${feature.technical.estimatedComplexity}
67
+
68
+ ### UI Requirements
69
+ ${feature.uiRequirements.map(ui => `- ${ui}`).join('\n')}
70
+
71
+ ${feature.monetization ? `### Monetization\n- Strategy: ${feature.monetization.strategy}\n- ${feature.monetization.implementation}` : ''}
72
+
73
+ Ensure Mermaid syntax is valid and formulas are properly escaped.`;
74
+ const result = await this.callLLMWithAutoRetry(prompt, modelSelector_1.TaskComplexity.MODERATE, {
75
+ initialMaxTokens: 16000,
76
+ maxRetries: 2,
77
+ onProgress: (msg) => onProgress?.(`${feature.name}: ${msg}`)
78
+ });
79
+ return result.content;
80
+ }
81
+ }
82
+ exports.FeatureSpecialist = FeatureSpecialist;
83
+ //# sourceMappingURL=FeatureSpecialist.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FeatureSpecialist.js","sourceRoot":"","sources":["../../../src/agents/specialists/FeatureSpecialist.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { BaseAgent } from '../base/BaseAgent';
2
+ import { GameBible } from '../../config/schema';
3
+ export declare class TechSpecialist extends BaseAgent {
4
+ constructor(apiKey: string, costTracker: any, modelSelector: any);
5
+ execute(bible: GameBible, onProgress?: (message: string) => void): Promise<string>;
6
+ }
7
+ //# sourceMappingURL=TechSpecialist.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TechSpecialist.d.ts","sourceRoot":"","sources":["../../../src/agents/specialists/TechSpecialist.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAe,MAAM,mBAAmB,CAAC;AAE3D,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,qBAAa,cAAe,SAAQ,SAAS;gBAC/B,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG;IAe1D,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;CAwCzF"}
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TechSpecialist = void 0;
4
+ const BaseAgent_1 = require("../base/BaseAgent");
5
+ const modelSelector_1 = require("../../utils/modelSelector");
6
+ class TechSpecialist extends BaseAgent_1.BaseAgent {
7
+ constructor(apiKey, costTracker, modelSelector) {
8
+ const config = {
9
+ systemPrompt: `You are a Technical Specification Specialist.
10
+ Generate detailed technical documentation including:
11
+ - Engine configuration and setup
12
+ - Required tools and their purposes
13
+ - Directory structure
14
+ - Build targets and deployment
15
+ - Localization strategy
16
+
17
+ Be precise and actionable.`
18
+ };
19
+ super(apiKey, config, costTracker, modelSelector);
20
+ }
21
+ async execute(bible, onProgress) {
22
+ const prompt = `Generate comprehensive technical documentation:
23
+
24
+ Technical Spec: ${JSON.stringify(bible.technical, null, 2)}
25
+ Game: ${bible.meta.title}
26
+
27
+ Create markdown with these sections:
28
+
29
+ # 04. Technical Specification
30
+
31
+ ## Engine Configuration
32
+ **Engine**: ${bible.technical.engine.primary} ${bible.technical.engine.version}
33
+ ${bible.technical.engine.plugins && bible.technical.engine.plugins.length > 0 ? `**Plugins**: ${bible.technical.engine.plugins.join(', ')}` : ''}
34
+ ${bible.technical.engine.reasoning ? `**Reasoning**: ${bible.technical.engine.reasoning}` : ''}
35
+
36
+ ## Required Tools
37
+ ${bible.technical.toolsRequired.map(t => `- **${t.name}**: ${t.purpose} ${t.required ? '(Required)' : '(Optional)'}`).join('\n')}
38
+
39
+ ## Localization
40
+ **Strategy**: ${bible.technical.localization.strategy}
41
+ ${bible.technical.localization.languages ? `**Languages**: ${bible.technical.localization.languages.join(', ')}` : ''}
42
+ ${bible.technical.localization.stringCount ? `**Estimated Strings**: ${bible.technical.localization.stringCount}` : ''}
43
+
44
+ ## Directory Structure
45
+ \`\`\`
46
+ ${bible.technical.directoryStructure}
47
+ \`\`\`
48
+
49
+ ## Build Targets
50
+ ${bible.technical.buildTargets.map(t => `- ${t}`).join('\n')}
51
+
52
+ Expand on each section with practical implementation notes.`;
53
+ const result = await this.callLLMWithAutoRetry(prompt, modelSelector_1.TaskComplexity.MODERATE, {
54
+ initialMaxTokens: 16000,
55
+ maxRetries: 2,
56
+ onProgress: onProgress
57
+ });
58
+ return result.content;
59
+ }
60
+ }
61
+ exports.TechSpecialist = TechSpecialist;
62
+ //# sourceMappingURL=TechSpecialist.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TechSpecialist.js","sourceRoot":"","sources":["../../../src/agents/specialists/TechSpecialist.ts"],"names":[],"mappings":";;;AAAA,iDAA2D;AAC3D,6DAA2D;AAG3D,MAAa,cAAe,SAAQ,qBAAS;IAC3C,YAAY,MAAc,EAAE,WAAgB,EAAE,aAAkB;QAC9D,MAAM,MAAM,GAAgB;YAC1B,YAAY,EAAE;;;;;;;;2BAQO;SACtB,CAAC;QACF,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,KAAgB,EAAE,UAAsC;QACpE,MAAM,MAAM,GAAG;;kBAED,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,KAAK,CAAC,IAAI,CAAC,KAAK;;;;;;;cAOV,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO;EAC5E,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAgB,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;EAC9I,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,kBAAkB,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE;;;EAG5F,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;gBAGhH,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,QAAQ;EACnD,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,kBAAkB,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;EACnH,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,0BAA0B,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE;;;;EAIpH,KAAK,CAAC,SAAS,CAAC,kBAAkB;;;;EAIlC,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;4DAEA,CAAC;QAEzD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,8BAAc,CAAC,QAAQ,EAAE;YAC9E,gBAAgB,EAAE,KAAK;YACvB,UAAU,EAAE,CAAC;YACb,UAAU,EAAE,UAAU;SACvB,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,OAAO,CAAC;IACxB,CAAC;CACF;AAxDD,wCAwDC"}
@@ -0,0 +1,36 @@
1
+ export declare const MODEL_COSTS: {
2
+ readonly 'claude-sonnet-4-5-20250929': {
3
+ readonly input: number;
4
+ readonly output: number;
5
+ };
6
+ readonly 'claude-haiku-4-5-20251001': {
7
+ readonly input: number;
8
+ readonly output: number;
9
+ };
10
+ };
11
+ export declare const BUDGET_TIERS: {
12
+ readonly quick: {
13
+ readonly name: "Quick Draft";
14
+ readonly maxBudget: 2;
15
+ readonly preferredModel: "claude-haiku-4-5-20251001";
16
+ readonly maxTokensPerCall: 2000;
17
+ readonly description: "Fast generation with minimal detail";
18
+ };
19
+ readonly standard: {
20
+ readonly name: "Standard GDD";
21
+ readonly maxBudget: 10;
22
+ readonly preferredModel: "claude-sonnet-4-5-20250929";
23
+ readonly maxTokensPerCall: 4000;
24
+ readonly description: "Balanced quality and cost";
25
+ };
26
+ readonly deep: {
27
+ readonly name: "Comprehensive Design";
28
+ readonly maxBudget: 25;
29
+ readonly preferredModel: "claude-sonnet-4-5-20250929";
30
+ readonly maxTokensPerCall: 8000;
31
+ readonly description: "Maximum detail and depth";
32
+ };
33
+ };
34
+ export type BudgetTier = keyof typeof BUDGET_TIERS;
35
+ export type ModelName = keyof typeof MODEL_COSTS;
36
+ //# sourceMappingURL=budget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"budget.d.ts","sourceRoot":"","sources":["../../src/config/budget.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW;;;;;;;;;CASd,CAAC;AAEX,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;CAsBf,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,MAAM,OAAO,YAAY,CAAC;AACnD,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,WAAW,CAAC"}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BUDGET_TIERS = exports.MODEL_COSTS = void 0;
4
+ exports.MODEL_COSTS = {
5
+ 'claude-sonnet-4-5-20250929': {
6
+ input: 3.00 / 1_000_000, // $3 per million input tokens
7
+ output: 15.00 / 1_000_000 // $15 per million output tokens
8
+ },
9
+ 'claude-haiku-4-5-20251001': {
10
+ input: 0.80 / 1_000_000,
11
+ output: 4.00 / 1_000_000
12
+ }
13
+ };
14
+ exports.BUDGET_TIERS = {
15
+ quick: {
16
+ name: 'Quick Draft',
17
+ maxBudget: 2.00,
18
+ preferredModel: 'claude-haiku-4-5-20251001',
19
+ maxTokensPerCall: 2000,
20
+ description: 'Fast generation with minimal detail'
21
+ },
22
+ standard: {
23
+ name: 'Standard GDD',
24
+ maxBudget: 10.00,
25
+ preferredModel: 'claude-sonnet-4-5-20250929',
26
+ maxTokensPerCall: 4000,
27
+ description: 'Balanced quality and cost'
28
+ },
29
+ deep: {
30
+ name: 'Comprehensive Design',
31
+ maxBudget: 25.00,
32
+ preferredModel: 'claude-sonnet-4-5-20250929',
33
+ maxTokensPerCall: 8000,
34
+ description: 'Maximum detail and depth'
35
+ }
36
+ };
37
+ //# sourceMappingURL=budget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"budget.js","sourceRoot":"","sources":["../../src/config/budget.ts"],"names":[],"mappings":";;;AAAa,QAAA,WAAW,GAAG;IACzB,4BAA4B,EAAE;QAC5B,KAAK,EAAE,IAAI,GAAG,SAAS,EAAG,8BAA8B;QACxD,MAAM,EAAE,KAAK,GAAG,SAAS,CAAE,gCAAgC;KAC5D;IACD,2BAA2B,EAAE;QAC3B,KAAK,EAAE,IAAI,GAAG,SAAS;QACvB,MAAM,EAAE,IAAI,GAAG,SAAS;KACzB;CACO,CAAC;AAEE,QAAA,YAAY,GAAG;IAC1B,KAAK,EAAE;QACL,IAAI,EAAE,aAAa;QACnB,SAAS,EAAE,IAAI;QACf,cAAc,EAAE,2BAAoC;QACpD,gBAAgB,EAAE,IAAI;QACtB,WAAW,EAAE,qCAAqC;KACnD;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,cAAc;QACpB,SAAS,EAAE,KAAK;QAChB,cAAc,EAAE,4BAAqC;QACrD,gBAAgB,EAAE,IAAI;QACtB,WAAW,EAAE,2BAA2B;KACzC;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,sBAAsB;QAC5B,SAAS,EAAE,KAAK;QAChB,cAAc,EAAE,4BAAqC;QACrD,gBAAgB,EAAE,IAAI;QACtB,WAAW,EAAE,0BAA0B;KACxC;CACO,CAAC"}