Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
184 commits
Select commit Hold shift + click to select a range
43d6e7a
refactor: compress to rule them all
spoons-and-mirrors Feb 9, 2026
7e3fbed
tweaks
spoons-and-mirrors Feb 9, 2026
00ae4b4
3.0 release image
spoons-and-mirrors Feb 10, 2026
55f4f5f
prompt rewrite
spoons-and-mirrors Feb 10, 2026
8c28716
feat: annotate tool outputs with token counts
spoons-and-mirrors Feb 11, 2026
553ca89
pull prompts from dev for ref
spoons-and-mirrors Feb 11, 2026
6bdbd95
remove uid refs
spoons-and-mirrors Feb 11, 2026
8d21d58
refine tool format
spoons-and-mirrors Feb 11, 2026
15e4f17
prompts
spoons-and-mirrors Feb 11, 2026
a65d5db
rm dev prompts
spoons-and-mirrors Feb 11, 2026
9cffd3c
nudge
spoons-and-mirrors Feb 11, 2026
90318ce
changin token count wording
spoons-and-mirrors Feb 11, 2026
4c6b024
prompts: preserving user intent
spoons-and-mirrors Feb 11, 2026
1132af4
nudgeGap
spoons-and-mirrors Feb 12, 2026
da56861
feat: cLog
spoons-and-mirrors Feb 11, 2026
e391a8f
summary searching sucks
Tarquinen Feb 12, 2026
7741734
nudge
spoons-and-mirrors Feb 12, 2026
7a48c26
prompts
spoons-and-mirrors Feb 12, 2026
9b40772
cleanup context-limit hint injection architecture
Tarquinen Feb 12, 2026
ffc340d
token counts targets
spoons-and-mirrors Feb 12, 2026
701088b
range chronology badgering
spoons-and-mirrors Feb 12, 2026
13d622a
tool inputs badger
spoons-and-mirrors Feb 12, 2026
48d4729
refactor context-limit anchor lifecycle
Tarquinen Feb 12, 2026
eea6067
rename
Tarquinen Feb 12, 2026
3b19bb8
cleanup
Tarquinen Feb 12, 2026
e2b2797
cleanup
Tarquinen Feb 12, 2026
4025efe
cleanup
Tarquinen Feb 12, 2026
7608931
bargraph: v1
spoons-and-mirrors Feb 12, 2026
63bd217
bargraph v2
spoons-and-mirrors Feb 12, 2026
5c8e9b7
different shading for "new stuff since last compress use"
spoons-and-mirrors Feb 12, 2026
07eb6b5
cleanup
Tarquinen Feb 12, 2026
aa60c0d
remath proportional bargraph display
spoons-and-mirrors Feb 12, 2026
12c763a
cleanup
Tarquinen Feb 12, 2026
fca89fb
Merge branch 'refactor/one-tool-to-rule-them-all' into cleanup/contex…
Tarquinen Feb 12, 2026
83907c2
cleanup
Tarquinen Feb 12, 2026
38dc7f4
Merge pull request #386 from Opencode-DCP/cleanup/context-limit-hints
Tarquinen Feb 12, 2026
ed7e66f
use real nudge prompt
Tarquinen Feb 12, 2026
96e5b2e
add system prompt to bargraph session representation and use full bra…
spoons-and-mirrors Feb 12, 2026
96062b0
differentiate system prompt char
spoons-and-mirrors Feb 12, 2026
d4d637f
refactor: derive compress graph from token buckets
Tarquinen Feb 13, 2026
94f97bd
remove: unused contextPressure and compressContext config options
Tarquinen Feb 13, 2026
6c9c795
remove: unused nudgeEnabled and nudgeFrequency config options
Tarquinen Feb 13, 2026
bffa213
refactor: rename limitNudgeInterval to nudgeGap
Tarquinen Feb 13, 2026
e18f764
cleanup: remove dead prune/distill refs from prompts
Tarquinen Feb 13, 2026
acd72b9
cleanup: remove prune/distill remnants
spoons-and-mirrors Feb 13, 2026
7de0666
cleanup: simplify prompts to compress-only
Tarquinen Feb 13, 2026
8896aaa
cleanup: remove ToolFlags, simplify renderSystemPrompt
Tarquinen Feb 13, 2026
2399d1f
fix: fallback token accounting when api tokens missing
spoons-and-mirrors Feb 13, 2026
eaf25eb
cleanup: remove prompt loading indirection
Tarquinen Feb 13, 2026
43497b1
cleanup: rename applyAnchoredHints to applyAnchoredNudge
Tarquinen Feb 13, 2026
3684485
cleanup: remove unused nudgeCounter
Tarquinen Feb 13, 2026
e2cb885
cleanup: remove unused lastToolPrune
Tarquinen Feb 13, 2026
6ab7f24
feat(ui): render positional compress graph
Tarquinen Feb 13, 2026
65b016c
fix(compress): reject ambiguous summary matches
Tarquinen Feb 13, 2026
8af64d1
feat(ui): restore strict bargraph v2 compress map
Tarquinen Feb 13, 2026
0bdce2e
cleanup(ui): remove unused compression graph helpers
Tarquinen Feb 13, 2026
a600a10
cleanup: don't search reasoning parts for compress strings
Tarquinen Feb 13, 2026
65dcd21
chore: default nudgeGap to 5
Tarquinen Feb 13, 2026
302e901
format
Tarquinen Feb 13, 2026
53dee49
Merge pull request #381 from misterdas/fix/critical-bugs-and-improvem…
Tarquinen Feb 14, 2026
6ce2fb4
Merge remote-tracking branch 'origin/dev' into refactor/one-tool-to-r…
Tarquinen Feb 14, 2026
1394615
refactor: rework compress flow with block placeholders
Tarquinen Feb 15, 2026
3d867b3
docs: clarify compress placeholder guidance
Tarquinen Feb 15, 2026
80c8fd0
prompt: removing macro scale, try and force the model to compress sho…
spoons-and-mirrors Feb 15, 2026
8f57ea3
Merge branch 'refactor/one-tool-to-rule-them-all' into feat/compress-…
Tarquinen Feb 15, 2026
fd233eb
refactor: migrate scripts to OpenCode session API
Tarquinen Feb 15, 2026
eddf269
feat: migrate compress to injected ID boundaries
Tarquinen Feb 16, 2026
7b0dfea
Merge pull request #392 from Opencode-DCP/feat/compress-block-placeho…
Tarquinen Feb 16, 2026
385f361
refactor: migrate compress boundary resolution to injected IDs
Tarquinen Feb 17, 2026
27ed0b1
docs: update compress boundary guidance
Tarquinen Feb 17, 2026
0bd9771
refactor: inject assistant message IDs into last tool output
Tarquinen Feb 17, 2026
e59e216
docs: clarify dcp message-id metadata tags in prompts
Tarquinen Feb 17, 2026
66f4e66
refactor: inject IDs after compress
Tarquinen Feb 17, 2026
362352d
refactor: align compress blocks with bN metadata and placeholders
Tarquinen Feb 17, 2026
3c9ce68
docs: simplify and align compress/system ID guidance
Tarquinen Feb 17, 2026
12dc48c
refactor: make synthetic injection IDs deterministic
Tarquinen Feb 17, 2026
298d3eb
refactor: rename nudgeGap to nudgeFrequency and fix config inconsiste…
Tarquinen Feb 17, 2026
47017dc
refactor: remove tools.settings.protectedTools
Tarquinen Feb 18, 2026
e8e29e7
fix: preserve compress input schema when pruning
Tarquinen Feb 18, 2026
73220ff
refactor: gate ID injection on compress permission
Tarquinen Feb 18, 2026
2348e75
cleanup
Tarquinen Feb 18, 2026
3142eb9
feat: migrate opencode scripts from API to sqlite
Tarquinen Feb 18, 2026
506da6c
refactor: move inject helpers to messages utils
Tarquinen Feb 18, 2026
1a7442d
feat: add soft nudge anchors for context reminders
Tarquinen Feb 19, 2026
ea36818
refactor: stop generating non-system prompts from markdown
Tarquinen Feb 19, 2026
c75edaa
fix: guard malformed compress summaries
Tarquinen Feb 19, 2026
0752119
Merge branch 'dev' into refactor/one-tool-to-rule-them-all, resolving…
Tarquinen Feb 19, 2026
90889d0
refactor: simplify compress notification summary and rename header wr…
Tarquinen Feb 19, 2026
2fa382f
refactor: remove compress wrappers
Tarquinen Feb 19, 2026
ba4e7d4
fix(utils): skip thought signature validator for google and vertex mo…
Tarquinen Feb 21, 2026
c8d3404
feat(utils): add system note to synthetic tool part
Tarquinen Feb 21, 2026
f81d135
feat(utils): format synthetic tool system note as xml
Tarquinen Feb 21, 2026
418533b
feat(scripts): add summary statistics to session timeline
Tarquinen Feb 21, 2026
c9a8239
feat(logger): include tool title and metadata in context logs
Tarquinen Feb 21, 2026
9433f63
refactor(utils): replace claude check with text-part capability helper
Tarquinen Feb 21, 2026
7f86002
chore(prune): stop rewriting compress summaries
Tarquinen Feb 21, 2026
cd5bc53
refactor: rename remaining soft nudge references to turn nudge
Tarquinen Feb 22, 2026
fe92176
ui: expand compress progress bar to 75 chars and reposition
Tarquinen Feb 22, 2026
592cebf
refactor: remove redundant isIgnoredUserMessage check
Tarquinen Feb 22, 2026
66f5e3e
fix: strip hallucinated message-id and turn-nudge blocks
Tarquinen Feb 22, 2026
377ad29
feat: add iteration nudges and consolidate nudge state
Tarquinen Feb 22, 2026
dfa1f7a
refactor(config): flatten compress settings into top-level config
Tarquinen Feb 22, 2026
e80fc54
refactor(nudges): centralize anchored nudge application
Tarquinen Feb 22, 2026
b902968
ui: reduce compress progress bar to 50 chars
Tarquinen Feb 22, 2026
cdabdb7
fix(context): correct tool counts with compressed ranges
Tarquinen Feb 22, 2026
29f42b1
fix(nudges): anchor turn nudges to user messages
Tarquinen Feb 22, 2026
3b17792
fix(manual): skip nudge injection in manual mode
Tarquinen Feb 22, 2026
0aa9750
prompt wording
Tarquinen Feb 22, 2026
dbd00f5
v2.2.0-beta0 - Bump version
Tarquinen Feb 22, 2026
8bc4f6c
docs(readme): add beta notice
Tarquinen Feb 22, 2026
be1e68f
docs(readme): restore config collapse text
Tarquinen Feb 22, 2026
1bf2b4f
refactor: move message strategies to compress tool
Tarquinen Feb 23, 2026
95d76cb
fix: add deepseek models to rejectsTextParts
Tarquinen Feb 23, 2026
d524f24
disable supersede writes for now, causes llm confusion when write too…
Tarquinen Feb 23, 2026
bbd5909
fix(compress): filter out ignored user messages from session bar graph
Tarquinen Feb 23, 2026
d5f449c
chore: remove unused compress logger
Tarquinen Feb 23, 2026
a2d14b1
refactor: rename helper
Tarquinen Feb 23, 2026
17a3119
v2.2.1-beta0 - Bump version
Tarquinen Feb 23, 2026
933255a
refactor: rename internal utilities and clean up prune logic
Tarquinen Feb 24, 2026
0e8fce5
feat(nudge): add configurable user/assistant turn anchoring
Tarquinen Feb 24, 2026
1d836d7
refactor(prompts): simplify nudge and compress prompt imports
Tarquinen Feb 24, 2026
3f6c413
chore(prompts): clarify compress-tool wording
Tarquinen Feb 24, 2026
6ec8c2b
docs(config): simplify nudge descriptions
Tarquinen Feb 24, 2026
c15ffcb
v2.2.2-beta0 - Bump version
Tarquinen Feb 24, 2026
4484cd4
feat: add compress.protectedTools configuration
Tarquinen Feb 24, 2026
b94705b
docs: update schema and README for compress.protectedTools
Tarquinen Feb 24, 2026
e86c631
feat: append tools matching protectedFilePatterns to compression summ…
Tarquinen Feb 24, 2026
d8398f3
chore: disable rejectsTextParts logic for beta testing
Tarquinen Feb 24, 2026
291d5cc
v2.2.3-beta0 - Version bump
Tarquinen Feb 24, 2026
8f4c276
fix(hooks): append system prompt to last output part
Tarquinen Feb 25, 2026
f8e1a0f
v2.2.4-beta0 - Bump version
Tarquinen Feb 25, 2026
8975e50
refactor(compress): implement structured compression block state
Tarquinen Feb 26, 2026
527d81f
fix(hooks): reorder syncCompressionBlocks to handle undos correctly
Tarquinen Feb 27, 2026
afb58b9
Merge pull request #412 from Opencode-DCP/refactor/structured-compres…
Tarquinen Feb 27, 2026
90550d0
feat(config): add experimental subagent opt-in
Tarquinen Feb 27, 2026
b0f0d77
fix(config): gate primary compress tool for subagent opt-in
Tarquinen Feb 27, 2026
bbd3349
fix(logger): include tool state metadata in context logs
Tarquinen Feb 27, 2026
050e556
feat(subagents): enrich task outputs from child session results
Tarquinen Feb 27, 2026
70e968f
fix(subagents): gate result enrichment behind experimental flag
Tarquinen Feb 27, 2026
fc8ac20
fix(subagents): harden result cache and compress merge checks
Tarquinen Feb 27, 2026
79b1fa5
Merge pull request #413 from Opencode-DCP/feat/experimental-subagent-…
Tarquinen Feb 27, 2026
cbbd177
v2.2.5-beta0 - Bump version
Tarquinen Feb 27, 2026
9def114
fix(message-ids): skip refs for ignored user messages
Tarquinen Feb 28, 2026
3533b3c
fix(message-ids): skip ref for first subagent user message
Tarquinen Feb 28, 2026
ed1aad7
fix(nudges): add active block placeholder guidance
Tarquinen Feb 28, 2026
740dc45
fix(message-ids): start refs at m0001
Tarquinen Feb 28, 2026
f5590d8
fix(prompts): add subagent safety section
Tarquinen Feb 28, 2026
77922c2
feat(compress): add max/min nudge limits
Tarquinen Feb 28, 2026
23fc5c9
v2.2.6-beta0 - Bump version
Tarquinen Feb 28, 2026
d0a6fc9
refactor(messages): rename injectors
Tarquinen Feb 28, 2026
6b09c32
docs(contributing): clarify contribution quality
Tarquinen Feb 28, 2026
87ccb78
docs(readme): refresh compress and cache guidance
Tarquinen Feb 28, 2026
d8318f0
fix(messages): strip stale Claude reasoning
Tarquinen Feb 28, 2026
c159eae
replace reasoning strip with metadata stripping for mismatched model
Tarquinen Feb 28, 2026
137b29e
include metadata in text and reasoning debug log parts
Tarquinen Feb 28, 2026
d656b20
v2.2.7-beta0 - Bump version
Tarquinen Feb 28, 2026
de17918
feat: highlight most recently compressed messages in progress bar
Tarquinen Mar 1, 2026
8d0adef
feat: inject active compressed block guidance into manual compress tr…
Tarquinen Mar 1, 2026
d1f5de6
feat(decompress): add decompress command and restore workflow
Tarquinen Mar 1, 2026
3b67084
feat(notification): include compression IDs in compress status
Tarquinen Mar 1, 2026
01b544d
feat(prompts): rework context-limit nudge for max-limit recovery
Tarquinen Mar 1, 2026
97531c8
feat(compress): track newly compressed items for accurate notifications
Tarquinen Mar 2, 2026
8f39878
refactor(notification): derive compression details from block state
Tarquinen Mar 2, 2026
20f8546
readme install update
Tarquinen Mar 2, 2026
1dcbc6a
refactor(decompress): rename uncompress command and simplify usage ou…
Tarquinen Mar 2, 2026
13cc541
feat(recompress): add /dcp recompress command
Tarquinen Mar 2, 2026
0d70e09
refactor(tools): rename compress-utils module to utils
Tarquinen Mar 2, 2026
43ccb7b
feat(prompts): add runtime custom prompt overrides
Tarquinen Mar 2, 2026
3e181b5
docs(readme): document prompt overrides and protected skill tool
Tarquinen Mar 2, 2026
7cd0d2d
refactor(prompts): source system prompt from TypeScript
Tarquinen Mar 2, 2026
f26d424
docs(readme): update install tag and prompt override guidance
Tarquinen Mar 2, 2026
492d4a1
Merge pull request #414 from Opencode-DCP/feat/custom-prompts-runtime
Tarquinen Mar 2, 2026
3fc460d
fix(compress): avoid duplicate protected-tool injection in nested com…
Tarquinen Mar 2, 2026
9c6378f
fix(compress): graceful fallback
Tarquinen Mar 2, 2026
676cec0
v2.2.8-beta0 - Bump version
Tarquinen Mar 2, 2026
564bb43
feat(config): add wildcard/glob pattern support for protectedTools
Tarquinen Mar 4, 2026
82dbde2
cleanup
Tarquinen Mar 4, 2026
939a542
refactor: rename isProtected to isFilePathProtected for clarity
Tarquinen Mar 4, 2026
2e28894
fix(subagents): strip hallucinated tags from merged sub-agent results
Tarquinen Mar 4, 2026
6a5e2ef
Show raw LLM summary in showCompression notification
Tarquinen Mar 4, 2026
418a5d6
word change
Tarquinen Mar 4, 2026
29524b9
Rewrite README for clarity and conciseness
Tarquinen Mar 4, 2026
8f253ff
Exclude ignored messages from context logs
Tarquinen Mar 4, 2026
98bed9c
Consolidate user and assistant turn nudges into a single prompt
Tarquinen Mar 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 7 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,12 @@ Thumbs.db
# OpenCode
.opencode/

