feat: full service exposure with grammy bot + claudegram patterns

- Rewrote bot/index.js using grammy (@grammyjs/auto-retry + runner)
- Added deduplication.js (adapted from claudegram)
- Added request-queue.js (per-chat sequential processing)
- Added message-sender.js (chunking + Markdown fallback)
- Wired all JS-shim services: tools, skills, agents, config, RTK
- Added function calling support to ZAIProvider.chat()
- Added dynamic command routing (tools, skills, agents, model, stats)
- Added per-agent delegation commands (/agent_coder, /agent_architect, etc.)
- Added dedup + queue patterns from claudegram's battle-tested codebase
- Updated zcode.js to pass agents to initBot()
- Updated README feature comparison table to reflect real capabilities
This commit is contained in:
admin
2026-05-05 12:41:15 +00:00
Unverified
parent 4db82f78a6
commit cbe816a421
9 changed files with 964 additions and 174 deletions

71
package-lock.json generated
View File

@@ -9,6 +9,8 @@
"version": "1.0.0",
"dependencies": {
"@anthropic-ai/sdk": "^0.81.0",
"@grammyjs/auto-retry": "^2.0.2",
"@grammyjs/runner": "^2.0.3",
"axios": "^1.14.0",
"chalk": "^5.4.0",
"commander": "^12.0.0",
@@ -16,6 +18,7 @@
"execa": "^9.6.1",
"express": "^4.21.0",
"fs-extra": "^11.2.0",
"grammy": "^1.42.0",
"openai": "^4.77.0",
"p-queue": "^8.0.1",
"winston": "^3.13.0",
@@ -73,6 +76,42 @@
"kuler": "^2.0.0"
}
},
"node_modules/@grammyjs/auto-retry": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/@grammyjs/auto-retry/-/auto-retry-2.0.2.tgz",
"integrity": "sha512-b4A4p5jlYDiQtW0c0FXYe11WMkYoiW+5rvOaDMCOk1h7Pu2SDl7B7gmFF8cthWCx2+M2nWLOsBxAgbBG4kKWYg==",
"license": "MIT",
"dependencies": {
"debug": "^4.3.4"
},
"engines": {
"node": ">=12.20.0 || >=14.13.1"
},
"peerDependencies": {
"grammy": "^1.10.0"
}
},
"node_modules/@grammyjs/runner": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/@grammyjs/runner/-/runner-2.0.3.tgz",
"integrity": "sha512-nckmTs1dPWfVQteK9cxqxzE+0m1VRvluLWB8UgFzsjg62w3qthPJt0TYtJBEdG7OedvfQq4vnFAyE6iaMkR42A==",
"license": "MIT",
"dependencies": {
"abort-controller": "^3.0.0"
},
"engines": {
"node": ">=12.20.0 || >=14.13.1"
},
"peerDependencies": {
"grammy": "^1.13.1"
}
},
"node_modules/@grammyjs/types": {
"version": "3.26.0",
"resolved": "https://registry.npmjs.org/@grammyjs/types/-/types-3.26.0.tgz",
"integrity": "sha512-jlnyfxfev/2o68HlvAGRocAXgdPPX5QabG7jZlbqC2r9DZyWBfzTlg+nu3O3Fy4EhgLWu28hZ/8wr7DsNamP9A==",
"license": "MIT"
},
"node_modules/@sec-ant/readable-stream": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz",
@@ -429,6 +468,23 @@
"node": ">= 8"
}
},
"node_modules/debug": {
"version": "4.4.3",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
"integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
"license": "MIT",
"dependencies": {
"ms": "^2.1.3"
},
"engines": {
"node": ">=6.0"
},
"peerDependenciesMeta": {
"supports-color": {
"optional": true
}
}
},
"node_modules/delayed-stream": {
"version": "1.0.0",
"license": "MIT",
@@ -863,6 +919,21 @@
"version": "4.2.11",
"license": "ISC"
},
"node_modules/grammy": {
"version": "1.42.0",
"resolved": "https://registry.npmjs.org/grammy/-/grammy-1.42.0.tgz",
"integrity": "sha512-1AdCge+AkjSdp2FwfICSFnVbl8Mq3KVHJDy+DgTI9+D6keJ0zWALPRKas5jv/8psiCzL4N2cEOcGW7O45Kn39g==",
"license": "MIT",
"dependencies": {
"@grammyjs/types": "3.26.0",
"abort-controller": "^3.0.0",
"debug": "^4.4.3",
"node-fetch": "^2.7.0"
},
"engines": {
"node": "^12.20.0 || >=14.13.1"
}
},
"node_modules/has-symbols": {
"version": "1.1.0",
"license": "MIT",