@staticpayload/zai-code 1.2.8 → 1.2.9
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/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +74 -41
- package/dist/auth.js.map +1 -1
- package/package.json +2 -3
package/dist/auth.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAkBA,wBAAsB,SAAS,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAqBxD;AAGD,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG1D;AAGD,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAIlD;AAED,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,OAAO,CAAC,CAG5D;AA+BD,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAWlE;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC,CAwCvD;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAoBnD;AAED,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC,CAc3D"}
|
package/dist/auth.js
CHANGED
|
@@ -41,11 +41,57 @@ exports.validateApiKey = validateApiKey;
|
|
|
41
41
|
exports.promptForApiKey = promptForApiKey;
|
|
42
42
|
exports.runOnboarding = runOnboarding;
|
|
43
43
|
exports.ensureAuthenticated = ensureAuthenticated;
|
|
44
|
-
const keytar = __importStar(require("keytar"));
|
|
45
44
|
const readline = __importStar(require("readline"));
|
|
45
|
+
const fs = __importStar(require("fs"));
|
|
46
|
+
const path = __importStar(require("path"));
|
|
47
|
+
const os = __importStar(require("os"));
|
|
46
48
|
const config_1 = require("./config");
|
|
47
|
-
const
|
|
48
|
-
const
|
|
49
|
+
const ENV_VAR_NAME = 'Z_KEY';
|
|
50
|
+
const AUTH_FILE = path.join(os.homedir(), '.zai', 'auth.json');
|
|
51
|
+
// Ensure .zai directory exists
|
|
52
|
+
function ensureAuthDir() {
|
|
53
|
+
const dir = path.dirname(AUTH_FILE);
|
|
54
|
+
if (!fs.existsSync(dir)) {
|
|
55
|
+
fs.mkdirSync(dir, { mode: 0o700, recursive: true });
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
// Get API key from environment or file
|
|
59
|
+
async function getApiKey() {
|
|
60
|
+
// 1. Check env var first
|
|
61
|
+
const envKey = process.env[ENV_VAR_NAME];
|
|
62
|
+
if (envKey && envKey.trim().length > 0) {
|
|
63
|
+
return envKey.trim();
|
|
64
|
+
}
|
|
65
|
+
// 2. Fall back to auth file
|
|
66
|
+
try {
|
|
67
|
+
if (fs.existsSync(AUTH_FILE)) {
|
|
68
|
+
const content = fs.readFileSync(AUTH_FILE, 'utf-8');
|
|
69
|
+
const data = JSON.parse(content);
|
|
70
|
+
if (data.apiKey && data.apiKey.length > 0) {
|
|
71
|
+
return data.apiKey;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
catch {
|
|
76
|
+
// Fall through
|
|
77
|
+
}
|
|
78
|
+
return null;
|
|
79
|
+
}
|
|
80
|
+
// Save API key to file
|
|
81
|
+
async function setApiKey(key) {
|
|
82
|
+
ensureAuthDir();
|
|
83
|
+
fs.writeFileSync(AUTH_FILE, JSON.stringify({ apiKey: key }, null, 2), { mode: 0o600 });
|
|
84
|
+
}
|
|
85
|
+
// Delete saved API key
|
|
86
|
+
async function deleteApiKey() {
|
|
87
|
+
if (fs.existsSync(AUTH_FILE)) {
|
|
88
|
+
fs.unlinkSync(AUTH_FILE);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
async function hasValidCredentials() {
|
|
92
|
+
const key = await getApiKey();
|
|
93
|
+
return key !== null && key.length > 0;
|
|
94
|
+
}
|
|
49
95
|
async function httpsGet(url, headers) {
|
|
50
96
|
return new Promise((resolve, reject) => {
|
|
51
97
|
const parsedUrl = new URL(url);
|
|
@@ -72,34 +118,17 @@ async function httpsGet(url, headers) {
|
|
|
72
118
|
req.end();
|
|
73
119
|
});
|
|
74
120
|
}
|
|
75
|
-
async function getApiKey() {
|
|
76
|
-
try {
|
|
77
|
-
return await keytar.getPassword(SERVICE_NAME, ACCOUNT_NAME);
|
|
78
|
-
}
|
|
79
|
-
catch (error) {
|
|
80
|
-
return null;
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
async function setApiKey(key) {
|
|
84
|
-
await keytar.setPassword(SERVICE_NAME, ACCOUNT_NAME, key);
|
|
85
|
-
}
|
|
86
|
-
async function deleteApiKey() {
|
|
87
|
-
await keytar.deletePassword(SERVICE_NAME, ACCOUNT_NAME);
|
|
88
|
-
}
|
|
89
|
-
async function hasValidCredentials() {
|
|
90
|
-
const key = await getApiKey();
|
|
91
|
-
return key !== null && key.length > 0;
|
|
92
|
-
}
|
|
93
121
|
async function validateApiKey(key) {
|
|
94
122
|
try {
|
|
95
123
|
const config = (0, config_1.loadConfig)();
|
|
96
|
-
const response = await httpsGet(`${config.api.baseUrl}
|
|
97
|
-
|
|
124
|
+
const response = await httpsGet(`${config.api.baseUrl}models`, {
|
|
125
|
+
'x-api-key': key,
|
|
98
126
|
});
|
|
99
127
|
return response.statusCode >= 200 && response.statusCode < 300;
|
|
100
128
|
}
|
|
101
129
|
catch {
|
|
102
|
-
|
|
130
|
+
// Skip validation if network fails - assume key is valid
|
|
131
|
+
return true;
|
|
103
132
|
}
|
|
104
133
|
}
|
|
105
134
|
async function promptForApiKey() {
|
|
@@ -108,17 +137,15 @@ async function promptForApiKey() {
|
|
|
108
137
|
input: process.stdin,
|
|
109
138
|
output: process.stdout,
|
|
110
139
|
});
|
|
111
|
-
// Use readline with muted input for hidden password
|
|
112
140
|
const stdin = process.stdin;
|
|
113
141
|
const stdout = process.stdout;
|
|
114
|
-
stdout.write('Enter API key: ');
|
|
142
|
+
stdout.write('Enter Z.ai API key (Z_KEY): ');
|
|
115
143
|
stdin.setRawMode(true);
|
|
116
144
|
stdin.resume();
|
|
117
145
|
stdin.setEncoding('utf8');
|
|
118
146
|
let key = '';
|
|
119
147
|
const onData = (char) => {
|
|
120
148
|
if (char === '\r' || char === '\n' || char === '\u0004') {
|
|
121
|
-
// Enter or Ctrl-D
|
|
122
149
|
stdin.setRawMode(false);
|
|
123
150
|
stdin.pause();
|
|
124
151
|
stdin.removeListener('data', onData);
|
|
@@ -127,12 +154,10 @@ async function promptForApiKey() {
|
|
|
127
154
|
resolve(key);
|
|
128
155
|
}
|
|
129
156
|
else if (char === '\u0003') {
|
|
130
|
-
// Ctrl-C
|
|
131
157
|
stdout.write('\n');
|
|
132
158
|
process.exit(0);
|
|
133
159
|
}
|
|
134
160
|
else if (char === '\u007f') {
|
|
135
|
-
// Backspace
|
|
136
161
|
if (key.length > 0) {
|
|
137
162
|
key = key.slice(0, -1);
|
|
138
163
|
}
|
|
@@ -145,26 +170,34 @@ async function promptForApiKey() {
|
|
|
145
170
|
});
|
|
146
171
|
}
|
|
147
172
|
async function runOnboarding() {
|
|
173
|
+
console.log('');
|
|
174
|
+
console.log('Z.ai API key required.');
|
|
175
|
+
console.log('You can also set the Z_KEY environment variable.');
|
|
176
|
+
console.log('');
|
|
148
177
|
while (true) {
|
|
149
|
-
console.log('Z.ai API key required');
|
|
150
178
|
const key = await promptForApiKey();
|
|
151
|
-
if (
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
return;
|
|
155
|
-
}
|
|
156
|
-
else {
|
|
157
|
-
console.log('Invalid API key');
|
|
179
|
+
if (key.trim().length === 0) {
|
|
180
|
+
console.log('API key cannot be empty.');
|
|
181
|
+
continue;
|
|
158
182
|
}
|
|
183
|
+
// Save to file
|
|
184
|
+
await setApiKey(key.trim());
|
|
185
|
+
console.log('API key saved to ~/.zai/auth.json');
|
|
186
|
+
console.log('');
|
|
187
|
+
return;
|
|
159
188
|
}
|
|
160
189
|
}
|
|
161
190
|
async function ensureAuthenticated() {
|
|
162
|
-
|
|
163
|
-
|
|
191
|
+
const key = await getApiKey();
|
|
192
|
+
if (key) {
|
|
164
193
|
return key;
|
|
165
194
|
}
|
|
166
195
|
await runOnboarding();
|
|
167
|
-
const
|
|
168
|
-
|
|
196
|
+
const newKey = await getApiKey();
|
|
197
|
+
if (!newKey) {
|
|
198
|
+
console.error('Authentication failed.');
|
|
199
|
+
process.exit(1);
|
|
200
|
+
}
|
|
201
|
+
return newKey;
|
|
169
202
|
}
|
|
170
203
|
//# sourceMappingURL=auth.js.map
|
package/dist/auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBA,8BAqBC;AAGD,8BAGC;AAGD,oCAIC;AAED,kDAGC;AA+BD,wCAWC;AAED,0CAwCC;AAED,sCAoBC;AAED,kDAcC;AAnLD,mDAAqC;AACrC,uCAAyB;AACzB,2CAA6B;AAC7B,uCAAyB;AACzB,qCAAsC;AAEtC,MAAM,YAAY,GAAG,OAAO,CAAC;AAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;AAE/D,+BAA+B;AAC/B,SAAS,aAAa;IACpB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACpC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtD,CAAC;AACH,CAAC;AAED,uCAAuC;AAChC,KAAK,UAAU,SAAS;IAC7B,yBAAyB;IACzB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACzC,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvC,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;IAED,4BAA4B;IAC5B,IAAI,CAAC;QACH,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACpD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACjC,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1C,OAAO,IAAI,CAAC,MAAM,CAAC;YACrB,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,eAAe;IACjB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,uBAAuB;AAChB,KAAK,UAAU,SAAS,CAAC,GAAW;IACzC,aAAa,EAAE,CAAC;IAChB,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AACzF,CAAC;AAED,uBAAuB;AAChB,KAAK,UAAU,YAAY;IAChC,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAC3B,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,mBAAmB;IACvC,MAAM,GAAG,GAAG,MAAM,SAAS,EAAE,CAAC;IAC9B,OAAO,GAAG,KAAK,IAAI,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;AACxC,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,GAAW,EAAE,OAA+B;IAClE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/B,MAAM,OAAO,GAAG;YACd,QAAQ,EAAE,SAAS,CAAC,QAAQ;YAC5B,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACpE,IAAI,EAAE,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,MAAM;YAC3C,MAAM,EAAE,KAAK;YACb,OAAO,EAAE;gBACP,GAAG,OAAO;gBACV,YAAY,EAAE,SAAS;aACxB;SACF,CAAC;QAEF,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,GAAQ,EAAE,EAAE;YACzD,IAAI,IAAI,GAAG,EAAE,CAAC;YACd,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;gBAC/B,IAAI,IAAI,KAAK,CAAC;YAChB,CAAC,CAAC,CAAC;YACH,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;gBACjB,OAAO,CAAC,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;YAChD,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACxB,GAAG,CAAC,GAAG,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;AACL,CAAC;AAEM,KAAK,UAAU,cAAc,CAAC,GAAW;IAC9C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAA,mBAAU,GAAkC,CAAC;QAC5D,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,QAAQ,EAAE;YAC7D,WAAW,EAAE,GAAG;SACjB,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC,UAAU,IAAI,GAAG,IAAI,QAAQ,CAAC,UAAU,GAAG,GAAG,CAAC;IACjE,CAAC;IAAC,MAAM,CAAC;QACP,yDAAyD;QACzD,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,eAAe;IACnC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;YAClC,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC5B,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAE9B,MAAM,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAE7C,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACvB,KAAK,CAAC,MAAM,EAAE,CAAC;QACf,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAE1B,IAAI,GAAG,GAAG,EAAE,CAAC;QAEb,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,EAAE;YAC9B,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACxD,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;gBACxB,KAAK,CAAC,KAAK,EAAE,CAAC;gBACd,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBACrC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACnB,EAAE,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO,CAAC,GAAG,CAAC,CAAC;YACf,CAAC;iBAAM,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC7B,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;iBAAM,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC7B,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACnB,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBACzB,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,GAAG,IAAI,IAAI,CAAC;YACd,CAAC;QACH,CAAC,CAAC;QAEF,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;AACL,CAAC;AAEM,KAAK,UAAU,aAAa;IACjC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;IACtC,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;IAChE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,GAAG,GAAG,MAAM,eAAe,EAAE,CAAC;QAEpC,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;YACxC,SAAS;QACX,CAAC;QAED,eAAe;QACf,MAAM,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO;IACT,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,mBAAmB;IACvC,MAAM,GAAG,GAAG,MAAM,SAAS,EAAE,CAAC;IAC9B,IAAI,GAAG,EAAE,CAAC;QACR,OAAO,GAAG,CAAC;IACb,CAAC;IAED,MAAM,aAAa,EAAE,CAAC;IAEtB,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;IACjC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;QACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@staticpayload/zai-code",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.9",
|
|
4
4
|
"description": "Z.ai-native AI code editor - CLI-first, interactive editor shell with keyboard-driven settings, plan-diff-apply workflow, and safety-first design",
|
|
5
5
|
"main": "dist/cli.js",
|
|
6
6
|
"bin": {
|
|
@@ -41,7 +41,6 @@
|
|
|
41
41
|
},
|
|
42
42
|
"dependencies": {
|
|
43
43
|
"@types/blessed": "^0.1.27",
|
|
44
|
-
"blessed": "^0.1.81"
|
|
45
|
-
"keytar": "^7.9.0"
|
|
44
|
+
"blessed": "^0.1.81"
|
|
46
45
|
}
|
|
47
46
|
}
|