# Generated prompt files (from scripts/generate-prompts.ts)
# Python cache
__pycache__/
*.py[cod]
*$py.class

# Legacy generated prompt files
lib/prompts/**/*.generated.ts

# Tests
Expand All @@ -40,4 +45,4 @@ test-update.ts
docs/
SCHEMA_NOTES.md

repomix-output.xml
repomix-output.xml
5 changes: 4 additions & 1 deletion .repomixignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,7 @@ dist/
repomix-output.xml
bun.lock
package-lock.jsonc
LICENCE
LICENSE
scripts/
tests/
README.md
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ This arrangement ensures the project remains Open Source while providing a path

1. Fork the repository.
2. Create a feature branch.
3. Implement your changes and add tests if applicable.
3. Implement your changes and add tests if applicable (please NO AI SLOP).
4. Ensure all tests pass and the code is formatted.
5. Submit a Pull Request.

Expand Down
305 changes: 165 additions & 140 deletions README.md

Large diffs are not rendered by default.

Binary file added assets/images/3.0 release.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
206 changes: 109 additions & 97 deletions dcp.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,13 @@
"type": "string",
"enum": ["off", "minimal", "detailed"],
"default": "detailed",
"description": "Level of notification shown when pruning occurs"
"description": "Level of notification shown when context management occurs"
},
"pruneNotificationType": {
"type": "string",
"enum": ["chat", "toast"],
"default": "chat",
"description": "Where to display prune notifications (chat message or toast notification)"
"description": "Where to display notifications (chat message or toast notification)"
},
"commands": {
"type": "object",
Expand All @@ -48,7 +48,7 @@
"type": "string"
},
"default": [],
"description": "Additional tool names to protect from pruning via commands (e.g., /dcp sweep)"
"description": "Additional tool names or wildcard patterns to protect from pruning via commands (e.g., /dcp sweep). Supports glob wildcards: * matches any characters, ? matches a single character (e.g., \"mcp_*\", \"my_tool_?\")"
}
},
"default": {
Expand Down Expand Up @@ -94,6 +94,27 @@
}
}
},
"experimental": {
"type": "object",
"description": "Experimental settings that may change in future releases",
"additionalProperties": false,
"properties": {
"allowSubAgents": {
"type": "boolean",
"default": false,
"description": "Allow DCP processing in subagent sessions"
},
"customPrompts": {
"type": "boolean",
"default": false,
"description": "Enable user-editable prompt overrides under dcp-prompts directories"
}
},
"default": {
"allowSubAgents": false,
"customPrompts": false
}
},
"protectedFilePatterns": {
"type": "array",
"items": {
Expand All @@ -102,112 +123,103 @@
"default": [],
"description": "Glob patterns for files that should be protected from pruning (e.g., '**/*.config.ts')"
},
"tools": {
"compress": {
"type": "object",
"description": "Configuration for pruning tools",
"description": "Configuration for the unified compress tool",
"additionalProperties": false,
"properties": {
"settings": {
"type": "object",
"description": "General tool settings",
"additionalProperties": false,
"properties": {
"nudgeEnabled": {
"type": "boolean",
"default": true,
"description": "Enable nudge reminders to prune context"
},
"nudgeFrequency": {
"type": "number",
"default": 10,
"description": "Frequency of nudge reminders (in turns)"
},
"protectedTools": {
"type": "array",
"items": {
"type": "string"
},
"default": [],
"description": "Tool names that should be protected from automatic pruning"
},
"contextLimit": {
"description": "When session tokens exceed this limit, a compress nudge is injected (\"X%\" uses percentage of the model's context window)",
"default": 100000,
"oneOf": [
{
"type": "number"
},
{
"type": "string",
"pattern": "^\\d+(?:\\.\\d+)?%$"
}
]
"permission": {
"type": "string",
"enum": ["ask", "allow", "deny"],
"default": "allow",
"description": "Permission mode (deny disables the tool)"
},
"showCompression": {
"type": "boolean",
"default": false,
"description": "Show compression summaries in notifications"
},
"maxContextLimit": {
"description": "Soft upper threshold. Above this, DCP keeps sending strong compression nudges (based on nudgeFrequency), so the model is pushed to compress. Accepts number or \"X%\" of the model context window.",
"default": 100000,
"oneOf": [
{
"type": "number"
},
"modelLimits": {
"description": "Model-specific context limits by exact provider/model key. Examples: \"openai/gpt-5\", \"anthropic/claude-3-7-sonnet\", \"ollama/llama3.1\"",
"type": "object",
"additionalProperties": {
"oneOf": [
{
"type": "number"
},
{
"type": "string",
"pattern": "^\\d+(?:\\.\\d+)?%$"
}
]
}
{
"type": "string",
"pattern": "^\\d+(?:\\.\\d+)?%$"
}
}
]
},
"distill": {
"type": "object",
"description": "Configuration for the distill tool",
"additionalProperties": false,
"properties": {
"permission": {
"type": "string",
"enum": ["ask", "allow", "deny"],
"default": "allow",
"description": "Permission mode (deny disables the tool)"
"minContextLimit": {
"description": "Soft lower threshold for reminder nudges. Below this, turn/iteration reminders are off (compression is less likely). At or above this, reminders are on. Accepts number or \"X%\" of the model context window.",
"default": 30000,
"oneOf": [
{
"type": "number"
},
"showDistillation": {
"type": "boolean",
"default": false,
"description": "Show distillation output in the UI"
{
"type": "string",
"pattern": "^\\d+(?:\\.\\d+)?%$"
}
}
]
},
"compress": {
"modelMaxLimits": {
"description": "Per-model override for maxContextLimit by exact provider/model key. If set, this takes priority over the global maxContextLimit.",
"type": "object",
"description": "Configuration for the compress tool",
"additionalProperties": false,
"properties": {
"permission": {
"type": "string",
"enum": ["ask", "allow", "deny"],
"default": "ask",
"description": "Permission mode (deny disables the tool)"
},
"showCompression": {
"type": "boolean",
"default": false,
"description": "Show summary output in the UI"
}
"additionalProperties": {
"oneOf": [
{
"type": "number"
},
{
"type": "string",
"pattern": "^\\d+(?:\\.\\d+)?%$"
}
]
}
},
"prune": {
"modelMinLimits": {
"description": "Per-model override for minContextLimit by exact provider/model key. If set, this takes priority over the global minContextLimit.",
"type": "object",
"description": "Configuration for the prune tool",
"additionalProperties": false,
"properties": {
"permission": {
"type": "string",
"enum": ["ask", "allow", "deny"],
"default": "allow",
"description": "Permission mode (deny disables the tool)"
}
"additionalProperties": {
"oneOf": [
{
"type": "number"
},
{
"type": "string",
"pattern": "^\\d+(?:\\.\\d+)?%$"
}
]
}
},
"nudgeFrequency": {
"type": "number",
"default": 5,
"minimum": 1,
"description": "How often the context-limit nudge fires when above maxContextLimit (1 = every fetch, 5 = every 5th fetch)"
},
"iterationNudgeThreshold": {
"type": "number",
"default": 15,
"minimum": 1,
"description": "How many messages to wait after a user message before adding compression reminders."
},
"nudgeForce": {
"type": "string",
"enum": ["strong", "soft"],
"default": "soft",
"description": "Controls how likely compression is after user messages. 'strong' is more likely, 'soft' is less likely."
},
"protectedTools": {
"type": "array",
"items": {
"type": "string"
},
"default": [],
"description": "Tool names or wildcard patterns whose completed outputs should be appended to the compression summary. Supports glob wildcards: * matches any characters, ? matches a single character (e.g., \"mcp_*\", \"my_tool_?\")"
}
}
},
Expand All @@ -232,7 +244,7 @@
"type": "string"
},
"default": [],
"description": "Tool names excluded from deduplication"
"description": "Tool names or wildcard patterns excluded from deduplication. Supports glob wildcards: * matches any characters, ? matches a single character (e.g., \"mcp_*\", \"my_tool_?\")"
}
}
},
Expand Down Expand Up @@ -269,7 +281,7 @@
"type": "string"
},
"default": [],
"description": "Tool names excluded from error purging"
"description": "Tool names or wildcard patterns excluded from error purging. Supports glob wildcards: * matches any characters, ? matches a single character (e.g., \"mcp_*\", \"my_tool_?\")"
}
}
}
Expand Down
Loading