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.
- package/README.md +117 -0
- package/dist/commands/advanced.d.ts +6 -0
- package/dist/commands/advanced.js +64 -0
- package/dist/commands/advanced.js.map +1 -0
- package/dist/commands/analysis.d.ts +6 -0
- package/dist/commands/analysis.js +64 -0
- package/dist/commands/analysis.js.map +1 -0
- package/dist/commands/assets.d.ts +5 -0
- package/dist/commands/assets.js +51 -0
- package/dist/commands/assets.js.map +1 -0
- package/dist/commands/chat.d.ts +1 -0
- package/dist/commands/chat.js +37 -0
- package/dist/commands/chat.js.map +1 -0
- package/dist/commands/design.d.ts +6 -0
- package/dist/commands/design.js +67 -0
- package/dist/commands/design.js.map +1 -0
- package/dist/commands/init.d.ts +1 -0
- package/dist/commands/init.js +31 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/login.d.ts +1 -0
- package/dist/commands/login.js +82 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/simulation.d.ts +5 -0
- package/dist/commands/simulation.js +51 -0
- package/dist/commands/simulation.js.map +1 -0
- package/dist/commands/utility.d.ts +39 -0
- package/dist/commands/utility.js +214 -0
- package/dist/commands/utility.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +321 -0
- package/dist/index.js.map +1 -0
- package/dist/utils/ai-service.d.ts +11 -0
- package/dist/utils/ai-service.js +114 -0
- package/dist/utils/ai-service.js.map +1 -0
- package/dist/utils/config.d.ts +15 -0
- package/dist/utils/config.js +39 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/logger.d.ts +7 -0
- package/dist/utils/logger.js +15 -0
- package/dist/utils/logger.js.map +1 -0
- package/package.json +51 -0
- package/src/commands/advanced.ts +57 -0
- package/src/commands/analysis.ts +57 -0
- package/src/commands/assets.ts +44 -0
- package/src/commands/chat.ts +31 -0
- package/src/commands/design.ts +60 -0
- package/src/commands/init.ts +26 -0
- package/src/commands/login.ts +78 -0
- package/src/commands/simulation.ts +44 -0
- package/src/commands/utility.ts +243 -0
- package/src/index.ts +355 -0
- package/src/utils/ai-service.ts +104 -0
- package/src/utils/config.ts +46 -0
- package/src/utils/logger.ts +9 -0
- package/tsconfig.json +17 -0
package/README.md
ADDED
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
# 🎮 GameMindPilot (gmpilot)
|
|
2
|
+
|
|
3
|
+
**AI-powered CLI Companion for Game Developers & Designers.**
|
|
4
|
+
|
|
5
|
+
GameMindPilot is a comprehensive command-line tool designed to accelerate game development workflows. From procedural concept generation to performance auditing and economy simulations, gmpilot brings the power of state-of-the-art AI (Gemini, OpenAI, Claude, Ollama) directly to your terminal.
|
|
6
|
+
|
|
7
|
+
## 🚀 Key Features
|
|
8
|
+
|
|
9
|
+
- **BYOK (Bring Your Own Key):** Connect directly to Google Gemini, OpenAI, Claude, or local Ollama instances.
|
|
10
|
+
- **Dynamic Model Selection:** Automatically fetch and select from supported models for each provider.
|
|
11
|
+
- **Game Design & Narrative:** Generate concepts, dialogue trees, quests, and level layouts.
|
|
12
|
+
- **Advanced Simulation:** Monte Carlo economy simulations and behavioral playtester cohort analysis.
|
|
13
|
+
- **Performance & Analysis:** Identify memory leaks, optimize mesh complexity, and audit localization.
|
|
14
|
+
- **DevSecOps:** AI-powered security vulnerability scanning for game code.
|
|
15
|
+
- **Live Chat:** Interactive AI terminal for rapid prototyping and brainstorming.
|
|
16
|
+
|
|
17
|
+
## 📦 Installation
|
|
18
|
+
|
|
19
|
+
Install globally using npm:
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
npm install -g gamemindpilot
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## 🛠️ Getting Started
|
|
26
|
+
|
|
27
|
+
1. **Initialize a Project:**
|
|
28
|
+
```bash
|
|
29
|
+
gmpilot init
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
2. **Configure AI Provider:**
|
|
33
|
+
```bash
|
|
34
|
+
gmpilot login
|
|
35
|
+
```
|
|
36
|
+
*Follow the prompts to enter your API key and select your preferred model.*
|
|
37
|
+
|
|
38
|
+
3. **Start Brainstorming:**
|
|
39
|
+
```bash
|
|
40
|
+
gmpilot idea --prompt "A space western RPG with time-loop mechanics"
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## 📖 Command Reference
|
|
44
|
+
|
|
45
|
+
### Core Commands
|
|
46
|
+
- `login`: Configure your AI provider and API keys.
|
|
47
|
+
- `init`: Setup GameMindPilot in the current directory.
|
|
48
|
+
- `chat`: Open an interactive AI chat session.
|
|
49
|
+
- `setup-global`: View global installation instructions.
|
|
50
|
+
|
|
51
|
+
### Game Design
|
|
52
|
+
- `idea`: Generate unique game concepts and core loops.
|
|
53
|
+
- `dialogue`: Create NPC dialogue trees and choices.
|
|
54
|
+
- `quest`: Generate side quests and objectives.
|
|
55
|
+
- `level`: Prototyping level layouts and puzzles.
|
|
56
|
+
|
|
57
|
+
### Engineering & DevTools
|
|
58
|
+
- `script`: Generate boilerplate code for Unity, Unreal, or Godot.
|
|
59
|
+
- `blueprint`: Generate complete system architecture.
|
|
60
|
+
### Engineering & DevTools
|
|
61
|
+
- `script`: Generate boilerplate code for Unity, Unreal, or Godot.
|
|
62
|
+
- `blueprint`: Generate complete system architecture.
|
|
63
|
+
- `shader-gen`: Generate HLSL/GLSL shader templates.
|
|
64
|
+
- `vfx-gen`: Generate particle system parameters.
|
|
65
|
+
- `ui-layout`: AI-generated UI layout prototypes.
|
|
66
|
+
- `ui-theme-gen`: Generate UI Design System tokens.
|
|
67
|
+
- `sprite-anim`: Generate sprite animation metadata.
|
|
68
|
+
- `generate-sprite`: AI-powered frame-by-frame sprite generation.
|
|
69
|
+
- `save-logic`: Generate save/load system boilerplate.
|
|
70
|
+
- `net-sync`: Generate multiplayer synchronization boilerplate.
|
|
71
|
+
- `telemetry-gen`: Generate telemetry event logging code.
|
|
72
|
+
- `security-scan`: Scan for security vulnerabilities in scripts.
|
|
73
|
+
|
|
74
|
+
### Analysis & Optimization
|
|
75
|
+
- `montecarlo`: Run 10k-player economy simulations.
|
|
76
|
+
- `path-audit`: Analyze navmesh and pathfinding hotspots.
|
|
77
|
+
- `balance-check`: AI-powered game balance analysis.
|
|
78
|
+
- `heap-scan`: Analyze memory usage and find hotspots.
|
|
79
|
+
- `poly-optimize`: Analyze 3D mesh complexity.
|
|
80
|
+
- `mobile-audit`: Mobile-specific performance audit.
|
|
81
|
+
- `mobile-power-scan`: Mobile battery and thermal efficiency audit.
|
|
82
|
+
- `lod-audit`: Asset LOD verification and audit.
|
|
83
|
+
- `asset-bundler`: Analyze assets for bundling optimization.
|
|
84
|
+
- `collider-gen`: Generate optimized physics colliders.
|
|
85
|
+
- `collision-audit`: Audit collision layer matrix.
|
|
86
|
+
- `pulse`: Get high-level project health metrics.
|
|
87
|
+
- `run-test-bots`: Launch automated headless playtest bots.
|
|
88
|
+
|
|
89
|
+
### Creative & Intelligence
|
|
90
|
+
- `brainstorm`: Multi-agent AI brainstorming session.
|
|
91
|
+
- `scan-project`: Index project for codebase-aware AI queries.
|
|
92
|
+
- `ask`: Ask the AI about your specific project code.
|
|
93
|
+
- `idea`: Generate unique game concepts.
|
|
94
|
+
- `dialogue`: Generate NPC dialogues and choices.
|
|
95
|
+
- `quest`: Generate side quests and objectives.
|
|
96
|
+
- `level`: Prototyping level layouts and puzzles.
|
|
97
|
+
- `storyboarder`: Cinematic scene storyboarder.
|
|
98
|
+
|
|
99
|
+
### Pipeline, Legal & DevOps
|
|
100
|
+
- `git-auto`: AI-powered Git commit/PR description generator.
|
|
101
|
+
- `legal-gen`: Generate EULA and Store Policy templates.
|
|
102
|
+
- `live-sync`: Start Engine Bridge for live editor connectivity.
|
|
103
|
+
- `steam-sync`: Sync metadata with Steamworks.
|
|
104
|
+
- `discord-gen`: Generate Discord bot boilerplate.
|
|
105
|
+
- `l10n-sync`: AI-powered localization syncing.
|
|
106
|
+
- `l10n-review`: Collaborative AI translation review bridge.
|
|
107
|
+
- `marketing-kit`: Generate store assets and taglines.
|
|
108
|
+
- `monitor`: Launch TUI Project Monitor Dashboard.
|
|
109
|
+
- `add-extension`: Install community GameMindPilot extensions.
|
|
110
|
+
|
|
111
|
+
## ⚙️ Configuration
|
|
112
|
+
|
|
113
|
+
GameMindPilot stores configuration locally in `~/.gmpilot/config.json`. You can update your settings anytime using `gmpilot login`.
|
|
114
|
+
|
|
115
|
+
## 📄 License
|
|
116
|
+
|
|
117
|
+
MIT © 2026 GameMindPilot
|
|
@@ -0,0 +1,64 @@
|
|
|
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.advancedCommands = void 0;
|
|
7
|
+
const ora_1 = __importDefault(require("ora"));
|
|
8
|
+
const ai_service_1 = require("../utils/ai-service");
|
|
9
|
+
const logger_1 = require("../utils/logger");
|
|
10
|
+
exports.advancedCommands = {
|
|
11
|
+
worldBuilder: async () => {
|
|
12
|
+
const spinner = (0, ora_1.default)('Designing world components...').start();
|
|
13
|
+
try {
|
|
14
|
+
const response = await ai_service_1.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.');
|
|
15
|
+
spinner.stop();
|
|
16
|
+
logger_1.logger.bold('\n--- World Builder Dashboard ---');
|
|
17
|
+
console.log(response);
|
|
18
|
+
}
|
|
19
|
+
catch (err) {
|
|
20
|
+
spinner.stop();
|
|
21
|
+
logger_1.logger.error(err.message);
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
questGraph: async () => {
|
|
25
|
+
const spinner = (0, ora_1.default)('Mapping quest dependencies...').start();
|
|
26
|
+
try {
|
|
27
|
+
const response = await ai_service_1.AIService.chat('Create a quest graph for a multi-stage mission. Detail the nodes (objectives), edges (dependencies), and branching points based on player choices.');
|
|
28
|
+
spinner.stop();
|
|
29
|
+
logger_1.logger.bold('\n--- Quest Graph Visualizer ---');
|
|
30
|
+
console.log(response);
|
|
31
|
+
}
|
|
32
|
+
catch (err) {
|
|
33
|
+
spinner.stop();
|
|
34
|
+
logger_1.logger.error(err.message);
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
behaviorTrees: async () => {
|
|
38
|
+
const spinner = (0, ora_1.default)('Generating AI behavior tree...').start();
|
|
39
|
+
try {
|
|
40
|
+
const response = await ai_service_1.AIService.chat('Generate a behavior tree for a stealth-focused enemy. Include states like Patrol, Investigate, Pursue, and Search, with transition conditions.');
|
|
41
|
+
spinner.stop();
|
|
42
|
+
logger_1.logger.bold('\n--- Behavior Tree Architect ---');
|
|
43
|
+
console.log(response);
|
|
44
|
+
}
|
|
45
|
+
catch (err) {
|
|
46
|
+
spinner.stop();
|
|
47
|
+
logger_1.logger.error(err.message);
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
storyboarder: async () => {
|
|
51
|
+
const spinner = (0, ora_1.default)('Creating scene storyboard...').start();
|
|
52
|
+
try {
|
|
53
|
+
const response = await ai_service_1.AIService.chat('Outline a 5-panel storyboard for an epic boss introduction cinematic. Describe the camera angles, lighting, and key actions for each panel.');
|
|
54
|
+
spinner.stop();
|
|
55
|
+
logger_1.logger.bold('\n--- Storyboarder Draft ---');
|
|
56
|
+
console.log(response);
|
|
57
|
+
}
|
|
58
|
+
catch (err) {
|
|
59
|
+
spinner.stop();
|
|
60
|
+
logger_1.logger.error(err.message);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
//# sourceMappingURL=advanced.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"advanced.js","sourceRoot":"","sources":["../../src/commands/advanced.ts"],"names":[],"mappings":";;;;;;AAAA,8CAAsB;AACtB,oDAAgD;AAChD,4CAAyC;AAE5B,QAAA,gBAAgB,GAAG;IAC9B,YAAY,EAAE,KAAK,IAAI,EAAE;QACvB,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,+BAA+B,CAAC,CAAC,KAAK,EAAE,CAAC;QAC7D,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,sBAAS,CAAC,IAAI,CAAC,8JAA8J,CAAC,CAAC;YACtM,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,eAAM,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;YACjD,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxB,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,eAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,UAAU,EAAE,KAAK,IAAI,EAAE;QACrB,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,+BAA+B,CAAC,CAAC,KAAK,EAAE,CAAC;QAC7D,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,sBAAS,CAAC,IAAI,CAAC,oJAAoJ,CAAC,CAAC;YAC5L,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,eAAM,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;YAChD,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxB,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,eAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,aAAa,EAAE,KAAK,IAAI,EAAE;QACxB,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,gCAAgC,CAAC,CAAC,KAAK,EAAE,CAAC;QAC9D,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,sBAAS,CAAC,IAAI,CAAC,gJAAgJ,CAAC,CAAC;YACxL,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,eAAM,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;YACjD,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxB,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,eAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,YAAY,EAAE,KAAK,IAAI,EAAE;QACvB,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,8BAA8B,CAAC,CAAC,KAAK,EAAE,CAAC;QAC5D,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,sBAAS,CAAC,IAAI,CAAC,6IAA6I,CAAC,CAAC;YACrL,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,eAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;YAC5C,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxB,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,eAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,64 @@
|
|
|
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.analysisCommands = void 0;
|
|
7
|
+
const ora_1 = __importDefault(require("ora"));
|
|
8
|
+
const ai_service_1 = require("../utils/ai-service");
|
|
9
|
+
const logger_1 = require("../utils/logger");
|
|
10
|
+
exports.analysisCommands = {
|
|
11
|
+
archetypes: async () => {
|
|
12
|
+
const spinner = (0, ora_1.default)('Clustering playtester behavioral cohorts...').start();
|
|
13
|
+
try {
|
|
14
|
+
const response = await ai_service_1.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.');
|
|
15
|
+
spinner.stop();
|
|
16
|
+
logger_1.logger.bold('\n--- Player Archetypes ---');
|
|
17
|
+
console.log(response);
|
|
18
|
+
}
|
|
19
|
+
catch (err) {
|
|
20
|
+
spinner.stop();
|
|
21
|
+
logger_1.logger.error(err.message);
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
securityScan: async () => {
|
|
25
|
+
const spinner = (0, ora_1.default)('Performing AI-powered DevSecOps scan...').start();
|
|
26
|
+
try {
|
|
27
|
+
const response = await ai_service_1.AIService.chat('Simulate a security vulnerability report for a game server using AI. Include potential SQL injections, buffer overflows in netcode, and mitigation strategies.');
|
|
28
|
+
spinner.stop();
|
|
29
|
+
logger_1.logger.bold('\n--- DevSecOps Security Scan ---');
|
|
30
|
+
console.log(response);
|
|
31
|
+
}
|
|
32
|
+
catch (err) {
|
|
33
|
+
spinner.stop();
|
|
34
|
+
logger_1.logger.error(err.message);
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
abTest: async () => {
|
|
38
|
+
const spinner = (0, ora_1.default)('Forecasting monetization paths...').start();
|
|
39
|
+
try {
|
|
40
|
+
const response = await ai_service_1.AIService.chat('Forecast the impact of two different monetization strategies: A) Battle Pass vs B) Direct Currency Purchase. Compare projected conversion rates and LTV.');
|
|
41
|
+
spinner.stop();
|
|
42
|
+
logger_1.logger.bold('\n--- Monetization A/B Forecast ---');
|
|
43
|
+
console.log(response);
|
|
44
|
+
}
|
|
45
|
+
catch (err) {
|
|
46
|
+
spinner.stop();
|
|
47
|
+
logger_1.logger.error(err.message);
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
heapScan: async () => {
|
|
51
|
+
const spinner = (0, ora_1.default)('Analyzing memory patterns...').start();
|
|
52
|
+
try {
|
|
53
|
+
const response = await ai_service_1.AIService.chat('Simulate a heap analysis report for a Unity project. Identify common memory leaks like event unsubscription failures and texture bloat.');
|
|
54
|
+
spinner.stop();
|
|
55
|
+
logger_1.logger.bold('\n--- Heap Analysis & Hotspots ---');
|
|
56
|
+
console.log(response);
|
|
57
|
+
}
|
|
58
|
+
catch (err) {
|
|
59
|
+
spinner.stop();
|
|
60
|
+
logger_1.logger.error(err.message);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
//# sourceMappingURL=analysis.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analysis.js","sourceRoot":"","sources":["../../src/commands/analysis.ts"],"names":[],"mappings":";;;;;;AAAA,8CAAsB;AACtB,oDAAgD;AAChD,4CAAyC;AAE5B,QAAA,gBAAgB,GAAG;IAC9B,UAAU,EAAE,KAAK,IAAI,EAAE;QACrB,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,6CAA6C,CAAC,CAAC,KAAK,EAAE,CAAC;QAC3E,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,sBAAS,CAAC,IAAI,CAAC,kLAAkL,CAAC,CAAC;YAC1N,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,eAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxB,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,eAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,YAAY,EAAE,KAAK,IAAI,EAAE;QACvB,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,yCAAyC,CAAC,CAAC,KAAK,EAAE,CAAC;QACvE,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,sBAAS,CAAC,IAAI,CAAC,gKAAgK,CAAC,CAAC;YACxM,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,eAAM,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;YACjD,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxB,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,eAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,MAAM,EAAE,KAAK,IAAI,EAAE;QACjB,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,mCAAmC,CAAC,CAAC,KAAK,EAAE,CAAC;QACjE,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,sBAAS,CAAC,IAAI,CAAC,0JAA0J,CAAC,CAAC;YAClM,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,eAAM,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;YACnD,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxB,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,eAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,QAAQ,EAAE,KAAK,IAAI,EAAE;QACnB,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,8BAA8B,CAAC,CAAC,KAAK,EAAE,CAAC;QAC5D,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,sBAAS,CAAC,IAAI,CAAC,yIAAyI,CAAC,CAAC;YACjL,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,eAAM,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;YAClD,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxB,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,eAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
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.assetCommands = void 0;
|
|
7
|
+
const ora_1 = __importDefault(require("ora"));
|
|
8
|
+
const ai_service_1 = require("../utils/ai-service");
|
|
9
|
+
const logger_1 = require("../utils/logger");
|
|
10
|
+
exports.assetCommands = {
|
|
11
|
+
script: async (engine = 'unity') => {
|
|
12
|
+
const spinner = (0, ora_1.default)(`Generating code for ${engine}...`).start();
|
|
13
|
+
try {
|
|
14
|
+
const response = await ai_service_1.AIService.chat(`Generate a clean, optimized ${engine} script for a basic player controller with jumping, double jumping, and event hooks for animations.`);
|
|
15
|
+
spinner.stop();
|
|
16
|
+
logger_1.logger.bold(`\n--- ${engine.toUpperCase()} Script ---`);
|
|
17
|
+
console.log(response);
|
|
18
|
+
}
|
|
19
|
+
catch (err) {
|
|
20
|
+
spinner.stop();
|
|
21
|
+
logger_1.logger.error(err.message);
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
blueprint: async () => {
|
|
25
|
+
const spinner = (0, ora_1.default)('Generating game system boilerplate...').start();
|
|
26
|
+
try {
|
|
27
|
+
const response = await ai_service_1.AIService.chat('Provide a detailed architecture blueprint for a modular inventory system, including class definitions, interface requirements, and data persistence strategy.');
|
|
28
|
+
spinner.stop();
|
|
29
|
+
logger_1.logger.bold('\n--- Game System Blueprint ---');
|
|
30
|
+
console.log(response);
|
|
31
|
+
}
|
|
32
|
+
catch (err) {
|
|
33
|
+
spinner.stop();
|
|
34
|
+
logger_1.logger.error(err.message);
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
item: async () => {
|
|
38
|
+
const spinner = (0, ora_1.default)('Designing procedural assets...').start();
|
|
39
|
+
try {
|
|
40
|
+
const response = await ai_service_1.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.');
|
|
41
|
+
spinner.stop();
|
|
42
|
+
logger_1.logger.bold('\n--- Procedural Assets (Item/Enemy) ---');
|
|
43
|
+
console.log(response);
|
|
44
|
+
}
|
|
45
|
+
catch (err) {
|
|
46
|
+
spinner.stop();
|
|
47
|
+
logger_1.logger.error(err.message);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=assets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assets.js","sourceRoot":"","sources":["../../src/commands/assets.ts"],"names":[],"mappings":";;;;;;AAAA,8CAAsB;AACtB,oDAAgD;AAChD,4CAAyC;AAE5B,QAAA,aAAa,GAAG;IAC3B,MAAM,EAAE,KAAK,EAAE,SAAiB,OAAO,EAAE,EAAE;QACzC,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,uBAAuB,MAAM,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;QAChE,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,sBAAS,CAAC,IAAI,CAAC,+BAA+B,MAAM,qGAAqG,CAAC,CAAC;YAClL,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,eAAM,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;YACxD,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxB,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,eAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,SAAS,EAAE,KAAK,IAAI,EAAE;QACpB,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,uCAAuC,CAAC,CAAC,KAAK,EAAE,CAAC;QACrE,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,sBAAS,CAAC,IAAI,CAAC,+JAA+J,CAAC,CAAC;YACvM,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,eAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;YAC/C,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxB,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,eAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,IAAI,EAAE,KAAK,IAAI,EAAE;QACf,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,gCAAgC,CAAC,CAAC,KAAK,EAAE,CAAC;QAC9D,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,sBAAS,CAAC,IAAI,CAAC,+JAA+J,CAAC,CAAC;YACvM,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,eAAM,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;YACxD,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxB,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,eAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const chatCommand: () => Promise<void>;
|
|
@@ -0,0 +1,37 @@
|
|
|
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.chatCommand = void 0;
|
|
7
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
8
|
+
const ora_1 = __importDefault(require("ora"));
|
|
9
|
+
const ai_service_1 = require("../utils/ai-service");
|
|
10
|
+
const logger_1 = require("../utils/logger");
|
|
11
|
+
const chatCommand = async () => {
|
|
12
|
+
logger_1.logger.info('Starting GameMindPilot AI Chat...');
|
|
13
|
+
logger_1.logger.info('Type "exit" or "quit" to end the session.');
|
|
14
|
+
while (true) {
|
|
15
|
+
const { input } = await inquirer_1.default.prompt([
|
|
16
|
+
{
|
|
17
|
+
type: 'input',
|
|
18
|
+
name: 'input',
|
|
19
|
+
message: 'You >'
|
|
20
|
+
}
|
|
21
|
+
]);
|
|
22
|
+
if (['exit', 'quit'].includes(input.toLowerCase()))
|
|
23
|
+
break;
|
|
24
|
+
const spinner = (0, ora_1.default)('Gmpilot is thinking...').start();
|
|
25
|
+
try {
|
|
26
|
+
const response = await ai_service_1.AIService.chat(input);
|
|
27
|
+
spinner.stop();
|
|
28
|
+
console.log(`${logger_1.logger.info('Gmpilot >')} ${response}\n`);
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
spinner.stop();
|
|
32
|
+
logger_1.logger.error(`Error: ${error.message}`);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
exports.chatCommand = chatCommand;
|
|
37
|
+
//# sourceMappingURL=chat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat.js","sourceRoot":"","sources":["../../src/commands/chat.ts"],"names":[],"mappings":";;;;;;AAAA,wDAAgC;AAChC,8CAAsB;AACtB,oDAAgD;AAChD,4CAAyC;AAElC,MAAM,WAAW,GAAG,KAAK,IAAI,EAAE;IACpC,eAAM,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;IACjD,eAAM,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;IAEzD,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;YACtC;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,OAAO;aACjB;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YAAE,MAAM;QAE1D,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,wBAAwB,CAAC,CAAC,KAAK,EAAE,CAAC;QACtD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,sBAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC7C,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,GAAG,eAAM,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,QAAQ,IAAI,CAAC,CAAC;QAC3D,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,eAAM,CAAC,KAAK,CAAC,UAAU,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAzBW,QAAA,WAAW,eAyBtB"}
|
|
@@ -0,0 +1,67 @@
|
|
|
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.designCommands = void 0;
|
|
7
|
+
const ora_1 = __importDefault(require("ora"));
|
|
8
|
+
const ai_service_1 = require("../utils/ai-service");
|
|
9
|
+
const logger_1 = require("../utils/logger");
|
|
10
|
+
exports.designCommands = {
|
|
11
|
+
idea: async () => {
|
|
12
|
+
const spinner = (0, ora_1.default)('Brainstorming game concepts...').start();
|
|
13
|
+
try {
|
|
14
|
+
const response = await ai_service_1.AIService.chat('Generate 3 unique and creative game concepts. Include title, genre, and a 2-sentence hook for each.');
|
|
15
|
+
spinner.stop();
|
|
16
|
+
logger_1.logger.bold('\n--- Game Concepts ---');
|
|
17
|
+
console.log(response);
|
|
18
|
+
}
|
|
19
|
+
catch (err) {
|
|
20
|
+
spinner.stop();
|
|
21
|
+
logger_1.logger.error(err.message);
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
dialogue: async (context) => {
|
|
25
|
+
const spinner = (0, ora_1.default)('Writing NPC dialogue...').start();
|
|
26
|
+
const prompt = context
|
|
27
|
+
? `Generate NPC dialogue for the following context: ${context}`
|
|
28
|
+
: 'Generate a branching NPC dialogue for a mysterious shopkeeper who knows a secret about the player.';
|
|
29
|
+
try {
|
|
30
|
+
const response = await ai_service_1.AIService.chat(prompt);
|
|
31
|
+
spinner.stop();
|
|
32
|
+
logger_1.logger.bold('\n--- NPC Dialogue ---');
|
|
33
|
+
console.log(response);
|
|
34
|
+
}
|
|
35
|
+
catch (err) {
|
|
36
|
+
spinner.stop();
|
|
37
|
+
logger_1.logger.error(err.message);
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
quest: async () => {
|
|
41
|
+
const spinner = (0, ora_1.default)('Designing side quest...').start();
|
|
42
|
+
try {
|
|
43
|
+
const response = await ai_service_1.AIService.chat('Generate a detailed side quest including objectives, possible rewards, and a plot twist.');
|
|
44
|
+
spinner.stop();
|
|
45
|
+
logger_1.logger.bold('\n--- Quest Design ---');
|
|
46
|
+
console.log(response);
|
|
47
|
+
}
|
|
48
|
+
catch (err) {
|
|
49
|
+
spinner.stop();
|
|
50
|
+
logger_1.logger.error(err.message);
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
level: async (theme = 'dungeon') => {
|
|
54
|
+
const spinner = (0, ora_1.default)(`Generating ${theme} level layout...`).start();
|
|
55
|
+
try {
|
|
56
|
+
const response = await ai_service_1.AIService.chat(`Generate a text-based level layout for a ${theme} level including room descriptions, traps, and enemy placements.`);
|
|
57
|
+
spinner.stop();
|
|
58
|
+
logger_1.logger.bold(`\n--- ${theme.toUpperCase()} Level Layout ---`);
|
|
59
|
+
console.log(response);
|
|
60
|
+
}
|
|
61
|
+
catch (err) {
|
|
62
|
+
spinner.stop();
|
|
63
|
+
logger_1.logger.error(err.message);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
//# sourceMappingURL=design.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"design.js","sourceRoot":"","sources":["../../src/commands/design.ts"],"names":[],"mappings":";;;;;;AAAA,8CAAsB;AACtB,oDAAgD;AAChD,4CAAyC;AAE5B,QAAA,cAAc,GAAG;IAC5B,IAAI,EAAE,KAAK,IAAI,EAAE;QACf,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,gCAAgC,CAAC,CAAC,KAAK,EAAE,CAAC;QAC9D,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,sBAAS,CAAC,IAAI,CAAC,qGAAqG,CAAC,CAAC;YAC7I,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,eAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;YACvC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxB,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,eAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,QAAQ,EAAE,KAAK,EAAE,OAAgB,EAAE,EAAE;QACnC,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,yBAAyB,CAAC,CAAC,KAAK,EAAE,CAAC;QACvD,MAAM,MAAM,GAAG,OAAO;YACpB,CAAC,CAAC,oDAAoD,OAAO,EAAE;YAC/D,CAAC,CAAC,oGAAoG,CAAC;QACzG,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,sBAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC9C,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,eAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;YACtC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxB,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,eAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,KAAK,EAAE,KAAK,IAAI,EAAE;QAChB,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,yBAAyB,CAAC,CAAC,KAAK,EAAE,CAAC;QACvD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,sBAAS,CAAC,IAAI,CAAC,0FAA0F,CAAC,CAAC;YAClI,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,eAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;YACtC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxB,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,eAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,KAAK,EAAE,KAAK,EAAE,QAAgB,SAAS,EAAE,EAAE;QACzC,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,cAAc,KAAK,kBAAkB,CAAC,CAAC,KAAK,EAAE,CAAC;QACnE,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,sBAAS,CAAC,IAAI,CAAC,4CAA4C,KAAK,kEAAkE,CAAC,CAAC;YAC3J,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,eAAM,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC;YAC7D,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxB,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,eAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const initCommand: () => Promise<void>;
|
|
@@ -0,0 +1,31 @@
|
|
|
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.initCommand = void 0;
|
|
7
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
8
|
+
const logger_1 = require("../utils/logger");
|
|
9
|
+
const config_1 = require("../utils/config");
|
|
10
|
+
const initCommand = async () => {
|
|
11
|
+
logger_1.logger.bold('--- Initializing GameMindPilot Project ---');
|
|
12
|
+
const answers = await inquirer_1.default.prompt([
|
|
13
|
+
{
|
|
14
|
+
type: 'input',
|
|
15
|
+
name: 'projectName',
|
|
16
|
+
message: 'Enter your project name:',
|
|
17
|
+
default: 'MyAwesomeGame'
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
type: 'input',
|
|
21
|
+
name: 'author',
|
|
22
|
+
message: 'Author name:',
|
|
23
|
+
default: config_1.configManager.get().user || 'Player1'
|
|
24
|
+
}
|
|
25
|
+
]);
|
|
26
|
+
config_1.configManager.set({ user: answers.author });
|
|
27
|
+
logger_1.logger.success(`Project "${answers.projectName}" initialized for ${answers.author}!`);
|
|
28
|
+
logger_1.logger.info('Run "gmpilot --help" to see available features.');
|
|
29
|
+
};
|
|
30
|
+
exports.initCommand = initCommand;
|
|
31
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":";;;;;;AAAA,wDAAgC;AAChC,4CAAyC;AACzC,4CAAgD;AAEzC,MAAM,WAAW,GAAG,KAAK,IAAI,EAAE;IACpC,eAAM,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;IAE1D,MAAM,OAAO,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;QACpC;YACE,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,aAAa;YACnB,OAAO,EAAE,0BAA0B;YACnC,OAAO,EAAE,eAAe;SACzB;QACD;YACE,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,cAAc;YACvB,OAAO,EAAE,sBAAa,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,SAAS;SAC/C;KACF,CAAC,CAAC;IAEH,sBAAa,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5C,eAAM,CAAC,OAAO,CAAC,YAAY,OAAO,CAAC,WAAW,qBAAqB,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;IACtF,eAAM,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;AACjE,CAAC,CAAC;AArBW,QAAA,WAAW,eAqBtB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const loginCommand: () => Promise<void>;
|
|
@@ -0,0 +1,82 @@
|
|
|
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.loginCommand = void 0;
|
|
7
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
8
|
+
const ora_1 = __importDefault(require("ora"));
|
|
9
|
+
const ai_service_1 = require("../utils/ai-service");
|
|
10
|
+
const config_1 = require("../utils/config");
|
|
11
|
+
const logger_1 = require("../utils/logger");
|
|
12
|
+
const loginCommand = async () => {
|
|
13
|
+
logger_1.logger.bold('--- GameMindPilot Configuration ---');
|
|
14
|
+
const providerAns = await inquirer_1.default.prompt([
|
|
15
|
+
{
|
|
16
|
+
type: 'list',
|
|
17
|
+
name: 'provider',
|
|
18
|
+
message: 'Select your AI provider:',
|
|
19
|
+
pageSize: 10,
|
|
20
|
+
choices: [
|
|
21
|
+
{ name: 'Google Gemini', value: 'gemini' },
|
|
22
|
+
{ name: 'OpenAI', value: 'openai' },
|
|
23
|
+
{ name: 'Anthropic Claude', value: 'claude' },
|
|
24
|
+
{ name: 'Local Ollama', value: 'ollama' }
|
|
25
|
+
],
|
|
26
|
+
default: config_1.configManager.get().selectedModel || 'gemini'
|
|
27
|
+
}
|
|
28
|
+
]);
|
|
29
|
+
const provider = providerAns.provider;
|
|
30
|
+
const authAns = await inquirer_1.default.prompt([
|
|
31
|
+
{
|
|
32
|
+
type: 'input',
|
|
33
|
+
name: 'apiKey',
|
|
34
|
+
message: `Enter your ${provider} API Key:`,
|
|
35
|
+
when: provider !== 'ollama',
|
|
36
|
+
validate: (input) => input.length > 0 ? true : 'API Key cannot be empty.'
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
type: 'input',
|
|
40
|
+
name: 'ollamaUrl',
|
|
41
|
+
message: 'Enter Ollama Base URL:',
|
|
42
|
+
default: 'http://localhost:11434',
|
|
43
|
+
when: provider === 'ollama'
|
|
44
|
+
}
|
|
45
|
+
]);
|
|
46
|
+
const spinner = (0, ora_1.default)(`Fetching supported models for ${provider}...`).start();
|
|
47
|
+
let models = [];
|
|
48
|
+
try {
|
|
49
|
+
models = await ai_service_1.AIService.listModels(provider, authAns.apiKey, authAns.ollamaUrl);
|
|
50
|
+
spinner.succeed(`Fetched ${models.length} models.`);
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
spinner.fail(`Failed to fetch models: ${error.message}`);
|
|
54
|
+
logger_1.logger.warn('Using default fallback models.');
|
|
55
|
+
models = provider === 'gemini' ? ['gemini-1.5-pro', 'gemini-pro'] : ['gpt-4', 'gpt-3.5-turbo'];
|
|
56
|
+
}
|
|
57
|
+
const modelAns = await inquirer_1.default.prompt([
|
|
58
|
+
{
|
|
59
|
+
type: 'list',
|
|
60
|
+
name: 'modelName',
|
|
61
|
+
message: `Select a model:`,
|
|
62
|
+
choices: models,
|
|
63
|
+
default: config_1.configManager.get().modelName || models[0]
|
|
64
|
+
}
|
|
65
|
+
]);
|
|
66
|
+
const update = {
|
|
67
|
+
selectedModel: provider,
|
|
68
|
+
modelName: modelAns.modelName
|
|
69
|
+
};
|
|
70
|
+
if (provider === 'gemini')
|
|
71
|
+
update.geminiKey = authAns.apiKey;
|
|
72
|
+
if (provider === 'openai')
|
|
73
|
+
update.openaiKey = authAns.apiKey;
|
|
74
|
+
if (provider === 'claude')
|
|
75
|
+
update.claudeKey = authAns.apiKey;
|
|
76
|
+
if (provider === 'ollama')
|
|
77
|
+
update.ollamaUrl = authAns.ollamaUrl;
|
|
78
|
+
config_1.configManager.set(update);
|
|
79
|
+
logger_1.logger.success(`Successfully configured ${provider}! Selected model: ${modelAns.modelName}`);
|
|
80
|
+
};
|
|
81
|
+
exports.loginCommand = loginCommand;
|
|
82
|
+
//# sourceMappingURL=login.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}
|