gamemindpilot 1.0.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 (55) hide show
  1. package/README.md +117 -0
  2. package/dist/commands/advanced.d.ts +6 -0
  3. package/dist/commands/advanced.js +64 -0
  4. package/dist/commands/advanced.js.map +1 -0
  5. package/dist/commands/analysis.d.ts +6 -0
  6. package/dist/commands/analysis.js +64 -0
  7. package/dist/commands/analysis.js.map +1 -0
  8. package/dist/commands/assets.d.ts +5 -0
  9. package/dist/commands/assets.js +51 -0
  10. package/dist/commands/assets.js.map +1 -0
  11. package/dist/commands/chat.d.ts +1 -0
  12. package/dist/commands/chat.js +37 -0
  13. package/dist/commands/chat.js.map +1 -0
  14. package/dist/commands/design.d.ts +6 -0
  15. package/dist/commands/design.js +67 -0
  16. package/dist/commands/design.js.map +1 -0
  17. package/dist/commands/init.d.ts +1 -0
  18. package/dist/commands/init.js +31 -0
  19. package/dist/commands/init.js.map +1 -0
  20. package/dist/commands/login.d.ts +1 -0
  21. package/dist/commands/login.js +82 -0
  22. package/dist/commands/login.js.map +1 -0
  23. package/dist/commands/simulation.d.ts +5 -0
  24. package/dist/commands/simulation.js +51 -0
  25. package/dist/commands/simulation.js.map +1 -0
  26. package/dist/commands/utility.d.ts +39 -0
  27. package/dist/commands/utility.js +214 -0
  28. package/dist/commands/utility.js.map +1 -0
  29. package/dist/index.d.ts +2 -0
  30. package/dist/index.js +321 -0
  31. package/dist/index.js.map +1 -0
  32. package/dist/utils/ai-service.d.ts +11 -0
  33. package/dist/utils/ai-service.js +114 -0
  34. package/dist/utils/ai-service.js.map +1 -0
  35. package/dist/utils/config.d.ts +15 -0
  36. package/dist/utils/config.js +39 -0
  37. package/dist/utils/config.js.map +1 -0
  38. package/dist/utils/logger.d.ts +7 -0
  39. package/dist/utils/logger.js +15 -0
  40. package/dist/utils/logger.js.map +1 -0
  41. package/package.json +51 -0
  42. package/src/commands/advanced.ts +57 -0
  43. package/src/commands/analysis.ts +57 -0
  44. package/src/commands/assets.ts +44 -0
  45. package/src/commands/chat.ts +31 -0
  46. package/src/commands/design.ts +60 -0
  47. package/src/commands/init.ts +26 -0
  48. package/src/commands/login.ts +78 -0
  49. package/src/commands/simulation.ts +44 -0
  50. package/src/commands/utility.ts +243 -0
  51. package/src/index.ts +355 -0
  52. package/src/utils/ai-service.ts +104 -0
  53. package/src/utils/config.ts +46 -0
  54. package/src/utils/logger.ts +9 -0
  55. package/tsconfig.json +17 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export declare class AIService {
2
+ static chat(prompt: string): Promise<any>;
3
+ static listModels(provider: string, key?: string, url?: string): Promise<string[]>;
4
+ private static listGeminiModels;
5
+ private static listOpenAIModels;
6
+ private static listOllamaModels;
7
+ private static geminiChat;
8
+ private static openaiChat;
9
+ private static claudeChat;
10
+ private static ollamaChat;
11
+ }
@@ -0,0 +1,114 @@
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.AIService = void 0;
7
+ const axios_1 = __importDefault(require("axios"));
8
+ const config_1 = require("../utils/config");
9
+ class AIService {
10
+ static async chat(prompt) {
11
+ const config = config_1.configManager.get();
12
+ const provider = config.selectedModel || 'gemini';
13
+ if (provider === 'gemini') {
14
+ return this.geminiChat(prompt, config.geminiKey, config.modelName);
15
+ }
16
+ else if (provider === 'openai') {
17
+ return this.openaiChat(prompt, config.openaiKey, config.modelName);
18
+ }
19
+ else if (provider === 'claude') {
20
+ return this.claudeChat(prompt, config.claudeKey, config.modelName);
21
+ }
22
+ else {
23
+ return this.ollamaChat(prompt, config.ollamaUrl, config.modelName);
24
+ }
25
+ }
26
+ static async listModels(provider, key, url) {
27
+ if (provider === 'gemini') {
28
+ return this.listGeminiModels(key);
29
+ }
30
+ else if (provider === 'openai') {
31
+ return this.listOpenAIModels(key);
32
+ }
33
+ else if (provider === 'claude') {
34
+ return ['claude-3-5-sonnet-20240620', 'claude-3-opus-20240229', 'claude-3-sonnet-20240229', 'claude-3-haiku-20240307'];
35
+ }
36
+ else {
37
+ return this.listOllamaModels(url);
38
+ }
39
+ }
40
+ static async listGeminiModels(key) {
41
+ if (!key)
42
+ throw new Error('API Key missing.');
43
+ const url = `https://generativelanguage.googleapis.com/v1beta/models?key=${key}`;
44
+ const response = await axios_1.default.get(url);
45
+ return response.data.models
46
+ .filter((m) => m.supportedGenerationMethods.includes('generateContent'))
47
+ .map((m) => m.name.replace('models/', ''));
48
+ }
49
+ static async listOpenAIModels(key) {
50
+ if (!key)
51
+ throw new Error('API Key missing.');
52
+ const response = await axios_1.default.get('https://api.openai.com/v1/models', {
53
+ headers: { 'Authorization': `Bearer ${key}` }
54
+ });
55
+ return response.data.data
56
+ .filter((m) => m.id.startsWith('gpt-'))
57
+ .map((m) => m.id);
58
+ }
59
+ static async listOllamaModels(url = 'http://localhost:11434') {
60
+ try {
61
+ const response = await axios_1.default.get(`${url}/api/tags`);
62
+ return response.data.models.map((m) => m.name);
63
+ }
64
+ catch {
65
+ return ['llama3', 'mistral', 'phi3'];
66
+ }
67
+ }
68
+ static async geminiChat(prompt, key, model = 'gemini-pro') {
69
+ if (!key)
70
+ throw new Error('Gemini API Key missing. Run "gmpilot login".');
71
+ const url = `https://generativelanguage.googleapis.com/v1beta/models/${model}:generateContent?key=${key}`;
72
+ const response = await axios_1.default.post(url, {
73
+ contents: [{ parts: [{ text: prompt }] }]
74
+ });
75
+ return response.data.candidates[0].content.parts[0].text;
76
+ }
77
+ static async openaiChat(prompt, key, model = 'gpt-4') {
78
+ if (!key)
79
+ throw new Error('OpenAI API Key missing. Run "gmpilot login".');
80
+ const response = await axios_1.default.post('https://api.openai.com/v1/chat/completions', {
81
+ model: model,
82
+ messages: [{ role: 'user', content: prompt }]
83
+ }, {
84
+ headers: { 'Authorization': `Bearer ${key}` }
85
+ });
86
+ return response.data.choices[0].message.content;
87
+ }
88
+ static async claudeChat(prompt, key, model = 'claude-3-5-sonnet-20240620') {
89
+ if (!key)
90
+ throw new Error('Claude API Key missing. Run "gmpilot login".');
91
+ const response = await axios_1.default.post('https://api.anthropic.com/v1/messages', {
92
+ model: model,
93
+ max_tokens: 1024,
94
+ messages: [{ role: 'user', content: prompt }]
95
+ }, {
96
+ headers: {
97
+ 'x-api-key': key,
98
+ 'anthropic-version': '2023-06-01',
99
+ 'content-type': 'application/json'
100
+ }
101
+ });
102
+ return response.data.content[0].text;
103
+ }
104
+ static async ollamaChat(prompt, url = 'http://localhost:11434', model = 'llama3') {
105
+ const response = await axios_1.default.post(`${url}/api/generate`, {
106
+ model: model,
107
+ prompt: prompt,
108
+ stream: false
109
+ });
110
+ return response.data.response;
111
+ }
112
+ }
113
+ exports.AIService = AIService;
114
+ //# sourceMappingURL=ai-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-service.js","sourceRoot":"","sources":["../../src/utils/ai-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ export interface Config {
2
+ geminiKey?: string;
3
+ openaiKey?: string;
4
+ claudeKey?: string;
5
+ ollamaUrl?: string;
6
+ selectedModel?: 'gemini' | 'openai' | 'claude' | 'ollama';
7
+ modelName?: string;
8
+ user?: string;
9
+ }
10
+ export declare const configManager: {
11
+ init: () => void;
12
+ get: () => Config;
13
+ set: (newConfig: Partial<Config>) => void;
14
+ clear: () => void;
15
+ };
@@ -0,0 +1,39 @@
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.configManager = void 0;
7
+ const fs_1 = __importDefault(require("fs"));
8
+ const path_1 = __importDefault(require("path"));
9
+ const os_1 = __importDefault(require("os"));
10
+ const CONFIG_DIR = path_1.default.join(os_1.default.homedir(), '.gmpilot');
11
+ const CONFIG_FILE = path_1.default.join(CONFIG_DIR, 'config.json');
12
+ exports.configManager = {
13
+ init: () => {
14
+ if (!fs_1.default.existsSync(CONFIG_DIR)) {
15
+ fs_1.default.mkdirSync(CONFIG_DIR);
16
+ }
17
+ if (!fs_1.default.existsSync(CONFIG_FILE)) {
18
+ fs_1.default.writeFileSync(CONFIG_FILE, JSON.stringify({}, null, 2));
19
+ }
20
+ },
21
+ get: () => {
22
+ try {
23
+ const data = fs_1.default.readFileSync(CONFIG_FILE, 'utf-8');
24
+ return JSON.parse(data);
25
+ }
26
+ catch {
27
+ return {};
28
+ }
29
+ },
30
+ set: (newConfig) => {
31
+ const current = exports.configManager.get();
32
+ const updated = { ...current, ...newConfig };
33
+ fs_1.default.writeFileSync(CONFIG_FILE, JSON.stringify(updated, null, 2));
34
+ },
35
+ clear: () => {
36
+ fs_1.default.writeFileSync(CONFIG_FILE, JSON.stringify({}, null, 2));
37
+ }
38
+ };
39
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAoB;AACpB,gDAAwB;AACxB,4CAAoB;AAEpB,MAAM,UAAU,GAAG,cAAI,CAAC,IAAI,CAAC,YAAE,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC;AACvD,MAAM,WAAW,GAAG,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;AAY5C,QAAA,aAAa,GAAG;IAC3B,IAAI,EAAE,GAAG,EAAE;QACT,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,YAAE,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC3B,CAAC;QACD,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAChC,YAAE,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAED,GAAG,EAAE,GAAW,EAAE;QAChB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,YAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACnD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,GAAG,EAAE,CAAC,SAA0B,EAAE,EAAE;QAClC,MAAM,OAAO,GAAG,qBAAa,CAAC,GAAG,EAAE,CAAC;QACpC,MAAM,OAAO,GAAG,EAAE,GAAG,OAAO,EAAE,GAAG,SAAS,EAAE,CAAC;QAC7C,YAAE,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAClE,CAAC;IAED,KAAK,EAAE,GAAG,EAAE;QACV,YAAE,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7D,CAAC;CACF,CAAC"}
@@ -0,0 +1,7 @@
1
+ export declare const logger: {
2
+ info: (msg: string) => void;
3
+ success: (msg: string) => void;
4
+ warn: (msg: string) => void;
5
+ error: (msg: string) => void;
6
+ bold: (msg: string) => void;
7
+ };
@@ -0,0 +1,15 @@
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.logger = void 0;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ exports.logger = {
9
+ info: (msg) => console.log(chalk_1.default.blue('ℹ ') + msg),
10
+ success: (msg) => console.log(chalk_1.default.green('✔ ') + msg),
11
+ warn: (msg) => console.log(chalk_1.default.yellow('⚠ ') + msg),
12
+ error: (msg) => console.log(chalk_1.default.red('✖ ') + msg),
13
+ bold: (msg) => console.log(chalk_1.default.bold(msg)),
14
+ };
15
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAEb,QAAA,MAAM,GAAG;IACpB,IAAI,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;IAC1D,OAAO,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;IAC9D,IAAI,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;IAC5D,KAAK,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;IAC1D,IAAI,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;CACpD,CAAC"}
package/package.json ADDED
@@ -0,0 +1,51 @@
1
+ {
2
+ "name": "gamemindpilot",
3
+ "version": "1.0.0",
4
+ "description": "AI-powered CLI for game developers - Design, Asset Gen, Analysis & Optimization",
5
+ "main": "dist/index.js",
6
+ "bin": {
7
+ "gmpilot": "./dist/index.js"
8
+ },
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "https://github.com/k8-tech-dev/GameMindPilot.git"
12
+ },
13
+ "scripts": {
14
+ "build": "tsc",
15
+ "start": "node dist/index.js",
16
+ "dev": "ts-node src/index.ts",
17
+ "test": "echo \"Error: no test specified\" && exit 1"
18
+ },
19
+ "keywords": [
20
+ "gamedev",
21
+ "ai",
22
+ "cli",
23
+ "gamemindpilot",
24
+ "unity",
25
+ "unreal",
26
+ "godot",
27
+ "generation"
28
+ ],
29
+ "author": "k8-tech-dev",
30
+ "license": "MIT",
31
+ "type": "commonjs",
32
+ "dependencies": {
33
+ "axios": "^1.13.6",
34
+ "chalk": "^5.6.2",
35
+ "commander": "^14.0.3",
36
+ "dotenv": "^17.3.1",
37
+ "glob": "^13.0.6",
38
+ "inquirer": "^9.3.8",
39
+ "ora": "^9.3.0"
40
+ },
41
+ "devDependencies": {
42
+ "@types/axios": "^0.9.36",
43
+ "@types/chalk": "^0.4.31",
44
+ "@types/glob": "^8.1.0",
45
+ "@types/inquirer": "^9.0.9",
46
+ "@types/node": "^25.5.0",
47
+ "@types/ora": "^3.1.0",
48
+ "ts-node": "^10.9.2",
49
+ "typescript": "^5.9.3"
50
+ }
51
+ }
@@ -0,0 +1,57 @@
1
+ import ora from 'ora';
2
+ import { AIService } from '../utils/ai-service';
3
+ import { logger } from '../utils/logger';
4
+
5
+ export const advancedCommands = {
6
+ worldBuilder: async () => {
7
+ const spinner = ora('Designing world components...').start();
8
+ try {
9
+ const response = await AIService.chat('Generate a world-building framework for an open-world RPG. Include region biomes, key landmarks, weather systems, and lore hooks for 3 distinct territories.');
10
+ spinner.stop();
11
+ logger.bold('\n--- World Builder Dashboard ---');
12
+ console.log(response);
13
+ } catch (err: any) {
14
+ spinner.stop();
15
+ logger.error(err.message);
16
+ }
17
+ },
18
+
19
+ questGraph: async () => {
20
+ const spinner = ora('Mapping quest dependencies...').start();
21
+ try {
22
+ const response = await AIService.chat('Create a quest graph for a multi-stage mission. Detail the nodes (objectives), edges (dependencies), and branching points based on player choices.');
23
+ spinner.stop();
24
+ logger.bold('\n--- Quest Graph Visualizer ---');
25
+ console.log(response);
26
+ } catch (err: any) {
27
+ spinner.stop();
28
+ logger.error(err.message);
29
+ }
30
+ },
31
+
32
+ behaviorTrees: async () => {
33
+ const spinner = ora('Generating AI behavior tree...').start();
34
+ try {
35
+ const response = await AIService.chat('Generate a behavior tree for a stealth-focused enemy. Include states like Patrol, Investigate, Pursue, and Search, with transition conditions.');
36
+ spinner.stop();
37
+ logger.bold('\n--- Behavior Tree Architect ---');
38
+ console.log(response);
39
+ } catch (err: any) {
40
+ spinner.stop();
41
+ logger.error(err.message);
42
+ }
43
+ },
44
+
45
+ storyboarder: async () => {
46
+ const spinner = ora('Creating scene storyboard...').start();
47
+ try {
48
+ const response = await AIService.chat('Outline a 5-panel storyboard for an epic boss introduction cinematic. Describe the camera angles, lighting, and key actions for each panel.');
49
+ spinner.stop();
50
+ logger.bold('\n--- Storyboarder Draft ---');
51
+ console.log(response);
52
+ } catch (err: any) {
53
+ spinner.stop();
54
+ logger.error(err.message);
55
+ }
56
+ }
57
+ };
@@ -0,0 +1,57 @@
1
+ import ora from 'ora';
2
+ import { AIService } from '../utils/ai-service';
3
+ import { logger } from '../utils/logger';
4
+
5
+ export const analysisCommands = {
6
+ archetypes: async () => {
7
+ const spinner = ora('Clustering playtester behavioral cohorts...').start();
8
+ try {
9
+ const response = await AIService.chat('Define 4 distinct player archetypes for a modern RPG based on behavioral cohorts (e.g., The Completionist, The Speedrunner). Specify their motivations and key metrics to track.');
10
+ spinner.stop();
11
+ logger.bold('\n--- Player Archetypes ---');
12
+ console.log(response);
13
+ } catch (err: any) {
14
+ spinner.stop();
15
+ logger.error(err.message);
16
+ }
17
+ },
18
+
19
+ securityScan: async () => {
20
+ const spinner = ora('Performing AI-powered DevSecOps scan...').start();
21
+ try {
22
+ const response = await AIService.chat('Simulate a security vulnerability report for a game server using AI. Include potential SQL injections, buffer overflows in netcode, and mitigation strategies.');
23
+ spinner.stop();
24
+ logger.bold('\n--- DevSecOps Security Scan ---');
25
+ console.log(response);
26
+ } catch (err: any) {
27
+ spinner.stop();
28
+ logger.error(err.message);
29
+ }
30
+ },
31
+
32
+ abTest: async () => {
33
+ const spinner = ora('Forecasting monetization paths...').start();
34
+ try {
35
+ const response = await AIService.chat('Forecast the impact of two different monetization strategies: A) Battle Pass vs B) Direct Currency Purchase. Compare projected conversion rates and LTV.');
36
+ spinner.stop();
37
+ logger.bold('\n--- Monetization A/B Forecast ---');
38
+ console.log(response);
39
+ } catch (err: any) {
40
+ spinner.stop();
41
+ logger.error(err.message);
42
+ }
43
+ },
44
+
45
+ heapScan: async () => {
46
+ const spinner = ora('Analyzing memory patterns...').start();
47
+ try {
48
+ const response = await AIService.chat('Simulate a heap analysis report for a Unity project. Identify common memory leaks like event unsubscription failures and texture bloat.');
49
+ spinner.stop();
50
+ logger.bold('\n--- Heap Analysis & Hotspots ---');
51
+ console.log(response);
52
+ } catch (err: any) {
53
+ spinner.stop();
54
+ logger.error(err.message);
55
+ }
56
+ }
57
+ };
@@ -0,0 +1,44 @@
1
+ import ora from 'ora';
2
+ import { AIService } from '../utils/ai-service';
3
+ import { logger } from '../utils/logger';
4
+
5
+ export const assetCommands = {
6
+ script: async (engine: string = 'unity') => {
7
+ const spinner = ora(`Generating code for ${engine}...`).start();
8
+ try {
9
+ const response = await AIService.chat(`Generate a clean, optimized ${engine} script for a basic player controller with jumping, double jumping, and event hooks for animations.`);
10
+ spinner.stop();
11
+ logger.bold(`\n--- ${engine.toUpperCase()} Script ---`);
12
+ console.log(response);
13
+ } catch (err: any) {
14
+ spinner.stop();
15
+ logger.error(err.message);
16
+ }
17
+ },
18
+
19
+ blueprint: async () => {
20
+ const spinner = ora('Generating game system boilerplate...').start();
21
+ try {
22
+ const response = await AIService.chat('Provide a detailed architecture blueprint for a modular inventory system, including class definitions, interface requirements, and data persistence strategy.');
23
+ spinner.stop();
24
+ logger.bold('\n--- Game System Blueprint ---');
25
+ console.log(response);
26
+ } catch (err: any) {
27
+ spinner.stop();
28
+ logger.error(err.message);
29
+ }
30
+ },
31
+
32
+ item: async () => {
33
+ const spinner = ora('Designing procedural assets...').start();
34
+ try {
35
+ const response = await AIService.chat('Generate 5 unique procedurally-generated items/enemies for a fantasy RPG. Include stats, loot drops, and a brief description of their visual design/behavior.');
36
+ spinner.stop();
37
+ logger.bold('\n--- Procedural Assets (Item/Enemy) ---');
38
+ console.log(response);
39
+ } catch (err: any) {
40
+ spinner.stop();
41
+ logger.error(err.message);
42
+ }
43
+ }
44
+ };
@@ -0,0 +1,31 @@
1
+ import inquirer from 'inquirer';
2
+ import ora from 'ora';
3
+ import { AIService } from '../utils/ai-service';
4
+ import { logger } from '../utils/logger';
5
+
6
+ export const chatCommand = async () => {
7
+ logger.info('Starting GameMindPilot AI Chat...');
8
+ logger.info('Type "exit" or "quit" to end the session.');
9
+
10
+ while (true) {
11
+ const { input } = await inquirer.prompt([
12
+ {
13
+ type: 'input',
14
+ name: 'input',
15
+ message: 'You >'
16
+ }
17
+ ]);
18
+
19
+ if (['exit', 'quit'].includes(input.toLowerCase())) break;
20
+
21
+ const spinner = ora('Gmpilot is thinking...').start();
22
+ try {
23
+ const response = await AIService.chat(input);
24
+ spinner.stop();
25
+ console.log(`${logger.info('Gmpilot >')} ${response}\n`);
26
+ } catch (error: any) {
27
+ spinner.stop();
28
+ logger.error(`Error: ${error.message}`);
29
+ }
30
+ }
31
+ };
@@ -0,0 +1,60 @@
1
+ import ora from 'ora';
2
+ import { AIService } from '../utils/ai-service';
3
+ import { logger } from '../utils/logger';
4
+
5
+ export const designCommands = {
6
+ idea: async () => {
7
+ const spinner = ora('Brainstorming game concepts...').start();
8
+ try {
9
+ const response = await AIService.chat('Generate 3 unique and creative game concepts. Include title, genre, and a 2-sentence hook for each.');
10
+ spinner.stop();
11
+ logger.bold('\n--- Game Concepts ---');
12
+ console.log(response);
13
+ } catch (err: any) {
14
+ spinner.stop();
15
+ logger.error(err.message);
16
+ }
17
+ },
18
+
19
+ dialogue: async (context?: string) => {
20
+ const spinner = ora('Writing NPC dialogue...').start();
21
+ const prompt = context
22
+ ? `Generate NPC dialogue for the following context: ${context}`
23
+ : 'Generate a branching NPC dialogue for a mysterious shopkeeper who knows a secret about the player.';
24
+ try {
25
+ const response = await AIService.chat(prompt);
26
+ spinner.stop();
27
+ logger.bold('\n--- NPC Dialogue ---');
28
+ console.log(response);
29
+ } catch (err: any) {
30
+ spinner.stop();
31
+ logger.error(err.message);
32
+ }
33
+ },
34
+
35
+ quest: async () => {
36
+ const spinner = ora('Designing side quest...').start();
37
+ try {
38
+ const response = await AIService.chat('Generate a detailed side quest including objectives, possible rewards, and a plot twist.');
39
+ spinner.stop();
40
+ logger.bold('\n--- Quest Design ---');
41
+ console.log(response);
42
+ } catch (err: any) {
43
+ spinner.stop();
44
+ logger.error(err.message);
45
+ }
46
+ },
47
+
48
+ level: async (theme: string = 'dungeon') => {
49
+ const spinner = ora(`Generating ${theme} level layout...`).start();
50
+ try {
51
+ const response = await AIService.chat(`Generate a text-based level layout for a ${theme} level including room descriptions, traps, and enemy placements.`);
52
+ spinner.stop();
53
+ logger.bold(`\n--- ${theme.toUpperCase()} Level Layout ---`);
54
+ console.log(response);
55
+ } catch (err: any) {
56
+ spinner.stop();
57
+ logger.error(err.message);
58
+ }
59
+ }
60
+ };
@@ -0,0 +1,26 @@
1
+ import inquirer from 'inquirer';
2
+ import { logger } from '../utils/logger';
3
+ import { configManager } from '../utils/config';
4
+
5
+ export const initCommand = async () => {
6
+ logger.bold('--- Initializing GameMindPilot Project ---');
7
+
8
+ const answers = await inquirer.prompt([
9
+ {
10
+ type: 'input',
11
+ name: 'projectName',
12
+ message: 'Enter your project name:',
13
+ default: 'MyAwesomeGame'
14
+ },
15
+ {
16
+ type: 'input',
17
+ name: 'author',
18
+ message: 'Author name:',
19
+ default: configManager.get().user || 'Player1'
20
+ }
21
+ ]);
22
+
23
+ configManager.set({ user: answers.author });
24
+ logger.success(`Project "${answers.projectName}" initialized for ${answers.author}!`);
25
+ logger.info('Run "gmpilot --help" to see available features.');
26
+ };
@@ -0,0 +1,78 @@
1
+ import inquirer from 'inquirer';
2
+ import ora from 'ora';
3
+ import { AIService } from '../utils/ai-service';
4
+ import { configManager } from '../utils/config';
5
+ import { logger } from '../utils/logger';
6
+
7
+ export const loginCommand = async () => {
8
+ logger.bold('--- GameMindPilot Configuration ---');
9
+
10
+ const providerAns = await inquirer.prompt([
11
+ {
12
+ type: 'list',
13
+ name: 'provider',
14
+ message: 'Select your AI provider:',
15
+ pageSize: 10,
16
+ choices: [
17
+ { name: 'Google Gemini', value: 'gemini' },
18
+ { name: 'OpenAI', value: 'openai' },
19
+ { name: 'Anthropic Claude', value: 'claude' },
20
+ { name: 'Local Ollama', value: 'ollama' }
21
+ ],
22
+ default: configManager.get().selectedModel || 'gemini'
23
+ }
24
+ ]);
25
+
26
+ const provider = providerAns.provider;
27
+
28
+ const authAns = await inquirer.prompt([
29
+ {
30
+ type: 'input',
31
+ name: 'apiKey',
32
+ message: `Enter your ${provider} API Key:`,
33
+ when: provider !== 'ollama',
34
+ validate: (input) => input.length > 0 ? true : 'API Key cannot be empty.'
35
+ },
36
+ {
37
+ type: 'input',
38
+ name: 'ollamaUrl',
39
+ message: 'Enter Ollama Base URL:',
40
+ default: 'http://localhost:11434',
41
+ when: provider === 'ollama'
42
+ }
43
+ ]);
44
+
45
+ const spinner = ora(`Fetching supported models for ${provider}...`).start();
46
+ let models: string[] = [];
47
+ try {
48
+ models = await AIService.listModels(provider, authAns.apiKey, authAns.ollamaUrl);
49
+ spinner.succeed(`Fetched ${models.length} models.`);
50
+ } catch (error: any) {
51
+ spinner.fail(`Failed to fetch models: ${error.message}`);
52
+ logger.warn('Using default fallback models.');
53
+ models = provider === 'gemini' ? ['gemini-1.5-pro', 'gemini-pro'] : ['gpt-4', 'gpt-3.5-turbo'];
54
+ }
55
+
56
+ const modelAns = await inquirer.prompt([
57
+ {
58
+ type: 'list',
59
+ name: 'modelName',
60
+ message: `Select a model:`,
61
+ choices: models,
62
+ default: configManager.get().modelName || models[0]
63
+ }
64
+ ]);
65
+
66
+ const update: any = {
67
+ selectedModel: provider,
68
+ modelName: modelAns.modelName
69
+ };
70
+
71
+ if (provider === 'gemini') update.geminiKey = authAns.apiKey;
72
+ if (provider === 'openai') update.openaiKey = authAns.apiKey;
73
+ if (provider === 'claude') update.claudeKey = authAns.apiKey;
74
+ if (provider === 'ollama') update.ollamaUrl = authAns.ollamaUrl;
75
+
76
+ configManager.set(update);
77
+ logger.success(`Successfully configured ${provider}! Selected model: ${modelAns.modelName}`);
78
+ };