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.
Files changed (45) hide show
  1. package/README.md +261 -0
  2. package/USAGE_GUIDE.md +180 -0
  3. package/bin/matex +2 -0
  4. package/dist/api/client.d.ts +34 -0
  5. package/dist/api/client.d.ts.map +1 -0
  6. package/dist/api/client.js +99 -0
  7. package/dist/api/client.js.map +1 -0
  8. package/dist/commands/ask.d.ts +3 -0
  9. package/dist/commands/ask.d.ts.map +1 -0
  10. package/dist/commands/ask.js +63 -0
  11. package/dist/commands/ask.js.map +1 -0
  12. package/dist/commands/chat.d.ts +3 -0
  13. package/dist/commands/chat.d.ts.map +1 -0
  14. package/dist/commands/chat.js +95 -0
  15. package/dist/commands/chat.js.map +1 -0
  16. package/dist/commands/config.d.ts +3 -0
  17. package/dist/commands/config.d.ts.map +1 -0
  18. package/dist/commands/config.js +74 -0
  19. package/dist/commands/config.js.map +1 -0
  20. package/dist/commands/models.d.ts +3 -0
  21. package/dist/commands/models.d.ts.map +1 -0
  22. package/dist/commands/models.js +77 -0
  23. package/dist/commands/models.js.map +1 -0
  24. package/dist/index.d.ts +3 -0
  25. package/dist/index.d.ts.map +1 -0
  26. package/dist/index.js +48 -0
  27. package/dist/index.js.map +1 -0
  28. package/dist/utils/config.d.ts +56 -0
  29. package/dist/utils/config.d.ts.map +1 -0
  30. package/dist/utils/config.js +135 -0
  31. package/dist/utils/config.js.map +1 -0
  32. package/dist/utils/spinner.d.ts +12 -0
  33. package/dist/utils/spinner.d.ts.map +1 -0
  34. package/dist/utils/spinner.js +58 -0
  35. package/dist/utils/spinner.js.map +1 -0
  36. package/package.json +44 -0
  37. package/src/api/client.ts +116 -0
  38. package/src/commands/ask.ts +62 -0
  39. package/src/commands/chat.ts +101 -0
  40. package/src/commands/config.ts +78 -0
  41. package/src/commands/models.ts +81 -0
  42. package/src/index.ts +50 -0
  43. package/src/utils/config.ts +120 -0
  44. package/src/utils/spinner.ts +57 -0
  45. 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,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const configCommand: Command;
3
+ //# sourceMappingURL=config.d.ts.map
@@ -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,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const modelsCommand: Command;
3
+ //# sourceMappingURL=models.d.ts.map
@@ -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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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
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"}