Skip to content

Commit 1989704

Browse files
feat(acp): Add messageID and emit user_message_chunk on prompt/command (anomalyco#18625)
Co-authored-by: Aiden Cline <63023139+rekram1-node@users.noreply.github.com>
1 parent f0a9ebf commit 1989704

5 files changed

Lines changed: 27 additions & 5 deletions

File tree

bun.lock

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/opencode/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@
6969
"dependencies": {
7070
"@actions/core": "1.11.1",
7171
"@actions/github": "6.0.1",
72-
"@agentclientprotocol/sdk": "0.14.1",
72+
"@agentclientprotocol/sdk": "0.16.1",
7373
"@ai-sdk/amazon-bedrock": "4.0.83",
7474
"@ai-sdk/anthropic": "3.0.64",
7575
"@ai-sdk/azure": "3.0.49",

packages/opencode/src/acp/agent.ts

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -449,6 +449,19 @@ export namespace ACP {
449449
return
450450
}
451451
}
452+
if (part.type !== "text" && part.type !== "file") return
453+
const msg = await this.sdk.session
454+
.message(
455+
{ sessionID: part.sessionID, messageID: part.messageID, directory: session.cwd },
456+
{ throwOnError: true },
457+
)
458+
.then((x) => x.data)
459+
.catch((err) => {
460+
log.error("failed to fetch message for user chunk", { error: err })
461+
return undefined
462+
})
463+
if (!msg || msg.info.role !== "user") return
464+
await this.processMessage({ info: msg.info, parts: [part] })
452465
return
453466
}
454467

@@ -484,6 +497,7 @@ export namespace ACP {
484497
sessionId,
485498
update: {
486499
sessionUpdate: "agent_message_chunk",
500+
messageId: props.messageID,
487501
content: {
488502
type: "text",
489503
text: props.delta,
@@ -502,6 +516,7 @@ export namespace ACP {
502516
sessionId,
503517
update: {
504518
sessionUpdate: "agent_thought_chunk",
519+
messageId: props.messageID,
505520
content: {
506521
type: "text",
507522
text: props.delta,
@@ -666,7 +681,7 @@ export namespace ACP {
666681
}
667682
}
668683

669-
async unstable_listSessions(params: ListSessionsRequest): Promise<ListSessionsResponse> {
684+
async listSessions(params: ListSessionsRequest): Promise<ListSessionsResponse> {
670685
try {
671686
const cursor = params.cursor ? Number(params.cursor) : undefined
672687
const limit = 100
@@ -970,6 +985,7 @@ export namespace ACP {
970985
sessionId,
971986
update: {
972987
sessionUpdate: message.info.role === "user" ? "user_message_chunk" : "agent_message_chunk",
988+
messageId: message.info.id,
973989
content: {
974990
type: "text",
975991
text: part.text,
@@ -1001,6 +1017,7 @@ export namespace ACP {
10011017
sessionId,
10021018
update: {
10031019
sessionUpdate: messageChunk,
1020+
messageId: message.info.id,
10041021
content: { type: "resource_link", uri: url, name: filename, mimeType: mime },
10051022
},
10061023
})
@@ -1022,6 +1039,7 @@ export namespace ACP {
10221039
sessionId,
10231040
update: {
10241041
sessionUpdate: messageChunk,
1042+
messageId: message.info.id,
10251043
content: {
10261044
type: "image",
10271045
mimeType: effectiveMime,
@@ -1050,6 +1068,7 @@ export namespace ACP {
10501068
sessionId,
10511069
update: {
10521070
sessionUpdate: messageChunk,
1071+
messageId: message.info.id,
10531072
content: { type: "resource", resource },
10541073
},
10551074
})
@@ -1066,6 +1085,7 @@ export namespace ACP {
10661085
sessionId,
10671086
update: {
10681087
sessionUpdate: "agent_thought_chunk",
1088+
messageId: message.info.id,
10691089
content: {
10701090
type: "text",
10711091
text: part.text,

packages/opencode/src/provider/models-snapshot.ts

Lines changed: 2 additions & 0 deletions
Large diffs are not rendered by default.

packages/opencode/test/acp/agent-interface.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ describe("acp.agent interface compliance", () => {
3535
"setSessionMode",
3636
"authenticate",
3737
// Unstable - SDK checks these with unstable_ prefix
38-
"unstable_listSessions",
38+
"listSessions",
3939
"unstable_forkSession",
4040
"unstable_resumeSession",
4141
"unstable_setSessionModel",

0 commit comments

Comments
 (0)