Просмотр исходного кода

Refactor session module structure and improve error handling

- Rename session.ts to index.ts for cleaner module imports
- Update all imports to use new session module structure
- Add error metadata tracking to message schema
- Improve error handling in session stream processing

🤖 Generated with [OpenCode](https://opencode.ai)

Co-Authored-By: OpenCode <[email protected]>
Dax Raad 8 месяцев назад
Родитель
Сommit
7f8f46f9fe

+ 1 - 1
packages/opencode/src/index.ts

@@ -4,7 +4,7 @@ import { Server } from "./server/server"
 import fs from "fs/promises"
 import path from "path"
 import { Bus } from "./bus"
-import { Session } from "./session/session"
+import { Session } from "./session"
 import cac from "cac"
 import { Share } from "./share/share"
 import { Message } from "./session/message"

+ 1 - 1
packages/opencode/src/server/server.ts

@@ -3,7 +3,7 @@ import { Bus } from "../bus"
 import { describeRoute, generateSpecs, openAPISpecs } from "hono-openapi"
 import { Hono } from "hono"
 import { streamSSE } from "hono/streaming"
-import { Session } from "../session/session"
+import { Session } from "../session"
 import { resolver, validator as zValidator } from "hono-openapi/zod"
 import { z } from "zod"
 import { Message } from "../session/message"

+ 3 - 5
packages/opencode/src/session/session.ts → packages/opencode/src/session/index.ts

@@ -398,11 +398,9 @@ ${app.git ? await ListTool.execute({ path: app.path.cwd }, { sessionID: input.se
     let text: Message.TextPart | undefined
     const reader = result.toUIMessageStream().getReader()
     while (true) {
-      const result = await reader.read().catch((e) => {
-        if (e instanceof DOMException && e.name === "AbortError") {
-          return
-        }
-        throw e
+      const result = await reader.read().catch(async (e) => {
+        console.log(e)
+        next.metadata.error = e.name
       })
       if (!result) break
       const { done, value } = result

+ 1 - 0
packages/opencode/src/session/message.ts

@@ -138,6 +138,7 @@ export namespace Message {
           created: z.number(),
           completed: z.number().optional(),
         }),
+        error: z.string().optional(),
         sessionID: z.string(),
         tool: z.record(z.string(), z.any()),
         assistant: z

+ 1 - 1
packages/opencode/src/share/share.ts

@@ -1,6 +1,6 @@
 import { App } from "../app/app"
 import { Bus } from "../bus"
-import { Session } from "../session/session"
+import { Session } from "../session"
 import { Storage } from "../storage/storage"
 import { Log } from "../util/log"