grix-connector
Version:
Connect local AI coding agents (Claude, Codex, Gemini, Qwen, DeepSeek, Cursor, OpenCode, Pi, OpenHuman, Reasonix) to the Grix scheduling platform. Also serves as an OpenClaw plugin for Grix channel transport.
6 lines (5 loc) • 1.55 kB
JavaScript
async function l(n){try{return await n.start(n.port),null}catch(e){const r=i(e);if(r==="EADDRINUSE")return{kind:"in_use",port:n.port,label:n.label,message:`[grix-connector] ${n.label} \u7AEF\u53E3 ${n.port} \u5DF2\u88AB\u5360\u7528\uFF0Cdaemon \u65E0\u6CD5\u542F\u52A8\u3002
\u8BF7\u91CA\u653E\u8BE5\u7AEF\u53E3\uFF0C\u6216\u901A\u8FC7\u73AF\u5883\u53D8\u91CF ${n.envVar} / \u547D\u4EE4\u884C\u53C2\u6570 --${n.cliFlag} \u6307\u5B9A\u5176\u4ED6\u7AEF\u53E3\u540E\u91CD\u65B0\u542F\u52A8\u3002
\u67E5\u5360\u7528\u8FDB\u7A0B\u793A\u4F8B\uFF1Alsof -nP -iTCP:${n.port} -sTCP:LISTEN (Windows: netstat -ano | findstr :${n.port})`};if(r==="EACCES")return{kind:"no_permission",port:n.port,label:n.label,message:`[grix-connector] \u5F53\u524D\u7528\u6237\u65E0\u6743\u76D1\u542C ${n.label} \u7AEF\u53E3 ${n.port}\uFF08EACCES\uFF0C1024 \u4EE5\u4E0B\u7AEF\u53E3\u901A\u5E38\u9700\u8981\u7279\u6743\uFF09\u3002
\u8BF7\u6539\u7528 1024 \u4EE5\u4E0A\u7684\u7AEF\u53E3\uFF1A\u73AF\u5883\u53D8\u91CF ${n.envVar} \u6216\u547D\u4EE4\u884C\u53C2\u6570 --${n.cliFlag}\u3002`};const a=e instanceof Error?e.stack??e.message:String(e);return{kind:"other",port:n.port,label:n.label,message:`[grix-connector] ${n.label} \u7AEF\u53E3 ${n.port} \u7ED1\u5B9A\u5931\u8D25\uFF1A${a}
\u53EF\u901A\u8FC7\u73AF\u5883\u53D8\u91CF ${n.envVar} \u6216\u547D\u4EE4\u884C\u53C2\u6570 --${n.cliFlag} \u66F4\u6362\u7AEF\u53E3\u540E\u91CD\u8BD5\u3002`}}}function i(n){if(n&&typeof n=="object"&&"code"in n){const e=n.code;return typeof e=="string"?e:void 0}}export{l as bindPortOrFail};