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.
- package/LICENSE +21 -0
- package/README.md +366 -0
- package/dist/agents/base/BaseAgent.d.ts +45 -0
- package/dist/agents/base/BaseAgent.d.ts.map +1 -0
- package/dist/agents/base/BaseAgent.js +179 -0
- package/dist/agents/base/BaseAgent.js.map +1 -0
- package/dist/agents/core/Architect.d.ts +16 -0
- package/dist/agents/core/Architect.d.ts.map +1 -0
- package/dist/agents/core/Architect.js +487 -0
- package/dist/agents/core/Architect.js.map +1 -0
- package/dist/agents/core/Chaos.d.ts +14 -0
- package/dist/agents/core/Chaos.d.ts.map +1 -0
- package/dist/agents/core/Chaos.js +67 -0
- package/dist/agents/core/Chaos.js.map +1 -0
- package/dist/agents/core/Consistency.d.ts +16 -0
- package/dist/agents/core/Consistency.d.ts.map +1 -0
- package/dist/agents/core/Consistency.js +132 -0
- package/dist/agents/core/Consistency.js.map +1 -0
- package/dist/agents/core/Inquisitor.d.ts +20 -0
- package/dist/agents/core/Inquisitor.d.ts.map +1 -0
- package/dist/agents/core/Inquisitor.js +159 -0
- package/dist/agents/core/Inquisitor.js.map +1 -0
- package/dist/agents/core/Remediation.d.ts +16 -0
- package/dist/agents/core/Remediation.d.ts.map +1 -0
- package/dist/agents/core/Remediation.js +151 -0
- package/dist/agents/core/Remediation.js.map +1 -0
- package/dist/agents/specialists/CreativeSpecialist.d.ts +7 -0
- package/dist/agents/specialists/CreativeSpecialist.d.ts.map +1 -0
- package/dist/agents/specialists/CreativeSpecialist.js +70 -0
- package/dist/agents/specialists/CreativeSpecialist.js.map +1 -0
- package/dist/agents/specialists/EntitySpecialist.d.ts +8 -0
- package/dist/agents/specialists/EntitySpecialist.d.ts.map +1 -0
- package/dist/agents/specialists/EntitySpecialist.js +74 -0
- package/dist/agents/specialists/EntitySpecialist.js.map +1 -0
- package/dist/agents/specialists/FeatureSpecialist.d.ts +8 -0
- package/dist/agents/specialists/FeatureSpecialist.d.ts.map +1 -0
- package/dist/agents/specialists/FeatureSpecialist.js +83 -0
- package/dist/agents/specialists/FeatureSpecialist.js.map +1 -0
- package/dist/agents/specialists/TechSpecialist.d.ts +7 -0
- package/dist/agents/specialists/TechSpecialist.d.ts.map +1 -0
- package/dist/agents/specialists/TechSpecialist.js +62 -0
- package/dist/agents/specialists/TechSpecialist.js.map +1 -0
- package/dist/config/budget.d.ts +36 -0
- package/dist/config/budget.d.ts.map +1 -0
- package/dist/config/budget.js +37 -0
- package/dist/config/budget.js.map +1 -0
- package/dist/config/schema.d.ts +1336 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +134 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/config/templates.d.ts +10 -0
- package/dist/config/templates.d.ts.map +1 -0
- package/dist/config/templates.js +202 -0
- package/dist/config/templates.js.map +1 -0
- package/dist/core/CheckpointManager.d.ts +16 -0
- package/dist/core/CheckpointManager.d.ts.map +1 -0
- package/dist/core/CheckpointManager.js +52 -0
- package/dist/core/CheckpointManager.js.map +1 -0
- package/dist/core/Orchestrator.d.ts +11 -0
- package/dist/core/Orchestrator.d.ts.map +1 -0
- package/dist/core/Orchestrator.js +46 -0
- package/dist/core/Orchestrator.js.map +1 -0
- package/dist/core/SessionManager.d.ts +68 -0
- package/dist/core/SessionManager.d.ts.map +1 -0
- package/dist/core/SessionManager.js +162 -0
- package/dist/core/SessionManager.js.map +1 -0
- package/dist/core/StateMachine.d.ts +46 -0
- package/dist/core/StateMachine.d.ts.map +1 -0
- package/dist/core/StateMachine.js +82 -0
- package/dist/core/StateMachine.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +830 -0
- package/dist/index.js.map +1 -0
- package/dist/utils/costTracker.d.ts +30 -0
- package/dist/utils/costTracker.d.ts.map +1 -0
- package/dist/utils/costTracker.js +64 -0
- package/dist/utils/costTracker.js.map +1 -0
- package/dist/utils/debugLogger.d.ts +48 -0
- package/dist/utils/debugLogger.d.ts.map +1 -0
- package/dist/utils/debugLogger.js +179 -0
- package/dist/utils/debugLogger.js.map +1 -0
- package/dist/utils/fileManager.d.ts +14 -0
- package/dist/utils/fileManager.d.ts.map +1 -0
- package/dist/utils/fileManager.js +135 -0
- package/dist/utils/fileManager.js.map +1 -0
- package/dist/utils/modelSelector.d.ts +11 -0
- package/dist/utils/modelSelector.d.ts.map +1 -0
- package/dist/utils/modelSelector.js +38 -0
- package/dist/utils/modelSelector.js.map +1 -0
- 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":"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"}
|
|
@@ -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"}
|