Skip to content

Commit 1132af4

Browse files
nudgeGap
changed nudgeGap to make it do what I wanted in the first place
1 parent 4c6b024 commit 1132af4

5 files changed

Lines changed: 35 additions & 3 deletions

File tree

dcp.schema.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,12 @@
122122
"default": 10,
123123
"description": "Frequency of nudge reminders (in turns)"
124124
},
125+
"limitNudgeInterval": {
126+
"type": "number",
127+
"default": 1,
128+
"minimum": 1,
129+
"description": "How often the context-limit nudge fires when above contextLimit (1 = every fetch, 5 = every 5th fetch)"
130+
},
125131
"protectedTools": {
126132
"type": "array",
127133
"items": {

lib/config.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ export interface CompressTool {
1919
export interface ToolSettings {
2020
nudgeEnabled: boolean
2121
nudgeFrequency: number
22+
limitNudgeInterval: number
2223
protectedTools: string[]
2324
contextLimit: number | `${number}%`
2425
contextPressureEnabled: boolean
@@ -106,6 +107,7 @@ export const VALID_CONFIG_KEYS = new Set([
106107
"tools.settings",
107108
"tools.settings.nudgeEnabled",
108109
"tools.settings.nudgeFrequency",
110+
"tools.settings.limitNudgeInterval",
109111
"tools.settings.protectedTools",
110112
"tools.settings.contextLimit",
111113
"tools.settings.contextPressureEnabled",
@@ -309,6 +311,17 @@ export function validateConfigTypes(config: Record<string, any>): ValidationErro
309311
})
310312
}
311313

314+
if (
315+
tools.settings.limitNudgeInterval !== undefined &&
316+
typeof tools.settings.limitNudgeInterval !== "number"
317+
) {
318+
errors.push({
319+
key: "tools.settings.limitNudgeInterval",
320+
expected: "number",
321+
actual: typeof tools.settings.limitNudgeInterval,
322+
})
323+
}
324+
312325
if (
313326
tools.settings.protectedTools !== undefined &&
314327
!Array.isArray(tools.settings.protectedTools)
@@ -545,6 +558,7 @@ const defaultConfig: PluginConfig = {
545558
settings: {
546559
nudgeEnabled: true,
547560
nudgeFrequency: 10,
561+
limitNudgeInterval: 1,
548562
protectedTools: [...DEFAULT_PROTECTED_TOOLS],
549563
contextLimit: 100000,
550564
contextPressureEnabled: true,
@@ -712,6 +726,8 @@ function mergeTools(base: PluginConfig["tools"], override?: ToolOverride): Plugi
712726
settings: {
713727
nudgeEnabled: override.settings?.nudgeEnabled ?? base.settings.nudgeEnabled,
714728
nudgeFrequency: override.settings?.nudgeFrequency ?? base.settings.nudgeFrequency,
729+
limitNudgeInterval:
730+
override.settings?.limitNudgeInterval ?? base.settings.limitNudgeInterval,
715731
protectedTools: [
716732
...new Set([
717733
...base.settings.protectedTools,

lib/messages/inject.ts

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -199,9 +199,16 @@ export const insertCompressToolContext = (
199199
}
200200

201201
if (shouldInjectLimitNudge(config, state, messages, providerId, modelId)) {
202-
logger.info("Injecting context-limit nudge")
203-
contentParts.push(renderNudge("context-limit"))
204-
} else if (
202+
if (state.limitNudgeCounter === 0) {
203+
logger.info("Injecting context-limit nudge")
204+
contentParts.push(renderNudge("context-limit"))
205+
}
206+
state.limitNudgeCounter =
207+
(state.limitNudgeCounter + 1) % config.tools.settings.limitNudgeInterval
208+
}
209+
210+
if (
211+
contentParts.length === 0 &&
205212
config.tools.settings.nudgeEnabled &&
206213
state.nudgeCounter >= config.tools.settings.nudgeFrequency
207214
) {

lib/state/state.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ export function createSessionState(): SessionState {
7070
toolParameters: new Map<string, ToolParameterEntry>(),
7171
toolIdList: [],
7272
nudgeCounter: 0,
73+
limitNudgeCounter: 0,
7374
lastToolPrune: false,
7475
lastCompaction: 0,
7576
currentTurn: 0,
@@ -95,6 +96,7 @@ export function resetSessionState(state: SessionState): void {
9596
state.toolParameters.clear()
9697
state.toolIdList = []
9798
state.nudgeCounter = 0
99+
state.limitNudgeCounter = 0
98100
state.lastToolPrune = false
99101
state.lastCompaction = 0
100102
state.currentTurn = 0

lib/state/types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ export interface SessionState {
4747
toolParameters: Map<string, ToolParameterEntry>
4848
toolIdList: string[]
4949
nudgeCounter: number
50+
limitNudgeCounter: number
5051
lastToolPrune: boolean
5152
lastCompaction: number
5253
currentTurn: number

0 commit comments

Comments
 (0)