summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDax Raad <[email protected]>2025-08-10 20:47:11 -0400
committerDax Raad <[email protected]>2025-08-10 20:47:38 -0400
commit13d3fba86bfe7c582df9297fa0a941d56aeb6a61 (patch)
tree60e696973cd67b68ab9dd0189ac64a0c44d1df44
parent3ab4f42ebb2bee72f6111b5dc253545f75a9c466 (diff)
downloadopencode-13d3fba86bfe7c582df9297fa0a941d56aeb6a61.tar.gz
opencode-13d3fba86bfe7c582df9297fa0a941d56aeb6a61.zip
switch gpt-5 to codex prompt
-rw-r--r--packages/opencode/src/plugin/index.ts5
-rw-r--r--packages/opencode/src/session/index.ts8
-rw-r--r--packages/opencode/src/session/message-v2.ts12
-rw-r--r--packages/opencode/src/session/system.ts2
4 files changed, 15 insertions, 12 deletions
diff --git a/packages/opencode/src/plugin/index.ts b/packages/opencode/src/plugin/index.ts
index 3ffa30191..bb6cc07bc 100644
--- a/packages/opencode/src/plugin/index.ts
+++ b/packages/opencode/src/plugin/index.ts
@@ -4,7 +4,8 @@ import { Config } from "../config/config"
import { Bus } from "../bus"
import { Log } from "../util/log"
import { createOpencodeClient } from "@opencode-ai/sdk"
-import { Server } from "../server/server"
+// Lazy import to avoid circular dependency with session/tool registry
+// import { Server } from "../server/server"
import { BunProc } from "../bun"
export namespace Plugin {
@@ -13,7 +14,7 @@ export namespace Plugin {
const state = App.state("plugin", async (app) => {
const client = createOpencodeClient({
baseUrl: "http://localhost:4096",
- fetch: async (...args) => Server.app().fetch(...args),
+ fetch: async (...args) => (await import("../server/server")).Server.app().fetch(...args),
})
const config = await Config.get()
const hooks = []
diff --git a/packages/opencode/src/session/index.ts b/packages/opencode/src/session/index.ts
index 3d6bf98c6..594663f91 100644
--- a/packages/opencode/src/session/index.ts
+++ b/packages/opencode/src/session/index.ts
@@ -1007,7 +1007,7 @@ export namespace Session {
async process(stream: StreamTextResult<Record<string, AITool>, never>) {
try {
let currentText: MessageV2.TextPart | undefined
- let reasoningMap: Record<string, MessageV2.ReasoningPart> = {}
+ // let reasoningMap: Record<string, MessageV2.ReasoningPart> = {}
for await (const value of stream.fullStream) {
log.info("part", {
@@ -1017,6 +1017,7 @@ export namespace Session {
case "start":
break
+ /*
case "reasoning-start":
if (value.id in reasoningMap) {
continue
@@ -1045,15 +1046,16 @@ export namespace Session {
if (value.id in reasoningMap) {
const part = reasoningMap[value.id]
part.text = part.text.trimEnd()
- part.providerMetadata = value.providerMetadata
+ part.metadata = value.providerMetadata
part.time = {
- start: Date.now(),
+ ...part.time,
end: Date.now(),
}
await updatePart(part)
delete reasoningMap[value.id]
}
break
+ */
case "tool-input-start":
const part = await updatePart({
diff --git a/packages/opencode/src/session/message-v2.ts b/packages/opencode/src/session/message-v2.ts
index a1daf9b9a..6fabd5219 100644
--- a/packages/opencode/src/session/message-v2.ts
+++ b/packages/opencode/src/session/message-v2.ts
@@ -121,13 +121,11 @@ export namespace MessageV2 {
export const ReasoningPart = PartBase.extend({
type: z.literal("reasoning"),
text: z.string(),
- providerMetadata: z.record(z.any()).optional(),
- time: z
- .object({
- start: z.number(),
- end: z.number().optional(),
- })
- .optional(),
+ metadata: z.record(z.any()).optional(),
+ time: z.object({
+ start: z.number(),
+ end: z.number().optional(),
+ }),
}).openapi({
ref: "ReasoningPart",
})
diff --git a/packages/opencode/src/session/system.ts b/packages/opencode/src/session/system.ts
index a9b167be4..ec27dc627 100644
--- a/packages/opencode/src/session/system.ts
+++ b/packages/opencode/src/session/system.ts
@@ -13,6 +13,7 @@ import PROMPT_GEMINI from "./prompt/gemini.txt"
import PROMPT_ANTHROPIC_SPOOF from "./prompt/anthropic_spoof.txt"
import PROMPT_SUMMARIZE from "./prompt/summarize.txt"
import PROMPT_TITLE from "./prompt/title.txt"
+import PROMPT_CODEX from "./prompt/codex.txt"
export namespace SystemPrompt {
export function header(providerID: string) {
@@ -20,6 +21,7 @@ export namespace SystemPrompt {
return []
}
export function provider(modelID: string) {
+ if (modelID.includes("gpt-5")) return [PROMPT_CODEX]
if (modelID.includes("gpt-") || modelID.includes("o1") || modelID.includes("o3")) return [PROMPT_BEAST]
if (modelID.includes("gemini-")) return [PROMPT_GEMINI]
if (modelID.includes("claude")) return [PROMPT_ANTHROPIC]