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,162 @@
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.SessionManager = void 0;
7
+ const fs_extra_1 = __importDefault(require("fs-extra"));
8
+ const path_1 = __importDefault(require("path"));
9
+ class SessionManager {
10
+ sessionsDir;
11
+ checkpointsDir;
12
+ constructor(baseDir = '.gameforge') {
13
+ this.sessionsDir = path_1.default.join(baseDir, 'sessions');
14
+ this.checkpointsDir = path_1.default.join(baseDir, 'checkpoints');
15
+ fs_extra_1.default.ensureDirSync(this.sessionsDir);
16
+ fs_extra_1.default.ensureDirSync(this.checkpointsDir);
17
+ }
18
+ /**
19
+ * Create a new session
20
+ */
21
+ async createSession(title) {
22
+ const sessionId = `session-${Date.now()}`;
23
+ const metadata = {
24
+ sessionId,
25
+ title,
26
+ createdAt: new Date().toISOString(),
27
+ lastModified: new Date().toISOString(),
28
+ currentPhase: 'init',
29
+ checkpointCount: 0,
30
+ latestCheckpointId: null
31
+ };
32
+ const sessionPath = path_1.default.join(this.sessionsDir, `${sessionId}.json`);
33
+ await fs_extra_1.default.writeJson(sessionPath, metadata, { spaces: 2 });
34
+ return sessionId;
35
+ }
36
+ /**
37
+ * Get session metadata
38
+ */
39
+ async getSession(sessionId) {
40
+ const sessionPath = path_1.default.join(this.sessionsDir, `${sessionId}.json`);
41
+ if (!(await fs_extra_1.default.pathExists(sessionPath))) {
42
+ return null;
43
+ }
44
+ return fs_extra_1.default.readJson(sessionPath);
45
+ }
46
+ /**
47
+ * Update session metadata
48
+ */
49
+ async updateSession(sessionId, updates) {
50
+ const session = await this.getSession(sessionId);
51
+ if (!session) {
52
+ throw new Error(`Session not found: ${sessionId}`);
53
+ }
54
+ const updated = {
55
+ ...session,
56
+ ...updates,
57
+ lastModified: new Date().toISOString()
58
+ };
59
+ const sessionPath = path_1.default.join(this.sessionsDir, `${sessionId}.json`);
60
+ await fs_extra_1.default.writeJson(sessionPath, updated, { spaces: 2 });
61
+ }
62
+ /**
63
+ * Save a checkpoint within a session
64
+ */
65
+ async saveCheckpoint(sessionId, state, label) {
66
+ const checkpointId = `${sessionId}_${label}_${Date.now()}`;
67
+ const checkpointPath = path_1.default.join(this.checkpointsDir, `${checkpointId}.json`);
68
+ const checkpoint = {
69
+ id: checkpointId,
70
+ sessionId,
71
+ label,
72
+ timestamp: new Date().toISOString(),
73
+ state
74
+ };
75
+ await fs_extra_1.default.writeJson(checkpointPath, checkpoint, { spaces: 2 });
76
+ // Update session metadata
77
+ const session = await this.getSession(sessionId);
78
+ if (session) {
79
+ await this.updateSession(sessionId, {
80
+ checkpointCount: session.checkpointCount + 1,
81
+ latestCheckpointId: checkpointId,
82
+ currentPhase: state.phase
83
+ });
84
+ }
85
+ return checkpointId;
86
+ }
87
+ /**
88
+ * Load a checkpoint by ID
89
+ */
90
+ async loadCheckpoint(checkpointId) {
91
+ const checkpointPath = path_1.default.join(this.checkpointsDir, `${checkpointId}.json`);
92
+ const data = await fs_extra_1.default.readJson(checkpointPath);
93
+ return data.state;
94
+ }
95
+ /**
96
+ * Get the latest checkpoint for a session
97
+ */
98
+ async getLatestCheckpoint(sessionId) {
99
+ const session = await this.getSession(sessionId);
100
+ if (!session || !session.latestCheckpointId) {
101
+ return null;
102
+ }
103
+ const state = await this.loadCheckpoint(session.latestCheckpointId);
104
+ return {
105
+ id: session.latestCheckpointId,
106
+ state
107
+ };
108
+ }
109
+ /**
110
+ * List all checkpoints for a session
111
+ */
112
+ async listCheckpoints(sessionId) {
113
+ const files = await fs_extra_1.default.readdir(this.checkpointsDir);
114
+ const sessionCheckpoints = files.filter(f => f.startsWith(sessionId) && f.endsWith('.json'));
115
+ const checkpoints = await Promise.all(sessionCheckpoints.map(async (file) => {
116
+ const data = await fs_extra_1.default.readJson(path_1.default.join(this.checkpointsDir, file));
117
+ return {
118
+ checkpointId: data.id,
119
+ sessionId: data.sessionId,
120
+ label: data.label,
121
+ phase: data.state.phase,
122
+ timestamp: data.timestamp,
123
+ budgetUsed: data.state.costAccumulated,
124
+ budgetLimit: data.state.budgetLimit
125
+ };
126
+ }));
127
+ return checkpoints.sort((a, b) => b.timestamp.localeCompare(a.timestamp));
128
+ }
129
+ /**
130
+ * List all sessions
131
+ */
132
+ async listSessions() {
133
+ const files = await fs_extra_1.default.readdir(this.sessionsDir);
134
+ // Include both new format (session-) and migrated old format (gameforge-)
135
+ const sessionFiles = files.filter(f => (f.startsWith('session-') || f.startsWith('gameforge-')) && f.endsWith('.json'));
136
+ const sessions = await Promise.all(sessionFiles.map(async (file) => {
137
+ return fs_extra_1.default.readJson(path_1.default.join(this.sessionsDir, file));
138
+ }));
139
+ return sessions.sort((a, b) => b.lastModified.localeCompare(a.lastModified));
140
+ }
141
+ /**
142
+ * Delete a session and all its checkpoints
143
+ */
144
+ async deleteSession(sessionId) {
145
+ // Delete session metadata
146
+ const sessionPath = path_1.default.join(this.sessionsDir, `${sessionId}.json`);
147
+ await fs_extra_1.default.remove(sessionPath);
148
+ // Delete all checkpoints for this session
149
+ const files = await fs_extra_1.default.readdir(this.checkpointsDir);
150
+ const sessionCheckpoints = files.filter(f => f.startsWith(sessionId));
151
+ await Promise.all(sessionCheckpoints.map(file => fs_extra_1.default.remove(path_1.default.join(this.checkpointsDir, file))));
152
+ }
153
+ /**
154
+ * Delete a specific checkpoint
155
+ */
156
+ async deleteCheckpoint(checkpointId) {
157
+ const checkpointPath = path_1.default.join(this.checkpointsDir, `${checkpointId}.json`);
158
+ await fs_extra_1.default.remove(checkpointPath);
159
+ }
160
+ }
161
+ exports.SessionManager = SessionManager;
162
+ //# sourceMappingURL=SessionManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionManager.js","sourceRoot":"","sources":["../../src/core/SessionManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ import { GameBible } from '../config/schema';
2
+ export declare enum GameForgePhase {
3
+ INIT = "init",
4
+ DISCOVERY = "discovery",// Inquisitor phase
5
+ REVIEW_CONCEPT = "review_concept",// Gate 1
6
+ ARCHITECTURE = "architecture",// Architect generates JSON
7
+ REVIEW_DATA = "review_data",// Gate 2
8
+ PRODUCTION = "production",// Specialists generate docs
9
+ VALIDATION = "validation",// Consistency + Chaos
10
+ REVIEW_ISSUES = "review_issues",// Gate 3
11
+ COMPLETE = "complete"
12
+ }
13
+ export interface GameForgeState {
14
+ phase: GameForgePhase;
15
+ bible: Partial<GameBible>;
16
+ transcript: Array<{
17
+ question: string;
18
+ answer: string;
19
+ autoGenerated: boolean;
20
+ }>;
21
+ costAccumulated: number;
22
+ budgetLimit: number;
23
+ checkpoints: string[];
24
+ errors: Array<{
25
+ phase: string;
26
+ message: string;
27
+ }>;
28
+ }
29
+ export declare class StateMachine {
30
+ private state;
31
+ constructor(budgetLimit: number);
32
+ transition(toPhase: GameForgePhase): void;
33
+ private getValidTransitions;
34
+ getState(): Readonly<GameForgeState>;
35
+ updateBible(updates: Partial<GameBible>): void;
36
+ addTranscriptEntry(question: string, answer: string, autoGenerated: boolean): void;
37
+ addCost(tokens: {
38
+ input: number;
39
+ output: number;
40
+ }, model: string): void;
41
+ canAfford(estimatedCost: number): boolean;
42
+ addCheckpoint(checkpointId: string): void;
43
+ addError(phase: string, message: string): void;
44
+ restoreState(state: GameForgeState): void;
45
+ }
46
+ //# sourceMappingURL=StateMachine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StateMachine.d.ts","sourceRoot":"","sources":["../../src/core/StateMachine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAG7C,oBAAY,cAAc;IACxB,IAAI,SAAS;IACb,SAAS,cAAc,CAAY,mBAAmB;IACtD,cAAc,mBAAmB,CAAG,SAAS;IAC7C,YAAY,iBAAiB,CAAO,2BAA2B;IAC/D,WAAW,gBAAgB,CAAS,SAAS;IAC7C,UAAU,eAAe,CAAW,4BAA4B;IAChE,UAAU,eAAe,CAAW,sBAAsB;IAC1D,aAAa,kBAAkB,CAAK,SAAS;IAC7C,QAAQ,aAAa;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,cAAc,CAAC;IACtB,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC1B,UAAU,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAChF,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,MAAM,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACnD;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,KAAK,CAAiB;gBAElB,WAAW,EAAE,MAAM;IAY/B,UAAU,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAQzC,OAAO,CAAC,mBAAmB;IAe3B,QAAQ,IAAI,QAAQ,CAAC,cAAc,CAAC;IAIpC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI;IAI9C,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,GAAG,IAAI;IAIlF,OAAO,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IASvE,SAAS,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO;IAIzC,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAIzC,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAI9C,YAAY,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;CAG1C"}
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StateMachine = exports.GameForgePhase = void 0;
4
+ const budget_1 = require("../config/budget");
5
+ var GameForgePhase;
6
+ (function (GameForgePhase) {
7
+ GameForgePhase["INIT"] = "init";
8
+ GameForgePhase["DISCOVERY"] = "discovery";
9
+ GameForgePhase["REVIEW_CONCEPT"] = "review_concept";
10
+ GameForgePhase["ARCHITECTURE"] = "architecture";
11
+ GameForgePhase["REVIEW_DATA"] = "review_data";
12
+ GameForgePhase["PRODUCTION"] = "production";
13
+ GameForgePhase["VALIDATION"] = "validation";
14
+ GameForgePhase["REVIEW_ISSUES"] = "review_issues";
15
+ GameForgePhase["COMPLETE"] = "complete";
16
+ })(GameForgePhase || (exports.GameForgePhase = GameForgePhase = {}));
17
+ class StateMachine {
18
+ state;
19
+ constructor(budgetLimit) {
20
+ this.state = {
21
+ phase: GameForgePhase.INIT,
22
+ bible: {},
23
+ transcript: [],
24
+ costAccumulated: 0,
25
+ budgetLimit,
26
+ checkpoints: [],
27
+ errors: []
28
+ };
29
+ }
30
+ transition(toPhase) {
31
+ const validTransitions = this.getValidTransitions();
32
+ if (!validTransitions.includes(toPhase)) {
33
+ throw new Error(`Invalid transition from ${this.state.phase} to ${toPhase}`);
34
+ }
35
+ this.state.phase = toPhase;
36
+ }
37
+ getValidTransitions() {
38
+ const transitions = {
39
+ [GameForgePhase.INIT]: [GameForgePhase.DISCOVERY],
40
+ [GameForgePhase.DISCOVERY]: [GameForgePhase.REVIEW_CONCEPT],
41
+ [GameForgePhase.REVIEW_CONCEPT]: [GameForgePhase.ARCHITECTURE, GameForgePhase.DISCOVERY],
42
+ [GameForgePhase.ARCHITECTURE]: [GameForgePhase.REVIEW_DATA],
43
+ [GameForgePhase.REVIEW_DATA]: [GameForgePhase.PRODUCTION, GameForgePhase.ARCHITECTURE],
44
+ [GameForgePhase.PRODUCTION]: [GameForgePhase.VALIDATION],
45
+ [GameForgePhase.VALIDATION]: [GameForgePhase.REVIEW_ISSUES],
46
+ [GameForgePhase.REVIEW_ISSUES]: [GameForgePhase.COMPLETE, GameForgePhase.PRODUCTION],
47
+ [GameForgePhase.COMPLETE]: []
48
+ };
49
+ return transitions[this.state.phase];
50
+ }
51
+ getState() {
52
+ return { ...this.state };
53
+ }
54
+ updateBible(updates) {
55
+ this.state.bible = { ...this.state.bible, ...updates };
56
+ }
57
+ addTranscriptEntry(question, answer, autoGenerated) {
58
+ this.state.transcript.push({ question, answer, autoGenerated });
59
+ }
60
+ addCost(tokens, model) {
61
+ const costs = budget_1.MODEL_COSTS[model];
62
+ if (!costs) {
63
+ throw new Error(`Unknown model: ${model}`);
64
+ }
65
+ const cost = (tokens.input * costs.input) + (tokens.output * costs.output);
66
+ this.state.costAccumulated += cost;
67
+ }
68
+ canAfford(estimatedCost) {
69
+ return (this.state.costAccumulated + estimatedCost) <= this.state.budgetLimit;
70
+ }
71
+ addCheckpoint(checkpointId) {
72
+ this.state.checkpoints.push(checkpointId);
73
+ }
74
+ addError(phase, message) {
75
+ this.state.errors.push({ phase, message });
76
+ }
77
+ restoreState(state) {
78
+ this.state = { ...state };
79
+ }
80
+ }
81
+ exports.StateMachine = StateMachine;
82
+ //# sourceMappingURL=StateMachine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StateMachine.js","sourceRoot":"","sources":["../../src/core/StateMachine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}