@yakumoryo/minimax-plan-usage 0.2.0 → 0.2.3
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/package.json +5 -7
- package/query.js +76 -22
- package/setup.js +0 -102
package/package.json
CHANGED
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yakumoryo/minimax-plan-usage",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.3",
|
|
4
4
|
"description": "MiniMax Coding Plan setup helper and usage query tool",
|
|
5
5
|
"type": "module",
|
|
6
|
-
"keywords": [
|
|
6
|
+
"keywords": [
|
|
7
|
+
"minimax",
|
|
8
|
+
"claude-code"
|
|
9
|
+
],
|
|
7
10
|
"files": [
|
|
8
11
|
"commands",
|
|
9
12
|
"agents",
|
|
10
13
|
"skills",
|
|
11
14
|
".claude-plugin",
|
|
12
|
-
"setup.js",
|
|
13
15
|
"query.js"
|
|
14
16
|
],
|
|
15
17
|
"engines": {
|
|
@@ -17,9 +19,5 @@
|
|
|
17
19
|
},
|
|
18
20
|
"bin": {
|
|
19
21
|
"minimax-plan-usage": "./query.js"
|
|
20
|
-
},
|
|
21
|
-
"scripts": {
|
|
22
|
-
"setup": "node setup.js",
|
|
23
|
-
"query": "node query.js"
|
|
24
22
|
}
|
|
25
23
|
}
|
package/query.js
CHANGED
|
@@ -1,16 +1,77 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* MiniMax Coding Plan
|
|
5
|
-
*
|
|
4
|
+
* MiniMax Coding Plan Helper
|
|
5
|
+
* CLI tool for setting up and querying MiniMax Coding Plan usage
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
+
import { readFileSync, writeFileSync } from 'fs';
|
|
9
|
+
import { homedir } from 'os';
|
|
10
|
+
import { join } from 'path';
|
|
8
11
|
import https from 'https';
|
|
9
|
-
import { spawn } from 'child_process';
|
|
10
12
|
|
|
11
13
|
const API_HOST = 'https://api.minimaxi.com';
|
|
14
|
+
const SETTINGS_PATH = join(homedir(), '.claude', 'settings.json');
|
|
12
15
|
|
|
13
|
-
|
|
16
|
+
// ============ Setup Functions ============
|
|
17
|
+
|
|
18
|
+
function getSettings() {
|
|
19
|
+
try {
|
|
20
|
+
return JSON.parse(readFileSync(SETTINGS_PATH, 'utf-8'));
|
|
21
|
+
} catch {
|
|
22
|
+
return { env: {}, permissions: { allow: [], deny: [] }, enabledPlugins: {} };
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
function saveSettings(settings) {
|
|
27
|
+
writeFileSync(SETTINGS_PATH, JSON.stringify(settings, null, 2));
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
function setup(token) {
|
|
31
|
+
if (!token || !token.startsWith('sk-cp-')) {
|
|
32
|
+
console.error('Error: Invalid token format. Token should start with "sk-cp-"');
|
|
33
|
+
console.error('');
|
|
34
|
+
console.error('Usage: npx @yakumoryo/minimax-plan-usage setup <your-token>');
|
|
35
|
+
console.error('');
|
|
36
|
+
console.error('Example:');
|
|
37
|
+
console.error(' npx @yakumoryo/minimax-plan-usage setup sk-cp-YOUR_TOKEN_HERE');
|
|
38
|
+
process.exit(1);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
const settings = getSettings();
|
|
42
|
+
|
|
43
|
+
if (!settings.env) settings.env = {};
|
|
44
|
+
|
|
45
|
+
settings.env.ANTHROPIC_AUTH_TOKEN = token;
|
|
46
|
+
settings.env.ANTHROPIC_BASE_URL = `${API_HOST}/anthropic`;
|
|
47
|
+
|
|
48
|
+
if (!settings.env.ANTHROPIC_MODEL) settings.env.ANTHROPIC_MODEL = 'MiniMax-M2.7';
|
|
49
|
+
if (!settings.env.ANTHROPIC_DEFAULT_HAIKU_MODEL) settings.env.ANTHROPIC_DEFAULT_HAIKU_MODEL = 'MiniMax-M2.7';
|
|
50
|
+
if (!settings.env.ANTHROPIC_DEFAULT_SONNET_MODEL) settings.env.ANTHROPIC_DEFAULT_SONNET_MODEL = 'MiniMax-M2.7';
|
|
51
|
+
if (!settings.env.ANTHROPIC_DEFAULT_OPUS_MODEL) settings.env.ANTHROPIC_DEFAULT_OPUS_MODEL = 'MiniMax-M2.7';
|
|
52
|
+
|
|
53
|
+
if (!settings.permissions) {
|
|
54
|
+
settings.permissions = { allow: ['Bash(*)', 'Read(*)', 'Write(*)', 'Edit(*)'], deny: [] };
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
if (!settings.enabledPlugins) settings.enabledPlugins = {};
|
|
58
|
+
|
|
59
|
+
saveSettings(settings);
|
|
60
|
+
|
|
61
|
+
console.log('');
|
|
62
|
+
console.log('✅ MiniMax Coding Plan configured successfully!');
|
|
63
|
+
console.log('');
|
|
64
|
+
console.log('Settings updated:');
|
|
65
|
+
console.log(` ANTHROPIC_AUTH_TOKEN: ${token.slice(0, 20)}...`);
|
|
66
|
+
console.log(` ANTHROPIC_BASE_URL: ${API_HOST}/anthropic`);
|
|
67
|
+
console.log('');
|
|
68
|
+
console.log('Restart Claude Code to apply changes, then run:');
|
|
69
|
+
console.log(' npx @yakumoryo/minimax-plan-usage query');
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// ============ Query Functions ============
|
|
73
|
+
|
|
74
|
+
function queryUsage() {
|
|
14
75
|
return new Promise((resolve, reject) => {
|
|
15
76
|
const apiUrl = `${API_HOST}/v1/api/openplatform/coding_plan/remains`;
|
|
16
77
|
const authToken = process.env.ANTHROPIC_AUTH_TOKEN;
|
|
@@ -34,9 +95,7 @@ const queryUsage = () => {
|
|
|
34
95
|
const req = https.request(options, (res) => {
|
|
35
96
|
let data = '';
|
|
36
97
|
|
|
37
|
-
res.on('data', (chunk) => {
|
|
38
|
-
data += chunk;
|
|
39
|
-
});
|
|
98
|
+
res.on('data', (chunk) => { data += chunk; });
|
|
40
99
|
|
|
41
100
|
res.on('end', () => {
|
|
42
101
|
if (res.statusCode !== 200) {
|
|
@@ -64,12 +123,7 @@ const queryUsage = () => {
|
|
|
64
123
|
const minutes = Math.floor((remainingMs % (1000 * 60 * 60)) / (1000 * 60));
|
|
65
124
|
|
|
66
125
|
const resetTime = new Date(m.end_time).toLocaleString('zh-CN', {
|
|
67
|
-
timeZone: 'Asia/Shanghai',
|
|
68
|
-
year: 'numeric',
|
|
69
|
-
month: '2-digit',
|
|
70
|
-
day: '2-digit',
|
|
71
|
-
hour: '2-digit',
|
|
72
|
-
minute: '2-digit',
|
|
126
|
+
timeZone: 'Asia/Shanghai', year: 'numeric', month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit',
|
|
73
127
|
});
|
|
74
128
|
|
|
75
129
|
const weeklyRemaining = m.current_weekly_usage_count;
|
|
@@ -81,12 +135,7 @@ const queryUsage = () => {
|
|
|
81
135
|
const weeklyHours = Math.floor((weeklyRemainingMs % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
|
|
82
136
|
|
|
83
137
|
const weeklyResetTime = new Date(m.weekly_end_time).toLocaleString('zh-CN', {
|
|
84
|
-
timeZone: 'Asia/Shanghai',
|
|
85
|
-
year: 'numeric',
|
|
86
|
-
month: '2-digit',
|
|
87
|
-
day: '2-digit',
|
|
88
|
-
hour: '2-digit',
|
|
89
|
-
minute: '2-digit',
|
|
138
|
+
timeZone: 'Asia/Shanghai', year: 'numeric', month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit',
|
|
90
139
|
});
|
|
91
140
|
|
|
92
141
|
const bar = '█'.repeat(Math.floor(percentage / 10)) + '░'.repeat(10 - Math.floor(percentage / 10));
|
|
@@ -125,11 +174,16 @@ const queryUsage = () => {
|
|
|
125
174
|
|
|
126
175
|
req.end();
|
|
127
176
|
});
|
|
128
|
-
}
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
// ============ CLI Routing ============
|
|
129
180
|
|
|
130
181
|
const command = process.argv[2];
|
|
131
182
|
|
|
132
|
-
if (command === '
|
|
183
|
+
if (command === 'setup') {
|
|
184
|
+
const token = process.argv[3];
|
|
185
|
+
setup(token);
|
|
186
|
+
} else if (command === 'query') {
|
|
133
187
|
console.log('MiniMax API Host:', API_HOST);
|
|
134
188
|
queryUsage()
|
|
135
189
|
.then(() => process.exit(0))
|
|
@@ -145,6 +199,6 @@ if (command === 'query') {
|
|
|
145
199
|
console.log(' npx @yakumoryo/minimax-plan-usage query # 查询用量');
|
|
146
200
|
console.log('');
|
|
147
201
|
console.log('Examples:');
|
|
148
|
-
console.log(' npx @yakumoryo/minimax-plan-usage setup sk-cp-
|
|
202
|
+
console.log(' npx @yakumoryo/minimax-plan-usage setup sk-cp-YOUR_TOKEN_HERE');
|
|
149
203
|
console.log(' npx @yakumoryo/minimax-plan-usage query');
|
|
150
204
|
}
|
package/setup.js
DELETED
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* MiniMax Coding Plan Setup Helper
|
|
5
|
-
* Configures Claude Code to use MiniMax API
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import { readFileSync, writeFileSync } from 'fs';
|
|
9
|
-
import { homedir } from 'os';
|
|
10
|
-
import { join } from 'path';
|
|
11
|
-
|
|
12
|
-
const SETTINGS_PATH = join(homedir(), '.claude', 'settings.json');
|
|
13
|
-
|
|
14
|
-
const API_URL = 'https://api.minimaxi.com';
|
|
15
|
-
|
|
16
|
-
function getSettings() {
|
|
17
|
-
try {
|
|
18
|
-
return JSON.parse(readFileSync(SETTINGS_PATH, 'utf-8'));
|
|
19
|
-
} catch {
|
|
20
|
-
return { env: {}, permissions: { allow: [], deny: [] }, enabledPlugins: {} };
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
function saveSettings(settings) {
|
|
25
|
-
writeFileSync(SETTINGS_PATH, JSON.stringify(settings, null, 2));
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
function setup(token) {
|
|
29
|
-
if (!token || !token.startsWith('sk-cp-')) {
|
|
30
|
-
console.error('Error: Invalid token format. Token should start with "sk-cp-"');
|
|
31
|
-
console.error('');
|
|
32
|
-
console.error('Usage: npx @yakumoryo/minimax-plan-usage setup <your-token>');
|
|
33
|
-
console.error('');
|
|
34
|
-
console.error('Example:');
|
|
35
|
-
console.error(' npx @yakumoryo/minimax-plan-usage setup sk-cp-jErbHQzWz1agLaJeOrtPxZJp93PjkVpc-x0930-FUjFnVWxCW98YlYM8');
|
|
36
|
-
process.exit(1);
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
const settings = getSettings();
|
|
40
|
-
|
|
41
|
-
// Ensure env object exists
|
|
42
|
-
if (!settings.env) {
|
|
43
|
-
settings.env = {};
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
// Set MiniMax environment variables
|
|
47
|
-
settings.env.ANTHROPIC_AUTH_TOKEN = token;
|
|
48
|
-
settings.env.ANTHROPIC_BASE_URL = `${API_URL}/anthropic`;
|
|
49
|
-
|
|
50
|
-
// Add default model settings if not present
|
|
51
|
-
if (!settings.env.ANTHROPIC_MODEL) {
|
|
52
|
-
settings.env.ANTHROPIC_MODEL = 'MiniMax-M2.7';
|
|
53
|
-
}
|
|
54
|
-
if (!settings.env.ANTHROPIC_DEFAULT_HAIKU_MODEL) {
|
|
55
|
-
settings.env.ANTHROPIC_DEFAULT_HAIKU_MODEL = 'MiniMax-M2.7';
|
|
56
|
-
}
|
|
57
|
-
if (!settings.env.ANTHROPIC_DEFAULT_SONNET_MODEL) {
|
|
58
|
-
settings.env.ANTHROPIC_DEFAULT_SONNET_MODEL = 'MiniMax-M2.7';
|
|
59
|
-
}
|
|
60
|
-
if (!settings.env.ANTHROPIC_DEFAULT_OPUS_MODEL) {
|
|
61
|
-
settings.env.ANTHROPIC_DEFAULT_OPUS_MODEL = 'MiniMax-M2.7';
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
// Ensure permissions exist
|
|
65
|
-
if (!settings.permissions) {
|
|
66
|
-
settings.permissions = { allow: ['Bash(*)', 'Read(*)', 'Write(*)', 'Edit(*)'], deny: [] };
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
// Add plugin if not present
|
|
70
|
-
if (!settings.enabledPlugins) {
|
|
71
|
-
settings.enabledPlugins = {};
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
saveSettings(settings);
|
|
75
|
-
|
|
76
|
-
console.log('');
|
|
77
|
-
console.log('✅ MiniMax Coding Plan configured successfully!');
|
|
78
|
-
console.log('');
|
|
79
|
-
console.log('Settings updated:');
|
|
80
|
-
console.log(` ANTHROPIC_AUTH_TOKEN: ${token.slice(0, 20)}...`);
|
|
81
|
-
console.log(` ANTHROPIC_BASE_URL: ${API_URL}/anthropic`);
|
|
82
|
-
console.log('');
|
|
83
|
-
console.log('Restart Claude Code to apply changes, then run:');
|
|
84
|
-
console.log(' /minimax-plan-usage:usage-query');
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
const command = process.argv[2];
|
|
88
|
-
if (command === 'setup') {
|
|
89
|
-
const token = process.argv[3];
|
|
90
|
-
setup(token);
|
|
91
|
-
} else {
|
|
92
|
-
console.log('MiniMax Coding Plan Helper');
|
|
93
|
-
console.log('');
|
|
94
|
-
console.log('Usage:');
|
|
95
|
-
console.log(' npx @yakumoryo/minimax-plan-usage setup <your-token>');
|
|
96
|
-
console.log('');
|
|
97
|
-
console.log('Example:');
|
|
98
|
-
console.log(' npx @yakumoryo/minimax-plan-usage setup sk-cp-jErbHQzWz1agLaJeOrtPxZJp93PjkVpc');
|
|
99
|
-
console.log('');
|
|
100
|
-
console.log('To query usage after setup:');
|
|
101
|
-
console.log(' npx @yakumoryo/minimax-plan-usage query');
|
|
102
|
-
}
|