Files
admin 875c7f9b91 feat: Complete zCode CLI X with Telegram bot integration
- 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
2026-05-05 09:01:26 +00:00

1 line
18 KiB
Plaintext

{"version":3,"file":"mongrule.mjs","names":["paddedVersionString","_regexCache","evalCondition","obj","condition","savedGroups","k","v","Object","entries","evalOr","evalAnd","evalConditionValue","getPath","path","parts","split","current","i","length","getRegex","regex","insensitive","cacheKey","RegExp","replace","undefined","value","String","toLowerCase","Array","isArray","isOperatorObject","JSON","stringify","op","evalOperatorCondition","keys","filter","getType","t","includes","elemMatch","actual","expected","check","isIn","caseFold","val","some","el","exp","isInAll","passed","j","operator","test","e","console","error","conditions"],"sources":["../../src/mongrule.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { SavedGroupsValues } from \"./types/growthbook\";\nimport {\n ConditionInterface,\n TestedObj,\n ConditionValue,\n Operator,\n OperatorConditionValue,\n VarType,\n} from \"./types/mongrule\";\nimport { paddedVersionString } from \"./util\";\n\nconst _regexCache: { [key: string]: RegExp } = {};\n\n// The top-level condition evaluation function\nexport function evalCondition(\n obj: TestedObj,\n condition: ConditionInterface,\n // Must be included for `condition` to correctly evaluate group Operators\n savedGroups?: SavedGroupsValues,\n): boolean {\n savedGroups = savedGroups || {};\n // Condition is an object, keys are either specific operators or object paths\n // values are either arguments for operators or conditions for paths\n for (const [k, v] of Object.entries(condition)) {\n switch (k) {\n case \"$or\":\n if (!evalOr(obj, v as ConditionInterface[], savedGroups)) return false;\n break;\n case \"$nor\":\n if (evalOr(obj, v as ConditionInterface[], savedGroups)) return false;\n break;\n case \"$and\":\n if (!evalAnd(obj, v as ConditionInterface[], savedGroups)) return false;\n break;\n case \"$not\":\n if (evalCondition(obj, v as ConditionInterface, savedGroups))\n return false;\n break;\n default:\n if (!evalConditionValue(v, getPath(obj, k), savedGroups)) return false;\n }\n }\n return true;\n}\n\n// Return value at dot-separated path of an object\nfunction getPath(obj: TestedObj, path: string) {\n const parts = path.split(\".\");\n let current: any = obj;\n for (let i = 0; i < parts.length; i++) {\n if (current && typeof current === \"object\" && parts[i] in current) {\n current = current[parts[i]];\n } else {\n return null;\n }\n }\n return current;\n}\n\n// Transform a regex string into a real RegExp object\nfunction getRegex(regex: string, insensitive = false): RegExp {\n const cacheKey = `${regex}${insensitive ? \"/i\" : \"\"}`;\n if (!_regexCache[cacheKey]) {\n _regexCache[cacheKey] = new RegExp(\n regex.replace(/([^\\\\])\\//g, \"$1\\\\/\"),\n insensitive ? \"i\" : undefined,\n );\n }\n return _regexCache[cacheKey];\n}\n\n// Evaluate a single value against a condition\nfunction evalConditionValue(\n condition: ConditionValue,\n value: any,\n savedGroups: SavedGroupsValues,\n insensitive: boolean = false,\n) {\n // Simple equality comparisons\n if (typeof condition === \"string\") {\n if (insensitive) {\n return String(value).toLowerCase() === condition.toLowerCase();\n }\n return value + \"\" === condition;\n }\n if (typeof condition === \"number\") {\n return value * 1 === condition;\n }\n if (typeof condition === \"boolean\") {\n return value !== null && !!value === condition;\n }\n\n if (condition === null) {\n return value === null;\n }\n\n if (Array.isArray(condition) || !isOperatorObject(condition)) {\n return JSON.stringify(value) === JSON.stringify(condition);\n }\n\n // This is a special operator condition and we should evaluate each one separately\n for (const op in condition) {\n if (\n !evalOperatorCondition(\n op as Operator,\n value,\n condition[op as keyof OperatorConditionValue],\n savedGroups,\n )\n ) {\n return false;\n }\n }\n return true;\n}\n\n// If the object has only keys that start with '$'\nfunction isOperatorObject(obj: any): boolean {\n const keys = Object.keys(obj);\n return (\n keys.length > 0 && keys.filter((k) => k[0] === \"$\").length === keys.length\n );\n}\n\n// Return the data type of a value\nfunction getType(v: any): VarType | \"unknown\" {\n if (v === null) return \"null\";\n if (Array.isArray(v)) return \"array\";\n const t = typeof v;\n if ([\"string\", \"number\", \"boolean\", \"object\", \"undefined\"].includes(t)) {\n return t as VarType;\n }\n return \"unknown\";\n}\n\n// At least one element of actual must match the expected condition/value\nfunction elemMatch(actual: any, expected: any, savedGroups: SavedGroupsValues) {\n if (!Array.isArray(actual)) return false;\n const check = isOperatorObject(expected)\n ? (v: any) => evalConditionValue(expected, v, savedGroups)\n : (v: any) => evalCondition(v, expected, savedGroups);\n for (let i = 0; i < actual.length; i++) {\n if (actual[i] && check(actual[i])) {\n return true;\n }\n }\n return false;\n}\n\nfunction isIn(\n actual: any,\n expected: Array<any>,\n insensitive: boolean = false,\n): boolean {\n if (insensitive) {\n const caseFold = (val: any) =>\n typeof val === \"string\" ? val.toLowerCase() : val;\n // Do an intersection if attribute is an array (insensitive)\n if (Array.isArray(actual)) {\n return actual.some((el) =>\n expected.some((exp) => caseFold(el) === caseFold(exp)),\n );\n }\n return expected.some((exp) => caseFold(actual) === caseFold(exp));\n }\n // Do an intersection if attribute is an array\n if (Array.isArray(actual)) {\n return actual.some((el) => expected.includes(el));\n }\n return expected.includes(actual);\n}\n\nfunction isInAll(\n actual: any,\n expected: ConditionValue[],\n savedGroups: SavedGroupsValues,\n insensitive: boolean = false,\n): boolean {\n if (!Array.isArray(actual)) return false;\n for (let i = 0; i < expected.length; i++) {\n let passed = false;\n for (let j = 0; j < actual.length; j++) {\n if (\n evalConditionValue(expected[i], actual[j], savedGroups, insensitive)\n ) {\n passed = true;\n break;\n }\n }\n if (!passed) return false;\n }\n return true;\n}\n\n// Evaluate a single operator condition\nfunction evalOperatorCondition(\n operator: Operator,\n actual: any,\n expected: any,\n savedGroups: SavedGroupsValues,\n): boolean {\n switch (operator) {\n case \"$veq\":\n return paddedVersionString(actual) === paddedVersionString(expected);\n case \"$vne\":\n return paddedVersionString(actual) !== paddedVersionString(expected);\n case \"$vgt\":\n return paddedVersionString(actual) > paddedVersionString(expected);\n case \"$vgte\":\n return paddedVersionString(actual) >= paddedVersionString(expected);\n case \"$vlt\":\n return paddedVersionString(actual) < paddedVersionString(expected);\n case \"$vlte\":\n return paddedVersionString(actual) <= paddedVersionString(expected);\n case \"$eq\":\n return actual === expected;\n case \"$ne\":\n return actual !== expected;\n case \"$lt\":\n return actual < expected;\n case \"$lte\":\n return actual <= expected;\n case \"$gt\":\n return actual > expected;\n case \"$gte\":\n return actual >= expected;\n case \"$exists\":\n // Using `!=` and `==` instead of strict checks so it also matches for undefined\n return expected ? actual != null : actual == null;\n case \"$in\":\n if (!Array.isArray(expected)) return false;\n return isIn(actual, expected);\n case \"$ini\":\n if (!Array.isArray(expected)) return false;\n return isIn(actual, expected, true);\n case \"$inGroup\":\n return isIn(actual, savedGroups[expected] || []);\n case \"$notInGroup\":\n return !isIn(actual, savedGroups[expected] || []);\n case \"$nin\":\n if (!Array.isArray(expected)) return false;\n return !isIn(actual, expected);\n case \"$nini\":\n if (!Array.isArray(expected)) return false;\n return !isIn(actual, expected, true);\n case \"$not\":\n return !evalConditionValue(expected, actual, savedGroups);\n case \"$size\":\n if (!Array.isArray(actual)) return false;\n return evalConditionValue(expected, actual.length, savedGroups);\n case \"$elemMatch\":\n return elemMatch(actual, expected, savedGroups);\n case \"$all\":\n if (!Array.isArray(expected)) return false;\n return isInAll(actual, expected, savedGroups);\n case \"$alli\":\n if (!Array.isArray(expected)) return false;\n return isInAll(actual, expected, savedGroups, true);\n case \"$regex\":\n try {\n return getRegex(expected).test(actual);\n } catch (e) {\n return false;\n }\n case \"$regexi\":\n try {\n return getRegex(expected, true).test(actual);\n } catch (e) {\n return false;\n }\n case \"$type\":\n return getType(actual) === expected;\n default:\n console.error(\"Unknown operator: \" + operator);\n return false;\n }\n}\n\n// Recursive $or rule\nfunction evalOr(\n obj: TestedObj,\n conditions: ConditionInterface[],\n savedGroups: SavedGroupsValues,\n): boolean {\n if (!conditions.length) return true;\n for (let i = 0; i < conditions.length; i++) {\n if (evalCondition(obj, conditions[i], savedGroups)) {\n return true;\n }\n }\n return false;\n}\n\n// Recursive $and rule\nfunction evalAnd(\n obj: TestedObj,\n conditions: ConditionInterface[],\n savedGroups: SavedGroupsValues,\n): boolean {\n for (let i = 0; i < conditions.length; i++) {\n if (!evalCondition(obj, conditions[i], savedGroups)) {\n return false;\n }\n }\n return true;\n}\n"],"mappings":"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","ignoreList":[]}