Skip to content

Trying to find the sub-agent in oh-my-opeagent, failing to find it, and failing to compact #55

@howardcheung

Description

@howardcheung

Short description

Failing to compact to locate an non-existing sub-agent file in oh-my-openagent

What happened?

My magic-context in OpenCode (which uses oh-my-openagent) never finishes compacting. When OpenCode terminated, it shows the following error often:

2059 | NOTE: At any point in time through this workflow you should feel free to ask the user questions or clarifications. Don't make large assumptions about user intent. The goal is to present a well researched plan to the user, and tie any loose ends before implementation begins.
2060 | ,synthetic:!0});return C.parts.push(ho),Y.messages}),b=n.fn("SessionPrompt.resolveTools")(function*(Y){let ho=[];try{const C=xh(ho,bt.time("resolveTools"),0);let H={};let Yo=yield*Z();let oo=yield*V();let So=(fo,Oo)=>({sessionID:Y.session.id,abort:Oo.abortSignal,messageID:Y.processor.message.id,callID:Oo.toolCallId,extra:{model:Y.model,bypassAgentCheck:Y.bypassAgentCheck,promptOps:oo},agent:Y.agent.name,messages:Y.messages,metadata:(no)=>Y.processor.updateToolCall(Oo.toolCallId,(qo)=>{if(!["running","pending"].includes(qo.state.status))return qo;return{...qo,state:{title:no.title,metadata:no.metadata,status:"running",input:fo,time:{start:Date.now()}}}}),ask:(no)=>w.ask({...no,sessionID:Y.session.id,tool:{messageID:Y.processor.message.id,callID:Oo.toolCallId},ruleset:po.merge(Y.agent.permission,Y.session.permission??[])}).pipe(n.orDie)});for(let fo of yield*u.tools({modelID:Mt.make(Y.model.api.id),providerID:Y.model.providerID,agent:Y.agent})){let Oo=je.schema(Y.model,fl(fo.parameters));H[fo | ... truncated 2061 | 2062 | ),{},Y.agent),Do={title:"",metadata:{...ie.metadata,truncated:to.truncated,...to.truncated&&{outputPath:to.outputPath}},output:to.content,attachments:v.map((Go)=>({...Go,id:Mo.ascending(),sessionID:x.sessionID,messageID:Y.processor.message.id})),content:ie.content};if(yo.abortSignal?.aborted)yieldY.processor.completeToolCall(yo.toolCallId,Do);return Do})),H[fo]=Oo}return H}catch(F){var Vo=F,_o=1}finally{Mh(ho,Vo,_o)}}),X=n.fn("SessionPrompt.handleSubtask")(function(Y){let{task:C,model:H,lastUser:Yo,sessionID:oo,session:So,msgs:ho}=Y,F=yield*_.context,Vo=yieldV(),{task:_o}=yieldu.named(),fo=C.model?yieldL(C.model.providerID,C.model.modelID,oo):H,Oo=yields.updateMessage({id:re.ascending(),role:"assistant",parentID:Yo.id,sessionID:oo,mode:C.agent,agent:C.agent,variant:Yo.model.variant,path:{cwd:F.directory,root:F.worktree},cost:0,tokens:{input:0,output:0,reasoning:0,cache:{read:0,write:0}},modelID:fo.id,providerID:fo.providerID,time:{created:Date.now()}}),no=yields.updatePart({id:Mo.ascending(),messageID | ... truncated
2063 |
2064 | `);let J=Date.now();if(ao.run(se.Shell.Ended.Sync,{sessionID:Y.sessionID,timestamp:ye(J),callID:So.callID,output:fo}),!oo.time.completed)oo.time.completed=J,yield
s.updateMessage(oo);if(So.state.status==="running")So.state={status:"completed",time:{...So.state.time,end:J},input:So.state.input,title:"",metadata:{output:fo,description:""},output:fo},yields.updatePart(So)})),qo=yieldH(n.gen(function*(){let J=yieldd.trigger("shell.env",{cwd:ho,sessionID:Y.sessionID,callID:So.callID},{env:{}}),E=qr.make(Vo,_o,{cwd:ho,extendEnv:!0,env:{...J.env,TERM:"dumb"},stdin:"ignore",forceKillAfter:"3 seconds"}),yo=yieldW.spawn(E);yieldhl(nl(yo.all),(x)=>n.gen(function(){if(fo+=x,So.state.status==="running")So.state.metadata={output:fo,description:""},yields.updatePart(So)})),yieldyo.exitCode}).pipe(n.scoped,n.orDie)).pipe(n.exit);if(Ys.isFailure(qo)&&me.hasInterrupts(qo.cause)&&!me.hasDies(qo.cause))Oo=!0;if(yieldno,Ys.isFailure(qo)&&!Oo&&!me.hasInterruptsOnly(qo.cause))return yieldn.failCause(qo.cause);return{info: | ... truncated

UnknownError: UnknownError
data: {
message: "Agent not found: "​Sisyphus - Ultraworker". Available agents: build, doc-updater, explore, general, historian, plan, planner, python-reviewer, security-reviewer, translator",
},

It seems that it's trying to locate the agent file of oh-my-openagent that doesn't exist, and thus failing to finish the compaction.

Diagnostics

2059 | NOTE: At any point in time through this workflow you should feel free to ask the user questions or clarifications. Don't make large assumptions about user intent. The goal is to present a well researched plan to the user, and tie any loose ends before implementation begins.
2060 | </system-reminder>`,synthetic:!0});return C.parts.push(ho),Y.messages}),b=n.fn("SessionPrompt.resolveTools")(function*(Y){let ho=[];try{const C=xh(ho,bt.time("resolveTools"),0);let H={};let Yo=yield*Z();let oo=yield*V();let So=(fo,Oo)=>({sessionID:Y.session.id,abort:Oo.abortSignal,messageID:Y.processor.message.id,callID:Oo.toolCallId,extra:{model:Y.model,bypassAgentCheck:Y.bypassAgentCheck,promptOps:oo},agent:Y.agent.name,messages:Y.messages,metadata:(no)=>Y.processor.updateToolCall(Oo.toolCallId,(qo)=>{if(!["running","pending"].includes(qo.state.status))return qo;return{...qo,state:{title:no.title,metadata:no.metadata,status:"running",input:fo,time:{start:Date.now()}}}}),ask:(no)=>w.ask({...no,sessionID:Y.session.id,tool:{messageID:Y.processor.message.id,callID:Oo.toolCallId},ruleset:po.merge(Y.agent.permission,Y.session.permission??[])}).pipe(n.orDie)});for(let fo of yield*u.tools({modelID:Mt.make(Y.model.api.id),providerID:Y.model.providerID,agent:Y.agent})){let Oo=je.schema(Y.model,fl(fo.parameters));H[fo | ... truncated
2061 |
2062 | `),{},Y.agent),Do={title:"",metadata:{...ie.metadata,truncated:to.truncated,...to.truncated&&{outputPath:to.outputPath}},output:to.content,attachments:v.map((Go)=>({...Go,id:Mo.ascending(),sessionID:x.sessionID,messageID:Y.processor.message.id})),content:ie.content};if(yo.abortSignal?.aborted)yield*Y.processor.completeToolCall(yo.toolCallId,Do);return Do})),H[fo]=Oo}return H}catch(F){var Vo=F,_o=1}finally{Mh(ho,Vo,_o)}}),X=n.fn("SessionPrompt.handleSubtask")(function*(Y){let{task:C,model:H,lastUser:Yo,sessionID:oo,session:So,msgs:ho}=Y,F=yield*_.context,Vo=yield*V(),{task:_o}=yield*u.named(),fo=C.model?yield*L(C.model.providerID,C.model.modelID,oo):H,Oo=yield*s.updateMessage({id:re.ascending(),role:"assistant",parentID:Yo.id,sessionID:oo,mode:C.agent,agent:C.agent,variant:Yo.model.variant,path:{cwd:F.directory,root:F.worktree},cost:0,tokens:{input:0,output:0,reasoning:0,cache:{read:0,write:0}},modelID:fo.id,providerID:fo.providerID,time:{created:Date.now()}}),no=yield*s.updatePart({id:Mo.ascending(),messageID | ... truncated
2063 |
2064 | `);let J=Date.now();if(ao.run(se.Shell.Ended.Sync,{sessionID:Y.sessionID,timestamp:ye(J),callID:So.callID,output:fo}),!oo.time.completed)oo.time.completed=J,yield*s.updateMessage(oo);if(So.state.status==="running")So.state={status:"completed",time:{...So.state.time,end:J},input:So.state.input,title:"",metadata:{output:fo,description:""},output:fo},yield*s.updatePart(So)})),qo=yield*H(n.gen(function*(){let J=yield*d.trigger("shell.env",{cwd:ho,sessionID:Y.sessionID,callID:So.callID},{env:{}}),E=qr.make(Vo,_o,{cwd:ho,extendEnv:!0,env:{...J.env,TERM:"dumb"},stdin:"ignore",forceKillAfter:"3 seconds"}),yo=yield*W.spawn(E);yield*hl(nl(yo.all),(x)=>n.gen(function*(){if(fo+=x,So.state.status==="running")So.state.metadata={output:fo,description:""},yield*s.updatePart(So)})),yield*yo.exitCode}).pipe(n.scoped,n.orDie)).pipe(n.exit);if(Ys.isFailure(qo)&&me.hasInterrupts(qo.cause)&&!me.hasDies(qo.cause))Oo=!0;if(yield*no,Ys.isFailure(qo)&&!Oo&&!me.hasInterruptsOnly(qo.cause))return yield*n.failCause(qo.cause);return{info: | ... truncated

UnknownError: UnknownError
 data: {
  message: "Agent not found: \"​Sisyphus - Ultraworker\". Available agents: build, doc-updater, explore, general, historian, plan, planner, python-reviewer, security-reviewer, translator",
},

Plugin version

0.14.1

OpenCode version

1.14.39

Platform

WSL in Windows

Client

OpenCode TUI (CLI)

Log output (optional)

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions