matex-cli 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 +261 -0
- package/USAGE_GUIDE.md +180 -0
- package/bin/matex +2 -0
- package/dist/api/client.d.ts +34 -0
- package/dist/api/client.d.ts.map +1 -0
- package/dist/api/client.js +99 -0
- package/dist/api/client.js.map +1 -0
- package/dist/commands/ask.d.ts +3 -0
- package/dist/commands/ask.d.ts.map +1 -0
- package/dist/commands/ask.js +63 -0
- package/dist/commands/ask.js.map +1 -0
- package/dist/commands/chat.d.ts +3 -0
- package/dist/commands/chat.d.ts.map +1 -0
- package/dist/commands/chat.js +95 -0
- package/dist/commands/chat.js.map +1 -0
- package/dist/commands/config.d.ts +3 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +74 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/models.d.ts +3 -0
- package/dist/commands/models.d.ts.map +1 -0
- package/dist/commands/models.js +77 -0
- package/dist/commands/models.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +48 -0
- package/dist/index.js.map +1 -0
- package/dist/utils/config.d.ts +56 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +135 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/spinner.d.ts +12 -0
- package/dist/utils/spinner.d.ts.map +1 -0
- package/dist/utils/spinner.js +58 -0
- package/dist/utils/spinner.js.map +1 -0
- package/package.json +44 -0
- package/src/api/client.ts +116 -0
- package/src/commands/ask.ts +62 -0
- package/src/commands/chat.ts +101 -0
- package/src/commands/config.ts +78 -0
- package/src/commands/models.ts +81 -0
- package/src/index.ts +50 -0
- package/src/utils/config.ts +120 -0
- package/src/utils/spinner.ts +57 -0
- package/tsconfig.json +27 -0
|
@@ -0,0 +1,95 @@
|
|
|
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 commander_1 = require("commander");
|
|
8
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
9
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
10
|
+
const config_1 = require("../utils/config");
|
|
11
|
+
const client_1 = require("../api/client");
|
|
12
|
+
const spinner_1 = require("../utils/spinner");
|
|
13
|
+
exports.chatCommand = new commander_1.Command('chat')
|
|
14
|
+
.description('Start an interactive chat session with MATEX AI')
|
|
15
|
+
.option('-m, --model <model>', 'AI model to use (matexcodex, matexai, elite, matexspirit)', config_1.configManager.getDefaultModel())
|
|
16
|
+
.action(async (options) => {
|
|
17
|
+
try {
|
|
18
|
+
// Check for API key
|
|
19
|
+
const apiKey = config_1.configManager.getAPIKey();
|
|
20
|
+
if (!apiKey) {
|
|
21
|
+
console.error(chalk_1.default.red('ā No API key configured.'));
|
|
22
|
+
console.log(chalk_1.default.yellow('Run: matex config set-key <your-api-key>'));
|
|
23
|
+
process.exit(1);
|
|
24
|
+
}
|
|
25
|
+
// Create API client
|
|
26
|
+
const client = new client_1.MatexAPIClient(apiKey, config_1.configManager.getBaseURL());
|
|
27
|
+
// Welcome message
|
|
28
|
+
console.log(chalk_1.default.bold.cyan('\nš¤ MATEX AI Interactive Chat'));
|
|
29
|
+
console.log(chalk_1.default.gray(`Model: ${options.model}`));
|
|
30
|
+
console.log(chalk_1.default.gray('Type "exit" or "quit" to end the session\n'));
|
|
31
|
+
// Conversation history
|
|
32
|
+
const messages = [];
|
|
33
|
+
// Chat loop
|
|
34
|
+
while (true) {
|
|
35
|
+
// Get user input
|
|
36
|
+
const { userMessage } = await inquirer_1.default.prompt([
|
|
37
|
+
{
|
|
38
|
+
type: 'input',
|
|
39
|
+
name: 'userMessage',
|
|
40
|
+
message: chalk_1.default.green('You:'),
|
|
41
|
+
prefix: '',
|
|
42
|
+
},
|
|
43
|
+
]);
|
|
44
|
+
// Check for exit
|
|
45
|
+
if (userMessage.toLowerCase() === 'exit' || userMessage.toLowerCase() === 'quit') {
|
|
46
|
+
console.log(chalk_1.default.cyan('\nš Goodbye!\n'));
|
|
47
|
+
break;
|
|
48
|
+
}
|
|
49
|
+
// Skip empty messages
|
|
50
|
+
if (!userMessage.trim()) {
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
// Add user message to history
|
|
54
|
+
messages.push({ role: 'user', content: userMessage });
|
|
55
|
+
// Show thinking indicator
|
|
56
|
+
spinner_1.spinner.start('Thinking...');
|
|
57
|
+
try {
|
|
58
|
+
// Send request
|
|
59
|
+
const response = await client.chat({
|
|
60
|
+
messages: messages,
|
|
61
|
+
model: options.model,
|
|
62
|
+
temperature: 0.7,
|
|
63
|
+
max_tokens: 4000,
|
|
64
|
+
stream: false,
|
|
65
|
+
});
|
|
66
|
+
spinner_1.spinner.stop();
|
|
67
|
+
// Add assistant response to history
|
|
68
|
+
messages.push({ role: 'assistant', content: response });
|
|
69
|
+
// Display response
|
|
70
|
+
console.log(chalk_1.default.cyan('AI:'), chalk_1.default.white(response));
|
|
71
|
+
console.log();
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
spinner_1.spinner.fail('Request failed');
|
|
75
|
+
if (error.message.includes('403')) {
|
|
76
|
+
console.error(chalk_1.default.red('ā Invalid or revoked API key.'));
|
|
77
|
+
break;
|
|
78
|
+
}
|
|
79
|
+
else if (error.message.includes('429')) {
|
|
80
|
+
console.error(chalk_1.default.red('ā Rate limit exceeded. Please wait a moment.'));
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
console.error(chalk_1.default.red(`ā Error: ${error.message}`));
|
|
84
|
+
}
|
|
85
|
+
// Remove failed message from history
|
|
86
|
+
messages.pop();
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
catch (error) {
|
|
91
|
+
console.error(chalk_1.default.red(`\nā Chat session error: ${error.message}`));
|
|
92
|
+
process.exit(1);
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
//# sourceMappingURL=chat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat.js","sourceRoot":"","sources":["../../src/commands/chat.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,eAAO,MAAM,aAAa,SACwB,CAAC"}
|
|
@@ -0,0 +1,74 @@
|
|
|
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.configCommand = void 0;
|
|
7
|
+
const commander_1 = require("commander");
|
|
8
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
9
|
+
const config_1 = require("../utils/config");
|
|
10
|
+
exports.configCommand = new commander_1.Command('config')
|
|
11
|
+
.description('Manage MATEX CLI configuration');
|
|
12
|
+
// Set API key
|
|
13
|
+
exports.configCommand
|
|
14
|
+
.command('set-key <apiKey>')
|
|
15
|
+
.description('Set your MATEX AI API key')
|
|
16
|
+
.action((apiKey) => {
|
|
17
|
+
try {
|
|
18
|
+
// Validate API key format
|
|
19
|
+
if (!apiKey.startsWith('sk-matex-')) {
|
|
20
|
+
console.error(chalk_1.default.red('ā Invalid API key format. API keys should start with "sk-matex-"'));
|
|
21
|
+
process.exit(1);
|
|
22
|
+
}
|
|
23
|
+
config_1.configManager.setAPIKey(apiKey);
|
|
24
|
+
console.log(chalk_1.default.green('ā
API key saved successfully!'));
|
|
25
|
+
console.log(chalk_1.default.gray('Your API key is stored securely in ~/.matex/config.json'));
|
|
26
|
+
console.log(chalk_1.default.cyan('\nš” Try it out: matex ask "What is 2+2?"'));
|
|
27
|
+
}
|
|
28
|
+
catch (error) {
|
|
29
|
+
console.error(chalk_1.default.red(`ā Failed to save API key: ${error.message}`));
|
|
30
|
+
process.exit(1);
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
// Show configuration
|
|
34
|
+
exports.configCommand
|
|
35
|
+
.command('show')
|
|
36
|
+
.description('Show current configuration')
|
|
37
|
+
.action(() => {
|
|
38
|
+
const config = config_1.configManager.getAll();
|
|
39
|
+
console.log(chalk_1.default.bold.cyan('\nš MATEX CLI Configuration\n'));
|
|
40
|
+
if (config.apiKey) {
|
|
41
|
+
const maskedKey = config.apiKey.substring(0, 12) + '...' + config.apiKey.substring(config.apiKey.length - 4);
|
|
42
|
+
console.log(chalk_1.default.white('API Key: ') + chalk_1.default.gray(maskedKey));
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
console.log(chalk_1.default.white('API Key: ') + chalk_1.default.red('Not set'));
|
|
46
|
+
}
|
|
47
|
+
console.log(chalk_1.default.white('Default Model: ') + chalk_1.default.cyan(config.defaultModel || 'matexcodex'));
|
|
48
|
+
console.log(chalk_1.default.white('Base URL: ') + chalk_1.default.gray(config.baseURL || 'https://matexai-backend-550499663766.us-central1.run.app'));
|
|
49
|
+
if (!config.apiKey) {
|
|
50
|
+
console.log(chalk_1.default.yellow('\nā ļø No API key configured. Use "matex config set-key <your-api-key>" to get started.'));
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
// Clear configuration
|
|
54
|
+
exports.configCommand
|
|
55
|
+
.command('clear')
|
|
56
|
+
.description('Clear all configuration')
|
|
57
|
+
.action(() => {
|
|
58
|
+
config_1.configManager.clear();
|
|
59
|
+
console.log(chalk_1.default.green('ā
Configuration cleared successfully!'));
|
|
60
|
+
});
|
|
61
|
+
// Set default model
|
|
62
|
+
exports.configCommand
|
|
63
|
+
.command('set-model <model>')
|
|
64
|
+
.description('Set default AI model')
|
|
65
|
+
.action((model) => {
|
|
66
|
+
const validModels = ['matexcodex', 'matexai', 'elite', 'matexspirit'];
|
|
67
|
+
if (!validModels.includes(model.toLowerCase())) {
|
|
68
|
+
console.error(chalk_1.default.red(`ā Invalid model. Choose from: ${validModels.join(', ')}`));
|
|
69
|
+
process.exit(1);
|
|
70
|
+
}
|
|
71
|
+
config_1.configManager.setDefaultModel(model.toLowerCase());
|
|
72
|
+
console.log(chalk_1.default.green(`ā
Default model set to: ${model}`));
|
|
73
|
+
});
|
|
74
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/commands/models.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2BpC,eAAO,MAAM,aAAa,SACU,CAAC"}
|
|
@@ -0,0 +1,77 @@
|
|
|
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.modelsCommand = void 0;
|
|
7
|
+
const commander_1 = require("commander");
|
|
8
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
9
|
+
const config_1 = require("../utils/config");
|
|
10
|
+
const AVAILABLE_MODELS = [
|
|
11
|
+
{
|
|
12
|
+
name: 'matexcodex',
|
|
13
|
+
description: 'Best for coding, technical tasks, and development',
|
|
14
|
+
tier: 'Free (5 min/day), Starter (4M tokens/month), Pro Plus (unlimited)',
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
name: 'matexai',
|
|
18
|
+
description: 'General purpose AI for conversations and knowledge',
|
|
19
|
+
tier: 'Pro, Pro Plus',
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
name: 'elite',
|
|
23
|
+
description: 'Premium model with advanced capabilities',
|
|
24
|
+
tier: 'Elite Plan',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
name: 'matexspirit',
|
|
28
|
+
description: 'Specialized model for creative and empathetic responses',
|
|
29
|
+
tier: 'Pro, Pro Plus',
|
|
30
|
+
},
|
|
31
|
+
];
|
|
32
|
+
exports.modelsCommand = new commander_1.Command('models')
|
|
33
|
+
.description('Manage AI models');
|
|
34
|
+
// List available models
|
|
35
|
+
exports.modelsCommand
|
|
36
|
+
.command('list')
|
|
37
|
+
.description('List all available AI models')
|
|
38
|
+
.action(() => {
|
|
39
|
+
console.log(chalk_1.default.bold.cyan('\nš¤ Available MATEX AI Models\n'));
|
|
40
|
+
AVAILABLE_MODELS.forEach((model) => {
|
|
41
|
+
console.log(chalk_1.default.bold.white(`${model.name}`));
|
|
42
|
+
console.log(chalk_1.default.gray(` ${model.description}`));
|
|
43
|
+
console.log(chalk_1.default.yellow(` Access: ${model.tier}`));
|
|
44
|
+
console.log();
|
|
45
|
+
});
|
|
46
|
+
const currentModel = config_1.configManager.getDefaultModel();
|
|
47
|
+
console.log(chalk_1.default.cyan(`Current default: ${currentModel}`));
|
|
48
|
+
});
|
|
49
|
+
// Set default model
|
|
50
|
+
exports.modelsCommand
|
|
51
|
+
.command('set <model>')
|
|
52
|
+
.description('Set default AI model')
|
|
53
|
+
.action((model) => {
|
|
54
|
+
const validModels = AVAILABLE_MODELS.map(m => m.name);
|
|
55
|
+
if (!validModels.includes(model.toLowerCase())) {
|
|
56
|
+
console.error(chalk_1.default.red(`ā Invalid model. Choose from: ${validModels.join(', ')}`));
|
|
57
|
+
process.exit(1);
|
|
58
|
+
}
|
|
59
|
+
config_1.configManager.setDefaultModel(model.toLowerCase());
|
|
60
|
+
console.log(chalk_1.default.green(`ā
Default model set to: ${model}`));
|
|
61
|
+
});
|
|
62
|
+
// Show current model
|
|
63
|
+
exports.modelsCommand
|
|
64
|
+
.command('current')
|
|
65
|
+
.description('Show current default model')
|
|
66
|
+
.action(() => {
|
|
67
|
+
const currentModel = config_1.configManager.getDefaultModel();
|
|
68
|
+
const modelInfo = AVAILABLE_MODELS.find(m => m.name === currentModel);
|
|
69
|
+
console.log(chalk_1.default.bold.cyan('\nš Current Default Model\n'));
|
|
70
|
+
console.log(chalk_1.default.bold.white(currentModel));
|
|
71
|
+
if (modelInfo) {
|
|
72
|
+
console.log(chalk_1.default.gray(modelInfo.description));
|
|
73
|
+
console.log(chalk_1.default.yellow(`Access: ${modelInfo.tier}`));
|
|
74
|
+
}
|
|
75
|
+
console.log();
|
|
76
|
+
});
|
|
77
|
+
//# sourceMappingURL=models.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/commands/models.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
|
+
};
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
const commander_1 = require("commander");
|
|
8
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
9
|
+
const config_1 = require("./commands/config");
|
|
10
|
+
const ask_1 = require("./commands/ask");
|
|
11
|
+
const chat_1 = require("./commands/chat");
|
|
12
|
+
const models_1 = require("./commands/models");
|
|
13
|
+
const program = new commander_1.Command();
|
|
14
|
+
program
|
|
15
|
+
.name('matex')
|
|
16
|
+
.description('Official CLI tool for MATEX AI - Access powerful AI models from your terminal')
|
|
17
|
+
.version('1.0.0');
|
|
18
|
+
// ASCII Art Banner
|
|
19
|
+
const banner = `
|
|
20
|
+
${chalk_1.default.cyan('āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā')}
|
|
21
|
+
${chalk_1.default.cyan('ā')} ${chalk_1.default.bold.white('MATEX AI')} ${chalk_1.default.gray('- Terminal Edition')} ${chalk_1.default.cyan('ā')}
|
|
22
|
+
${chalk_1.default.cyan('āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā')}
|
|
23
|
+
`;
|
|
24
|
+
// Show banner on help
|
|
25
|
+
program.on('--help', () => {
|
|
26
|
+
console.log(banner);
|
|
27
|
+
console.log(chalk_1.default.gray('\nExamples:'));
|
|
28
|
+
console.log(chalk_1.default.white(' $ matex config set-key sk-matex-xxxxx'));
|
|
29
|
+
console.log(chalk_1.default.white(' $ matex ask "What is 2+2?"'));
|
|
30
|
+
console.log(chalk_1.default.white(' $ matex chat'));
|
|
31
|
+
console.log(chalk_1.default.white(' $ matex models list'));
|
|
32
|
+
console.log();
|
|
33
|
+
console.log(chalk_1.default.gray('Get your API key from: ') + chalk_1.default.cyan('https://matexai.space/platform'));
|
|
34
|
+
console.log();
|
|
35
|
+
});
|
|
36
|
+
// Add commands
|
|
37
|
+
program.addCommand(config_1.configCommand);
|
|
38
|
+
program.addCommand(ask_1.askCommand);
|
|
39
|
+
program.addCommand(chat_1.chatCommand);
|
|
40
|
+
program.addCommand(models_1.modelsCommand);
|
|
41
|
+
// Parse arguments
|
|
42
|
+
program.parse(process.argv);
|
|
43
|
+
// Show help if no command provided
|
|
44
|
+
if (!process.argv.slice(2).length) {
|
|
45
|
+
console.log(banner);
|
|
46
|
+
program.outputHelp();
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AAEA,yCAAoC;AACpC,kDAA0B;AAC1B,8CAAkD;AAClD,wCAA4C;AAC5C,0CAA8C;AAC9C,8CAAkD;AAElD,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACF,IAAI,CAAC,OAAO,CAAC;KACb,WAAW,CAAC,+EAA+E,CAAC;KAC5F,OAAO,CAAC,OAAO,CAAC,CAAC;AAEtB,mBAAmB;AACnB,MAAM,MAAM,GAAG;EACb,eAAK,CAAC,IAAI,CAAC,2CAA2C,CAAC;EACvD,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,eAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,OAAO,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC;EAC7G,eAAK,CAAC,IAAI,CAAC,2CAA2C,CAAC;CACxD,CAAC;AAEF,sBAAsB;AACtB,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;IACtB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACpB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;IACvC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC,CAAC;IACpE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC,CAAC;IACzD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC,CAAC;IAClG,OAAO,CAAC,GAAG,EAAE,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,eAAe;AACf,OAAO,CAAC,UAAU,CAAC,sBAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,gBAAU,CAAC,CAAC;AAC/B,OAAO,CAAC,UAAU,CAAC,kBAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,sBAAa,CAAC,CAAC;AAElC,kBAAkB;AAClB,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAE5B,mCAAmC;AACnC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAChC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACpB,OAAO,CAAC,UAAU,EAAE,CAAC;AACzB,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
export interface Config {
|
|
2
|
+
apiKey?: string;
|
|
3
|
+
defaultModel?: string;
|
|
4
|
+
baseURL?: string;
|
|
5
|
+
}
|
|
6
|
+
export declare class ConfigManager {
|
|
7
|
+
private configDir;
|
|
8
|
+
private configPath;
|
|
9
|
+
constructor();
|
|
10
|
+
/**
|
|
11
|
+
* Load config from file
|
|
12
|
+
*/
|
|
13
|
+
private loadConfig;
|
|
14
|
+
/**
|
|
15
|
+
* Save config to file
|
|
16
|
+
*/
|
|
17
|
+
private saveConfig;
|
|
18
|
+
/**
|
|
19
|
+
* Set API key
|
|
20
|
+
*/
|
|
21
|
+
setAPIKey(apiKey: string): void;
|
|
22
|
+
/**
|
|
23
|
+
* Get API key
|
|
24
|
+
*/
|
|
25
|
+
getAPIKey(): string | undefined;
|
|
26
|
+
/**
|
|
27
|
+
* Set default model
|
|
28
|
+
*/
|
|
29
|
+
setDefaultModel(model: string): void;
|
|
30
|
+
/**
|
|
31
|
+
* Get default model
|
|
32
|
+
*/
|
|
33
|
+
getDefaultModel(): string;
|
|
34
|
+
/**
|
|
35
|
+
* Set base URL
|
|
36
|
+
*/
|
|
37
|
+
setBaseURL(url: string): void;
|
|
38
|
+
/**
|
|
39
|
+
* Get base URL
|
|
40
|
+
*/
|
|
41
|
+
getBaseURL(): string;
|
|
42
|
+
/**
|
|
43
|
+
* Get all config
|
|
44
|
+
*/
|
|
45
|
+
getAll(): Config;
|
|
46
|
+
/**
|
|
47
|
+
* Clear all config
|
|
48
|
+
*/
|
|
49
|
+
clear(): void;
|
|
50
|
+
/**
|
|
51
|
+
* Check if API key is set
|
|
52
|
+
*/
|
|
53
|
+
hasAPIKey(): boolean;
|
|
54
|
+
}
|
|
55
|
+
export declare const configManager: ConfigManager;
|
|
56
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,MAAM;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,aAAa;IACtB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAS;;IAY3B;;OAEG;IACH,OAAO,CAAC,UAAU;IAalB;;OAEG;IACH,OAAO,CAAC,UAAU;IAIlB;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAM/B;;OAEG;IACH,SAAS,IAAI,MAAM,GAAG,SAAS;IAI/B;;OAEG;IACH,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAMpC;;OAEG;IACH,eAAe,IAAI,MAAM;IAIzB;;OAEG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAM7B;;OAEG;IACH,UAAU,IAAI,MAAM;IAIpB;;OAEG;IACH,MAAM,IAAI,MAAM;IAIhB;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb;;OAEG;IACH,SAAS,IAAI,OAAO;CAGvB;AAED,eAAO,MAAM,aAAa,eAAsB,CAAC"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.configManager = exports.ConfigManager = void 0;
|
|
37
|
+
const fs = __importStar(require("fs"));
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
const os = __importStar(require("os"));
|
|
40
|
+
class ConfigManager {
|
|
41
|
+
constructor() {
|
|
42
|
+
this.configDir = path.join(os.homedir(), '.matex');
|
|
43
|
+
this.configPath = path.join(this.configDir, 'config.json');
|
|
44
|
+
// Ensure config directory exists
|
|
45
|
+
if (!fs.existsSync(this.configDir)) {
|
|
46
|
+
fs.mkdirSync(this.configDir, { recursive: true });
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Load config from file
|
|
51
|
+
*/
|
|
52
|
+
loadConfig() {
|
|
53
|
+
if (!fs.existsSync(this.configPath)) {
|
|
54
|
+
return {};
|
|
55
|
+
}
|
|
56
|
+
try {
|
|
57
|
+
const data = fs.readFileSync(this.configPath, 'utf-8');
|
|
58
|
+
return JSON.parse(data);
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
return {};
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Save config to file
|
|
66
|
+
*/
|
|
67
|
+
saveConfig(config) {
|
|
68
|
+
fs.writeFileSync(this.configPath, JSON.stringify(config, null, 2), 'utf-8');
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Set API key
|
|
72
|
+
*/
|
|
73
|
+
setAPIKey(apiKey) {
|
|
74
|
+
const config = this.loadConfig();
|
|
75
|
+
config.apiKey = apiKey;
|
|
76
|
+
this.saveConfig(config);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Get API key
|
|
80
|
+
*/
|
|
81
|
+
getAPIKey() {
|
|
82
|
+
return this.loadConfig().apiKey;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Set default model
|
|
86
|
+
*/
|
|
87
|
+
setDefaultModel(model) {
|
|
88
|
+
const config = this.loadConfig();
|
|
89
|
+
config.defaultModel = model;
|
|
90
|
+
this.saveConfig(config);
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Get default model
|
|
94
|
+
*/
|
|
95
|
+
getDefaultModel() {
|
|
96
|
+
return this.loadConfig().defaultModel || 'matexcodex';
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Set base URL
|
|
100
|
+
*/
|
|
101
|
+
setBaseURL(url) {
|
|
102
|
+
const config = this.loadConfig();
|
|
103
|
+
config.baseURL = url;
|
|
104
|
+
this.saveConfig(config);
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Get base URL
|
|
108
|
+
*/
|
|
109
|
+
getBaseURL() {
|
|
110
|
+
return this.loadConfig().baseURL || 'https://matexai-backend-550499663766.us-central1.run.app';
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Get all config
|
|
114
|
+
*/
|
|
115
|
+
getAll() {
|
|
116
|
+
return this.loadConfig();
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Clear all config
|
|
120
|
+
*/
|
|
121
|
+
clear() {
|
|
122
|
+
if (fs.existsSync(this.configPath)) {
|
|
123
|
+
fs.unlinkSync(this.configPath);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Check if API key is set
|
|
128
|
+
*/
|
|
129
|
+
hasAPIKey() {
|
|
130
|
+
return !!this.getAPIKey();
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
exports.ConfigManager = ConfigManager;
|
|
134
|
+
exports.configManager = new ConfigManager();
|
|
135
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare class Spinner {
|
|
2
|
+
private spinner;
|
|
3
|
+
start(text: string): void;
|
|
4
|
+
succeed(text?: string): void;
|
|
5
|
+
fail(text?: string): void;
|
|
6
|
+
warn(text?: string): void;
|
|
7
|
+
info(text?: string): void;
|
|
8
|
+
stop(): void;
|
|
9
|
+
updateText(text: string): void;
|
|
10
|
+
}
|
|
11
|
+
export declare const spinner: Spinner;
|
|
12
|
+
//# sourceMappingURL=spinner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spinner.d.ts","sourceRoot":"","sources":["../../src/utils/spinner.ts"],"names":[],"mappings":"AAGA,qBAAa,OAAO;IAChB,OAAO,CAAC,OAAO,CAAoB;IAEnC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAQzB,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAO5B,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAOzB,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAOzB,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAOzB,IAAI,IAAI,IAAI;IAOZ,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;CAKjC;AAED,eAAO,MAAM,OAAO,SAAgB,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
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.spinner = exports.Spinner = void 0;
|
|
7
|
+
const ora_1 = __importDefault(require("ora"));
|
|
8
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
9
|
+
class Spinner {
|
|
10
|
+
constructor() {
|
|
11
|
+
this.spinner = null;
|
|
12
|
+
}
|
|
13
|
+
start(text) {
|
|
14
|
+
this.spinner = (0, ora_1.default)({
|
|
15
|
+
text: chalk_1.default.cyan(text),
|
|
16
|
+
color: 'cyan',
|
|
17
|
+
spinner: 'dots',
|
|
18
|
+
}).start();
|
|
19
|
+
}
|
|
20
|
+
succeed(text) {
|
|
21
|
+
if (this.spinner) {
|
|
22
|
+
this.spinner.succeed(text ? chalk_1.default.green(text) : undefined);
|
|
23
|
+
this.spinner = null;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
fail(text) {
|
|
27
|
+
if (this.spinner) {
|
|
28
|
+
this.spinner.fail(text ? chalk_1.default.red(text) : undefined);
|
|
29
|
+
this.spinner = null;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
warn(text) {
|
|
33
|
+
if (this.spinner) {
|
|
34
|
+
this.spinner.warn(text ? chalk_1.default.yellow(text) : undefined);
|
|
35
|
+
this.spinner = null;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
info(text) {
|
|
39
|
+
if (this.spinner) {
|
|
40
|
+
this.spinner.info(text ? chalk_1.default.blue(text) : undefined);
|
|
41
|
+
this.spinner = null;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
stop() {
|
|
45
|
+
if (this.spinner) {
|
|
46
|
+
this.spinner.stop();
|
|
47
|
+
this.spinner = null;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
updateText(text) {
|
|
51
|
+
if (this.spinner) {
|
|
52
|
+
this.spinner.text = chalk_1.default.cyan(text);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
exports.Spinner = Spinner;
|
|
57
|
+
exports.spinner = new Spinner();
|
|
58
|
+
//# sourceMappingURL=spinner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spinner.js","sourceRoot":"","sources":["../../src/utils/spinner.ts"],"names":[],"mappings":";;;;;;AAAA,8CAA+B;AAC/B,kDAA0B;AAE1B,MAAa,OAAO;IAApB;QACY,YAAO,GAAe,IAAI,CAAC;IAkDvC,CAAC;IAhDG,KAAK,CAAC,IAAY;QACd,IAAI,CAAC,OAAO,GAAG,IAAA,aAAG,EAAC;YACf,IAAI,EAAE,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC;YACtB,KAAK,EAAE,MAAM;YACb,OAAO,EAAE,MAAM;SAClB,CAAC,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAED,OAAO,CAAC,IAAa;QACjB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,eAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YAC3D,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACxB,CAAC;IACL,CAAC;IAED,IAAI,CAAC,IAAa;QACd,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,eAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YACtD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACxB,CAAC;IACL,CAAC;IAED,IAAI,CAAC,IAAa;QACd,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YACzD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACxB,CAAC;IACL,CAAC;IAED,IAAI,CAAC,IAAa;QACd,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YACvD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACxB,CAAC;IACL,CAAC;IAED,IAAI;QACA,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACpB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACxB,CAAC;IACL,CAAC;IAED,UAAU,CAAC,IAAY;QACnB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzC,CAAC;IACL,CAAC;CACJ;AAnDD,0BAmDC;AAEY,QAAA,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC"}
|