@sleep2agi/agent-node 2.3.6-preview.2 → 2.3.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +1 -1
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -88,7 +88,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
88
88
|
Runtime:
|
|
89
89
|
claude-agent-sdk Claude Agent SDK — Claude/MiniMax/Anthropic 兼容 API
|
|
90
90
|
codex-sdk Codex SDK — GPT-5.4,复用 codex 登录态
|
|
91
|
-
`),process.exit(0);if(s[r]==="--new-session"){E["new-session"]="true";continue}if(s[r]==="--channel"&&r+1<s.length){N4.push(s[++r]);continue}if(s[r].startsWith("--")&&r+1<s.length)E[s[r].slice(2)]=s[++r]}function P4(r){return r.replace(/^~(?=\/|$)/,j4)}function xb(r){let i=r.indexOf(":");if(i<0)return{type:r,raw:r};if(i===0||i===r.length-1)throw Error(`invalid channel spec "${r}" (expected type or type:path)`);return{type:r.slice(0,i),path:P4(r.slice(i+1)),raw:r}}function zn(r){if(!ic(r))return null;try{return JSON.parse(ei(r,"utf-8"))}catch{return null}}var X={},tr="";if(E.config){let r=E.config.startsWith("/")?E.config:T(process.cwd(),E.config),i=zn(r);if(i)X=i,tr=r,console.log(`[agent-node] Config: ${r}`)}var F=E.alias||process.env.COMMHUB_ALIAS||process.env.ALIAS||X.alias;if(!E.config&&F){let r=T(process.cwd(),".anet","nodes",F,"config.json"),i=T(process.cwd(),".anet","profiles",`${F}.json`),v=ic(r)?r:i,o=zn(v);if(o)X={...o,...X},tr=v,console.log(`[agent-node] Config: ${v}`)}var Dn=zn(T(j4,".anet","config.json"))||{};if(Dn.hub&&!X.hub)X.hub=Dn.hub;if(Dn.token&&!X.token)X.token=Dn.token;if(!E.config&&!Object.keys(X).length){let r=zn(T(process.cwd(),".agent-node.json"));if(r)X=r,console.log("[agent-node] 配置: .agent-node.json")}if(X.env&&typeof X.env==="object"){let r=!1;for(let[i,v]of Object.entries(X.env)){if(
|
|
91
|
+
`),process.exit(0);if(s[r]==="--new-session"){E["new-session"]="true";continue}if(s[r]==="--channel"&&r+1<s.length){N4.push(s[++r]);continue}if(s[r].startsWith("--")&&r+1<s.length)E[s[r].slice(2)]=s[++r]}function P4(r){return r.replace(/^~(?=\/|$)/,j4)}function xb(r){let i=r.indexOf(":");if(i<0)return{type:r,raw:r};if(i===0||i===r.length-1)throw Error(`invalid channel spec "${r}" (expected type or type:path)`);return{type:r.slice(0,i),path:P4(r.slice(i+1)),raw:r}}function zn(r){if(!ic(r))return null;try{return JSON.parse(ei(r,"utf-8"))}catch{return null}}var X={},tr="";if(E.config){let r=E.config.startsWith("/")?E.config:T(process.cwd(),E.config),i=zn(r);if(i)X=i,tr=r,console.log(`[agent-node] Config: ${r}`)}var F=E.alias||process.env.COMMHUB_ALIAS||process.env.ALIAS||X.alias;if(!E.config&&F){let r=T(process.cwd(),".anet","nodes",F,"config.json"),i=T(process.cwd(),".anet","profiles",`${F}.json`),v=ic(r)?r:i,o=zn(v);if(o)X={...o,...X},tr=v,console.log(`[agent-node] Config: ${v}`)}var Dn=zn(T(j4,".anet","config.json"))||{};if(Dn.hub&&!X.hub)X.hub=Dn.hub;if(Dn.token&&!X.token)X.token=Dn.token;if(!E.config&&!Object.keys(X).length){let r=zn(T(process.cwd(),".agent-node.json"));if(r)X=r,console.log("[agent-node] 配置: .agent-node.json")}if(X.env&&typeof X.env==="object"){let r=!1;for(let[i,v]of Object.entries(X.env)){if(typeof v==="string"&&(/^(sk-|utok_|ntok_|atok_|ak-|gsk_|key-|Bearer\s)/i.test(v)||i.match(/(_TOKEN|_KEY|_SECRET|AUTH)$/i)))r=!0;if(process.env[i])continue;if(typeof v==="string")process.env[i]=P4(v);else if(v&&typeof v==="object"&&typeof v._envRef==="string"){let o=v._envRef,n=process.env[o];if(n===void 0||n==="")console.error(`[anet] FATAL: config.json env.${i} references env var "${o}" but it is not set in this shell.`),console.error(`[anet] Fix: export ${o}=<your-value> then re-run anet node start`),console.error("[anet] (set the value matching the previous plain secret you migrated away from)"),process.exit(1);process.env[i]=n}}if(r)console.warn("[anet] ⚠ DEPRECATED: config.json env contains plain secret values that are persisted on disk."),console.warn("[anet] Migrate to envRef form to keep secrets out of the JSON file:"),console.warn(`[anet] anet node migrate-token-to-envref ${F||"<alias>"}`),console.warn("[anet] Or inspect candidates across all nodes:"),console.warn("[anet] anet doctor")}if(!F)console.error(`错误: 必须指定 --alias
|
|
92
92
|
用法: npx @sleep2agi/agent-node --alias "我的Agent"`),process.exit(1);var J4=E.runtime||process.env.RUNTIME||X.runtime||"claude-agent-sdk",Rb={"claude-agent-sdk":"claude","claude-sdk":"claude","agent-sdk":"claude",claude:"claude","codex-sdk":"codex",codex:"codex"},wn=Rb[J4]||"claude",Zb=J4,gi=E.url||E.hub||process.env.COMMHUB_URL||X.hub||"http://127.0.0.1:9200",Or=E.model||process.env.MODEL||X.model,b4={type:"preset",preset:"claude_code"};var rc=E.tools||(Array.isArray(X.tools)?X.tools.join(","):X.tools)||"",sg=rc==="all"?null:rc.split(",").filter(Boolean),Fr=rc==="all"?b4:sg&&sg.length?sg:b4,db=parseInt(E["max-turns"]||X.flags?.maxTurns||X.maxTurns||"50"),U4=parseFloat(E["max-budget"]||X.flags?.maxBudgetUsd||X.maxBudgetUsd||"0"),Rt=parseInt(E["claude-timeout-ms"]||process.env.CLAUDE_TIMEOUT_MS||X.flags?.claudeTimeoutMs||X.claudeTimeoutMs||"120000"),Cb=E["new-session"]==="true",Br=Cb?"":E.session||X.session||X.resume||X.sessionId||"",vi=E.prompt||X.systemPrompt||"",gr=X.token||Dn.token||process.env.COMMHUB_TOKEN||"";if(process.env.COMMHUB_TOKEN&&X.token&&process.env.COMMHUB_TOKEN!==X.token)console.warn(`[${F}] ⚠ COMMHUB_TOKEN env override ignored (using node config token). Unset COMMHUB_TOKEN to silence this warning.`);function fb(){if(!tr)return!1;let r=zn(tr),i=typeof r?.token==="string"?r.token:"";if(!i||i===gr)return!1;return gr=i,X.token=i,_r(`reloaded node token from ${tr}`),!0}var vc=E["log-dir"]||T(process.cwd(),".anet","nodes",F,"logs"),yb={debug:0,info:1,warn:2,error:3},hb=yb[E["log-level"]||process.env.LOG_LEVEL||X.logLevel||"info"]??1,ui=[...(Array.isArray(X.channels)?X.channels:[]).filter((r)=>!r.startsWith("server:")&&!r.startsWith("plugin:")),...N4],O4=ui.map((r)=>{try{return xb(r)}catch(i){console.error(`[agent-node] ${i.message}`),process.exit(1)}});function W4(r){if(!tr||!r)return;try{let i=JSON.parse(ei(tr,"utf-8"));if(i.session===r)return;i.session=r,tc(tr,JSON.stringify(i,null,2)+`
|
|
93
93
|
`),nr(`session 写回: ${tr} → ${r.slice(0,8)}...`)}catch(i){_r(`writebackSession failed: ${i.message}`)}}function ab(r){if(!ic(r))return;for(let i of ei(r,"utf-8").split(`
|
|
94
94
|
`)){let v=i.trim();if(!v||v.startsWith("#"))continue;let o=v.indexOf("=");if(o<=0)continue;let n=v.slice(0,o).trim(),t=v.slice(o+1).trim().replace(/^['"]|['"]$/g,"");if(!process.env[n])process.env[n]=t}}function pb(r){return T(process.cwd(),".anet","nodes",F,"channels",r)}function sb(r){let i=r.path||pb("telegram");ab(T(i,".env"));let v=process.env.TELEGRAM_BOT_TOKEN||"";if(!v)console.error(`[agent-node] telegram channel needs TELEGRAM_BOT_TOKEN in ${T(i,".env")}`),process.exit(1);try{Mb(T(i,".env"),384)}catch{}let o=zn(T(i,"access.json"))||{},n=T(i,"inbox");try{V4(n,{recursive:!0})}catch{}return{type:"telegram",dir:i,inboxDir:n,token:v,allowFrom:Array.isArray(o.allowFrom)?o.allowFrom.map(String):[]}}var dt=O4.filter((r)=>r.type==="telegram").map(sb),_4=O4.find((r)=>r.type!=="telegram");if(_4)console.error(`[agent-node] unsupported channel: ${_4.raw}`),process.exit(1);if(dt.length>0&&wn!=="codex"&&Array.isArray(Fr)&&!Fr.includes("Read"))Fr.push("Read");try{V4(vc,{recursive:!0})}catch{}function ht(r,i,v){if(i<hb)return;let o=new Date().toTimeString().slice(0,8),n=r.toUpperCase().padEnd(5),t=`[${o}] [${n}] [${F}] ${v}`;console.log(t);try{let u=new Date().toISOString().slice(0,10);rU(T(vc,`${u}.log`),t+`
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sleep2agi/agent-node",
|
|
3
|
-
"version": "2.3.
|
|
3
|
+
"version": "2.3.7",
|
|
4
4
|
"description": "AI Agent runtime for CommHub networks. Supports Claude Agent SDK, Codex SDK, and OpenAI/Anthropic-compatible HTTP API.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"agent-node": "./dist/cli.js"
|