@tarquinen/opencode-dcp 0.4.17 → 1.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (163) hide show
  1. package/README.md +58 -30
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +19 -59
  4. package/dist/index.js.map +1 -1
  5. package/dist/lib/config.d.ts +30 -13
  6. package/dist/lib/config.d.ts.map +1 -1
  7. package/dist/lib/config.js +339 -121
  8. package/dist/lib/config.js.map +1 -1
  9. package/dist/lib/hooks.d.ts +5 -13
  10. package/dist/lib/hooks.d.ts.map +1 -1
  11. package/dist/lib/hooks.js +26 -125
  12. package/dist/lib/hooks.js.map +1 -1
  13. package/dist/lib/logger.d.ts +5 -9
  14. package/dist/lib/logger.d.ts.map +1 -1
  15. package/dist/lib/logger.js +30 -160
  16. package/dist/lib/logger.js.map +1 -1
  17. package/dist/lib/messages/index.d.ts +2 -0
  18. package/dist/lib/messages/index.d.ts.map +1 -0
  19. package/dist/lib/messages/index.js +2 -0
  20. package/dist/lib/messages/index.js.map +1 -0
  21. package/dist/lib/messages/prune.d.ts +6 -0
  22. package/dist/lib/messages/prune.d.ts.map +1 -0
  23. package/dist/lib/messages/prune.js +85 -0
  24. package/dist/lib/messages/prune.js.map +1 -0
  25. package/dist/lib/messages/utils.d.ts +10 -0
  26. package/dist/lib/messages/utils.d.ts.map +1 -0
  27. package/dist/lib/messages/utils.js +103 -0
  28. package/dist/lib/messages/utils.js.map +1 -0
  29. package/dist/lib/model-selector.js +3 -3
  30. package/dist/lib/model-selector.js.map +1 -1
  31. package/dist/lib/{core/prompt.d.ts → prompt.d.ts} +1 -1
  32. package/dist/lib/prompt.d.ts.map +1 -0
  33. package/dist/lib/{core/prompt.js → prompt.js} +2 -6
  34. package/dist/lib/prompt.js.map +1 -0
  35. package/dist/lib/prompts/pruning.txt +1 -1
  36. package/dist/lib/prompts/tool.txt +3 -3
  37. package/dist/lib/state/index.d.ts +3 -27
  38. package/dist/lib/state/index.d.ts.map +1 -1
  39. package/dist/lib/state/index.js +3 -40
  40. package/dist/lib/state/index.js.map +1 -1
  41. package/dist/lib/state/persistence.d.ts +4 -4
  42. package/dist/lib/state/persistence.d.ts.map +1 -1
  43. package/dist/lib/state/persistence.js +24 -20
  44. package/dist/lib/state/persistence.js.map +1 -1
  45. package/dist/lib/state/state.d.ts +7 -0
  46. package/dist/lib/state/state.d.ts.map +1 -0
  47. package/dist/lib/state/state.js +76 -0
  48. package/dist/lib/state/state.js.map +1 -0
  49. package/dist/lib/state/tool-cache.d.ts +4 -6
  50. package/dist/lib/state/tool-cache.d.ts.map +1 -1
  51. package/dist/lib/state/tool-cache.js +14 -46
  52. package/dist/lib/state/tool-cache.js.map +1 -1
  53. package/dist/lib/state/types.d.ts +30 -0
  54. package/dist/lib/state/types.d.ts.map +1 -0
  55. package/dist/lib/state/types.js +2 -0
  56. package/dist/lib/state/types.js.map +1 -0
  57. package/dist/lib/strategies/deduplication.d.ts +10 -0
  58. package/dist/lib/strategies/deduplication.d.ts.map +1 -0
  59. package/dist/lib/strategies/deduplication.js +89 -0
  60. package/dist/lib/strategies/deduplication.js.map +1 -0
  61. package/dist/lib/strategies/index.d.ts +4 -0
  62. package/dist/lib/strategies/index.d.ts.map +1 -0
  63. package/dist/lib/strategies/index.js +4 -0
  64. package/dist/lib/strategies/index.js.map +1 -0
  65. package/dist/lib/strategies/on-idle.d.ts +14 -0
  66. package/dist/lib/strategies/on-idle.d.ts.map +1 -0
  67. package/dist/lib/strategies/on-idle.js +216 -0
  68. package/dist/lib/strategies/on-idle.js.map +1 -0
  69. package/dist/lib/strategies/prune-tool.d.ts +17 -0
  70. package/dist/lib/strategies/prune-tool.d.ts.map +1 -0
  71. package/dist/lib/strategies/prune-tool.js +70 -0
  72. package/dist/lib/strategies/prune-tool.js.map +1 -0
  73. package/dist/lib/ui/display-utils.d.ts +3 -12
  74. package/dist/lib/ui/display-utils.d.ts.map +1 -1
  75. package/dist/lib/ui/display-utils.js +12 -79
  76. package/dist/lib/ui/display-utils.js.map +1 -1
  77. package/dist/lib/ui/notification.d.ts +7 -23
  78. package/dist/lib/ui/notification.d.ts.map +1 -1
  79. package/dist/lib/ui/notification.js +38 -47
  80. package/dist/lib/ui/notification.js.map +1 -1
  81. package/dist/lib/utils.d.ts +9 -0
  82. package/dist/lib/utils.d.ts.map +1 -0
  83. package/dist/lib/utils.js +61 -0
  84. package/dist/lib/utils.js.map +1 -0
  85. package/package.json +1 -1
  86. package/dist/lib/core/janitor.d.ts +0 -38
  87. package/dist/lib/core/janitor.d.ts.map +0 -1
  88. package/dist/lib/core/janitor.js +0 -294
  89. package/dist/lib/core/janitor.js.map +0 -1
  90. package/dist/lib/core/prompt.d.ts.map +0 -1
  91. package/dist/lib/core/prompt.js.map +0 -1
  92. package/dist/lib/core/strategies/deduplication.d.ts +0 -7
  93. package/dist/lib/core/strategies/deduplication.d.ts.map +0 -1
  94. package/dist/lib/core/strategies/deduplication.js +0 -76
  95. package/dist/lib/core/strategies/deduplication.js.map +0 -1
  96. package/dist/lib/core/strategies/index.d.ts +0 -51
  97. package/dist/lib/core/strategies/index.d.ts.map +0 -1
  98. package/dist/lib/core/strategies/index.js +0 -48
  99. package/dist/lib/core/strategies/index.js.map +0 -1
  100. package/dist/lib/fetch-wrapper/formats/anthropic.d.ts +0 -8
  101. package/dist/lib/fetch-wrapper/formats/anthropic.d.ts.map +0 -1
  102. package/dist/lib/fetch-wrapper/formats/anthropic.js +0 -96
  103. package/dist/lib/fetch-wrapper/formats/anthropic.js.map +0 -1
  104. package/dist/lib/fetch-wrapper/formats/bedrock.d.ts +0 -8
  105. package/dist/lib/fetch-wrapper/formats/bedrock.d.ts.map +0 -1
  106. package/dist/lib/fetch-wrapper/formats/bedrock.js +0 -97
  107. package/dist/lib/fetch-wrapper/formats/bedrock.js.map +0 -1
  108. package/dist/lib/fetch-wrapper/formats/gemini.d.ts +0 -8
  109. package/dist/lib/fetch-wrapper/formats/gemini.d.ts.map +0 -1
  110. package/dist/lib/fetch-wrapper/formats/gemini.js +0 -134
  111. package/dist/lib/fetch-wrapper/formats/gemini.js.map +0 -1
  112. package/dist/lib/fetch-wrapper/formats/index.d.ts +0 -6
  113. package/dist/lib/fetch-wrapper/formats/index.d.ts.map +0 -1
  114. package/dist/lib/fetch-wrapper/formats/index.js +0 -6
  115. package/dist/lib/fetch-wrapper/formats/index.js.map +0 -1
  116. package/dist/lib/fetch-wrapper/formats/openai-chat.d.ts +0 -3
  117. package/dist/lib/fetch-wrapper/formats/openai-chat.d.ts.map +0 -1
  118. package/dist/lib/fetch-wrapper/formats/openai-chat.js +0 -100
  119. package/dist/lib/fetch-wrapper/formats/openai-chat.js.map +0 -1
  120. package/dist/lib/fetch-wrapper/formats/openai-responses.d.ts +0 -3
  121. package/dist/lib/fetch-wrapper/formats/openai-responses.d.ts.map +0 -1
  122. package/dist/lib/fetch-wrapper/formats/openai-responses.js +0 -63
  123. package/dist/lib/fetch-wrapper/formats/openai-responses.js.map +0 -1
  124. package/dist/lib/fetch-wrapper/gc-tracker.d.ts +0 -4
  125. package/dist/lib/fetch-wrapper/gc-tracker.d.ts.map +0 -1
  126. package/dist/lib/fetch-wrapper/gc-tracker.js +0 -61
  127. package/dist/lib/fetch-wrapper/gc-tracker.js.map +0 -1
  128. package/dist/lib/fetch-wrapper/handler.d.ts +0 -3
  129. package/dist/lib/fetch-wrapper/handler.d.ts.map +0 -1
  130. package/dist/lib/fetch-wrapper/handler.js +0 -118
  131. package/dist/lib/fetch-wrapper/handler.js.map +0 -1
  132. package/dist/lib/fetch-wrapper/index.d.ts +0 -18
  133. package/dist/lib/fetch-wrapper/index.d.ts.map +0 -1
  134. package/dist/lib/fetch-wrapper/index.js +0 -107
  135. package/dist/lib/fetch-wrapper/index.js.map +0 -1
  136. package/dist/lib/fetch-wrapper/prunable-list.d.ts +0 -8
  137. package/dist/lib/fetch-wrapper/prunable-list.d.ts.map +0 -1
  138. package/dist/lib/fetch-wrapper/prunable-list.js +0 -38
  139. package/dist/lib/fetch-wrapper/prunable-list.js.map +0 -1
  140. package/dist/lib/fetch-wrapper/tool-tracker.d.ts +0 -9
  141. package/dist/lib/fetch-wrapper/tool-tracker.d.ts.map +0 -1
  142. package/dist/lib/fetch-wrapper/tool-tracker.js +0 -12
  143. package/dist/lib/fetch-wrapper/tool-tracker.js.map +0 -1
  144. package/dist/lib/fetch-wrapper/types.d.ts +0 -62
  145. package/dist/lib/fetch-wrapper/types.d.ts.map +0 -1
  146. package/dist/lib/fetch-wrapper/types.js +0 -7
  147. package/dist/lib/fetch-wrapper/types.js.map +0 -1
  148. package/dist/lib/pruning-tool.d.ts +0 -20
  149. package/dist/lib/pruning-tool.d.ts.map +0 -1
  150. package/dist/lib/pruning-tool.js +0 -160
  151. package/dist/lib/pruning-tool.js.map +0 -1
  152. package/dist/lib/state/id-mapping.d.ts +0 -25
  153. package/dist/lib/state/id-mapping.d.ts.map +0 -1
  154. package/dist/lib/state/id-mapping.js +0 -51
  155. package/dist/lib/state/id-mapping.js.map +0 -1
  156. package/dist/lib/tokenizer.d.ts +0 -3
  157. package/dist/lib/tokenizer.d.ts.map +0 -1
  158. package/dist/lib/tokenizer.js +0 -16
  159. package/dist/lib/tokenizer.js.map +0 -1
  160. package/dist/lib/version-checker.d.ts +0 -9
  161. package/dist/lib/version-checker.d.ts.map +0 -1
  162. package/dist/lib/version-checker.js +0 -77
  163. package/dist/lib/version-checker.js.map +0 -1
@@ -1,34 +1,190 @@
1
- import { readFileSync, writeFileSync, existsSync, mkdirSync, statSync, copyFileSync } from 'fs';
1
+ import { readFileSync, writeFileSync, existsSync, mkdirSync, statSync } from 'fs';
2
2
  import { join, dirname } from 'path';
3
3
  import { homedir } from 'os';
4
4
  import { parse } from 'jsonc-parser';
5
- import { Logger } from './logger';
5
+ const DEFAULT_PROTECTED_TOOLS = ['task', 'todowrite', 'todoread', 'prune', 'batch', 'write', 'edit'];
6
+ // Valid config keys for validation against user config
7
+ export const VALID_CONFIG_KEYS = new Set([
8
+ // Top-level keys
9
+ 'enabled',
10
+ 'debug',
11
+ 'showUpdateToasts',
12
+ 'pruningSummary',
13
+ 'strategies',
14
+ // strategies.deduplication
15
+ 'strategies.deduplication',
16
+ 'strategies.deduplication.enabled',
17
+ 'strategies.deduplication.protectedTools',
18
+ // strategies.pruneThinkingBlocks
19
+ 'strategies.pruneThinkingBlocks',
20
+ 'strategies.pruneThinkingBlocks.enabled',
21
+ // strategies.onIdle
22
+ 'strategies.onIdle',
23
+ 'strategies.onIdle.enabled',
24
+ 'strategies.onIdle.model',
25
+ 'strategies.onIdle.showModelErrorToasts',
26
+ 'strategies.onIdle.strictModelSelection',
27
+ 'strategies.onIdle.protectedTools',
28
+ // strategies.pruneTool
29
+ 'strategies.pruneTool',
30
+ 'strategies.pruneTool.enabled',
31
+ 'strategies.pruneTool.protectedTools',
32
+ 'strategies.pruneTool.nudge',
33
+ 'strategies.pruneTool.nudge.enabled',
34
+ 'strategies.pruneTool.nudge.frequency',
35
+ ]);
36
+ // Extract all key paths from a config object for validation
37
+ function getConfigKeyPaths(obj, prefix = '') {
38
+ const keys = [];
39
+ for (const key of Object.keys(obj)) {
40
+ const fullKey = prefix ? `${prefix}.${key}` : key;
41
+ keys.push(fullKey);
42
+ if (obj[key] && typeof obj[key] === 'object' && !Array.isArray(obj[key])) {
43
+ keys.push(...getConfigKeyPaths(obj[key], fullKey));
44
+ }
45
+ }
46
+ return keys;
47
+ }
48
+ // Returns invalid keys found in user config
49
+ export function getInvalidConfigKeys(userConfig) {
50
+ const userKeys = getConfigKeyPaths(userConfig);
51
+ return userKeys.filter(key => !VALID_CONFIG_KEYS.has(key));
52
+ }
53
+ function validateConfigTypes(config) {
54
+ const errors = [];
55
+ // Top-level validators
56
+ if (config.enabled !== undefined && typeof config.enabled !== 'boolean') {
57
+ errors.push({ key: 'enabled', expected: 'boolean', actual: typeof config.enabled });
58
+ }
59
+ if (config.debug !== undefined && typeof config.debug !== 'boolean') {
60
+ errors.push({ key: 'debug', expected: 'boolean', actual: typeof config.debug });
61
+ }
62
+ if (config.showUpdateToasts !== undefined && typeof config.showUpdateToasts !== 'boolean') {
63
+ errors.push({ key: 'showUpdateToasts', expected: 'boolean', actual: typeof config.showUpdateToasts });
64
+ }
65
+ if (config.pruningSummary !== undefined) {
66
+ const validValues = ['off', 'minimal', 'detailed'];
67
+ if (!validValues.includes(config.pruningSummary)) {
68
+ errors.push({ key: 'pruningSummary', expected: '"off" | "minimal" | "detailed"', actual: JSON.stringify(config.pruningSummary) });
69
+ }
70
+ }
71
+ // Strategies validators
72
+ const strategies = config.strategies;
73
+ if (strategies) {
74
+ // deduplication
75
+ if (strategies.deduplication?.enabled !== undefined && typeof strategies.deduplication.enabled !== 'boolean') {
76
+ errors.push({ key: 'strategies.deduplication.enabled', expected: 'boolean', actual: typeof strategies.deduplication.enabled });
77
+ }
78
+ if (strategies.deduplication?.protectedTools !== undefined && !Array.isArray(strategies.deduplication.protectedTools)) {
79
+ errors.push({ key: 'strategies.deduplication.protectedTools', expected: 'string[]', actual: typeof strategies.deduplication.protectedTools });
80
+ }
81
+ // pruneThinkingBlocks
82
+ if (strategies.pruneThinkingBlocks?.enabled !== undefined && typeof strategies.pruneThinkingBlocks.enabled !== 'boolean') {
83
+ errors.push({ key: 'strategies.pruneThinkingBlocks.enabled', expected: 'boolean', actual: typeof strategies.pruneThinkingBlocks.enabled });
84
+ }
85
+ // onIdle
86
+ if (strategies.onIdle) {
87
+ if (strategies.onIdle.enabled !== undefined && typeof strategies.onIdle.enabled !== 'boolean') {
88
+ errors.push({ key: 'strategies.onIdle.enabled', expected: 'boolean', actual: typeof strategies.onIdle.enabled });
89
+ }
90
+ if (strategies.onIdle.model !== undefined && typeof strategies.onIdle.model !== 'string') {
91
+ errors.push({ key: 'strategies.onIdle.model', expected: 'string', actual: typeof strategies.onIdle.model });
92
+ }
93
+ if (strategies.onIdle.showModelErrorToasts !== undefined && typeof strategies.onIdle.showModelErrorToasts !== 'boolean') {
94
+ errors.push({ key: 'strategies.onIdle.showModelErrorToasts', expected: 'boolean', actual: typeof strategies.onIdle.showModelErrorToasts });
95
+ }
96
+ if (strategies.onIdle.strictModelSelection !== undefined && typeof strategies.onIdle.strictModelSelection !== 'boolean') {
97
+ errors.push({ key: 'strategies.onIdle.strictModelSelection', expected: 'boolean', actual: typeof strategies.onIdle.strictModelSelection });
98
+ }
99
+ if (strategies.onIdle.protectedTools !== undefined && !Array.isArray(strategies.onIdle.protectedTools)) {
100
+ errors.push({ key: 'strategies.onIdle.protectedTools', expected: 'string[]', actual: typeof strategies.onIdle.protectedTools });
101
+ }
102
+ }
103
+ // pruneTool
104
+ if (strategies.pruneTool) {
105
+ if (strategies.pruneTool.enabled !== undefined && typeof strategies.pruneTool.enabled !== 'boolean') {
106
+ errors.push({ key: 'strategies.pruneTool.enabled', expected: 'boolean', actual: typeof strategies.pruneTool.enabled });
107
+ }
108
+ if (strategies.pruneTool.protectedTools !== undefined && !Array.isArray(strategies.pruneTool.protectedTools)) {
109
+ errors.push({ key: 'strategies.pruneTool.protectedTools', expected: 'string[]', actual: typeof strategies.pruneTool.protectedTools });
110
+ }
111
+ if (strategies.pruneTool.nudge) {
112
+ if (strategies.pruneTool.nudge.enabled !== undefined && typeof strategies.pruneTool.nudge.enabled !== 'boolean') {
113
+ errors.push({ key: 'strategies.pruneTool.nudge.enabled', expected: 'boolean', actual: typeof strategies.pruneTool.nudge.enabled });
114
+ }
115
+ if (strategies.pruneTool.nudge.frequency !== undefined && typeof strategies.pruneTool.nudge.frequency !== 'number') {
116
+ errors.push({ key: 'strategies.pruneTool.nudge.frequency', expected: 'number', actual: typeof strategies.pruneTool.nudge.frequency });
117
+ }
118
+ }
119
+ }
120
+ }
121
+ return errors;
122
+ }
123
+ // Show validation warnings for a config file
124
+ function showConfigValidationWarnings(ctx, configPath, configData, isProject) {
125
+ const invalidKeys = getInvalidConfigKeys(configData);
126
+ const typeErrors = validateConfigTypes(configData);
127
+ if (invalidKeys.length === 0 && typeErrors.length === 0) {
128
+ return;
129
+ }
130
+ const configType = isProject ? 'project config' : 'config';
131
+ const messages = [];
132
+ if (invalidKeys.length > 0) {
133
+ const keyList = invalidKeys.slice(0, 3).join(', ');
134
+ const suffix = invalidKeys.length > 3 ? ` (+${invalidKeys.length - 3} more)` : '';
135
+ messages.push(`Unknown keys: ${keyList}${suffix}`);
136
+ }
137
+ if (typeErrors.length > 0) {
138
+ for (const err of typeErrors.slice(0, 2)) {
139
+ messages.push(`${err.key}: expected ${err.expected}, got ${err.actual}`);
140
+ }
141
+ if (typeErrors.length > 2) {
142
+ messages.push(`(+${typeErrors.length - 2} more type errors)`);
143
+ }
144
+ }
145
+ setTimeout(() => {
146
+ try {
147
+ ctx.client.tui.showToast({
148
+ body: {
149
+ title: `DCP: Invalid ${configType}`,
150
+ message: `${configPath}\n${messages.join('\n')}`,
151
+ variant: "warning",
152
+ duration: 7000
153
+ }
154
+ });
155
+ }
156
+ catch { }
157
+ }, 7000);
158
+ }
6
159
  const defaultConfig = {
7
160
  enabled: true,
8
161
  debug: false,
9
- protectedTools: ['task', 'todowrite', 'todoread', 'prune', 'batch', 'write', 'edit'],
10
- showModelErrorToasts: true,
11
162
  showUpdateToasts: true,
12
- strictModelSelection: false,
13
- pruning_summary: 'detailed',
14
- nudge_freq: 10,
163
+ pruningSummary: 'detailed',
15
164
  strategies: {
16
- onIdle: ['ai-analysis'],
17
- onTool: ['ai-analysis']
165
+ deduplication: {
166
+ enabled: true,
167
+ protectedTools: [...DEFAULT_PROTECTED_TOOLS]
168
+ },
169
+ pruneThinkingBlocks: {
170
+ enabled: false
171
+ },
172
+ pruneTool: {
173
+ enabled: true,
174
+ protectedTools: [...DEFAULT_PROTECTED_TOOLS],
175
+ nudge: {
176
+ enabled: true,
177
+ frequency: 10
178
+ }
179
+ },
180
+ onIdle: {
181
+ enabled: false,
182
+ showModelErrorToasts: true,
183
+ strictModelSelection: false,
184
+ protectedTools: [...DEFAULT_PROTECTED_TOOLS]
185
+ }
18
186
  }
19
187
  };
