add ACP shim for communication with agents in substrate#2049
Conversation
|
Warning Testing pausedMonthly snapshot limit reached. Update your plan for additional snapshots and to resume testing. |
653c39e to
6a4466d
Compare
6a4466d to
f826a5b
Compare
f826a5b to
534b029
Compare
EItanya
left a comment
There was a problem hiding this comment.
A couple of questions for a first pass
e3e34e4 to
563d69c
Compare
jmhbh
left a comment
There was a problem hiding this comment.
look good to me so far (I'm around hafway through). Posting intial comments and will continue reviewing
| if [ -f "${PIDFILE}" ] && kill -0 "$(cat "${PIDFILE}" 2>/dev/null)" 2>/dev/null; then | ||
| log "gateway already running (pid $(cat "${PIDFILE}" 2>/dev/null)); nothing to do" | ||
| exit 0 | ||
| fi |
There was a problem hiding this comment.
this makes sense, but feels a bit hacky. Ideally we could perform the necessary cleanup right before a suspend operation but I understand we might want to iterate on this.
There was a problem hiding this comment.
yeah, in general we'll have to figure out how do we deal with the openclaw/hermes gateways -- they are launched and there mostly for the Telegram/Slack connections to work.
There was a problem hiding this comment.
Long term I think we'll have to take over connectors for all agents in our system FWIW
| // actor, then waits for it to be reachable via atenet-router. The sessionID | ||
| // identifies the chat for logging only; chats are multiplexed as ACP sessions | ||
| // inside the one actor, so they all resolve to the same ActorID(ah). | ||
| func (b *AgentHarnessSessionActorBackend) EnsureSessionActor(ctx context.Context, ah *v1alpha2.AgentHarness, sessionID string) (sandboxbackend.EnsureResult, error) { |
There was a problem hiding this comment.
curious, is the acp shim's child process stateful? AFAICT we are only managing the gateway connection to the backend type so this may not be relevant but the reason I'm asking is because if the child process maintains state that pertains to a specific session multiplexing on the actor like this could leak that state to potentially irrelevant sessions.
There was a problem hiding this comment.
the session specific state shouldn't leak across other sessions; however, the things that are per-actor -- e.g. skills or tools -- those will be (and should be) available across sessions.
d014ce3 to
1f68ad1
Compare
1932d5b to
d955684
Compare
openshell and agent-sandbox Signed-off-by: Peter Jausovec <peter.jausovec@solo.io> remove openshell and agent-sandbox; add hermes and openclaw to substrate Signed-off-by: Peter Jausovec <peter.jausovec@solo.io>
…agentharness) Signed-off-by: Peter Jausovec <peter.jausovec@solo.io>
Signed-off-by: Peter Jausovec <peter.jausovec@solo.io>
Signed-off-by: Peter Jausovec <peter.jausovec@solo.io>
Signed-off-by: Peter Jausovec <peter.jausovec@solo.io>
d955684 to
26917ca
Compare
Signed-off-by: Peter Jausovec <peter.jausovec@solo.io>
Signed-off-by: Peter Jausovec <peter.jausovec@solo.io>
Signed-off-by: Peter Jausovec <peter.jausovec@solo.io>
Signed-off-by: Peter Jausovec <peter.jausovec@solo.io>
636cc0d to
c60a247
Compare
Adds an ACP shim that runs inside the base images for openclaw/hermes on substrate. this allows us to re-use the websocket connection to the substrate actor (shim) and the shim does the translation from ws -> stdio. Both opencalw and hermes support the ACP protocol.
I've also removed the openshell and agent-sandbox from the templates/code as substrate is the thing we'll go with.