- Add full Telegram bot functionality with Z.AI API integration
- Implement 4 tools: Bash, FileEdit, WebSearch, Git
- Add 3 agents: Code Reviewer, Architect, DevOps Engineer
- Add 6 skills for common coding tasks
- Add systemd service file for 24/7 operation
- Add nginx configuration for HTTPS webhook
- Add comprehensive documentation
- Implement WebSocket server for real-time updates
- Add logging system with Winston
- Add environment validation
🤖 zCode CLI X - Agentic coder with Z.AI + Telegram integration
32 lines
943 B
JavaScript
32 lines
943 B
JavaScript
import { invalidKeyInput } from './invalid_key_input.js';
|
|
import { encode as b64u } from '../util/base64url.js';
|
|
import { isCryptoKey, isKeyObject } from './is_key_like.js';
|
|
export async function keyToJWK(key) {
|
|
if (isKeyObject(key)) {
|
|
if (key.type === 'secret') {
|
|
key = key.export();
|
|
}
|
|
else {
|
|
return key.export({ format: 'jwk' });
|
|
}
|
|
}
|
|
if (key instanceof Uint8Array) {
|
|
return {
|
|
kty: 'oct',
|
|
k: b64u(key),
|
|
};
|
|
}
|
|
if (!isCryptoKey(key)) {
|
|
throw new TypeError(invalidKeyInput(key, 'CryptoKey', 'KeyObject', 'Uint8Array'));
|
|
}
|
|
if (!key.extractable) {
|
|
throw new TypeError('non-extractable CryptoKey cannot be exported as a JWK');
|
|
}
|
|
const { ext, key_ops, alg, use, ...jwk } = await crypto.subtle.exportKey('jwk', key);
|
|
if (jwk.kty === 'AKP') {
|
|
;
|
|
jwk.alg = alg;
|
|
}
|
|
return jwk;
|
|
}
|