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 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;EAKvB,CAAC;AAGH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQ5B,CAAC;AAGH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;EAK7B,CAAC;AAGH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0BxB,CAAC;AAGH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqBvB,CAAC;AAGH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkBzB,CAAC;AAGH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiB1B,CAAC;AAGH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2B1B,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AACxD,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AACpD,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAClD,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAClD,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AACtD,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC"}
@@ -0,0 +1,134 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GameBibleSchema = exports.TechnicalSchema = exports.CreativeSchema = exports.EntitySchema = exports.FeatureSchema = exports.ExternalDataSchema = exports.MathFormulaSchema = exports.EngineSchema = void 0;
4
+ const zod_1 = require("zod");
5
+ // Engine configuration (improved from rigid enum)
6
+ exports.EngineSchema = zod_1.z.object({
7
+ primary: zod_1.z.enum(['Unreal Engine 5', 'Unity', 'Godot', 'Custom']),
8
+ version: zod_1.z.string(), // e.g., "5.4", "2023.2"
9
+ plugins: zod_1.z.array(zod_1.z.string()).optional(), // ["Niagara", "Chaos Physics"]
10
+ reasoning: zod_1.z.string().optional() // Why this engine was chosen
11
+ });
12
+ // Math formula with validation
13
+ exports.MathFormulaSchema = zod_1.z.object({
14
+ expression: zod_1.z.string(), // "Time = BaseTime * (1.0 - SkillLvl * 0.1)"
15
+ variables: zod_1.z.record(zod_1.z.object({
16
+ type: zod_1.z.enum(['int', 'float', 'bool']),
17
+ range: zod_1.z.string().optional() // "0.0-1.0"
18
+ })),
19
+ validated: zod_1.z.boolean().default(false),
20
+ balanceNotes: zod_1.z.string().optional() // Design reasoning
21
+ });
22
+ // External data (structured, not fake links)
23
+ exports.ExternalDataSchema = zod_1.z.object({
24
+ type: zod_1.z.enum(['Spreadsheet', 'Database', 'JSON']),
25
+ schema: zod_1.z.string(), // Column/field definitions
26
+ sampleRows: zod_1.z.number().default(5),
27
+ fileReference: zod_1.z.string().optional() // Actual filename when generated
28
+ });
29
+ // Feature with full technical specification
30
+ exports.FeatureSchema = zod_1.z.object({
31
+ id: zod_1.z.string(), // "FEAT-001"
32
+ name: zod_1.z.string(),
33
+ intent: zod_1.z.string(), // The "Why"
34
+ dependencies: zod_1.z.array(zod_1.z.string()).default([]), // ["FEAT-005", "FEAT-012"]
35
+ monetization: zod_1.z.object({
36
+ strategy: zod_1.z.enum(['None', 'IAP', 'Premium', 'Ads', 'Hybrid']),
37
+ implementation: zod_1.z.string().optional()
38
+ }).optional(),
39
+ gameplayLoop: zod_1.z.array(zod_1.z.string()), // For Mermaid diagram
40
+ uiRequirements: zod_1.z.array(zod_1.z.string()),
41
+ technical: zod_1.z.object({
42
+ dataStructure: zod_1.z.string(), // Pseudo-code
43
+ mathFormulas: zod_1.z.array(exports.MathFormulaSchema).optional(),
44
+ fileLocation: zod_1.z.string(),
45
+ estimatedComplexity: zod_1.z.enum(['Low', 'Medium', 'High', 'Very High'])
46
+ }),
47
+ agile: zod_1.z.object({
48
+ epic: zod_1.z.string(),
49
+ userStories: zod_1.z.array(zod_1.z.string()),
50
+ acceptanceCriteria: zod_1.z.array(zod_1.z.string())
51
+ })
52
+ });
53
+ // Entity (NPC, Item, Monster)
54
+ exports.EntitySchema = zod_1.z.object({
55
+ id: zod_1.z.string(),
56
+ name: zod_1.z.string(),
57
+ category: zod_1.z.enum(['NPC', 'Monster', 'Item', 'Interactable']),
58
+ narrative: zod_1.z.object({
59
+ backstory: zod_1.z.string(),
60
+ dialogues: zod_1.z.array(zod_1.z.string()).optional(),
61
+ externalData: exports.ExternalDataSchema.optional()
62
+ }).optional(),
63
+ stats: zod_1.z.object({
64
+ attributes: zod_1.z.record(zod_1.z.union([zod_1.z.string(), zod_1.z.number()])),
65
+ behaviors: zod_1.z.array(zod_1.z.string()),
66
+ balanceFormulas: zod_1.z.array(exports.MathFormulaSchema).optional()
67
+ }),
68
+ references: zod_1.z.object({
69
+ features: zod_1.z.array(zod_1.z.string()).default([]), // Which features use this?
70
+ relatedEntities: zod_1.z.array(zod_1.z.string()).default([])
71
+ })
72
+ });
73
+ // Creative specifications
74
+ exports.CreativeSchema = zod_1.z.object({
75
+ artStyle: zod_1.z.string(),
76
+ audioMood: zod_1.z.string(),
77
+ referenceLinks: zod_1.z.array(zod_1.z.string()).optional(),
78
+ assetRequirements: zod_1.z.object({
79
+ characters: zod_1.z.number().default(0),
80
+ environments: zod_1.z.number().default(0),
81
+ props: zod_1.z.number().default(0),
82
+ ui: zod_1.z.number().default(0),
83
+ sfx: zod_1.z.number().default(0),
84
+ music: zod_1.z.number().default(0)
85
+ }),
86
+ pipeline: zod_1.z.object({
87
+ toolsRequired: zod_1.z.array(zod_1.z.string()),
88
+ workflowNotes: zod_1.z.string().optional()
89
+ })
90
+ });
91
+ // Technical infrastructure
92
+ exports.TechnicalSchema = zod_1.z.object({
93
+ engine: exports.EngineSchema,
94
+ toolsRequired: zod_1.z.array(zod_1.z.object({
95
+ name: zod_1.z.string(),
96
+ purpose: zod_1.z.string(),
97
+ required: zod_1.z.boolean()
98
+ })),
99
+ localization: zod_1.z.object({
100
+ strategy: zod_1.z.enum(['None', 'English Only', 'EFIGS', 'Global']),
101
+ languages: zod_1.z.array(zod_1.z.string()).optional(),
102
+ stringCount: zod_1.z.number().optional()
103
+ }),
104
+ directoryStructure: zod_1.z.string(),
105
+ buildTargets: zod_1.z.array(zod_1.z.enum(['Windows', 'Mac', 'Linux', 'iOS', 'Android', 'Console']))
106
+ });
107
+ // Master Game Bible
108
+ exports.GameBibleSchema = zod_1.z.object({
109
+ meta: zod_1.z.object({
110
+ id: zod_1.z.string(),
111
+ title: zod_1.z.string(),
112
+ conceptStatement: zod_1.z.string(), // Elevator pitch
113
+ genre: zod_1.z.array(zod_1.z.string()), // ["Roguelike", "Deck-builder"]
114
+ targetPlatform: zod_1.z.array(zod_1.z.string()),
115
+ targetAudience: zod_1.z.string(),
116
+ estimatedScope: zod_1.z.enum(['Prototype', 'Vertical Slice', 'MVP', 'Full Game']),
117
+ createdAt: zod_1.z.string(),
118
+ version: zod_1.z.string().default('1.0.0')
119
+ }),
120
+ features: zod_1.z.array(exports.FeatureSchema),
121
+ gameObjects: zod_1.z.array(exports.EntitySchema),
122
+ creative: exports.CreativeSchema,
123
+ technical: exports.TechnicalSchema,
124
+ // Consistency tracking
125
+ validation: zod_1.z.object({
126
+ lastValidated: zod_1.z.string().optional(),
127
+ issues: zod_1.z.array(zod_1.z.object({
128
+ severity: zod_1.z.enum(['Error', 'Warning', 'Info']),
129
+ message: zod_1.z.string(),
130
+ location: zod_1.z.string() // "features[2].dependencies"
131
+ })).default([])
132
+ }).optional()
133
+ });
134
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { GameBible } from './schema';
2
+ export interface GameTemplate {
3
+ id: string;
4
+ name: string;
5
+ description: string;
6
+ tags: string[];
7
+ partialBible: Partial<GameBible>;
8
+ }
9
+ export declare const GENRE_TEMPLATES: GameTemplate[];
10
+ //# sourceMappingURL=templates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/config/templates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,YAAY,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;CAClC;AAED,eAAO,MAAM,eAAe,EAAE,YAAY,EAqMzC,CAAC"}
@@ -0,0 +1,202 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GENRE_TEMPLATES = void 0;
4
+ exports.GENRE_TEMPLATES = [
5
+ {
6
+ id: 'roguelike',
7
+ name: 'Roguelike Dungeon Crawler',
8
+ description: 'Procedural dungeons, permadeath, run-based progression',
9
+ tags: ['roguelike', 'procedural', 'combat'],
10
+ partialBible: {
11
+ meta: {
12
+ genre: ['Roguelike', 'Action'],
13
+ estimatedScope: 'MVP'
14
+ },
15
+ features: [
16
+ {
17
+ id: 'FEAT-001',
18
+ name: 'Procedural Generation',
19
+ intent: 'Generate unique dungeons each run for replayability',
20
+ dependencies: [],
21
+ gameplayLoop: ['Generate level', 'Populate enemies', 'Place loot', 'Player explores'],
22
+ uiRequirements: ['Minimap', 'Room transition effect'],
23
+ technical: {
24
+ dataStructure: 'struct Room { tiles: Grid<TileType>, enemies: List<Enemy>, loot: List<Item> }',
25
+ estimatedComplexity: 'High',
26
+ fileLocation: 'Source/Game/Generation/'
27
+ },
28
+ agile: {
29
+ epic: 'EPIC-001: Procedural Content',
30
+ userStories: [
31
+ 'As a player, I want each run to feel unique',
32
+ 'As a player, I want fair but challenging layouts'
33
+ ],
34
+ acceptanceCriteria: ['No two runs identical', 'All rooms reachable']
35
+ }
36
+ },
37
+ {
38
+ id: 'FEAT-002',
39
+ name: 'Permadeath System',
40
+ intent: 'Create meaningful stakes for each run',
41
+ dependencies: [],
42
+ gameplayLoop: ['Player dies', 'Lose all items', 'Return to hub', 'Start new run'],
43
+ uiRequirements: ['Death screen', 'Run statistics display'],
44
+ technical: {
45
+ dataStructure: 'struct RunData { deaths: int, furthestLevel: int, timePlayed: float }',
46
+ estimatedComplexity: 'Medium',
47
+ fileLocation: 'Source/Game/Core/'
48
+ },
49
+ agile: {
50
+ epic: 'EPIC-001: Core Loop',
51
+ userStories: [
52
+ 'As a player, I want to see my progress across runs',
53
+ 'As a player, I want to understand why I died'
54
+ ],
55
+ acceptanceCriteria: ['All progress resets on death', 'Stats saved between runs']
56
+ }
57
+ }
58
+ ]
59
+ }
60
+ },
61
+ {
62
+ id: 'farming-sim',
63
+ name: 'Farming Simulation',
64
+ description: 'Resource management, crop cycles, NPC relationships',
65
+ tags: ['simulation', 'farming', 'social'],
66
+ partialBible: {
67
+ meta: {
68
+ genre: ['Simulation', 'Life Sim'],
69
+ estimatedScope: 'MVP'
70
+ },
71
+ features: [
72
+ {
73
+ id: 'FEAT-001',
74
+ name: 'Crop Management',
75
+ intent: 'Core farming loop for player progression',
76
+ dependencies: [],
77
+ gameplayLoop: ['Till soil', 'Plant seeds', 'Water daily', 'Harvest crops', 'Sell for profit'],
78
+ uiRequirements: ['Crop info panel', 'Calendar widget', 'Inventory grid'],
79
+ technical: {
80
+ dataStructure: 'struct Crop { growthStage: int, waterLevel: float, daysToHarvest: int }',
81
+ estimatedComplexity: 'Medium',
82
+ fileLocation: 'Source/Game/Farming/'
83
+ },
84
+ agile: {
85
+ epic: 'EPIC-001: Core Farming',
86
+ userStories: [
87
+ 'As a player, I want to plant and harvest crops',
88
+ 'As a player, I want to see crop growth progress'
89
+ ],
90
+ acceptanceCriteria: ['Crops grow over time', 'Watering affects growth speed']
91
+ }
92
+ }
93
+ ]
94
+ }
95
+ },
96
+ {
97
+ id: 'fps',
98
+ name: 'First-Person Shooter',
99
+ description: 'Fast-paced combat, weapon variety, multiplayer',
100
+ tags: ['fps', 'action', 'multiplayer'],
101
+ partialBible: {
102
+ meta: {
103
+ genre: ['FPS', 'Action'],
104
+ estimatedScope: 'MVP'
105
+ },
106
+ features: [
107
+ {
108
+ id: 'FEAT-001',
109
+ name: 'Weapon System',
110
+ intent: 'Provide varied combat options',
111
+ dependencies: [],
112
+ gameplayLoop: ['Equip weapon', 'Aim at target', 'Fire', 'Reload', 'Switch weapons'],
113
+ uiRequirements: ['Crosshair', 'Ammo counter', 'Weapon selector'],
114
+ technical: {
115
+ dataStructure: 'struct Weapon { damage: float, fireRate: float, ammo: int, reloadTime: float }',
116
+ estimatedComplexity: 'High',
117
+ fileLocation: 'Source/Game/Weapons/'
118
+ },
119
+ agile: {
120
+ epic: 'EPIC-001: Core Combat',
121
+ userStories: [
122
+ 'As a player, I want responsive shooting mechanics',
123
+ 'As a player, I want different weapons to feel unique'
124
+ ],
125
+ acceptanceCriteria: ['Hit detection is accurate', 'Recoil patterns are consistent']
126
+ }
127
+ }
128
+ ]
129
+ }
130
+ },
131
+ {
132
+ id: 'soulslike',
133
+ name: 'Souls-like Action RPG',
134
+ description: 'Stamina-based combat, difficult bosses, bonfire checkpoints',
135
+ tags: ['souls-like', 'rpg', 'combat'],
136
+ partialBible: {
137
+ meta: {
138
+ genre: ['Action RPG', 'Souls-like'],
139
+ estimatedScope: 'MVP'
140
+ },
141
+ features: [
142
+ {
143
+ id: 'FEAT-001',
144
+ name: 'Stamina Combat System',
145
+ intent: 'Create strategic, deliberate combat',
146
+ dependencies: [],
147
+ gameplayLoop: ['Attack (costs stamina)', 'Dodge (costs stamina)', 'Wait for regen', 'Repeat'],
148
+ uiRequirements: ['Stamina bar', 'Enemy health bar', 'Lock-on indicator'],
149
+ technical: {
150
+ dataStructure: 'struct CombatStats { stamina: float, maxStamina: float, regenRate: float }',
151
+ estimatedComplexity: 'High',
152
+ fileLocation: 'Source/Game/Combat/'
153
+ },
154
+ agile: {
155
+ epic: 'EPIC-001: Core Combat',
156
+ userStories: [
157
+ 'As a player, I want combat to feel weighty and deliberate',
158
+ 'As a player, I want to be punished for spamming attacks'
159
+ ],
160
+ acceptanceCriteria: ['All actions consume stamina', 'Cannot act at 0 stamina']
161
+ }
162
+ }
163
+ ]
164
+ }
165
+ },
166
+ {
167
+ id: 'metroidvania',
168
+ name: 'Metroidvania Platformer',
169
+ description: 'Interconnected world, ability-gated progression, exploration',
170
+ tags: ['metroidvania', 'platformer', 'exploration'],
171
+ partialBible: {
172
+ meta: {
173
+ genre: ['Metroidvania', 'Platformer'],
174
+ estimatedScope: 'MVP'
175
+ },
176
+ features: [
177
+ {
178
+ id: 'FEAT-001',
179
+ name: 'Ability-Gated Progression',
180
+ intent: 'Reward exploration with new movement abilities',
181
+ dependencies: [],
182
+ gameplayLoop: ['Explore area', 'Find blocked path', 'Acquire new ability', 'Unlock new areas'],
183
+ uiRequirements: ['Map with ability markers', 'Ability icon display'],
184
+ technical: {
185
+ dataStructure: 'struct Ability { name: string, unlocked: bool, requiredFor: List<Area> }',
186
+ estimatedComplexity: 'High',
187
+ fileLocation: 'Source/Game/Abilities/'
188
+ },
189
+ agile: {
190
+ epic: 'EPIC-001: Exploration',
191
+ userStories: [
192
+ 'As a player, I want to remember where I saw blocked paths',
193
+ 'As a player, I want new abilities to open up the world'
194
+ ],
195
+ acceptanceCriteria: ['Map shows ability-locked areas', 'Abilities unlock new traversal']
196
+ }
197
+ }
198
+ ]
199
+ }
200
+ }
201
+ ];
202
+ //# sourceMappingURL=templates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/config/templates.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { GameForgeState } from './StateMachine';
2
+ export declare class CheckpointManager {
3
+ private checkpointDir;
4
+ private projectId;
5
+ constructor(projectId: string, checkpointDir?: string);
6
+ saveCheckpoint(state: GameForgeState, label: string): Promise<string>;
7
+ loadCheckpoint(checkpointId: string): Promise<GameForgeState>;
8
+ listCheckpoints(): Promise<Array<{
9
+ id: string;
10
+ label: string;
11
+ timestamp: string;
12
+ }>>;
13
+ rollback(checkpointId: string): Promise<GameForgeState>;
14
+ deleteCheckpoint(checkpointId: string): Promise<void>;
15
+ }
16
+ //# sourceMappingURL=CheckpointManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CheckpointManager.d.ts","sourceRoot":"","sources":["../../src/core/CheckpointManager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,SAAS,CAAS;gBAEd,SAAS,EAAE,MAAM,EAAE,aAAa,GAAE,MAAiC;IAMzE,cAAc,CAAC,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAcrE,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAM7D,eAAe,IAAI,OAAO,CAAC,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAanF,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAIvD,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAI5D"}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.CheckpointManager = void 0;
7
+ const fs_extra_1 = __importDefault(require("fs-extra"));
8
+ const path_1 = __importDefault(require("path"));
9
+ class CheckpointManager {
10
+ checkpointDir;
11
+ projectId;
12
+ constructor(projectId, checkpointDir = '.gameforge/checkpoints') {
13
+ this.projectId = projectId;
14
+ this.checkpointDir = path_1.default.resolve(checkpointDir);
15
+ fs_extra_1.default.ensureDirSync(this.checkpointDir);
16
+ }
17
+ async saveCheckpoint(state, label) {
18
+ const checkpointId = `${this.projectId}_${label}_${Date.now()}`;
19
+ const filePath = path_1.default.join(this.checkpointDir, `${checkpointId}.json`);
20
+ await fs_extra_1.default.writeJson(filePath, {
21
+ id: checkpointId,
22
+ label,
23
+ timestamp: new Date().toISOString(),
24
+ state
25
+ }, { spaces: 2 });
26
+ return checkpointId;
27
+ }
28
+ async loadCheckpoint(checkpointId) {
29
+ const filePath = path_1.default.join(this.checkpointDir, `${checkpointId}.json`);
30
+ const data = await fs_extra_1.default.readJson(filePath);
31
+ return data.state;
32
+ }
33
+ async listCheckpoints() {
34
+ const files = await fs_extra_1.default.readdir(this.checkpointDir);
35
+ const checkpoints = await Promise.all(files
36
+ .filter(f => f.startsWith(this.projectId) && f.endsWith('.json'))
37
+ .map(async (file) => {
38
+ const data = await fs_extra_1.default.readJson(path_1.default.join(this.checkpointDir, file));
39
+ return { id: data.id, label: data.label, timestamp: data.timestamp };
40
+ }));
41
+ return checkpoints.sort((a, b) => b.timestamp.localeCompare(a.timestamp));
42
+ }
43
+ async rollback(checkpointId) {
44
+ return this.loadCheckpoint(checkpointId);
45
+ }
46
+ async deleteCheckpoint(checkpointId) {
47
+ const filePath = path_1.default.join(this.checkpointDir, `${checkpointId}.json`);
48
+ await fs_extra_1.default.remove(filePath);
49
+ }
50
+ }
51
+ exports.CheckpointManager = CheckpointManager;
52
+ //# sourceMappingURL=CheckpointManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CheckpointManager.js","sourceRoot":"","sources":["../../src/core/CheckpointManager.ts"],"names":[],"mappings":";;;;;;AAAA,wDAA0B;AAC1B,gDAAwB;AAGxB,MAAa,iBAAiB;IACpB,aAAa,CAAS;IACtB,SAAS,CAAS;IAE1B,YAAY,SAAiB,EAAE,gBAAwB,wBAAwB;QAC7E,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,aAAa,GAAG,cAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QACjD,kBAAE,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,KAAqB,EAAE,KAAa;QACvD,MAAM,YAAY,GAAG,GAAG,IAAI,CAAC,SAAS,IAAI,KAAK,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QAChE,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,YAAY,OAAO,CAAC,CAAC;QAEvE,MAAM,kBAAE,CAAC,SAAS,CAAC,QAAQ,EAAE;YAC3B,EAAE,EAAE,YAAY;YAChB,KAAK;YACL,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,KAAK;SACN,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;QAElB,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,YAAoB;QACvC,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,YAAY,OAAO,CAAC,CAAC;QACvE,MAAM,IAAI,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACzC,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,MAAM,KAAK,GAAG,MAAM,kBAAE,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACnD,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,GAAG,CACnC,KAAK;aACF,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;aAChE,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YAClB,MAAM,IAAI,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,cAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC;YACpE,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;QACvE,CAAC,CAAC,CACL,CAAC;QACF,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IAC5E,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,YAAoB;QACjC,OAAO,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,YAAoB;QACzC,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,YAAY,OAAO,CAAC,CAAC;QACvE,MAAM,kBAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;CACF;AAnDD,8CAmDC"}
@@ -0,0 +1,11 @@
1
+ import { GameBible } from '../config/schema';
2
+ export declare class SpecialistOrchestrator {
3
+ private queue;
4
+ constructor(concurrency?: number);
5
+ runAllSpecialists(bible: GameBible, specialists: Array<{
6
+ name: string;
7
+ agent: any;
8
+ }>): Promise<Map<string, string>>;
9
+ runSingle(name: string, agent: any, bible: GameBible): Promise<string>;
10
+ }
11
+ //# sourceMappingURL=Orchestrator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Orchestrator.d.ts","sourceRoot":"","sources":["../../src/core/Orchestrator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,qBAAa,sBAAsB;IACjC,OAAO,CAAC,KAAK,CAAS;gBAEV,WAAW,GAAE,MAAU;IAI7B,iBAAiB,CACrB,KAAK,EAAE,SAAS,EAChB,WAAW,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,GAAG,CAAA;KAAE,CAAC,GAC/C,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IA0BzB,SAAS,CACb,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,GAAG,EACV,KAAK,EAAE,SAAS,GACf,OAAO,CAAC,MAAM,CAAC;CAYnB"}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.SpecialistOrchestrator = void 0;
7
+ const p_queue_1 = __importDefault(require("p-queue"));
8
+ const ora_1 = __importDefault(require("ora"));
9
+ class SpecialistOrchestrator {
10
+ queue;
11
+ constructor(concurrency = 3) {
12
+ this.queue = new p_queue_1.default({ concurrency });
13
+ }
14
+ async runAllSpecialists(bible, specialists) {
15
+ const results = new Map();
16
+ const spinner = (0, ora_1.default)('Running specialists...').start();
17
+ const tasks = specialists.map(s => this.queue.add(async () => {
18
+ spinner.text = `${s.name}: Starting...`;
19
+ // Pass progress callback to specialist
20
+ const output = await s.agent.execute(bible, (message) => {
21
+ spinner.text = `${s.name}: ${message}`;
22
+ });
23
+ results.set(s.name, output);
24
+ spinner.succeed(`${s.name} complete`);
25
+ spinner.start(); // Restart for next specialist
26
+ return output;
27
+ }));
28
+ await Promise.all(tasks);
29
+ spinner.stop();
30
+ return results;
31
+ }
32
+ async runSingle(name, agent, bible) {
33
+ const spinner = (0, ora_1.default)(`Running ${name}...`).start();
34
+ try {
35
+ const output = await agent.execute(bible);
36
+ spinner.succeed(`${name} complete`);
37
+ return output;
38
+ }
39
+ catch (error) {
40
+ spinner.fail(`${name} failed`);
41
+ throw error;
42
+ }
43
+ }
44
+ }
45
+ exports.SpecialistOrchestrator = SpecialistOrchestrator;
46
+ //# sourceMappingURL=Orchestrator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Orchestrator.js","sourceRoot":"","sources":["../../src/core/Orchestrator.ts"],"names":[],"mappings":";;;;;;AAAA,sDAA6B;AAC7B,8CAAsB;AAGtB,MAAa,sBAAsB;IACzB,KAAK,CAAS;IAEtB,YAAY,cAAsB,CAAC;QACjC,IAAI,CAAC,KAAK,GAAG,IAAI,iBAAM,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,iBAAiB,CACrB,KAAgB,EAChB,WAAgD;QAEhD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC1C,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,wBAAwB,CAAC,CAAC,KAAK,EAAE,CAAC;QAEtD,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAChC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE;YACxB,OAAO,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,IAAI,eAAe,CAAC;YAExC,uCAAuC;YACvC,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,OAAe,EAAE,EAAE;gBAC9D,OAAO,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACzC,CAAC,CAAC,CAAC;YAEH,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC5B,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC;YACtC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,8BAA8B;YAC/C,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC,CACH,CAAC;QAEF,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACzB,OAAO,CAAC,IAAI,EAAE,CAAC;QAEf,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,SAAS,CACb,IAAY,EACZ,KAAU,EACV,KAAgB;QAEhB,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,WAAW,IAAI,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;QAElD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC1C,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,WAAW,CAAC,CAAC;YACpC,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,SAAS,CAAC,CAAC;YAC/B,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CACF;AApDD,wDAoDC"}
@@ -0,0 +1,68 @@
1
+ import { GameForgeState } from './StateMachine';
2
+ export interface SessionMetadata {
3
+ sessionId: string;
4
+ title: string;
5
+ createdAt: string;
6
+ lastModified: string;
7
+ currentPhase: string;
8
+ checkpointCount: number;
9
+ latestCheckpointId: string | null;
10
+ }
11
+ export interface CheckpointMetadata {
12
+ checkpointId: string;
13
+ sessionId: string;
14
+ label: string;
15
+ phase: string;
16
+ timestamp: string;
17
+ budgetUsed: number;
18
+ budgetLimit: number;
19
+ }
20
+ export declare class SessionManager {
21
+ private sessionsDir;
22
+ private checkpointsDir;
23
+ constructor(baseDir?: string);
24
+ /**
25
+ * Create a new session
26
+ */
27
+ createSession(title: string): Promise<string>;
28
+ /**
29
+ * Get session metadata
30
+ */
31
+ getSession(sessionId: string): Promise<SessionMetadata | null>;
32
+ /**
33
+ * Update session metadata
34
+ */
35
+ updateSession(sessionId: string, updates: Partial<SessionMetadata>): Promise<void>;
36
+ /**
37
+ * Save a checkpoint within a session
38
+ */
39
+ saveCheckpoint(sessionId: string, state: GameForgeState, label: string): Promise<string>;
40
+ /**
41
+ * Load a checkpoint by ID
42
+ */
43
+ loadCheckpoint(checkpointId: string): Promise<GameForgeState>;
44
+ /**
45
+ * Get the latest checkpoint for a session
46
+ */
47
+ getLatestCheckpoint(sessionId: string): Promise<{
48
+ id: string;
49
+ state: GameForgeState;
50
+ } | null>;
51
+ /**
52
+ * List all checkpoints for a session
53
+ */
54
+ listCheckpoints(sessionId: string): Promise<CheckpointMetadata[]>;
55
+ /**
56
+ * List all sessions
57
+ */
58
+ listSessions(): Promise<SessionMetadata[]>;
59
+ /**
60
+ * Delete a session and all its checkpoints
61
+ */
62
+ deleteSession(sessionId: string): Promise<void>;
63
+ /**
64
+ * Delete a specific checkpoint
65
+ */
66
+ deleteCheckpoint(checkpointId: string): Promise<void>;
67
+ }
68
+ //# sourceMappingURL=SessionManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionManager.d.ts","sourceRoot":"","sources":["../../src/core/SessionManager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC;AAED,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,cAAc,CAAS;gBAEnB,OAAO,GAAE,MAAqB;IAO1C;;OAEG;IACG,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAkBnD;;OAEG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAQpE;;OAEG;IACG,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBxF;;OAEG;IACG,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA2B9F;;OAEG;IACG,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAMnE;;OAEG;IACG,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,cAAc,CAAA;KAAE,GAAG,IAAI,CAAC;IAanG;;OAEG;IACG,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAsBvE;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAgBhD;;OAEG;IACG,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBrD;;OAEG;IACG,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAI5D"}