20
- const VALID_CONFIG_KEYS = new Set([
21
- 'enabled',
22
- 'debug',
23
- 'protectedTools',
24
- 'model',
25
- 'showModelErrorToasts',
26
- 'showUpdateToasts',
27
- 'strictModelSelection',
28
- 'pruning_summary',
29
- 'nudge_freq',
30
- 'strategies'
31
- ]);
32
188
  const GLOBAL_CONFIG_DIR = join(homedir(), '.config', 'opencode');
33
189
  const GLOBAL_CONFIG_PATH_JSONC = join(GLOBAL_CONFIG_DIR, 'dcp.jsonc');
34
190
  const GLOBAL_CONFIG_PATH_JSON = join(GLOBAL_CONFIG_DIR, 'dcp.json');
@@ -79,139 +235,201 @@ function createDefaultConfig() {
79
235
  "enabled": true,
80
236
  // Enable debug logging to ~/.config/opencode/logs/dcp/
81
237
  "debug": false,
82
- // Override model for analysis (format: "provider/model", e.g. "anthropic/claude-haiku-4-5")
83
- // "model": "anthropic/claude-haiku-4-5",
84
- // Show toast notifications when model selection fails
85
- "showModelErrorToasts": true,
86
238
  // Show toast notifications when a new version is available
87
239
  "showUpdateToasts": true,
88
- // Only run AI analysis with session model or configured model (disables fallback models)
89
- "strictModelSelection": false,
90
- // AI analysis strategies (deduplication runs automatically on every request)
91
- "strategies": {
92
- // Strategies to run when session goes idle
93
- "onIdle": ["ai-analysis"],
94
- // Strategies to run when AI calls prune tool
95
- "onTool": ["ai-analysis"]
96
- },
97
240
  // Summary display: "off", "minimal", or "detailed"
98
- "pruning_summary": "detailed",
99
- // How often to nudge the AI to prune (every N tool results, 0 = disabled)
100
- "nudge_freq": 10
101
- // Additional tools to protect from pruning
102
- // "protectedTools": ["bash"]
241
+ "pruningSummary": "detailed",
242
+ // Strategies for pruning tokens from chat history
243
+ "strategies": {
244
+ // Remove duplicate tool calls (same tool with same arguments)
245
+ "deduplication": {
246
+ "enabled": true,
247
+ // Additional tools to protect from pruning
248
+ "protectedTools": []
249
+ },
250
+ // Remove thinking/reasoning LLM blocks
251
+ "pruneThinkingBlocks": {
252
+ "enabled": false
253
+ },
254
+ // Exposes a prune tool to your LLM to call when it determines pruning is necessary
255
+ "pruneTool": {
256
+ "enabled": true,
257
+ // Additional tools to protect from pruning
258
+ "protectedTools": [],
259
+ // Nudge the LLM to use the prune tool (every <frequency> tool results)
260
+ "nudge": {
261
+ "enabled": true,
262
+ "frequency": 10
263
+ }
264
+ },
265
+ // (Legacy) Run an LLM to analyze what tool calls are no longer relevant on idle
266
+ "onIdle": {
267
+ "enabled": false,
268
+ // Override model for analysis (format: "provider/model")
269
+ // "model": "anthropic/claude-haiku-4-5",
270
+ // Show toast notifications when model selection fails
271
+ "showModelErrorToasts": true,
272
+ // When true, fallback models are not permitted
273
+ "strictModelSelection": false,
274
+ // Additional tools to protect from pruning
275
+ "protectedTools": []
276
+ }
277
+ }
103
278
  }
