- 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
46 lines
1.1 KiB
JavaScript
46 lines
1.1 KiB
JavaScript
const toZeroIfInfinity = value => Number.isFinite(value) ? value : 0;
|
|
|
|
function parseNumber(milliseconds) {
|
|
return {
|
|
days: Math.trunc(milliseconds / 86_400_000),
|
|
hours: Math.trunc(milliseconds / 3_600_000 % 24),
|
|
minutes: Math.trunc(milliseconds / 60_000 % 60),
|
|
seconds: Math.trunc(milliseconds / 1000 % 60),
|
|
milliseconds: Math.trunc(milliseconds % 1000),
|
|
microseconds: Math.trunc(toZeroIfInfinity(milliseconds * 1000) % 1000),
|
|
nanoseconds: Math.trunc(toZeroIfInfinity(milliseconds * 1e6) % 1000),
|
|
};
|
|
}
|
|
|
|
function parseBigint(milliseconds) {
|
|
return {
|
|
days: milliseconds / 86_400_000n,
|
|
hours: milliseconds / 3_600_000n % 24n,
|
|
minutes: milliseconds / 60_000n % 60n,
|
|
seconds: milliseconds / 1000n % 60n,
|
|
milliseconds: milliseconds % 1000n,
|
|
microseconds: 0n,
|
|
nanoseconds: 0n,
|
|
};
|
|
}
|
|
|
|
export default function parseMilliseconds(milliseconds) {
|
|
switch (typeof milliseconds) {
|
|
case 'number': {
|
|
if (Number.isFinite(milliseconds)) {
|
|
return parseNumber(milliseconds);
|
|
}
|
|
|
|
break;
|
|
}
|
|
|
|
case 'bigint': {
|
|
return parseBigint(milliseconds);
|
|
}
|
|
|
|
// No default
|
|
}
|
|
|
|
throw new TypeError('Expected a finite number or bigint');
|
|
}
|