switch gpt-5 to codex prompt

This commit is contained in:
Dax Raad
2025-08-10 20:47:11 -04:00
parent 3ab4f42ebb
commit 13d3fba86b
4 changed files with 15 additions and 12 deletions

View File

@@ -4,7 +4,8 @@ import { Config } from "../config/config"
import { Bus } from "../bus" import { Bus } from "../bus"
import { Log } from "../util/log" import { Log } from "../util/log"
import { createOpencodeClient } from "@opencode-ai/sdk" 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" import { BunProc } from "../bun"
export namespace Plugin { export namespace Plugin {
@@ -13,7 +14,7 @@ export namespace Plugin {
const state = App.state("plugin", async (app) => { const state = App.state("plugin", async (app) => {
const client = createOpencodeClient({ const client = createOpencodeClient({
baseUrl: "http://localhost:4096", 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 config = await Config.get()
const hooks = [] const hooks = []

View File

@@ -1007,7 +1007,7 @@ export namespace Session {
async process(stream: StreamTextResult<Record<string, AITool>, never>) { async process(stream: StreamTextResult<Record<string, AITool>, never>) {
try { try {
let currentText: MessageV2.TextPart | undefined let currentText: MessageV2.TextPart | undefined
let reasoningMap: Record<string, MessageV2.ReasoningPart> = {} // let reasoningMap: Record<string, MessageV2.ReasoningPart> = {}
for await (const value of stream.fullStream) { for await (const value of stream.fullStream) {
log.info("part", { log.info("part", {
@@ -1017,6 +1017,7 @@ export namespace Session {
case "start": case "start":
break break
/*
case "reasoning-start": case "reasoning-start":
if (value.id in reasoningMap) { if (value.id in reasoningMap) {
continue continue
@@ -1045,15 +1046,16 @@ export namespace Session {
if (value.id in reasoningMap) { if (value.id in reasoningMap) {
const part = reasoningMap[value.id] const part = reasoningMap[value.id]
part.text = part.text.trimEnd() part.text = part.text.trimEnd()
part.providerMetadata = value.providerMetadata part.metadata = value.providerMetadata
part.time = { part.time = {
start: Date.now(), ...part.time,
end: Date.now(), end: Date.now(),
} }
await updatePart(part) await updatePart(part)
delete reasoningMap[value.id] delete reasoningMap[value.id]
} }
break break
*/
case "tool-input-start": case "tool-input-start":
const part = await updatePart({ const part = await updatePart({

View File

@@ -121,13 +121,11 @@ export namespace MessageV2 {
export const ReasoningPart = PartBase.extend({ export const ReasoningPart = PartBase.extend({
type: z.literal("reasoning"), type: z.literal("reasoning"),
text: z.string(), text: z.string(),
providerMetadata: z.record(z.any()).optional(), metadata: z.record(z.any()).optional(),
time: z time: z.object({
.object({ start: z.number(),
start: z.number(), end: z.number().optional(),
end: z.number().optional(), }),
})
.optional(),
}).openapi({ }).openapi({
ref: "ReasoningPart", ref: "ReasoningPart",
}) })

View File

@@ -13,6 +13,7 @@ import PROMPT_GEMINI from "./prompt/gemini.txt"
import PROMPT_ANTHROPIC_SPOOF from "./prompt/anthropic_spoof.txt" import PROMPT_ANTHROPIC_SPOOF from "./prompt/anthropic_spoof.txt"
import PROMPT_SUMMARIZE from "./prompt/summarize.txt" import PROMPT_SUMMARIZE from "./prompt/summarize.txt"
import PROMPT_TITLE from "./prompt/title.txt" import PROMPT_TITLE from "./prompt/title.txt"
import PROMPT_CODEX from "./prompt/codex.txt"
export namespace SystemPrompt { export namespace SystemPrompt {
export function header(providerID: string) { export function header(providerID: string) {
@@ -20,6 +21,7 @@ export namespace SystemPrompt {
return [] return []
} }
export function provider(modelID: string) { 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("gpt-") || modelID.includes("o1") || modelID.includes("o3")) return [PROMPT_BEAST]
if (modelID.includes("gemini-")) return [PROMPT_GEMINI] if (modelID.includes("gemini-")) return [PROMPT_GEMINI]
if (modelID.includes("claude")) return [PROMPT_ANTHROPIC] if (modelID.includes("claude")) return [PROMPT_ANTHROPIC]