- 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
28 lines
1.1 KiB
JavaScript
28 lines
1.1 KiB
JavaScript
import { RETRY_MODES } from "./config";
|
|
import { DefaultRateLimiter } from "./DefaultRateLimiter";
|
|
import { StandardRetryStrategy } from "./StandardRetryStrategy";
|
|
export class AdaptiveRetryStrategy {
|
|
maxAttemptsProvider;
|
|
rateLimiter;
|
|
standardRetryStrategy;
|
|
mode = RETRY_MODES.ADAPTIVE;
|
|
constructor(maxAttemptsProvider, options) {
|
|
this.maxAttemptsProvider = maxAttemptsProvider;
|
|
const { rateLimiter } = options ?? {};
|
|
this.rateLimiter = rateLimiter ?? new DefaultRateLimiter();
|
|
this.standardRetryStrategy = new StandardRetryStrategy(maxAttemptsProvider);
|
|
}
|
|
async acquireInitialRetryToken(retryTokenScope) {
|
|
await this.rateLimiter.getSendToken();
|
|
return this.standardRetryStrategy.acquireInitialRetryToken(retryTokenScope);
|
|
}
|
|
async refreshRetryTokenForRetry(tokenToRenew, errorInfo) {
|
|
this.rateLimiter.updateClientSendingRate(errorInfo);
|
|
return this.standardRetryStrategy.refreshRetryTokenForRetry(tokenToRenew, errorInfo);
|
|
}
|
|
recordSuccess(token) {
|
|
this.rateLimiter.updateClientSendingRate({});
|
|
this.standardRetryStrategy.recordSuccess(token);
|
|
}
|
|
}
|