Skip to content

Commit 821bf08

Browse files
authored
Merge pull request #528 from Opencode-DCP/dev
merge dev into master
2 parents 67431af + a2fad51 commit 821bf08

7 files changed

Lines changed: 30 additions & 75 deletions

File tree

lib/hooks.ts

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ import {
1313
stripHallucinationsFromString,
1414
stripStaleMetadata,
1515
syncCompressionBlocks,
16-
computeInputBudget,
1716
} from "./messages"
1817
import { renderSystemPrompt, type PromptStore } from "./prompts"
1918
import { buildProtectedToolsExtension } from "./prompts/extensions/system"
@@ -54,17 +53,11 @@ export function createSystemPromptHandler(
5453
prompts: PromptStore,
5554
) {
5655
return async (
57-
input: {
58-
sessionID?: string
59-
model: { limit: { context: number; input?: number; output?: number } }
60-
},
56+
input: { sessionID?: string; model: { limit: { context: number } } },
6157
output: { system: string[] },
6258
) => {
6359
if (input.model?.limit?.context) {
64-
const inputBudget = computeInputBudget(input.model.limit)
65-
if (inputBudget !== undefined) {
66-
state.modelContextLimit = inputBudget
67-
}
60+
state.modelContextLimit = input.model.limit.context
6861
logger.debug("Cached model context limit", { limit: state.modelContextLimit })
6962
}
7063

lib/messages/index.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
export { prune } from "./prune"
22
export { syncCompressionBlocks } from "./sync"
33
export { injectCompressNudges } from "./inject/inject"
4-
export { computeInputBudget } from "./inject/utils"
54
export { injectMessageIds } from "./inject/inject"
65
export { injectExtendedSubAgentResults } from "./inject/subagent-results"
76
export { stripStaleMetadata } from "./reasoning-strip"

lib/messages/inject/utils.ts

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -34,20 +34,6 @@ export interface LastNonIgnoredMessage {
3434
index: number
3535
}
3636

37-
interface ModelLimit {
38-
context: number
39-
input?: number
40-
output?: number
41-
}
42-
43-
export function computeInputBudget(limit: ModelLimit): number | undefined {
44-
if (!limit.context) {
45-
return undefined
46-
}
47-
48-
return limit.input ?? Math.max(0, limit.context - (limit.output ?? 0))
49-
}
50-
5137
export function getNudgeFrequency(config: PluginConfig): number {
5238
return Math.max(1, Math.floor(config.compress.nudgeFrequency || 1))
5339
}

package-lock.json

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

package.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,7 @@
5454
"dependencies": {
5555
"@anthropic-ai/tokenizer": "^0.0.4",
5656
"@opencode-ai/sdk": "^1.4.3",
57-
"jsonc-parser": "^3.3.1",
58-
"zod": "^4.3.6"
57+
"jsonc-parser": "^3.3.1"
5958
},
6059
"devDependencies": {
6160
"@opencode-ai/plugin": "^1.4.3",

tests/hooks-permission.test.ts

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import {
55
createChatMessageTransformHandler,
66
createCommandExecuteHandler,
77
createEventHandler,
8+
createSystemPromptHandler,
89
createTextCompleteHandler,
910
} from "../lib/hooks"
1011
import { Logger } from "../lib/logger"
@@ -86,6 +87,31 @@ function buildMessage(id: string, role: "user" | "assistant", text: string): Wit
8687
}
8788
}
8889

90+
test("system prompt handler caches full model context for percentage thresholds", async () => {
91+
const state = createSessionState()
92+
const handler = createSystemPromptHandler(state, new Logger(false), buildConfig("deny"), {
93+
reload() {},
94+
getRuntimePrompts() {
95+
return {} as any
96+
},
97+
} as any)
98+
99+
await handler(
100+
{
101+
sessionID: "session-1",
102+
model: {
103+
limit: {
104+
context: 200000,
105+
output: 131072,
106+
},
107+
},
108+
} as any,
109+
{ system: ["base system"] },
110+
)
111+
112+
assert.equal(state.modelContextLimit, 200000)
113+
})
114+
89115
test("chat message transform strips hallucinated tags even when compress is denied", async () => {
90116
const state = createSessionState()
91117
const logger = new Logger(false)

tests/input-budget.test.ts

Lines changed: 0 additions & 38 deletions
This file was deleted.

0 commit comments

Comments
 (0)