CI / validate (push) Failing after 1s
Complete rewrite of the pi Zulip extension as a standalone Node.js service with direct harness API calls. No longer depends on pi's session — survives pi shutdown and restart. Changes: - src/index.ts: Complete rewrite — standalone process, not a pi extension - Direct harness API calls (POST /v1/chat/completions) with conversation memory - Per-sender conversation history (up to 50 messages) - Placeholder->edit streaming for Zulip DMs - Typing indicators via Zulip API - Health endpoint on :9200 - Exponential backoff reconnection - Graceful shutdown on SIGINT/SIGTERM - abiba-zulip.service: systemd service unit file - README.md: Updated deployment instructions - package.json/tsconfig.json: Updated for standalone app Deploy: npm install -> npx tsc -> systemctl enable abiba-zulip Closes issue #24 (Hermes parity for pi)
380 lines
14 KiB
JSON
380 lines
14 KiB
JSON
{
|
|
"name": "abiba-zulip-service",
|
|
"version": "2.0.0",
|
|
"lockfileVersion": 3,
|
|
"requires": true,
|
|
"packages": {
|
|
"": {
|
|
"name": "abiba-zulip-service",
|
|
"version": "2.0.0",
|
|
"dependencies": {
|
|
"zulip-js": "^2.0.0"
|
|
},
|
|
"devDependencies": {
|
|
"@types/node": "^22.0.0",
|
|
"typescript": "^5.7.0"
|
|
}
|
|
},
|
|
"node_modules/@babel/runtime": {
|
|
"version": "7.29.7",
|
|
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.7.tgz",
|
|
"integrity": "sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==",
|
|
"engines": {
|
|
"node": ">=6.9.0"
|
|
}
|
|
},
|
|
"node_modules/@types/node": {
|
|
"version": "22.20.0",
|
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.20.0.tgz",
|
|
"integrity": "sha512-QWlFW2wf3nTjC13/DqRnBpR4ZO36VJH/JVBkA/vcnmbTBNQIlnObqyqZE1tUR7+Ni23Lda8R1BxMfbXRpCUx5g==",
|
|
"dev": true,
|
|
"license": "MIT",
|
|
"dependencies": {
|
|
"undici-types": "~6.21.0"
|
|
}
|
|
},
|
|
"node_modules/asynckit": {
|
|
"version": "0.4.0",
|
|
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
|
|
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
|
|
},
|
|
"node_modules/call-bind-apply-helpers": {
|
|
"version": "1.0.2",
|
|
"resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
|
|
"integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
|
|
"dependencies": {
|
|
"es-errors": "^1.3.0",
|
|
"function-bind": "^1.1.2"
|
|
},
|
|
"engines": {
|
|
"node": ">= 0.4"
|
|
}
|
|
},
|
|
"node_modules/combined-stream": {
|
|
"version": "1.0.8",
|
|
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
|
|
"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
|
|
"dependencies": {
|
|
"delayed-stream": "~1.0.0"
|
|
},
|
|
"engines": {
|
|
"node": ">= 0.8"
|
|
}
|
|
},
|
|
"node_modules/delayed-stream": {
|
|
"version": "1.0.0",
|
|
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
|
|
"integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
|
|
"engines": {
|
|
"node": ">=0.4.0"
|
|
}
|
|
},
|
|
"node_modules/dunder-proto": {
|
|
"version": "1.0.1",
|
|
"resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
|
|
"integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
|
|
"dependencies": {
|
|
"call-bind-apply-helpers": "^1.0.1",
|
|
"es-errors": "^1.3.0",
|
|
"gopd": "^1.2.0"
|
|
},
|
|
"engines": {
|
|
"node": ">= 0.4"
|
|
}
|
|
},
|
|
"node_modules/es-define-property": {
|
|
"version": "1.0.1",
|
|
"resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
|
|
"integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
|
|
"engines": {
|
|
"node": ">= 0.4"
|
|
}
|
|
},
|
|
"node_modules/es-errors": {
|
|
"version": "1.3.0",
|
|
"resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
|
|
"integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
|
|
"engines": {
|
|
"node": ">= 0.4"
|
|
}
|
|
},
|
|
"node_modules/es-object-atoms": {
|
|
"version": "1.1.2",
|
|
"resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.2.tgz",
|
|
"integrity": "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==",
|
|
"dependencies": {
|
|
"es-errors": "^1.3.0"
|
|
},
|
|
"engines": {
|
|
"node": ">= 0.4"
|
|
}
|
|
},
|
|
"node_modules/es-set-tostringtag": {
|
|
"version": "2.1.0",
|
|
"resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
|
|
"integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
|
|
"dependencies": {
|
|
"es-errors": "^1.3.0",
|
|
"get-intrinsic": "^1.2.6",
|
|
"has-tostringtag": "^1.0.2",
|
|
"hasown": "^2.0.2"
|
|
},
|
|
"engines": {
|
|
"node": ">= 0.4"
|
|
}
|
|
},
|
|
"node_modules/form-data": {
|
|
"version": "2.5.6",
|
|
"resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.6.tgz",
|
|
"integrity": "sha512-Ogz/E85h9tlfJzpI6TuFpGcHZFhLrb9Gw8wq9v40CxSCPnv7ahKr6Xgtkn0KYCDQJ8DNn5VoMO8EXr9V5PadyA==",
|
|
"dependencies": {
|
|
"asynckit": "^0.4.0",
|
|
"combined-stream": "^1.0.8",
|
|
"es-set-tostringtag": "^2.1.0",
|
|
"hasown": "^2.0.4",
|
|
"mime-types": "^2.1.35",
|
|
"safe-buffer": "^5.2.1"
|
|
},
|
|
"engines": {
|
|
"node": ">= 0.12"
|
|
}
|
|
},
|
|
"node_modules/function-bind": {
|
|
"version": "1.1.2",
|
|
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
|
|
"integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
|
|
"funding": {
|
|
"url": "https://github.com/sponsors/ljharb"
|
|
}
|
|
},
|
|
"node_modules/get-intrinsic": {
|
|
"version": "1.3.0",
|
|
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
|
|
"integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
|
|
"dependencies": {
|
|
"call-bind-apply-helpers": "^1.0.2",
|
|
"es-define-property": "^1.0.1",
|
|
"es-errors": "^1.3.0",
|
|
"es-object-atoms": "^1.1.1",
|
|
"function-bind": "^1.1.2",
|
|
"get-proto": "^1.0.1",
|
|
"gopd": "^1.2.0",
|
|
"has-symbols": "^1.1.0",
|
|
"hasown": "^2.0.2",
|
|
"math-intrinsics": "^1.1.0"
|
|
},
|
|
"engines": {
|
|
"node": ">= 0.4"
|
|
},
|
|
"funding": {
|
|
"url": "https://github.com/sponsors/ljharb"
|
|
}
|
|
},
|
|
"node_modules/get-proto": {
|
|
"version": "1.0.1",
|
|
"resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
|
|
"integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
|
|
"dependencies": {
|
|
"dunder-proto": "^1.0.1",
|
|
"es-object-atoms": "^1.0.0"
|
|
},
|
|
"engines": {
|
|
"node": ">= 0.4"
|
|
}
|
|
},
|
|
"node_modules/gopd": {
|
|
"version": "1.2.0",
|
|
"resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
|
|
"integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
|
|
"engines": {
|
|
"node": ">= 0.4"
|
|
},
|
|
"funding": {
|
|
"url": "https://github.com/sponsors/ljharb"
|
|
}
|
|
},
|
|
"node_modules/has-symbols": {
|
|
"version": "1.1.0",
|
|
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
|
|
"integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
|
|
"engines": {
|
|
"node": ">= 0.4"
|
|
},
|
|
"funding": {
|
|
"url": "https://github.com/sponsors/ljharb"
|
|
}
|
|
},
|
|
"node_modules/has-tostringtag": {
|
|
"version": "1.0.2",
|
|
"resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
|
|
"integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
|
|
"dependencies": {
|
|
"has-symbols": "^1.0.3"
|
|
},
|
|
"engines": {
|
|
"node": ">= 0.4"
|
|
},
|
|
"funding": {
|
|
"url": "https://github.com/sponsors/ljharb"
|
|
}
|
|
},
|
|
"node_modules/hasown": {
|
|
"version": "2.0.4",
|
|
"resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz",
|
|
"integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==",
|
|
"dependencies": {
|
|
"function-bind": "^1.1.2"
|
|
},
|
|
"engines": {
|
|
"node": ">= 0.4"
|
|
}
|
|
},
|
|
"node_modules/ini": {
|
|
"version": "5.0.0",
|
|
"resolved": "https://registry.npmjs.org/ini/-/ini-5.0.0.tgz",
|
|
"integrity": "sha512-+N0ngpO3e7cRUWOJAS7qw0IZIVc6XPrW4MlFBdD066F2L4k1L6ker3hLqSq7iXxU5tgS4WGkIUElWn5vogAEnw==",
|
|
"engines": {
|
|
"node": "^18.17.0 || >=20.5.0"
|
|
}
|
|
},
|
|
"node_modules/isomorphic-fetch": {
|
|
"version": "3.0.0",
|
|
"resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz",
|
|
"integrity": "sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==",
|
|
"dependencies": {
|
|
"node-fetch": "^2.6.1",
|
|
"whatwg-fetch": "^3.4.1"
|
|
}
|
|
},
|
|
"node_modules/isomorphic-form-data": {
|
|
"version": "2.0.0",
|
|
"resolved": "https://registry.npmjs.org/isomorphic-form-data/-/isomorphic-form-data-2.0.0.tgz",
|
|
"integrity": "sha512-TYgVnXWeESVmQSg4GLVbalmQ+B4NPi/H4eWxqALKj63KsUrcu301YDjBqaOw3h+cbak7Na4Xyps3BiptHtxTfg==",
|
|
"dependencies": {
|
|
"form-data": "^2.3.2"
|
|
}
|
|
},
|
|
"node_modules/math-intrinsics": {
|
|
"version": "1.1.0",
|
|
"resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
|
|
"integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
|
|
"engines": {
|
|
"node": ">= 0.4"
|
|
}
|
|
},
|
|
"node_modules/mime-db": {
|
|
"version": "1.52.0",
|
|
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
|
|
"integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
|
|
"engines": {
|
|
"node": ">= 0.6"
|
|
}
|
|
},
|
|
"node_modules/mime-types": {
|
|
"version": "2.1.35",
|
|
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
|
|
"integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
|
|
"dependencies": {
|
|
"mime-db": "1.52.0"
|
|
},
|
|
"engines": {
|
|
"node": ">= 0.6"
|
|
}
|
|
},
|
|
"node_modules/node-fetch": {
|
|
"version": "2.7.0",
|
|
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
|
|
"integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
|
|
"dependencies": {
|
|
"whatwg-url": "^5.0.0"
|
|
},
|
|
"engines": {
|
|
"node": "4.x || >=6.0.0"
|
|
},
|
|
"peerDependencies": {
|
|
"encoding": "^0.1.0"
|
|
},
|
|
"peerDependenciesMeta": {
|
|
"encoding": {
|
|
"optional": true
|
|
}
|
|
}
|
|
},
|
|
"node_modules/safe-buffer": {
|
|
"version": "5.2.1",
|
|
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
|
|
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
|
|
"funding": [
|
|
{
|
|
"type": "github",
|
|
"url": "https://github.com/sponsors/feross"
|
|
},
|
|
{
|
|
"type": "patreon",
|
|
"url": "https://www.patreon.com/feross"
|
|
},
|
|
{
|
|
"type": "consulting",
|
|
"url": "https://feross.org/support"
|
|
}
|
|
]
|
|
},
|
|
"node_modules/tr46": {
|
|
"version": "0.0.3",
|
|
"resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
|
|
"integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
|
|
},
|
|
"node_modules/typescript": {
|
|
"version": "5.9.3",
|
|
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz",
|
|
"integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
|
|
"dev": true,
|
|
"license": "Apache-2.0",
|
|
"bin": {
|
|
"tsc": "bin/tsc",
|
|
"tsserver": "bin/tsserver"
|
|
},
|
|
"engines": {
|
|
"node": ">=14.17"
|
|
}
|
|
},
|
|
"node_modules/undici-types": {
|
|
"version": "6.21.0",
|
|
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz",
|
|
"integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==",
|
|
"dev": true,
|
|
"license": "MIT"
|
|
},
|
|
"node_modules/webidl-conversions": {
|
|
"version": "3.0.1",
|
|
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
|
|
"integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
|
|
},
|
|
"node_modules/whatwg-fetch": {
|
|
"version": "3.6.20",
|
|
"resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz",
|
|
"integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg=="
|
|
},
|
|
"node_modules/whatwg-url": {
|
|
"version": "5.0.0",
|
|
"resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
|
|
"integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
|
|
"dependencies": {
|
|
"tr46": "~0.0.3",
|
|
"webidl-conversions": "^3.0.0"
|
|
}
|
|
},
|
|
"node_modules/zulip-js": {
|
|
"version": "2.1.0",
|
|
"resolved": "https://registry.npmjs.org/zulip-js/-/zulip-js-2.1.0.tgz",
|
|
"integrity": "sha512-kLdxzJZ/FvWHBotUJl7LXCHIkShTjy1FUk5HAWfsal1TM+hw0atCZwgasCpvFDBj01y+39ZEZXgjePaie74Xhg==",
|
|
"dependencies": {
|
|
"@babel/runtime": "^7.25.7",
|
|
"ini": "^5.0.0",
|
|
"isomorphic-fetch": "^3.0.0",
|
|
"isomorphic-form-data": "2.0.0"
|
|
}
|
|
}
|
|
}
|
|
}
|