summaryrefslogtreecommitdiffhomepage
path: root/packages/function
diff options
context:
space:
mode:
authorDax <[email protected]>2025-07-13 17:22:11 -0400
committerGitHub <[email protected]>2025-07-13 17:22:11 -0400
commit90d6c4ab41bb097d7db354109e3616ff16778f0b (patch)
tree303861ce5789f6e0e8e843cb8184dea829b4885d /packages/function
parent736396fc70ab05204b886634ffbcd1318d82eca8 (diff)
downloadopencode-90d6c4ab41bb097d7db354109e3616ff16778f0b.tar.gz
opencode-90d6c4ab41bb097d7db354109e3616ff16778f0b.zip
Part data model (#950)
Diffstat (limited to 'packages/function')
-rw-r--r--packages/function/src/api.ts17
1 files changed, 13 insertions, 4 deletions
diff --git a/packages/function/src/api.ts b/packages/function/src/api.ts
index 150afd887..c5ac8b4a4 100644
--- a/packages/function/src/api.ts
+++ b/packages/function/src/api.ts
@@ -42,7 +42,11 @@ export class SyncServer extends DurableObject<Env> {
async publish(key: string, content: any) {
const sessionID = await this.getSessionID()
- if (!key.startsWith(`session/info/${sessionID}`) && !key.startsWith(`session/message/${sessionID}/`))
+ if (
+ !key.startsWith(`session/info/${sessionID}`) &&
+ !key.startsWith(`session/message/${sessionID}/`) &&
+ !key.startsWith(`session/part/${sessionID}/`)
+ )
return new Response("Error: Invalid key", { status: 400 })
// store message
@@ -71,7 +75,7 @@ export class SyncServer extends DurableObject<Env> {
}
public async getData() {
- const data = await this.ctx.storage.list()
+ const data = (await this.ctx.storage.list()) as Map<string, any>
return Array.from(data.entries())
.filter(([key, _]) => key.startsWith("session/"))
.map(([key, content]) => ({ key, content }))
@@ -207,8 +211,13 @@ export default {
return
}
if (type === "message") {
- const [, messageID] = splits
- messages[messageID] = d.content
+ messages[d.content.id] = {
+ parts: [],
+ ...d.content,
+ }
+ }
+ if (type === "part") {
+ messages[d.content.messageID].parts.push(d.content)
}
})