@vibetonomy/agent 1.5.16 → 1.5.18
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/bridge/dist/index.js +1 -1
- package/package.json +6 -6
package/bridge/dist/index.js
CHANGED
|
@@ -6,6 +6,6 @@ import{createInterface as _e}from"node:readline";import{readdir as V,readFile as
|
|
|
6
6
|
`);n.push({type:"user",message:{role:"user",content:[{type:"text",text:r}]}})},async requestHistory(r,l){let m=await J(),u=l||s.relaySessionId,p=r||s.cliSessionId;if(p&&m.getSessionMessages)try{let d=await m.getSessionMessages(p);if(d&&d.length>0)t({type:"session_history",messages:d,...u?{relaySessionId:u}:{}});else if(s.cliSessionId&&s.cliSessionId!==p){let y=await m.getSessionMessages(s.cliSessionId);y&&y.length>0&&(t({type:"session_history",messages:y,...u?{relaySessionId:u}:{}}),t({type:"session_id",cliSessionId:s.cliSessionId,...u?{relaySessionId:u}:{}}))}}catch(d){t({type:"info",text:`Could not restore session history: ${d.message}`})}f.length>0&&t({type:"model_info",model:c,models:f,...u?{relaySessionId:u}:{}}),t({type:"config_state",model:c,mode:_,effort:I,betas:[],...u?{relaySessionId:u}:{}})},pushUserMessage(r,l,m){if(m&&r&&(r=`Use SendMessage to send the following to teammate "${m}":
|
|
7
7
|
|
|
8
8
|
${r}`),r&&r.startsWith("/")){let p=r.split(/\s/)[0].toLowerCase();if(p==="/clear"){x++,o&&o.abort(),n&&n.end(),this.startSession({cwd:$,model:c||void 0,permissionMode:_||void 0}).then(()=>{t({type:"slash_command_result",command:"clear",text:"Conversation cleared."})}).catch(d=>{t({type:"error",text:`Failed to clear session: ${d.message}`})});return}if(p==="/status"){let d=["**Bridge Status**","",`**Model:** ${c||"(not set)"}`,`**Available Models:** ${f.length>0?f.map(y=>`${y.displayName} (${y.value})`).join(", "):"(none discovered yet)"}`,`**Effort:** ${I}`,`**Permission Mode:** ${_}`,`**Session Active:** ${a?"yes":"no"}`,`**CLI Session:** ${s.cliSessionId||"(none)"}`,`**Working Directory:** ${$||"(not set)"}`,"","**Raw SDK Model Data:**","```json",JSON.stringify(f,null,2),"```"];t({type:"slash_command_result",command:"status",text:d.join(`
|
|
9
|
-
`)});return}}if(!n){if($){console.error("[sdk-runner] pushUserMessage: no active stream, restarting bridge"),t({type:"info",text:"Reconnecting..."});let p=[];if(l&&l.length>0)for(let g of l)p.push({type:"image",source:{type:"base64",media_type:g.mediaType,data:g.data}});r&&p.push({type:"text",text:r});let d={type:"user",message:{role:"user",content:p}},y={cwd:$,model:c||void 0,permissionMode:_||void 0};(async()=>{try{await j.startSession({...y,...s.resumeToken?{resume:s.resumeToken}:{},initialMessage:d})}catch(g){console.error(`[sdk-runner] resume restart failed: ${g.message}, trying fresh`);try{await j.startSession({...y,initialMessage:d})}catch(h){t({type:"error",text:`Session restart failed: ${h.message}`}),t({type:"done",code:1})}}})();return}t({type:"error",text:"No active session"});return}let u=[];if(l&&l.length>0)for(let p of l)u.push({type:"image",source:{type:"base64",media_type:p.mediaType,data:p.data}});r&&u.push({type:"text",text:r}),s.isProcessing=!0,s.streamedText=!1,s.responsePreview="",s.blocks={},s.sentToolResults={},n.push({type:"user",message:{role:"user",content:u}})},interrupt(){a?.interrupt?a.interrupt().catch(()=>{o&&o.abort()}):o&&o.abort()},async setModel(r){let l=se(r,f);if(!a?.setModel){c=l,t({type:"model_info",model:l,models:f});return}try{await a.setModel(l),c=l,t({type:"model_info",model:l,models:[]}),t({type:"config_state",model:c,mode:_,effort:I,betas:[]})}catch(m){t({type:"error",text:`Failed to switch model: ${m.message}`})}},async setMode(r){if(!a?.setPermissionMode){_=r,t({type:"config_state",model:c,mode:_,effort:I,betas:[]});return}try{await a.setPermissionMode(r),_=r,t({type:"config_state",model:c,mode:_,effort:I,betas:[]})}catch(l){t({type:"error",text:`Failed to set permission mode: ${l.message}`})}},setEffort(r){["low","medium","high","max"].includes(r)||(console.warn(`[sdk-runner] Unknown effort level "${r}", defaulting to medium`),r="medium"),I=r,t({type:"config_state",model:c,mode:_,effort:I,betas:[]})},handlePermissionResponse(r,l,m){i?.handlePermissionResponse(r,l,m)},handleAskUserResponse(r,l){i?.handleAskUserResponse(r,l)},shutdown(){a?.close?a.close():o&&o.abort(),n&&n.end()}};return j}function E(t){let e=JSON.stringify(t);process.stdout.write(e+`
|
|
9
|
+
`)});return}}if(!n){if($){console.error("[sdk-runner] pushUserMessage: no active stream, restarting bridge"),t({type:"info",text:"Reconnecting..."});let p=[];if(l&&l.length>0)for(let g of l)p.push({type:"image",source:{type:"base64",media_type:g.mediaType,data:g.data}});r&&p.push({type:"text",text:r});let d={type:"user",message:{role:"user",content:p}},y={cwd:$,model:c||void 0,permissionMode:_||void 0};(async()=>{try{await j.startSession({...y,...s.resumeToken?{resume:s.resumeToken}:{},initialMessage:d})}catch(g){console.error(`[sdk-runner] resume restart failed: ${g.message}, trying fresh`);try{await j.startSession({...y,initialMessage:d})}catch(h){t({type:"error",text:`Session restart failed: ${h.message}`}),t({type:"done",code:1})}}})();return}t({type:"error",text:"No active session"});return}let u=[];if(l&&l.length>0)for(let p of l)u.push({type:"image",source:{type:"base64",media_type:p.mediaType,data:p.data}});r&&u.push({type:"text",text:r}),r&&t({type:"user_message",text:r}),s.isProcessing=!0,s.streamedText=!1,s.responsePreview="",s.blocks={},s.sentToolResults={},n.push({type:"user",message:{role:"user",content:u}})},interrupt(){a?.interrupt?a.interrupt().catch(()=>{o&&o.abort()}):o&&o.abort()},async setModel(r){let l=se(r,f);if(!a?.setModel){c=l,t({type:"model_info",model:l,models:f});return}try{await a.setModel(l),c=l,t({type:"model_info",model:l,models:[]}),t({type:"config_state",model:c,mode:_,effort:I,betas:[]})}catch(m){t({type:"error",text:`Failed to switch model: ${m.message}`})}},async setMode(r){if(!a?.setPermissionMode){_=r,t({type:"config_state",model:c,mode:_,effort:I,betas:[]});return}try{await a.setPermissionMode(r),_=r,t({type:"config_state",model:c,mode:_,effort:I,betas:[]})}catch(l){t({type:"error",text:`Failed to set permission mode: ${l.message}`})}},setEffort(r){["low","medium","high","max"].includes(r)||(console.warn(`[sdk-runner] Unknown effort level "${r}", defaulting to medium`),r="medium"),I=r,t({type:"config_state",model:c,mode:_,effort:I,betas:[]})},handlePermissionResponse(r,l,m){i?.handlePermissionResponse(r,l,m)},handleAskUserResponse(r,l){i?.handleAskUserResponse(r,l)},shutdown(){a?.close?a.close():o&&o.abort(),n&&n.end()}};return j}function E(t){let e=JSON.stringify(t);process.stdout.write(e+`
|
|
10
10
|
`)}function w(t,e,n){let a={level:t,message:e,ts:new Date().toISOString(),...n};process.stderr.write(JSON.stringify(a)+`
|
|
11
11
|
`)}var M=te(E),oe=_e({input:process.stdin,crlfDelay:1/0});oe.on("line",async t=>{if(!t.trim())return;let e;try{e=JSON.parse(t)}catch{w("error","Failed to parse inbound message",{raw:t.slice(0,200)});return}try{switch(e.type){case"start_session":w("info","Starting session",{cwd:e.cwd,model:e.model});try{await M.startSession({cwd:e.cwd,model:e.model,permissionMode:e.permissionMode,resume:e.resume,relaySessionId:e.relaySessionId}),E({type:"session_ready"})}catch(n){E({type:"session_ready",error:String(n)})}break;case"user_message":w("info","User message received",{textLength:e.text?.length??0,targetAgentId:e.targetAgentId}),M.pushUserMessage(e.text,e.images,e.targetAgentId);break;case"interrupt":w("info","Interrupt requested"),M.interrupt();break;case"permission_response":w("info","Permission response",{requestId:e.requestId,decision:e.decision}),M.handlePermissionResponse(e.requestId,e.decision,e.allowForSession);break;case"ask_user_response":w("info","Ask user response",{toolId:e.toolId}),M.handleAskUserResponse(e.toolId,e.answers);break;case"set_model":w("info","Set model",{model:e.model}),await M.setModel(e.model);break;case"set_mode":w("info","Set mode",{mode:e.mode}),await M.setMode(e.mode);break;case"set_effort":w("info","Set effort",{effort:e.effort}),M.setEffort(e.effort);break;case"activate_agent_mode":w("info","Activate agent mode requested"),M.activateAgentMode();break;case"request_history":w("info","History request",{resume:e.resume}),await M.requestHistory(e.resume,e.relaySessionId);break;case"ping":E({type:"pong"});break;case"shutdown":w("info","Shutdown requested"),M.shutdown(),setTimeout(()=>process.exit(0),500);break;default:w("warn","Unknown message type",{type:e.type})}}catch(n){let a=n;w("error",`Error handling message type=${e.type}`,{error:a.message}),E({type:"error",text:`Internal bridge error: ${a.message}`})}});oe.on("close",()=>{w("info","stdin closed, shutting down"),M.shutdown(),setTimeout(()=>process.exit(0),500)});process.on("uncaughtException",t=>{w("error","Uncaught exception",{error:t.message,stack:t.stack}),E({type:"error",text:`Bridge crash: ${t.message}`}),E({type:"done",code:1}),process.exit(1)});process.on("unhandledRejection",t=>{let e=t instanceof Error?t.message:String(t);w("error","Unhandled rejection",{error:e})});E({type:"ready"});w("info","SDK bridge ready");
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vibetonomy/agent",
|
|
3
|
-
"version": "1.5.
|
|
3
|
+
"version": "1.5.18",
|
|
4
4
|
"description": "Vibetonomy agent — managed Claude Code sessions via npx",
|
|
5
5
|
"license": "UNLICENSED",
|
|
6
6
|
"type": "module",
|
|
@@ -15,11 +15,11 @@
|
|
|
15
15
|
"@anthropic-ai/claude-agent-sdk": "0.2.87"
|
|
16
16
|
},
|
|
17
17
|
"optionalDependencies": {
|
|
18
|
-
"@vibetonomy/agent-linux-x64": "1.5.
|
|
19
|
-
"@vibetonomy/agent-linux-arm64": "1.5.
|
|
20
|
-
"@vibetonomy/agent-darwin-arm64": "1.5.
|
|
21
|
-
"@vibetonomy/agent-darwin-x64": "1.5.
|
|
22
|
-
"@vibetonomy/agent-win-x64": "1.5.
|
|
18
|
+
"@vibetonomy/agent-linux-x64": "1.5.18",
|
|
19
|
+
"@vibetonomy/agent-linux-arm64": "1.5.18",
|
|
20
|
+
"@vibetonomy/agent-darwin-arm64": "1.5.18",
|
|
21
|
+
"@vibetonomy/agent-darwin-x64": "1.5.18",
|
|
22
|
+
"@vibetonomy/agent-win-x64": "1.5.18"
|
|
23
23
|
},
|
|
24
24
|
"engines": {
|
|
25
25
|
"node": ">=18.0.0"
|