gameforge-cli 0.1.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.
- package/README.md +117 -44
- package/dist/agents/base/BaseAgent.d.ts +31 -0
- package/dist/agents/base/BaseAgent.d.ts.map +1 -1
- package/dist/agents/base/BaseAgent.js +57 -0
- package/dist/agents/base/BaseAgent.js.map +1 -1
- package/dist/agents/core/Architect.d.ts +21 -5
- package/dist/agents/core/Architect.d.ts.map +1 -1
- package/dist/agents/core/Architect.js +413 -150
- package/dist/agents/core/Architect.js.map +1 -1
- package/dist/agents/core/Chaos.d.ts +4 -0
- package/dist/agents/core/Chaos.d.ts.map +1 -1
- package/dist/agents/core/Chaos.js +46 -11
- package/dist/agents/core/Chaos.js.map +1 -1
- package/dist/agents/core/Consistency.d.ts +1 -0
- package/dist/agents/core/Consistency.d.ts.map +1 -1
- package/dist/agents/core/Consistency.js +86 -11
- package/dist/agents/core/Consistency.js.map +1 -1
- package/dist/agents/core/DocumentUpdater.d.ts +13 -0
- package/dist/agents/core/DocumentUpdater.d.ts.map +1 -0
- package/dist/agents/core/DocumentUpdater.js +165 -0
- package/dist/agents/core/DocumentUpdater.js.map +1 -0
- package/dist/agents/core/Modifier.d.ts +13 -0
- package/dist/agents/core/Modifier.d.ts.map +1 -0
- package/dist/agents/core/Modifier.js +141 -0
- package/dist/agents/core/Modifier.js.map +1 -0
- package/dist/agents/core/Remediation.d.ts +3 -1
- package/dist/agents/core/Remediation.d.ts.map +1 -1
- package/dist/agents/core/Remediation.js +63 -3
- package/dist/agents/core/Remediation.js.map +1 -1
- package/dist/agents/specialists/CreativeSpecialist.d.ts.map +1 -1
- package/dist/agents/specialists/CreativeSpecialist.js +162 -25
- package/dist/agents/specialists/CreativeSpecialist.js.map +1 -1
- package/dist/agents/specialists/EntitySpecialist.d.ts.map +1 -1
- package/dist/agents/specialists/EntitySpecialist.js +79 -25
- package/dist/agents/specialists/EntitySpecialist.js.map +1 -1
- package/dist/agents/specialists/FeatureSpecialist.d.ts +4 -0
- package/dist/agents/specialists/FeatureSpecialist.d.ts.map +1 -1
- package/dist/agents/specialists/FeatureSpecialist.js +114 -39
- package/dist/agents/specialists/FeatureSpecialist.js.map +1 -1
- package/dist/agents/specialists/TechSpecialist.d.ts.map +1 -1
- package/dist/agents/specialists/TechSpecialist.js +169 -32
- package/dist/agents/specialists/TechSpecialist.js.map +1 -1
- package/dist/config/schema.d.ts +1319 -709
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +142 -52
- package/dist/config/schema.js.map +1 -1
- package/dist/config/templates.d.ts.map +1 -1
- package/dist/config/templates.js +6 -66
- package/dist/config/templates.js.map +1 -1
- package/dist/core/Orchestrator.d.ts +17 -3
- package/dist/core/Orchestrator.d.ts.map +1 -1
- package/dist/core/Orchestrator.js +46 -16
- package/dist/core/Orchestrator.js.map +1 -1
- package/dist/index.js +544 -226
- package/dist/index.js.map +1 -1
- package/dist/types/issueReview.d.ts +19 -0
- package/dist/types/issueReview.d.ts.map +1 -0
- package/dist/types/issueReview.js +3 -0
- package/dist/types/issueReview.js.map +1 -0
- package/dist/utils/costTracker.d.ts +28 -0
- package/dist/utils/costTracker.d.ts.map +1 -1
- package/dist/utils/costTracker.js +71 -1
- package/dist/utils/costTracker.js.map +1 -1
- package/dist/utils/disambiguationHelper.d.ts +54 -0
- package/dist/utils/disambiguationHelper.d.ts.map +1 -0
- package/dist/utils/disambiguationHelper.js +262 -0
- package/dist/utils/disambiguationHelper.js.map +1 -0
- package/dist/utils/fileManager.d.ts +7 -0
- package/dist/utils/fileManager.d.ts.map +1 -1
- package/dist/utils/fileManager.js +47 -0
- package/dist/utils/fileManager.js.map +1 -1
- package/dist/utils/issueReviewer.d.ts +10 -0
- package/dist/utils/issueReviewer.d.ts.map +1 -0
- package/dist/utils/issueReviewer.js +206 -0
- package/dist/utils/issueReviewer.js.map +1 -0
- package/dist/utils/issueSelector.d.ts +26 -0
- package/dist/utils/issueSelector.d.ts.map +1 -0
- package/dist/utils/issueSelector.js +132 -0
- package/dist/utils/issueSelector.js.map +1 -0
- package/dist/utils/pdfGenerator.d.ts +12 -0
- package/dist/utils/pdfGenerator.d.ts.map +1 -0
- package/dist/utils/pdfGenerator.js +341 -0
- package/dist/utils/pdfGenerator.js.map +1 -0
- package/package.json +20 -15
- package/dist/core/CheckpointManager.d.ts +0 -16
- package/dist/core/CheckpointManager.d.ts.map +0 -1
- package/dist/core/CheckpointManager.js +0 -52
- package/dist/core/CheckpointManager.js.map +0 -1
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Modifier = void 0;
|
|
4
|
+
const BaseAgent_1 = require("../base/BaseAgent");
|
|
5
|
+
const modelSelector_1 = require("../../utils/modelSelector");
|
|
6
|
+
const schema_1 = require("../../config/schema");
|
|
7
|
+
const zod_1 = require("zod");
|
|
8
|
+
class Modifier extends BaseAgent_1.BaseAgent {
|
|
9
|
+
constructor(apiKey, costTracker, modelSelector) {
|
|
10
|
+
const config = {
|
|
11
|
+
systemPrompt: `You are the Modification Agent, responsible for applying user-requested changes to Game Design Documents.
|
|
12
|
+
|
|
13
|
+
Your role is to:
|
|
14
|
+
1. Understand the user's modification request in natural language
|
|
15
|
+
2. Apply targeted changes to the GameBible JSON
|
|
16
|
+
3. Preserve existing design intent unless explicitly asked to change it
|
|
17
|
+
4. Add new features/entities if requested
|
|
18
|
+
5. Remove or modify existing elements as requested
|
|
19
|
+
|
|
20
|
+
Rules:
|
|
21
|
+
1. Keep all existing data unless the modification explicitly affects it
|
|
22
|
+
2. When adding new features, follow existing naming conventions
|
|
23
|
+
3. Maintain ID patterns: FEAT-XXX, NPC-XXX, ITEM-XXX, MON-XXX, INT-XXX
|
|
24
|
+
4. Ensure dependencies are properly updated when adding/removing features
|
|
25
|
+
5. When removing features, also remove references to them from dependencies
|
|
26
|
+
6. Preserve the overall structure and schema compliance
|
|
27
|
+
7. Make the minimum changes needed to fulfill the request
|
|
28
|
+
|
|
29
|
+
Output ONLY raw JSON, no markdown code blocks, no commentary.
|
|
30
|
+
Do NOT wrap the JSON in \`\`\`json or \`\`\` tags.`,
|
|
31
|
+
temperature: 0.4
|
|
32
|
+
};
|
|
33
|
+
super(apiKey, config, costTracker, modelSelector);
|
|
34
|
+
}
|
|
35
|
+
async execute(bible, modificationRequest, onProgress) {
|
|
36
|
+
const prompt = `Apply the following modification to this Game Design Document.
|
|
37
|
+
|
|
38
|
+
## User's Modification Request:
|
|
39
|
+
${modificationRequest}
|
|
40
|
+
|
|
41
|
+
## Current GameBible:
|
|
42
|
+
${JSON.stringify(bible, null, 2)}
|
|
43
|
+
|
|
44
|
+
## Instructions:
|
|
45
|
+
1. Carefully read and understand the user's modification request
|
|
46
|
+
2. Apply the requested changes to the GameBible
|
|
47
|
+
3. Maintain consistency with the existing design
|
|
48
|
+
4. Update any related dependencies or references
|
|
49
|
+
5. Keep all unaffected sections unchanged
|
|
50
|
+
|
|
51
|
+
## Response Format:
|
|
52
|
+
{
|
|
53
|
+
"updatedBible": { /* Complete GameBible with modifications applied */ },
|
|
54
|
+
"changesSummary": ["Brief description of change 1", "Brief description of change 2"],
|
|
55
|
+
"errors": ["Any issues encountered while applying changes"]
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
CRITICAL SCHEMA RULES for updatedBible:
|
|
59
|
+
- mathFormulas/balanceFormulas MUST use this structure:
|
|
60
|
+
{
|
|
61
|
+
"expression": "result = input1 * input2",
|
|
62
|
+
"variables": {
|
|
63
|
+
"varName": {"type": "int|float|bool", "range": "min-max"}
|
|
64
|
+
},
|
|
65
|
+
"validated": false,
|
|
66
|
+
"balanceNotes": "optional notes"
|
|
67
|
+
}
|
|
68
|
+
- The field is "expression" NOT "formula" or "name"
|
|
69
|
+
- "variables" is an OBJECT keyed by variable name, NOT an array
|
|
70
|
+
- multiplayer.playerCount must be a STRING like "2-8", NOT an object
|
|
71
|
+
- Variable types must be exactly: "int", "float", or "bool"
|
|
72
|
+
|
|
73
|
+
Output only valid JSON. Apply the requested modifications completely.`;
|
|
74
|
+
const result = await this.callLLMWithAutoRetry(prompt, modelSelector_1.TaskComplexity.COMPLEX, {
|
|
75
|
+
initialMaxTokens: 32000,
|
|
76
|
+
maxRetries: 2,
|
|
77
|
+
onProgress
|
|
78
|
+
});
|
|
79
|
+
return this.parseResult(result.content, bible);
|
|
80
|
+
}
|
|
81
|
+
parseResult(content, originalBible) {
|
|
82
|
+
let jsonStr = content.trim();
|
|
83
|
+
// Handle markdown code blocks
|
|
84
|
+
const codeBlockMatch = content.match(/```(?:json)?\n?([\s\S]*?)\n?```/);
|
|
85
|
+
if (codeBlockMatch) {
|
|
86
|
+
jsonStr = codeBlockMatch[1].trim();
|
|
87
|
+
}
|
|
88
|
+
// Find JSON object boundaries
|
|
89
|
+
if (!jsonStr.startsWith('{')) {
|
|
90
|
+
const firstBrace = jsonStr.indexOf('{');
|
|
91
|
+
const lastBrace = jsonStr.lastIndexOf('}');
|
|
92
|
+
if (firstBrace !== -1 && lastBrace > firstBrace) {
|
|
93
|
+
jsonStr = jsonStr.substring(firstBrace, lastBrace + 1);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
try {
|
|
97
|
+
const parsed = JSON.parse(jsonStr);
|
|
98
|
+
// Validate the updated bible against schema
|
|
99
|
+
if (parsed.updatedBible) {
|
|
100
|
+
try {
|
|
101
|
+
const validated = schema_1.GameBibleSchema.parse(parsed.updatedBible);
|
|
102
|
+
return {
|
|
103
|
+
updatedBible: validated,
|
|
104
|
+
changesSummary: parsed.changesSummary || [],
|
|
105
|
+
errors: parsed.errors || []
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
catch (zodError) {
|
|
109
|
+
if (zodError instanceof zod_1.ZodError) {
|
|
110
|
+
// Schema validation failed - return original bible
|
|
111
|
+
return {
|
|
112
|
+
updatedBible: originalBible,
|
|
113
|
+
changesSummary: [],
|
|
114
|
+
errors: [
|
|
115
|
+
'Modification output failed schema validation',
|
|
116
|
+
...zodError.errors.slice(0, 3).map((e) => `${e.path.join('.')}: ${e.message}`)
|
|
117
|
+
]
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
throw zodError;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
// No updatedBible in response
|
|
124
|
+
return {
|
|
125
|
+
updatedBible: originalBible,
|
|
126
|
+
changesSummary: [],
|
|
127
|
+
errors: ['Modification response did not contain updatedBible']
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
catch {
|
|
131
|
+
// JSON parsing failed - return original bible unchanged
|
|
132
|
+
return {
|
|
133
|
+
updatedBible: originalBible,
|
|
134
|
+
changesSummary: [],
|
|
135
|
+
errors: ['Failed to parse modification response']
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
exports.Modifier = Modifier;
|
|
141
|
+
//# sourceMappingURL=Modifier.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Modifier.js","sourceRoot":"","sources":["../../../src/agents/core/Modifier.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ import { BaseAgent } from '../base/BaseAgent';
|
|
|
2
2
|
import { GameBible } from '../../config/schema';
|
|
3
3
|
import { ChaosIssue } from './Chaos';
|
|
4
4
|
import { ConsistencyIssue } from './Consistency';
|
|
5
|
+
import { IssueWithNotes } from '../../types/issueReview';
|
|
5
6
|
export interface RemediationResult {
|
|
6
7
|
updatedBible: GameBible;
|
|
7
8
|
fixedIssues: string[];
|
|
@@ -9,8 +10,9 @@ export interface RemediationResult {
|
|
|
9
10
|
}
|
|
10
11
|
export declare class Remediation extends BaseAgent {
|
|
11
12
|
constructor(apiKey: string, costTracker: any, modelSelector: any);
|
|
12
|
-
execute(bible: GameBible,
|
|
13
|
+
execute(bible: GameBible, consistencyIssuesOrWithNotes: ConsistencyIssue[] | IssueWithNotes[], chaosIssuesOrProgress?: ChaosIssue[] | ((message: string) => void), onProgress?: (message: string) => void): Promise<RemediationResult>;
|
|
13
14
|
private formatIssues;
|
|
15
|
+
private formatIssuesWithNotes;
|
|
14
16
|
private parseResult;
|
|
15
17
|
}
|
|
16
18
|
//# sourceMappingURL=Remediation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Remediation.d.ts","sourceRoot":"","sources":["../../../src/agents/core/Remediation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAe,MAAM,mBAAmB,CAAC;AAE3D,OAAO,EAAE,SAAS,EAAmB,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"Remediation.d.ts","sourceRoot":"","sources":["../../../src/agents/core/Remediation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAe,MAAM,mBAAmB,CAAC;AAE3D,OAAO,EAAE,SAAS,EAAmB,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAGzD,MAAM,WAAW,iBAAiB;IAChC,YAAY,EAAE,SAAS,CAAC;IACxB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,qBAAa,WAAY,SAAQ,SAAS;gBAC5B,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG;IA4B1D,OAAO,CACX,KAAK,EAAE,SAAS,EAChB,4BAA4B,EAAE,gBAAgB,EAAE,GAAG,cAAc,EAAE,EACnE,qBAAqB,CAAC,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC,EAClE,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GACrC,OAAO,CAAC,iBAAiB,CAAC;IAyE7B,OAAO,CAAC,YAAY;IA8BpB,OAAO,CAAC,qBAAqB;IA6B7B,OAAO,CAAC,WAAW;CA6DpB"}
|
|
@@ -15,6 +15,7 @@ Your role is to:
|
|
|
15
15
|
2. Apply targeted fixes to the GameBible JSON
|
|
16
16
|
3. Preserve the original design intent while resolving conflicts
|
|
17
17
|
4. Prioritize critical issues over minor ones
|
|
18
|
+
5. Follow any custom user instructions provided for specific issues
|
|
18
19
|
|
|
19
20
|
Rules:
|
|
20
21
|
1. NEVER remove features entirely - only modify them to fix issues
|
|
@@ -24,6 +25,7 @@ Rules:
|
|
|
24
25
|
5. Keep all existing data unless it directly causes the reported issue
|
|
25
26
|
6. For scope issues, adjust asset counts or estimatedScope field appropriately
|
|
26
27
|
7. For gameplay issues, add missing mechanics or clarify existing ones
|
|
28
|
+
8. When a user provides custom notes for an issue, follow their instructions as the primary guidance
|
|
27
29
|
|
|
28
30
|
Output ONLY raw JSON, no markdown code blocks, no commentary.
|
|
29
31
|
Do NOT wrap the JSON in \`\`\`json or \`\`\` tags.`,
|
|
@@ -31,8 +33,26 @@ Do NOT wrap the JSON in \`\`\`json or \`\`\` tags.`,
|
|
|
31
33
|
};
|
|
32
34
|
super(apiKey, config, costTracker, modelSelector);
|
|
33
35
|
}
|
|
34
|
-
async execute(bible,
|
|
35
|
-
|
|
36
|
+
async execute(bible, consistencyIssuesOrWithNotes, chaosIssuesOrProgress, onProgress) {
|
|
37
|
+
let issuesDescription;
|
|
38
|
+
let progressCallback;
|
|
39
|
+
// Check if using new IssueWithNotes[] signature
|
|
40
|
+
if (consistencyIssuesOrWithNotes.length > 0 &&
|
|
41
|
+
('consistencyIssue' in consistencyIssuesOrWithNotes[0] ||
|
|
42
|
+
'chaosIssue' in consistencyIssuesOrWithNotes[0])) {
|
|
43
|
+
// New signature: IssueWithNotes[]
|
|
44
|
+
const issuesWithNotes = consistencyIssuesOrWithNotes;
|
|
45
|
+
issuesDescription = this.formatIssuesWithNotes(issuesWithNotes);
|
|
46
|
+
progressCallback =
|
|
47
|
+
typeof chaosIssuesOrProgress === 'function' ? chaosIssuesOrProgress : undefined;
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
// Legacy signature: separate arrays
|
|
51
|
+
const consistencyIssues = consistencyIssuesOrWithNotes;
|
|
52
|
+
const chaosIssues = chaosIssuesOrProgress || [];
|
|
53
|
+
issuesDescription = this.formatIssues(consistencyIssues, chaosIssues);
|
|
54
|
+
progressCallback = onProgress;
|
|
55
|
+
}
|
|
36
56
|
const prompt = `Fix the following issues in this Game Design Document.
|
|
37
57
|
|
|
38
58
|
## Issues to Fix:
|
|
@@ -57,11 +77,26 @@ ${JSON.stringify(bible, null, 2)}
|
|
|
57
77
|
"unfixableIssues": ["Issue that cannot be automatically fixed"]
|
|
58
78
|
}
|
|
59
79
|
|
|
80
|
+
CRITICAL SCHEMA RULES for updatedBible:
|
|
81
|
+
- mathFormulas/balanceFormulas MUST use this structure:
|
|
82
|
+
{
|
|
83
|
+
"expression": "result = input1 * input2",
|
|
84
|
+
"variables": {
|
|
85
|
+
"varName": {"type": "int|float|bool", "range": "min-max"}
|
|
86
|
+
},
|
|
87
|
+
"validated": false,
|
|
88
|
+
"balanceNotes": "optional notes"
|
|
89
|
+
}
|
|
90
|
+
- The field is "expression" NOT "formula" or "name"
|
|
91
|
+
- "variables" is an OBJECT keyed by variable name, NOT an array
|
|
92
|
+
- multiplayer.playerCount must be a STRING like "2-8", NOT an object
|
|
93
|
+
- Variable types must be exactly: "int", "float", or "bool"
|
|
94
|
+
|
|
60
95
|
Output only valid JSON. Apply ALL fixes you can to the bible.`;
|
|
61
96
|
const result = await this.callLLMWithAutoRetry(prompt, modelSelector_1.TaskComplexity.COMPLEX, {
|
|
62
97
|
initialMaxTokens: 32000,
|
|
63
98
|
maxRetries: 2,
|
|
64
|
-
onProgress
|
|
99
|
+
onProgress: progressCallback
|
|
65
100
|
});
|
|
66
101
|
return this.parseResult(result.content, bible);
|
|
67
102
|
}
|
|
@@ -88,6 +123,31 @@ Output only valid JSON. Apply ALL fixes you can to the bible.`;
|
|
|
88
123
|
}
|
|
89
124
|
return lines.join('\n');
|
|
90
125
|
}
|
|
126
|
+
formatIssuesWithNotes(issuesWithNotes) {
|
|
127
|
+
const lines = [];
|
|
128
|
+
issuesWithNotes.forEach((item, idx) => {
|
|
129
|
+
if (item.consistencyIssue) {
|
|
130
|
+
const issue = item.consistencyIssue;
|
|
131
|
+
lines.push(`${idx + 1}. [${issue.severity}] Consistency Issue: ${issue.message}`);
|
|
132
|
+
lines.push(` Location: ${issue.location}`);
|
|
133
|
+
if (issue.suggestion) {
|
|
134
|
+
lines.push(` Suggestion: ${issue.suggestion}`);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
else if (item.chaosIssue) {
|
|
138
|
+
const issue = item.chaosIssue;
|
|
139
|
+
lines.push(`${idx + 1}. [${issue.severity}] ${issue.category} Issue: ${issue.description}`);
|
|
140
|
+
lines.push(` Location: ${issue.location}`);
|
|
141
|
+
lines.push(` Recommendation: ${issue.recommendation}`);
|
|
142
|
+
}
|
|
143
|
+
// Add custom notes if provided - this is key for user instructions
|
|
144
|
+
if (item.customNotes) {
|
|
145
|
+
lines.push(` >>> USER INSTRUCTIONS: ${item.customNotes}`);
|
|
146
|
+
}
|
|
147
|
+
lines.push(''); // Blank line between issues
|
|
148
|
+
});
|
|
149
|
+
return lines.join('\n');
|
|
150
|
+
}
|
|
91
151
|
parseResult(content, originalBible) {
|
|
92
152
|
let jsonStr = content.trim();
|
|
93
153
|
// Handle markdown code blocks
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Remediation.js","sourceRoot":"","sources":["../../../src/agents/core/Remediation.ts"],"names":[],"mappings":";;;AAAA,iDAA2D;AAC3D,6DAA2D;AAC3D,gDAAiE;
|
|
1
|
+
{"version":3,"file":"Remediation.js","sourceRoot":"","sources":["../../../src/agents/core/Remediation.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;
|
|
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"}
|
|
@@ -7,38 +7,163 @@ class CreativeSpecialist extends BaseAgent_1.BaseAgent {
|
|
|
7
7
|
constructor(apiKey, costTracker, modelSelector) {
|
|
8
8
|
const config = {
|
|
9
9
|
systemPrompt: `You are a Creative Direction Specialist.
|
|
10
|
-
Generate
|
|
11
|
-
- Art style
|
|
12
|
-
- Audio
|
|
13
|
-
- Asset
|
|
14
|
-
- Pipeline and workflow
|
|
10
|
+
Generate creative vision documentation including:
|
|
11
|
+
- Art style description and mood
|
|
12
|
+
- Audio direction and tone
|
|
13
|
+
- Asset quantity estimates
|
|
15
14
|
|
|
16
|
-
|
|
15
|
+
Focus on the creative vision, not production pipeline details.`
|
|
17
16
|
};
|
|
18
17
|
super(apiKey, config, costTracker, modelSelector);
|
|
19
18
|
}
|
|
20
19
|
async execute(bible, onProgress) {
|
|
21
|
-
|
|
20
|
+
if (!bible.creative) {
|
|
21
|
+
return '# Creative Direction\n\n*No creative specifications provided for this design document.*';
|
|
22
|
+
}
|
|
23
|
+
// Per-category MAXIMUM thresholds - only flag if exceeded (not minimums)
|
|
24
|
+
const scope = bible.meta.estimatedScope;
|
|
25
|
+
const assetMaxThresholds = {
|
|
26
|
+
'Prototype': {
|
|
27
|
+
characters: 4, environments: 2, props: 15, ui: 15,
|
|
28
|
+
sfx: 20, music: 5, animations: 20, cards: 30, vehicles: 3
|
|
29
|
+
},
|
|
30
|
+
'Vertical Slice': {
|
|
31
|
+
characters: 6, environments: 3, props: 30, ui: 20,
|
|
32
|
+
sfx: 40, music: 8, animations: 40, cards: 60, vehicles: 5
|
|
33
|
+
},
|
|
34
|
+
'MVP': {
|
|
35
|
+
characters: 10, environments: 5, props: 60, ui: 35,
|
|
36
|
+
sfx: 60, music: 12, animations: 60, cards: 80, vehicles: 10
|
|
37
|
+
},
|
|
38
|
+
'Full Game': {
|
|
39
|
+
characters: 25, environments: 15, props: 200, ui: 75,
|
|
40
|
+
sfx: 150, music: 30, animations: 200, cards: 200, vehicles: 25
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
const thresholds = assetMaxThresholds[scope] || assetMaxThresholds['MVP'];
|
|
44
|
+
const reqs = bible.creative.assetRequirements;
|
|
45
|
+
const overages = [];
|
|
46
|
+
// Check each category against its max threshold
|
|
47
|
+
if (reqs.characters > thresholds.characters) {
|
|
48
|
+
overages.push(`characters (${reqs.characters} > ${thresholds.characters} max)`);
|
|
49
|
+
}
|
|
50
|
+
if (reqs.environments > thresholds.environments) {
|
|
51
|
+
overages.push(`environments (${reqs.environments} > ${thresholds.environments} max)`);
|
|
52
|
+
}
|
|
53
|
+
if (reqs.props > thresholds.props) {
|
|
54
|
+
overages.push(`props (${reqs.props} > ${thresholds.props} max)`);
|
|
55
|
+
}
|
|
56
|
+
if (reqs.ui > thresholds.ui) {
|
|
57
|
+
overages.push(`UI elements (${reqs.ui} > ${thresholds.ui} max)`);
|
|
58
|
+
}
|
|
59
|
+
if (reqs.sfx > thresholds.sfx) {
|
|
60
|
+
overages.push(`SFX (${reqs.sfx} > ${thresholds.sfx} max)`);
|
|
61
|
+
}
|
|
62
|
+
if (reqs.music > thresholds.music) {
|
|
63
|
+
overages.push(`music tracks (${reqs.music} > ${thresholds.music} max)`);
|
|
64
|
+
}
|
|
65
|
+
if (reqs.animations && reqs.animations > thresholds.animations) {
|
|
66
|
+
overages.push(`animations (${reqs.animations} > ${thresholds.animations} max)`);
|
|
67
|
+
}
|
|
68
|
+
if (reqs.cards && reqs.cards > thresholds.cards) {
|
|
69
|
+
overages.push(`cards (${reqs.cards} > ${thresholds.cards} max)`);
|
|
70
|
+
}
|
|
71
|
+
if (reqs.vehicles && reqs.vehicles > thresholds.vehicles) {
|
|
72
|
+
overages.push(`vehicles (${reqs.vehicles} > ${thresholds.vehicles} max)`);
|
|
73
|
+
}
|
|
74
|
+
if (overages.length > 0) {
|
|
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
|
+
}
|
|
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
|
+
}
|
|
145
|
+
const prompt = `Generate creative direction documentation focused on vision and mood:
|
|
22
146
|
|
|
23
|
-
Creative Spec: ${JSON.stringify(bible.creative, null, 2)}
|
|
24
147
|
Game: ${bible.meta.title} (${bible.meta.genre.join(', ')})
|
|
148
|
+
Creative Spec: ${JSON.stringify(bible.creative, null, 2)}
|
|
25
149
|
|
|
26
|
-
Create markdown with these sections:
|
|
150
|
+
Create a markdown document with these sections:
|
|
27
151
|
|
|
28
|
-
#
|
|
152
|
+
# Creative Direction
|
|
29
153
|
|
|
30
|
-
## Art Style
|
|
31
|
-
${bible.creative.artStyle}
|
|
154
|
+
## Art Style & Visual Identity
|
|
155
|
+
Expand on: "${bible.creative.artStyle}"
|
|
156
|
+
Describe the visual mood, color palette suggestions, and aesthetic influences in 2-3 paragraphs. Focus on the feeling and tone, not technical specifications like texture resolutions or polygon counts.
|
|
32
157
|
|
|
33
|
-
## Audio
|
|
34
|
-
${bible.creative.audioMood}
|
|
158
|
+
## Audio Direction
|
|
159
|
+
Expand on: "${bible.creative.audioMood}"
|
|
160
|
+
Describe the music style, sound design approach, and audio atmosphere in 2-3 paragraphs. Focus on the emotional impact and player experience.
|
|
35
161
|
|
|
36
|
-
${bible.creative.referenceLinks && bible.creative.referenceLinks.length > 0 ?
|
|
37
|
-
## References
|
|
162
|
+
${bible.creative.referenceLinks && bible.creative.referenceLinks.length > 0 ? `## Visual & Audio References
|
|
38
163
|
${bible.creative.referenceLinks.map(link => `- ${link}`).join('\n')}
|
|
39
164
|
` : ''}
|
|
40
165
|
|
|
41
|
-
## Asset
|
|
166
|
+
## Estimated Asset Counts
|
|
42
167
|
|
|
43
168
|
| Category | Quantity |
|
|
44
169
|
|----------|----------|
|
|
@@ -48,18 +173,30 @@ ${bible.creative.referenceLinks.map(link => `- ${link}`).join('\n')}
|
|
|
48
173
|
| UI Elements | ${bible.creative.assetRequirements.ui} |
|
|
49
174
|
| Sound Effects | ${bible.creative.assetRequirements.sfx} |
|
|
50
175
|
| Music Tracks | ${bible.creative.assetRequirements.music} |
|
|
176
|
+
${bible.creative.assetRequirements.vehicles !== undefined ? `| Vehicles | ${bible.creative.assetRequirements.vehicles} |` : ''}
|
|
177
|
+
${bible.creative.assetRequirements.cards !== undefined ? `| Cards | ${bible.creative.assetRequirements.cards} |` : ''}
|
|
178
|
+
${bible.creative.assetRequirements.animations !== undefined ? `| Animations | ${bible.creative.assetRequirements.animations} |` : ''}
|
|
51
179
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
180
|
+
${bible.creative.visualNovel ? `## Visual Novel Style
|
|
181
|
+
${bible.creative.visualNovel.artStyle2D ? `Art approach: ${bible.creative.visualNovel.artStyle2D}` : ''}
|
|
182
|
+
Describe the visual novel aesthetic and character presentation style.
|
|
183
|
+
` : ''}
|
|
55
184
|
|
|
56
|
-
|
|
185
|
+
${bible.creative.horror ? `## Horror Atmosphere
|
|
186
|
+
${bible.creative.horror.atmosphere ? `Mood: ${bible.creative.horror.atmosphere}` : ''}
|
|
187
|
+
${bible.creative.horror.lighting ? `Lighting approach: ${bible.creative.horror.lighting}` : ''}
|
|
188
|
+
Describe how the visual and audio design creates tension and fear.
|
|
189
|
+
` : ''}
|
|
57
190
|
|
|
58
|
-
|
|
191
|
+
IMPORTANT: Focus on the creative VISION and MOOD. Do NOT include:
|
|
192
|
+
- Production pipeline or workflow details
|
|
193
|
+
- Tool lists or software requirements
|
|
194
|
+
- Technical specifications (texture sizes, poly counts, etc.)
|
|
195
|
+
- File naming conventions or directory structures
|
|
59
196
|
|
|
60
|
-
|
|
61
|
-
const result = await this.callLLMWithAutoRetry(prompt, modelSelector_1.TaskComplexity.
|
|
62
|
-
initialMaxTokens:
|
|
197
|
+
Keep the document concise (2-3 pages max) and focused on inspiring the creative team.`;
|
|
198
|
+
const result = await this.callLLMWithAutoRetry(prompt, modelSelector_1.TaskComplexity.SIMPLE, {
|
|
199
|
+
initialMaxTokens: 6000,
|
|
63
200
|
maxRetries: 2,
|
|
64
201
|
onProgress: onProgress
|
|
65
202
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CreativeSpecialist.js","sourceRoot":"","sources":["../../../src/agents/specialists/CreativeSpecialist.ts"],"names":[],"mappings":";;;AAAA,iDAA2D;AAC3D,6DAA2D;AAG3D,MAAa,kBAAmB,SAAQ,qBAAS;IAC/C,YAAY,MAAc,EAAE,WAAgB,EAAE,aAAkB;QAC9D,MAAM,MAAM,GAAgB;YAC1B,YAAY,EAAE
|
|
1
|
+
{"version":3,"file":"CreativeSpecialist.js","sourceRoot":"","sources":["../../../src/agents/specialists/CreativeSpecialist.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntitySpecialist.d.ts","sourceRoot":"","sources":["../../../src/agents/specialists/EntitySpecialist.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAe,MAAM,mBAAmB,CAAC;AAE3D,OAAO,EAAE,SAAS,EAAU,MAAM,qBAAqB,CAAC;AAExD,qBAAa,gBAAiB,SAAQ,SAAS;gBACjC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG;
|
|
1
|
+
{"version":3,"file":"EntitySpecialist.d.ts","sourceRoot":"","sources":["../../../src/agents/specialists/EntitySpecialist.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAe,MAAM,mBAAmB,CAAC;AAE3D,OAAO,EAAE,SAAS,EAAU,MAAM,qBAAqB,CAAC;AAExD,qBAAa,gBAAiB,SAAQ,SAAS;gBACjC,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;YA4F1E,iBAAiB;CA4ChC"}
|