- 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
21 lines
912 B
JavaScript
21 lines
912 B
JavaScript
import {onAbortedSignal} from '../utils/abort-signal.js';
|
|
|
|
// Validate the `cancelSignal` option
|
|
export const validateCancelSignal = ({cancelSignal}) => {
|
|
if (cancelSignal !== undefined && Object.prototype.toString.call(cancelSignal) !== '[object AbortSignal]') {
|
|
throw new Error(`The \`cancelSignal\` option must be an AbortSignal: ${String(cancelSignal)}`);
|
|
}
|
|
};
|
|
|
|
// Terminate the subprocess when aborting the `cancelSignal` option and `gracefulSignal` is `false`
|
|
export const throwOnCancel = ({subprocess, cancelSignal, gracefulCancel, context, controller}) => cancelSignal === undefined || gracefulCancel
|
|
? []
|
|
: [terminateOnCancel(subprocess, cancelSignal, context, controller)];
|
|
|
|
const terminateOnCancel = async (subprocess, cancelSignal, context, {signal}) => {
|
|
await onAbortedSignal(cancelSignal, signal);
|
|
context.terminationReason ??= 'cancel';
|
|
subprocess.kill();
|
|
throw cancelSignal.reason;
|
|
};
|