gamemindpilot 2.9.5 → 2.9.6

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 CHANGED
@@ -1,4 +1,4 @@
1
- # 🛸 GameMindPilot CLI v2.9.5 - The Narrative-First Mastery
1
+ # 🛸 GameMindPilot CLI v2.9.6 - The Narrative-First Mastery
2
2
 
3
3
  [![npm version](https://img.shields.io/npm/v/gamemindpilot.svg)](https://www.npmjs.com/package/gamemindpilot)
4
4
  [![downloads](https://img.shields.io/npm/dm/gamemindpilot.svg)](https://www.npmjs.com/package/gamemindpilot)
package/dist/index.js CHANGED
@@ -44,7 +44,7 @@ const program = new commander_1.Command();
44
44
  program
45
45
  .name('gmpilot')
46
46
  .description('GameMindPilot CLI - Your AI Game Development Assistant')
47
- .version('2.9.5');
47
+ .version('2.9.6');
48
48
  const login_1 = require("./commands/login");
49
49
  const chat_1 = require("./commands/chat");
50
50
  const init_1 = require("./commands/init");
@@ -10,9 +10,13 @@ const PROJECT_DIR = '.gmpilot';
10
10
  const CONTEXT_FILE = path_1.default.join(PROJECT_DIR, 'context.json');
11
11
  exports.projectManager = {
12
12
  isProject: () => {
13
- return fs_1.default.existsSync(PROJECT_DIR);
13
+ return fs_1.default.existsSync(PROJECT_DIR) && fs_1.default.lstatSync(PROJECT_DIR).isDirectory();
14
14
  },
15
15
  init: (name, author) => {
16
+ // Legacy migration: if .gmpilot is a file, delete it
17
+ if (fs_1.default.existsSync(PROJECT_DIR) && !fs_1.default.lstatSync(PROJECT_DIR).isDirectory()) {
18
+ fs_1.default.unlinkSync(PROJECT_DIR);
19
+ }
16
20
  if (!fs_1.default.existsSync(PROJECT_DIR)) {
17
21
  fs_1.default.mkdirSync(PROJECT_DIR);
18
22
  }
@@ -36,29 +40,41 @@ exports.projectManager = {
36
40
  }
37
41
  },
38
42
  addEntry: (type, content) => {
39
- if (!exports.projectManager.isProject())
40
- return;
41
- const context = exports.projectManager.get();
42
- context.history.push({
43
- type,
44
- timestamp: new Date().toISOString(),
45
- content
46
- });
47
- // Keep only last 10 entries to avoid token bloat
48
- if (context.history.length > 10) {
49
- context.history = context.history.slice(-10);
43
+ try {
44
+ if (!exports.projectManager.isProject())
45
+ return;
46
+ const context = exports.projectManager.get();
47
+ context.history.push({
48
+ type,
49
+ timestamp: new Date().toISOString(),
50
+ content
51
+ });
52
+ // Keep only last 10 entries to avoid token bloat
53
+ if (context.history.length > 10) {
54
+ context.history = context.history.slice(-10);
55
+ }
56
+ fs_1.default.writeFileSync(CONTEXT_FILE, JSON.stringify(context, null, 2));
57
+ }
58
+ catch (err) {
59
+ // Silent fail to avoid crashing the main command flow
50
60
  }
51
- fs_1.default.writeFileSync(CONTEXT_FILE, JSON.stringify(context, null, 2));
52
61
  },
53
62
  getSummary: () => {
54
- const context = exports.projectManager.get();
55
- if (context.history.length === 0)
56
- return "No previous history found for this project.";
57
- let summary = `Project: ${context.projectName} (Author: ${context.author})\n\nRecent History:\n`;
58
- context.history.forEach((entry, i) => {
59
- summary += `[${i + 1}] ${entry.type} (${new Date(entry.timestamp).toLocaleString()}):\n${entry.content.substring(0, 500)}...\n\n`;
60
- });
61
- return summary;
63
+ try {
64
+ if (!exports.projectManager.isProject())
65
+ return "No project initialization found. Run 'gmpilot init' first.";
66
+ const context = exports.projectManager.get();
67
+ if (context.history.length === 0)
68
+ return "No previous history found for this project.";
69
+ let summary = `Project: ${context.projectName} (Author: ${context.author})\n\nRecent History:\n`;
70
+ context.history.forEach((entry, i) => {
71
+ summary += `[${i + 1}] ${entry.type} (${new Date(entry.timestamp).toLocaleString()}):\n${entry.content.substring(0, 500)}...\n\n`;
72
+ });
73
+ return summary;
74
+ }
75
+ catch (err) {
76
+ return "Error loading project history.";
77
+ }
62
78
  }
63
79
  };
64
80
  //# sourceMappingURL=project.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/utils/project.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAoB;AACpB,gDAAwB;AAYxB,MAAM,WAAW,GAAG,UAAU,CAAC;AAC/B,MAAM,YAAY,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;AAE/C,QAAA,cAAc,GAAG;IAC5B,SAAS,EAAE,GAAY,EAAE;QACvB,OAAO,YAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IACpC,CAAC;IAED,IAAI,EAAE,CAAC,IAAY,EAAE,MAAc,EAAE,EAAE;QACrC,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAChC,YAAE,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAC5B,CAAC;QACD,MAAM,cAAc,GAAmB;YACrC,WAAW,EAAE,IAAI;YACjB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE;SACZ,CAAC;QACF,YAAE,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC1E,CAAC;IAED,GAAG,EAAE,GAAmB,EAAE;QACxB,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YACjC,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QACzB,CAAC;QACD,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,YAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YACpD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QACzB,CAAC;IACH,CAAC;IAED,QAAQ,EAAE,CAAC,IAAY,EAAE,OAAe,EAAE,EAAE;QAC1C,IAAI,CAAC,sBAAc,CAAC,SAAS,EAAE;YAAE,OAAO;QACxC,MAAM,OAAO,GAAG,sBAAc,CAAC,GAAG,EAAE,CAAC;QACrC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;YACnB,IAAI;YACJ,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,OAAO;SACR,CAAC,CAAC;QACH,iDAAiD;QACjD,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;YAChC,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QAC/C,CAAC;QACD,YAAE,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,UAAU,EAAE,GAAW,EAAE;QACvB,MAAM,OAAO,GAAG,sBAAc,CAAC,GAAG,EAAE,CAAC;QACrC,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,6CAA6C,CAAC;QAEvF,IAAI,OAAO,GAAG,YAAY,OAAO,CAAC,WAAW,aAAa,OAAO,CAAC,MAAM,wBAAwB,CAAC;QACjG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;YACnC,OAAO,IAAI,IAAI,CAAC,GAAC,CAAC,KAAK,KAAK,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE,OAAO,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC;QAClI,CAAC,CAAC,CAAC;QACH,OAAO,OAAO,CAAC;IACjB,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/utils/project.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gamemindpilot",
3
- "version": "2.9.5",
3
+ "version": "2.9.6",
4
4
  "description": "AI-powered CLI for game developers - Design, Asset Gen, Analysis & Optimization",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
package/src/index.ts CHANGED
@@ -12,7 +12,7 @@ const program = new Command();
12
12
  program
13
13
  .name('gmpilot')
14
14
  .description('GameMindPilot CLI - Your AI Game Development Assistant')
15
- .version('2.9.5');
15
+ .version('2.9.6');
16
16
 
17
17
  import { loginCommand } from './commands/login';
18
18
  import { chatCommand } from './commands/chat';
@@ -16,10 +16,15 @@ const CONTEXT_FILE = path.join(PROJECT_DIR, 'context.json');
16
16
 
17
17
  export const projectManager = {
18
18
  isProject: (): boolean => {
19
- return fs.existsSync(PROJECT_DIR);
19
+ return fs.existsSync(PROJECT_DIR) && fs.lstatSync(PROJECT_DIR).isDirectory();
20
20
  },
21
21
 
22
22
  init: (name: string, author: string) => {
23
+ // Legacy migration: if .gmpilot is a file, delete it
24
+ if (fs.existsSync(PROJECT_DIR) && !fs.lstatSync(PROJECT_DIR).isDirectory()) {
25
+ fs.unlinkSync(PROJECT_DIR);
26
+ }
27
+
23
28
  if (!fs.existsSync(PROJECT_DIR)) {
24
29
  fs.mkdirSync(PROJECT_DIR);
25
30
  }
@@ -44,28 +49,37 @@ export const projectManager = {
44
49
  },
45
50
 
46
51
  addEntry: (type: string, content: string) => {
47
- if (!projectManager.isProject()) return;
48
- const context = projectManager.get();
49
- context.history.push({
50
- type,
51
- timestamp: new Date().toISOString(),
52
- content
53
- });
54
- // Keep only last 10 entries to avoid token bloat
55
- if (context.history.length > 10) {
56
- context.history = context.history.slice(-10);
52
+ try {
53
+ if (!projectManager.isProject()) return;
54
+ const context = projectManager.get();
55
+ context.history.push({
56
+ type,
57
+ timestamp: new Date().toISOString(),
58
+ content
59
+ });
60
+ // Keep only last 10 entries to avoid token bloat
61
+ if (context.history.length > 10) {
62
+ context.history = context.history.slice(-10);
63
+ }
64
+ fs.writeFileSync(CONTEXT_FILE, JSON.stringify(context, null, 2));
65
+ } catch (err) {
66
+ // Silent fail to avoid crashing the main command flow
57
67
  }
58
- fs.writeFileSync(CONTEXT_FILE, JSON.stringify(context, null, 2));
59
68
  },
60
69
 
61
70
  getSummary: (): string => {
62
- const context = projectManager.get();
63
- if (context.history.length === 0) return "No previous history found for this project.";
64
-
65
- let summary = `Project: ${context.projectName} (Author: ${context.author})\n\nRecent History:\n`;
66
- context.history.forEach((entry, i) => {
67
- summary += `[${i+1}] ${entry.type} (${new Date(entry.timestamp).toLocaleString()}):\n${entry.content.substring(0, 500)}...\n\n`;
68
- });
69
- return summary;
71
+ try {
72
+ if (!projectManager.isProject()) return "No project initialization found. Run 'gmpilot init' first.";
73
+ const context = projectManager.get();
74
+ if (context.history.length === 0) return "No previous history found for this project.";
75
+
76
+ let summary = `Project: ${context.projectName} (Author: ${context.author})\n\nRecent History:\n`;
77
+ context.history.forEach((entry, i) => {
78
+ summary += `[${i+1}] ${entry.type} (${new Date(entry.timestamp).toLocaleString()}):\n${entry.content.substring(0, 500)}...\n\n`;
79
+ });
80
+ return summary;
81
+ } catch (err) {
82
+ return "Error loading project history.";
83
+ }
70
84
  }
71
85
  };