- 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
37 lines
1.6 KiB
JavaScript
37 lines
1.6 KiB
JavaScript
import { CredentialsProviderError } from "@smithy/property-provider";
|
|
import { externalDataInterceptor } from "@smithy/shared-ini-file-loader";
|
|
import { exec } from "node:child_process";
|
|
import { promisify } from "node:util";
|
|
import { getValidatedProcessCredentials } from "./getValidatedProcessCredentials";
|
|
export const resolveProcessCredentials = async (profileName, profiles, logger) => {
|
|
const profile = profiles[profileName];
|
|
if (profiles[profileName]) {
|
|
const credentialProcess = profile["credential_process"];
|
|
if (credentialProcess !== undefined) {
|
|
const execPromise = promisify(externalDataInterceptor?.getTokenRecord?.().exec ?? exec);
|
|
try {
|
|
const { stdout } = await execPromise(credentialProcess);
|
|
let data;
|
|
try {
|
|
data = JSON.parse(stdout.trim());
|
|
}
|
|
catch {
|
|
throw Error(`Profile ${profileName} credential_process returned invalid JSON.`);
|
|
}
|
|
return getValidatedProcessCredentials(profileName, data, profiles);
|
|
}
|
|
catch (error) {
|
|
throw new CredentialsProviderError(error.message, { logger });
|
|
}
|
|
}
|
|
else {
|
|
throw new CredentialsProviderError(`Profile ${profileName} did not contain credential_process.`, { logger });
|
|
}
|
|
}
|
|
else {
|
|
throw new CredentialsProviderError(`Profile ${profileName} could not be found in shared credentials file.`, {
|
|
logger,
|
|
});
|
|
}
|
|
};
|