@swifty.js/swifty 0.0.3-alpha → 0.0.3
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/glob_addon.node +0 -0
- package/dist/main.js +225 -230
- package/dist/{server-BK5ZG2JS.js → server-BHJVCZVP.js} +1 -1
- package/package.json +2 -2
|
@@ -37,7 +37,7 @@ ${o.join(`
|
|
|
37
37
|
`)}`}})}}this.broadcast({type:"command_done",data:null});break}case"sandbox":this.broadcast({type:"system",data:{message:"Sandbox toggle is not yet supported in remote mode."}}),this.broadcast({type:"command_done",data:null});break;case"worktree":this.broadcast({type:"system",data:{message:"Worktree management is not yet supported in remote mode."}}),this.broadcast({type:"command_done",data:null});break;default:this.broadcast({type:"command_done",data:null});break}}buildCommandContext(a){let i=this.agentHandle;return i?{workDir:i.workDir,args:a,permissionMode:()=>"default",tokenCount:()=>[0,0],toolCount:()=>i.registry.listTools().length,memoryList:()=>i.memoryManager.getMemories().map(n=>n.name),model:i.provider.model}:{workDir:ae(),args:a,model:""}}async handleCompact(){if(!this.agentHandle)return;let a=this.agentHandle;this.broadcast({type:"system",data:{message:"Compacting conversation..."}});try{let i=a.registry.listTools().map(o=>o.name),n=a.registry.getAllSchemas(),s=await Ya(a.conv,a.client,a.recoveryState,i,n,Xa(a.workDir,a.sessionId));this.broadcast({type:"system",data:{message:`Compacted: ${s.message}`}}),s.boundary&&De(a.workDir,a.sessionId,s.boundary)}catch(i){this.broadcast({type:"error",data:{message:i instanceof Error?i.message:String(i)}})}this.broadcast({type:"command_done",data:null})}async handlePlan(a){if(!this.agentHandle)return;let i=this.agentHandle,n=i.workDir,s=si(n);if(this.broadcast({type:"system",data:{message:`Entered Plan mode. Plan file: ${s}
|
|
38
38
|
Explore the codebase and design your approach.`}}),a){this.streaming=!0,oe(n,i.sessionId,{role:"user",content:`/plan ${a}`,timestamp:Math.floor(Date.now()/1e3)});let o=Date.now();try{let t={onPermissionRequest:this.createPermissionCallback()},r="";for await(let c of i.run(a,t))(c.type==="tool_result"||c.type==="turn_complete"||c.type==="loop_complete")&&r&&(this.broadcast({type:"stream_end",data:{text:r}}),r=""),this.bridgeEvent(c,o,n,i.sessionId,p=>{r+=p})}catch(t){T.error({err:t},"agent stream error in plan command"),this.broadcast({type:"error",data:{message:t instanceof Error?t.message:String(t)}})}finally{this.streaming=!1}}else this.broadcast({type:"command_done",data:null})}handleResume(a){if(!this.agentHandle)return;let i=this.agentHandle,n=i.workDir,s=te(n);if(!a){if(s.length===0){this.broadcast({type:"system",data:{message:"No previous sessions found."}}),this.broadcast({type:"command_done",data:null});return}let p=[`Available sessions (${String(s.length)}):
|
|
39
39
|
`];for(let m=0;m<Math.min(s.length,20);m++){let u=s[m],d=u.firstMessage;d.length>60&&(d=d.slice(0,60)+"..."),p.push(` ${String(m+1)}. [${u.id}] ${d} (${String(u.messageCount)} msgs)`)}s.length>20&&p.push(` ... and ${String(s.length-20)} more`),p.push(`
|
|
40
|
-
Usage: /resume <number> or /resume <
|
|
40
|
+
Usage: /resume <number> or /resume <sess-id>`),this.broadcast({type:"system",data:{message:p.join(`
|
|
41
41
|
`)}}),this.broadcast({type:"command_done",data:null});return}let o=a.trim(),t=parseInt(o,10);!Number.isNaN(t)&&t>=1&&t<=s.length&&(o=s[t-1].id);let r=Wa(n,o);if(r.length===0){this.broadcast({type:"error",data:{message:`Session '${o}' not found or empty.`}}),this.broadcast({type:"command_done",data:null});return}i.conv=new L,i.sessionId=o;let c=Za(r);this.broadcast({type:"clear",data:null});for(let p of c)p.toolUses?.length?i.conv.addAssistantMessageWithTools(p.content,p.toolUses.map(m=>({...m,arguments:m.arguments??{}}))):p.toolResults?.length?i.conv.addToolResultsMessage(p.toolResults.map(m=>({...m,isError:m.isError??!1}))):p.role==="user"?i.conv.addUserMessage(p.content):i.conv.addAssistantMessage(p.content),p.content&&(p.role==="user"?this.broadcast({type:"replay_user",data:{content:p.content}}):this.broadcast({type:"replay_assistant",data:{content:p.content}}));this.broadcast({type:"system",data:{message:`Session ${o} restored (${String(c.length)} messages).`}}),this.broadcast({type:"command_done",data:null})}createAskUserCallback(){return async a=>{let i=`ask_${Date.now().toString(36)}`;return this.broadcast({type:"ask_user",data:{id:i,questions:a}}),new Promise(n=>{this.pendingAsks.set(i,n)})}}createPermissionCallback(){return async(a,i,n)=>{let s=`perm_${Date.now().toString(36)}`,o=nt(a,i,n);return this.broadcast({type:"permission_request",data:{id:s,toolName:a,description:o}}),new Promise(t=>{this.pendingPermissions.set(s,t)})}}buildCommandList(){return this.agentHandle?this.agentHandle.cmdRegistry.listCommands().map(a=>({name:a.name,description:a.description})):Ge().listCommands().map(i=>({name:i.name,description:i.description}))}send(a,i){if(a.readyState===Ue.default.OPEN)try{a.send(JSON.stringify(i))}catch{}}broadcast(a){if(this.clients.size===0)return;let i=JSON.stringify(a);for(let n of this.clients)if(n.readyState===Ue.default.OPEN)try{n.send(i)}catch{}}async run(){try{this.agentHandle=await it({provider:this.opts.providers[0],workDir:ae(),hooks:this.opts.hookConfigs,mcpServers:this.opts.mcpServers,askUser:this.createAskUserCallback(),enableCoordinatorMode:this.opts.enableCoordinatorMode,forkDisabled:this.opts.forkDisabled}),T.info({sessionId:this.agentHandle.sessionId},"agent initialized")}catch(s){T.warn({err:s},"agent init deferred -- will retry on first message"),this.agentHandle=null}let a=this.opts.addr.split(":"),i=a[0]||"0.0.0.0",n=parseInt(a[1]??"18888",10);return new Promise((s,o)=>{this.server.on("error",o),this.server.listen(n,i,()=>{T.info({host:i,port:n},"Koa server listening"),T.info({host:i,port:n},"WebSocket server ready"),s()})})}stop(){for(let a of this.clients)a.close();this.clients.clear(),this.wss.close(),this.server.close()}};export{st as RemoteServer,it as createRemoteAgent};
|
|
42
42
|
/*! Bundled license information:
|
|
43
43
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@swifty.js/swifty",
|
|
3
|
-
"version": "0.0.3
|
|
3
|
+
"version": "0.0.3",
|
|
4
4
|
"description": "Swifty — CLI coding agent",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ai",
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"scripts": {
|
|
37
37
|
"fe:dev": "cd src/remote/fe && tsup --watch",
|
|
38
38
|
"fe:build": "cd src/remote/fe && tsup",
|
|
39
|
-
"fe:preview": "
|
|
39
|
+
"fe:preview": "pnpm dlx serve src/remote/fe/dist",
|
|
40
40
|
"dev": "tsx ./src/main.tsx",
|
|
41
41
|
"build": "tsup",
|
|
42
42
|
"lint": "eslint ./src ./tests",
|