104
279
  `;
105
280
  writeFileSync(GLOBAL_CONFIG_PATH_JSONC, configContent, 'utf-8');
106
281
  }
107
282
  function loadConfigFile(configPath) {
283
+ let fileContent;
108
284
  try {
109
- const fileContent = readFileSync(configPath, 'utf-8');
110
- return parse(fileContent);
111
- }
112
- catch (error) {
113
- return null;
285
+ fileContent = readFileSync(configPath, 'utf-8');
114
286
  }
115
- }
116
- function getInvalidKeys(config) {
117
- const invalidKeys = [];
118
- for (const key of Object.keys(config)) {
119
- if (!VALID_CONFIG_KEYS.has(key)) {
120
- invalidKeys.push(key);
121
- }
287
+ catch {
288
+ // File doesn't exist or can't be read - not a parse error
289
+ return { data: null };
122
290
  }
123
- return invalidKeys;
124
- }
125
- function backupAndResetConfig(configPath, logger) {
126
291
  try {
127
- const backupPath = configPath + '.bak';
128
- copyFileSync(configPath, backupPath);
129
- logger.info('config', 'Created config backup', { backup: backupPath });
130
- createDefaultConfig();
131
- logger.info('config', 'Created fresh default config', { path: GLOBAL_CONFIG_PATH_JSONC });
132
- return backupPath;
292
+ const parsed = parse(fileContent);
293
+ if (parsed === undefined || parsed === null) {
294
+ return { data: null, parseError: 'Config file is empty or invalid' };
295
+ }
296
+ return { data: parsed };
133
297
  }
134
298
  catch (error) {
135
- logger.error('config', 'Failed to backup/reset config', { error: error.message });
136
- return null;
299
+ return { data: null, parseError: error.message || 'Failed to parse config' };
137
300
  }
138
301
  }
139
302
  function mergeStrategies(base, override) {
140
303
  if (!override)
141
304
  return base;
142
305
  return {
143
- onIdle: override.onIdle ?? base.onIdle,
144
- onTool: override.onTool ?? base.onTool
306
+ deduplication: {
307
+ enabled: override.deduplication?.enabled ?? base.deduplication.enabled,
308
+ protectedTools: [
309
+ ...new Set([
310
+ ...base.deduplication.protectedTools,
311
+ ...(override.deduplication?.protectedTools ?? [])
312
+ ])
313
+ ]
314
+ },
315
+ pruneThinkingBlocks: {
316
+ enabled: override.pruneThinkingBlocks?.enabled ?? base.pruneThinkingBlocks.enabled
317
+ },
318
+ onIdle: {
319
+ enabled: override.onIdle?.enabled ?? base.onIdle.enabled,
320
+ model: override.onIdle?.model ?? base.onIdle.model,
321
+ showModelErrorToasts: override.onIdle?.showModelErrorToasts ?? base.onIdle.showModelErrorToasts,
322
+ strictModelSelection: override.onIdle?.strictModelSelection ?? base.onIdle.strictModelSelection,
323
+ protectedTools: [
324
+ ...new Set([
325
+ ...base.onIdle.protectedTools,
326
+ ...(override.onIdle?.protectedTools ?? [])
327
+ ])
328
+ ]
329
+ },
330
+ pruneTool: {
331
+ enabled: override.pruneTool?.enabled ?? base.pruneTool.enabled,
332
+ protectedTools: [
333
+ ...new Set([
334
+ ...base.pruneTool.protectedTools,
335
+ ...(override.pruneTool?.protectedTools ?? [])
336
+ ])
337
+ ],
338
+ nudge: {
339
+ enabled: override.pruneTool?.nudge?.enabled ?? base.pruneTool.nudge.enabled,
340
+ frequency: override.pruneTool?.nudge?.frequency ?? base.pruneTool.nudge.frequency
341
+ }
342
+ }
343
+ };
344
+ }
345
+ function deepCloneConfig(config) {
346
+ return {
347
+ ...config,
348
+ strategies: {
349
+ deduplication: {
350
+ ...config.strategies.deduplication,
351
+ protectedTools: [...config.strategies.deduplication.protectedTools]
352
+ },
353
+ pruneThinkingBlocks: { ...config.strategies.pruneThinkingBlocks },
354
+ onIdle: {
355
+ ...config.strategies.onIdle,
356
+ protectedTools: [...config.strategies.onIdle.protectedTools]
357
+ },
358
+ pruneTool: {
359
+ ...config.strategies.pruneTool,
360
+ protectedTools: [...config.strategies.pruneTool.protectedTools],
361
+ nudge: { ...config.strategies.pruneTool.nudge }
362
+ }
363
+ }
145
364
  };
146
365
  }
147
366
  export function getConfig(ctx) {
148
- let config = { ...defaultConfig, protectedTools: [...defaultConfig.protectedTools] };
367
+ let config = deepCloneConfig(defaultConfig);
149
368
  const configPaths = getConfigPaths(ctx);
150
- const logger = new Logger(true);
151
- const migrations = [];
369
+ // Load and merge global config
152
370
  if (configPaths.global) {
153
- const globalConfig = loadConfigFile(configPaths.global);
154
- if (globalConfig) {
155
- const invalidKeys = getInvalidKeys(globalConfig);
156
- if (invalidKeys.length > 0) {
157
- logger.info('config', 'Found invalid config keys', { keys: invalidKeys });
158
- const backupPath = backupAndResetConfig(configPaths.global, logger);
159
- if (backupPath) {
160
- migrations.push(`Old config backed up to ${backupPath}`);
371
+ const result = loadConfigFile(configPaths.global);
372
+ if (result.parseError) {
373
+ setTimeout(async () => {
374
+ try {
375
+ ctx.client.tui.showToast({
376
+ body: {
377
+ title: "DCP: Invalid config",
378
+ message: `${configPaths.global}\n${result.parseError}\nUsing default values`,
379
+ variant: "warning",
380
+ duration: 7000
381
+ }
382
+ });
161
383
  }
162
- }
163
- else {
164
- config = {
165
- enabled: globalConfig.enabled ?? config.enabled,
166
- debug: globalConfig.debug ?? config.debug,
167
- protectedTools: [...new Set([...config.protectedTools, ...(globalConfig.protectedTools ?? [])])],
168
- model: globalConfig.model ?? config.model,
169
- showModelErrorToasts: globalConfig.showModelErrorToasts ?? config.showModelErrorToasts,
170
- showUpdateToasts: globalConfig.showUpdateToasts ?? config.showUpdateToasts,
171
- strictModelSelection: globalConfig.strictModelSelection ?? config.strictModelSelection,
172
- strategies: mergeStrategies(config.strategies, globalConfig.strategies),
173
- pruning_summary: globalConfig.pruning_summary ?? config.pruning_summary,
174
- nudge_freq: globalConfig.nudge_freq ?? config.nudge_freq
175
- };
176
- logger.info('config', 'Loaded global config', { path: configPaths.global });
177
- }
384
+ catch { }
385
+ }, 7000);
386
+ }
387
+ else if (result.data) {
388
+ // Validate config keys and types
389
+ showConfigValidationWarnings(ctx, configPaths.global, result.data, false);
390
+ config = {
391
+ enabled: result.data.enabled ?? config.enabled,
392
+ debug: result.data.debug ?? config.debug,
393
+ showUpdateToasts: result.data.showUpdateToasts ?? config.showUpdateToasts,
394
+ pruningSummary: result.data.pruningSummary ?? config.pruningSummary,
395
+ strategies: mergeStrategies(config.strategies, result.data.strategies)
396
+ };
178
397
  }
179
398
  }
180
399
  else {
400
+ // No config exists, create default
181
401
  createDefaultConfig();
182
- logger.info('config', 'Created default global config', { path: GLOBAL_CONFIG_PATH_JSONC });
183
402
  }
403
+ // Load and merge project config (overrides global)
184
404
  if (configPaths.project) {
185
- const projectConfig = loadConfigFile(configPaths.project);
186
- if (projectConfig) {
187
- const invalidKeys = getInvalidKeys(projectConfig);
188
- if (invalidKeys.length > 0) {
189
- logger.warn('config', 'Project config has invalid keys (ignored)', {
190
- path: configPaths.project,
191
- keys: invalidKeys
192
- });
193
- migrations.push(`Project config has invalid keys: ${invalidKeys.join(', ')}`);
194
- }
195
- else {
196
- config = {
197
- enabled: projectConfig.enabled ?? config.enabled,
198
- debug: projectConfig.debug ?? config.debug,
199
- protectedTools: [...new Set([...config.protectedTools, ...(projectConfig.protectedTools ?? [])])],
200
- model: projectConfig.model ?? config.model,
201
- showModelErrorToasts: projectConfig.showModelErrorToasts ?? config.showModelErrorToasts,
202
- showUpdateToasts: projectConfig.showUpdateToasts ?? config.showUpdateToasts,
203
- strictModelSelection: projectConfig.strictModelSelection ?? config.strictModelSelection,
204
- strategies: mergeStrategies(config.strategies, projectConfig.strategies),
205
- pruning_summary: projectConfig.pruning_summary ?? config.pruning_summary,
206
- nudge_freq: projectConfig.nudge_freq ?? config.nudge_freq
207
- };
208
- logger.info('config', 'Loaded project config (overrides global)', { path: configPaths.project });
209
- }
405
+ const result = loadConfigFile(configPaths.project);
406
+ if (result.parseError) {
407
+ setTimeout(async () => {
408
+ try {
409
+ ctx.client.tui.showToast({
410
+ body: {
411
+ title: "DCP: Invalid project config",
412
+ message: `${configPaths.project}\n${result.parseError}\nUsing global/default values`,
413
+ variant: "warning",
414
+ duration: 7000
415
+ }
416
+ });
417
+ }
418
+ catch { }
419
+ }, 7000);
420
+ }
421
+ else if (result.data) {
422
+ // Validate config keys and types
423
+ showConfigValidationWarnings(ctx, configPaths.project, result.data, true);
424
+ config = {
425
+ enabled: result.data.enabled ?? config.enabled,
426
+ debug: result.data.debug ?? config.debug,
427
+ showUpdateToasts: result.data.showUpdateToasts ?? config.showUpdateToasts,
428
+ pruningSummary: result.data.pruningSummary ?? config.pruningSummary,
429
+ strategies: mergeStrategies(config.strategies, result.data.strategies)
430
+ };
210
431
  }
211
432
  }
212
- else if (ctx?.directory) {
213
- logger.debug('config', 'No project config found', { searchedFrom: ctx.directory });
214
- }
215
- return { config, migrations };
433
+ return config;
216
434
  }
217
435
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../lib/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../lib/config.ts"],"names":[],"mappings":"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"}
@@ -1,18 +1,10 @@
1
- import type { PluginState } from "./state";
1
+ import type { SessionState, WithParts } from "./state";
2
2
  import type { Logger } from "./logger";
3
- import type { JanitorContext } from "./core/janitor";
4
3
  import type { PluginConfig } from "./config";
5
- import type { ToolTracker } from "./fetch-wrapper/tool-tracker";
6
- export declare function isSubagentSession(client: any, sessionID: string): Promise<boolean>;
7
- export declare function createEventHandler(client: any, janitorCtx: JanitorContext, logger: Logger, config: PluginConfig, toolTracker?: ToolTracker): ({ event }: {
4
+ export declare function createChatMessageTransformHandler(client: any, state: SessionState, logger: Logger, config: PluginConfig): (input: {}, output: {
5
+ messages: WithParts[];
6
+ }) => Promise<void>;
7
+ export declare function createEventHandler(client: any, config: PluginConfig, state: SessionState, logger: Logger, workingDirectory?: string): ({ event }: {
8
8
  event: any;
9
9
  }) => Promise<void>;
10
- /**
11
- * Creates the chat.params hook for model caching and Google tool call mapping.
12
- */
13
- export declare function createChatParamsHandler(client: any, state: PluginState, logger: Logger, toolTracker?: ToolTracker): (input: any, _output: any) => Promise<void>;
14
- /**
15
- * Finds the current agent from messages by scanning backward for user messages.
16
- */
17
- export declare function findCurrentAgent(messages: any[]): string | undefined;
18
10
  //# sourceMappingURL=hooks.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../lib/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAC1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACtC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAEpD,OAAO,KAAK,EAAE,YAAY,EAAmB,MAAM,UAAU,CAAA;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAI/D,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOxF;AAMD,wBAAgB,kBAAkB,CAC9B,MAAM,EAAE,GAAG,EACX,UAAU,EAAE,cAAc,EAC1B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,YAAY,EACpB,WAAW,CAAC,EAAE,WAAW,IAEX,WAAW;IAAE,KAAK,EAAE,GAAG,CAAA;CAAE,mBAyB1C;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACnC,MAAM,EAAE,GAAG,EACX,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,MAAM,EACd,WAAW,CAAC,EAAE,WAAW,IAEX,OAAO,GAAG,EAAE,SAAS,GAAG,mBAwFzC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,MAAM,GAAG,SAAS,CASpE"}
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../lib/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACtC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAQ5C,wBAAgB,iCAAiC,CAC7C,MAAM,EAAE,GAAG,EACX,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,YAAY,IAGhB,OAAO,EAAE,EACT,QAAQ;IAAE,QAAQ,EAAE,SAAS,EAAE,CAAA;CAAE,mBAgBxC;AAED,wBAAgB,kBAAkB,CAC9B,MAAM,EAAE,GAAG,EACX,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,MAAM,EACd,gBAAgB,CAAC,EAAE,MAAM,IAGrB,WAAW;IAAE,KAAK,EAAE,GAAG,CAAA;CAAE,mBA4BhC"}