- 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
55 lines
1.4 KiB
JavaScript
55 lines
1.4 KiB
JavaScript
/*
|
|
* Copyright The OpenTelemetry Authors
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
// https://tc39.es/proposal-regex-escaping
|
|
// escape ^ $ \ . + ? ( ) [ ] { } |
|
|
// do not need to escape * as we interpret it as wildcard
|
|
const ESCAPE = /[\^$\\.+?()[\]{}|]/g;
|
|
/**
|
|
* Wildcard pattern predicate, supports patterns like `*`, `foo*`, `*bar`.
|
|
*/
|
|
export class PatternPredicate {
|
|
_matchAll;
|
|
_regexp;
|
|
constructor(pattern) {
|
|
if (pattern === '*') {
|
|
this._matchAll = true;
|
|
this._regexp = /.*/;
|
|
}
|
|
else {
|
|
this._matchAll = false;
|
|
this._regexp = new RegExp(PatternPredicate.escapePattern(pattern));
|
|
}
|
|
}
|
|
match(str) {
|
|
if (this._matchAll) {
|
|
return true;
|
|
}
|
|
return this._regexp.test(str);
|
|
}
|
|
static escapePattern(pattern) {
|
|
return `^${pattern.replace(ESCAPE, '\\$&').replace('*', '.*')}$`;
|
|
}
|
|
static hasWildcard(pattern) {
|
|
return pattern.includes('*');
|
|
}
|
|
}
|
|
export class ExactPredicate {
|
|
_matchAll;
|
|
_pattern;
|
|
constructor(pattern) {
|
|
this._matchAll = pattern === undefined;
|
|
this._pattern = pattern;
|
|
}
|
|
match(str) {
|
|
if (this._matchAll) {
|
|
return true;
|
|
}
|
|
if (str === this._pattern) {
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
}
|
|
//# sourceMappingURL=Predicate.js.map
|