@tarquinen/opencode-dcp 0.2.8 → 0.3.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.
package/README.md CHANGED
@@ -6,7 +6,23 @@ Automatically reduces token usage in OpenCode by removing obsolete tool outputs
6
6
 
7
7
  ## What It Does
8
8
 
9
- When your OpenCode session becomes idle, this plugin analyzes your conversation and identifies tool outputs that are no longer relevant (superseded file reads, old errors that were fixed, exploratory searches, etc.). These obsolete outputs are pruned from future requests to save tokens and reduce costs.
9
+ This plugin automatically optimizes token usage by identifying and removing redundant or obsolete tool outputs from your conversation history. It operates in two modes:
10
+
11
+ ### Pruning Modes
12
+
13
+ **Auto Mode** (`"auto"`): Fast, deterministic duplicate removal
14
+ - Removes duplicate tool calls (same tool + identical parameters)
15
+ - Keeps only the most recent occurrence of each duplicate
16
+ - Zero LLM inference costs
17
+ - Instant, predictable results
18
+
19
+ **Smart Mode** (`"smart"`): Comprehensive intelligent pruning (recommended)
20
+ - Phase 1: Automatic duplicate removal (same as auto mode)
21
+ - Phase 2: AI analysis to identify obsolete outputs (superseded information, dead-end exploration, etc.)
22
+ - Maximum token savings
23
+ - Small LLM cost for analysis (reduced by deduplication first)
24
+
25
+ When your session becomes idle, the plugin analyzes your conversation and prunes tool outputs that are no longer relevant, saving tokens and reducing costs.
10
26
 
11
27
  ## Installation
12
28
 
@@ -27,84 +43,92 @@ Restart OpenCode. The plugin will automatically start optimizing your sessions.
27
43
 
28
44
  ## Configuration
29
45
 
30
- The plugin supports both global and project-level configuration:
46
+ ### Available Options
31
47
 
32
- - **Global:** `~/.config/opencode/dcp.jsonc` - Applies to all OpenCode sessions
33
- - **Project:** `.opencode/dcp.jsonc` - Applies only to the current project
48
+ - **`enabled`** (boolean, default: `true`) - Enable/disable the plugin
49
+ - **`debug`** (boolean, default: `false`) - Enable detailed logging to `~/.config/opencode/logs/dcp/`
50
+ - **`model`** (string, optional) - Specific model for analysis (e.g., `"anthropic/claude-haiku-4-5"`). Uses session model or smart fallbacks when not specified.
51
+ - **`showModelErrorToasts`** (boolean, default: `true`) - Show notifications when model selection falls back
52
+ - **`pruningMode`** (string, default: `"smart"`) - Pruning strategy:
53
+ - `"auto"`: Fast duplicate removal only (zero LLM cost)
54
+ - `"smart"`: Deduplication + AI analysis (recommended, maximum savings)
55
+ - **`protectedTools`** (string[], default: `["task", "todowrite", "todoread"]`) - Tools that should never be pruned
34
56
 
35
- Project configuration takes precedence over global configuration. The plugin creates a default global configuration file on first run.
57
+ Example configuration:
36
58
 
37
59
  ```jsonc
38
60
  {
39
- // Enable or disable the Dynamic Context Pruning plugin
40
61
  "enabled": true,
41
-
42
- // Enable debug logging to ~/.config/opencode/logs/dcp/YYYY-MM-DD.log
43
62
  "debug": false,
44
-
45
- // Optional: Use a specific model for analysis (otherwise uses session model or smart fallbacks)
46
- // "model": "anthropic/claude-haiku-4-5",
47
-
48
- // Show toast notifications when model selection fails and falls back
49
- "showModelErrorToasts": true,
50
-
51
- // List of tools that should never be pruned from context
52
- // The 'task' tool is protected by default to preserve subagent coordination
53
- "protectedTools": ["task"]
63
+ "pruningMode": "smart",
64
+ "protectedTools": ["task", "todowrite", "todoread"]
54
65
  }
55
66
  ```
56
67
 
57
68
  ### Configuration Hierarchy
58
69
 
59
- 1. **Defaults** - Built-in plugin defaults
60
- 2. **Global config** (`~/.config/opencode/dcp.jsonc`) - Overrides defaults
61
- 3. **Project config** (`.opencode/dcp.jsonc`) - Overrides global config
70
+ 1. **Built-in defaults** → 2. **Global config** (`~/.config/opencode/dcp.jsonc`) → 3. **Project config** (`.opencode/dcp.jsonc`)
62
71
 
63
- This allows you to:
64
- - Set global defaults for all projects
65
- - Override settings per-project (e.g., disable for sensitive projects, use different models)
66
- - Commit project config to version control for team consistency
67
-
68
- ### Creating Project-Level Config
69
-
70
- To create a project-specific configuration:
71
-
72
- 1. Create `.opencode` directory in your project root (if it doesn't exist)
73
- 2. Create `dcp.jsonc` file inside `.opencode/`
74
- 3. Add your project-specific settings
72
+ The global config is automatically created on first run. Create project configs manually to override settings per-project:
75
73
 
76
74
  ```bash
77
- # In your project directory
78
75
  mkdir -p .opencode
79
76
  cat > .opencode/dcp.jsonc << 'EOF'
80
77
  {
81
- // Project-specific DCP settings
82
78
  "debug": true,
83
- "protectedTools": ["task", "read"]
79
+ "pruningMode": "auto"
84
80
  }
85
81
  EOF
86
82
  ```
87
83
 
88
- The global config (`~/.config/opencode/dcp.jsonc`) is automatically created on first run. Project configs are opt-in and must be created manually.
84
+ After modifying configuration, restart OpenCode for changes to take effect.
85
+
86
+ ### Choosing a Pruning Mode
89
87
 
90
- ### Configuration Options
88
+ **Use Auto Mode (`"auto"`) when:**
89
+ - Minimizing costs is critical (zero LLM inference for pruning)
90
+ - You have many repetitive tool calls (file re-reads, repeated commands)
91
+ - You want predictable, deterministic behavior
92
+ - You're debugging or testing and need consistent results
91
93
 
92
- - **`enabled`** (boolean, default: `true`)
93
- Enable or disable the plugin without removing it from your OpenCode configuration.
94
+ **Use Smart Mode (`"smart"`) when:**
95
+ - You want maximum token savings (recommended for most users)
96
+ - Your workflow has both duplicates and obsolete exploration
97
+ - You're willing to incur small LLM costs for comprehensive pruning
98
+ - You want the plugin to intelligently identify superseded information
94
99
 
95
- - **`debug`** (boolean, default: `false`)
96
- Enable detailed debug logging. Logs are written to `~/.config/opencode/logs/dcp/YYYY-MM-DD.log`.
100
+ **Example notification formats:**
97
101
 
98
- - **`model`** (string, optional)
99
- Optional: Specify a model to use for analysis in "provider/model" format (e.g., `"anthropic/claude-haiku-4-5"`). When not specified, the plugin uses the current session model or falls back to authenticated providers in priority order.
102
+ Auto mode:
103
+ ```
104
+ 🧹 DCP: Saved ~1.2K tokens (5 duplicate tools removed)
100
105
 
101
- - **`showModelErrorToasts`** (boolean, default: `true`)
102
- Show toast notifications when model selection fails and falls back to another model. Set to `false` to disable these informational toasts.
106
+ read (3 duplicates):
107
+ ~/project/src/index.ts (2× duplicate)
108
+ ~/project/lib/utils.ts (1× duplicate)
103
109
 
104
- - **`protectedTools`** (string[], default: `["task"]`)
105
- List of tool names that should never be pruned from context. The `task` tool is protected by default to ensure subagent coordination works correctly.
110
+ bash (2 duplicates):
111
+ Run tests (2× duplicate)
112
+ ```
106
113
 
107
- After modifying the configuration, restart OpenCode for changes to take effect.
114
+ Smart mode:
115
+ ```
116
+ 🧹 DCP: Saved ~3.4K tokens (8 tools pruned)
117
+
118
+ 📦 Duplicates removed (5):
119
+ read:
120
+ ~/project/src/index.ts (3×)
121
+ ~/project/lib/utils.ts (2×)
122
+ bash:
123
+ Run tests (2×)
124
+
125
+ 🤖 LLM analysis (3):
126
+ grep (2):
127
+ pattern: "old.*function"
128
+ pattern: "deprecated"
129
+ list (1):
130
+ ~/project/temp
131
+ ```
108
132
 
109
133
  To check the latest available version:
110
134
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAuCjD,QAAA,MAAM,MAAM,EAAE,MAqVK,CAAA;AAEnB,eAAe,MAAM,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAuCjD,QAAA,MAAM,MAAM,EAAE,MA4aK,CAAA;AAEnB,eAAe,MAAM,CAAA"}
package/dist/index.js CHANGED
@@ -44,7 +44,7 @@ const plugin = (async (ctx) => {
44
44
  const stateManager = new StateManager();
45
45
  const toolParametersCache = new Map(); // callID -> parameters
46
46
  const modelCache = new Map(); // sessionID -> model info
47
- const janitor = new Janitor(ctx.client, stateManager, logger, toolParametersCache, config.protectedTools, modelCache, config.model, config.showModelErrorToasts);
47
+ const janitor = new Janitor(ctx.client, stateManager, logger, toolParametersCache, config.protectedTools, modelCache, config.model, config.showModelErrorToasts, config.pruningMode);
48
48
  const cacheToolParameters = (messages, component) => {
49
49
  for (const message of messages) {
50
50
  if (message.role !== 'assistant' || !Array.isArray(message.tool_calls)) {
@@ -88,29 +88,34 @@ const plugin = (async (ctx) => {
88
88
  });
89
89
  // Cache tool parameters for janitor metadata
90
90
  cacheToolParameters(body.messages, "global-fetch");
91
+ // Always save wrapped context if debug is enabled (even when no tool messages)
92
+ // This captures janitor's AI inference which has messageCount=1 (just prompt)
93
+ const shouldLogAllRequests = logger.enabled;
91
94
  // Check for tool messages that might need pruning
92
95
  const toolMessages = body.messages.filter((m) => m.role === 'tool');
96
+ // Collect all pruned IDs across all sessions (excluding subagents)
97
+ // This is safe because tool_call_ids are globally unique
98
+ const allSessions = await ctx.client.session.list();
99
+ const allPrunedIds = new Set();
100
+ if (allSessions.data) {
101
+ for (const session of allSessions.data) {
102
+ // Skip subagent sessions (don't log - it's normal and would spam logs)
103
+ if (session.parentID) {
104
+ continue;
105
+ }
106
+ const prunedIds = await stateManager.get(session.id);
107
+ prunedIds.forEach(id => allPrunedIds.add(id));
108
+ }
109
+ }
110
+ // Only process tool message replacement if there are tool messages
93
111
  if (toolMessages.length > 0) {
94
112
  logger.debug("global-fetch", "Found tool messages in request", {
95
113
  toolMessageCount: toolMessages.length,
96
114
  toolCallIds: toolMessages.map((m) => m.tool_call_id).slice(0, 5)
97
115
  });
98
- // Collect all pruned IDs across all sessions (excluding subagents)
99
- // This is safe because tool_call_ids are globally unique
100
- const allSessions = await ctx.client.session.list();
101
- const allPrunedIds = new Set();
102
- if (allSessions.data) {
103
- for (const session of allSessions.data) {
104
- // Skip subagent sessions (don't log - it's normal and would spam logs)
105
- if (session.parentID) {
106
- continue;
107
- }
108
- const prunedIds = await stateManager.get(session.id);
109
- prunedIds.forEach(id => allPrunedIds.add(id));
110
- }
111
- }
112
116
  if (allPrunedIds.size > 0) {
113
117
  let replacedCount = 0;
118
+ const originalMessages = JSON.parse(JSON.stringify(body.messages)); // Deep copy for logging
114
119
  body.messages = body.messages.map((m) => {
115
120
  // Normalize ID to lowercase for case-insensitive matching
116
121
  if (m.role === 'tool' && allPrunedIds.has(m.tool_call_id?.toLowerCase())) {
@@ -128,11 +133,61 @@ const plugin = (async (ctx) => {
128
133
  replacedCount: replacedCount,
129
134
  totalMessages: body.messages.length
130
135
  });
136
+ // Save wrapped context to file if debug is enabled
137
+ await logger.saveWrappedContext("global", // Use "global" as session ID since we don't know which session this is
138
+ body.messages, {
139
+ url: typeof input === 'string' ? input : 'URL object',
140
+ totalPrunedIds: allPrunedIds.size,
141
+ replacedCount,
142
+ totalMessages: body.messages.length,
143
+ originalMessageCount: originalMessages.length
144
+ });
131
145
  // Update the request body with modified messages
132
146
  init.body = JSON.stringify(body);
133
147
  }
148
+ else if (shouldLogAllRequests) {
149
+ // Log even when no replacements occurred (tool messages exist but none were pruned)
150
+ await logger.saveWrappedContext("global", body.messages, {
151
+ url: typeof input === 'string' ? input : 'URL object',
152
+ totalPrunedIds: allPrunedIds.size,
153
+ replacedCount: 0,
154
+ totalMessages: body.messages.length,
155
+ toolMessageCount: toolMessages.length,
156
+ note: "Tool messages exist but none were replaced"
157
+ });
158
+ }
159
+ }
160
+ else if (shouldLogAllRequests) {
161
+ // Log when tool messages exist but no pruned IDs exist yet
162
+ await logger.saveWrappedContext("global", body.messages, {
163
+ url: typeof input === 'string' ? input : 'URL object',
164
+ totalPrunedIds: 0,
165
+ replacedCount: 0,
166
+ totalMessages: body.messages.length,
167
+ toolMessageCount: toolMessages.length,
168
+ note: "No pruned IDs exist yet"
169
+ });
134
170
  }
135
171
  }
172
+ else if (shouldLogAllRequests) {
173
+ // Log requests with NO tool messages (e.g., janitor's shadow inference)
174
+ // Detect if this is a janitor request by checking the prompt content
175
+ const isJanitorRequest = body.messages.length === 1 &&
176
+ body.messages[0]?.role === 'user' &&
177
+ typeof body.messages[0]?.content === 'string' &&
178
+ body.messages[0].content.includes('conversation analyzer that identifies obsolete tool outputs');
179
+ const sessionId = isJanitorRequest ? "janitor-shadow" : "global";
180
+ await logger.saveWrappedContext(sessionId, body.messages, {
181
+ url: typeof input === 'string' ? input : 'URL object',
182
+ totalPrunedIds: allPrunedIds.size,
183
+ replacedCount: 0,
184
+ totalMessages: body.messages.length,
185
+ toolMessageCount: 0,
186
+ note: isJanitorRequest
187
+ ? "Janitor shadow inference with embedded session history in prompt"
188
+ : "No tool messages in request (likely title generation or other inference)"
189
+ });
190
+ }
136
191
  }
137
192
  }
138
193
  catch (e) {
@@ -146,6 +201,7 @@ const plugin = (async (ctx) => {
146
201
  debug: config.debug,
147
202
  protectedTools: config.protectedTools,
148
203
  model: config.model,
204
+ pruningMode: config.pruningMode,
149
205
  globalConfigFile: join(homedir(), ".config", "opencode", "dcp.jsonc"),
150
206
  projectConfigFile: ctx.directory ? join(ctx.directory, ".opencode", "dcp.jsonc") : "N/A",
151
207
  logDirectory: join(homedir(), ".config", "opencode", "logs", "dcp"),
@@ -317,6 +373,14 @@ const plugin = (async (ctx) => {
317
373
  totalToolCount: remainingToolMessages.length,
318
374
  toolCallIds: remainingToolMessages.map((m) => m.tool_call_id)
319
375
  });
376
+ // Save wrapped context to file if debug is enabled
377
+ await logger.saveWrappedContext(sessionId, body.messages, {
378
+ url: typeof fetchInput === 'string' ? fetchInput : 'URL object',
379
+ totalMessages: originalMessageCount,
380
+ replacedCount: prunedThisRequest,
381
+ prunedIds,
382
+ wrapper: 'session-specific'
383
+ });
320
384
  // Update the request body with modified messages
321
385
  init.body = JSON.stringify(body);
322
386
  parsedBody = body;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@ export interface PluginConfig {
5
5
  protectedTools: string[];
6
6
  model?: string;
7
7
  showModelErrorToasts?: boolean;
8
+ pruningMode: "auto" | "smart";
8
9
  }
9
10
  /**
10
11
  * Loads configuration with support for both global and project-level configs
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../lib/config.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAEtD,MAAM,WAAW,YAAY;IACzB,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,OAAO,CAAA;IACd,cAAc,EAAE,MAAM,EAAE,CAAA;IACxB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,oBAAoB,CAAC,EAAE,OAAO,CAAA;CACjC;AA8GD;;;;;;;;;;;;GAYG;AACH,wBAAgB,SAAS,CAAC,GAAG,CAAC,EAAE,WAAW,GAAG,YAAY,CA0CzD"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../lib/config.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAEtD,MAAM,WAAW,YAAY;IACzB,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,OAAO,CAAA;IACd,cAAc,EAAE,MAAM,EAAE,CAAA;IACxB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,WAAW,EAAE,MAAM,GAAG,OAAO,CAAA;CAChC;AAwHD;;;;;;;;;;;;GAYG;AACH,wBAAgB,SAAS,CAAC,GAAG,CAAC,EAAE,WAAW,GAAG,YAAY,CA4CzD"}
@@ -7,8 +7,9 @@ import { Logger } from './logger';
7
7
  const defaultConfig = {
8
8
  enabled: true, // Plugin is enabled by default
9
9
  debug: false, // Disable debug logging by default
10
- protectedTools: ['task'], // Tools that should never be pruned
11
- showModelErrorToasts: true // Show model error toasts by default
10
+ protectedTools: ['task', 'todowrite', 'todoread'], // Tools that should never be pruned (including stateful tools)
11
+ showModelErrorToasts: true, // Show model error toasts by default
12
+ pruningMode: 'smart' // Default to smart mode (deduplication + LLM analysis)
12
13
  };
13
14
  const GLOBAL_CONFIG_DIR = join(homedir(), '.config', 'opencode');
14
15
  const GLOBAL_CONFIG_PATH_JSONC = join(GLOBAL_CONFIG_DIR, 'dcp.jsonc');
@@ -73,7 +74,10 @@ function createDefaultConfig() {
73
74
  // Enable or disable the Dynamic Context Pruning plugin
74
75
  "enabled": true,
75
76
 
76
- // Enable debug logging to ~/.config/opencode/logs/dcp/YYYY-MM-DD.log
77
+ // Enable debug logging to ~/.config/opencode/logs/dcp/
78
+ // Outputs include:
79
+ // - daily/YYYY-MM-DD.log (plugin activity, decisions, errors)
80
+ // - ai-context/*.json (messages sent to AI after pruning)
77
81
  "debug": false,
78
82
 
79
83
  // Optional: Specify a model to use for analysis instead of the session model
@@ -85,9 +89,15 @@ function createDefaultConfig() {
85
89
  // Set to false to disable these informational toasts
86
90
  "showModelErrorToasts": true,
87
91
 
92
+ // Pruning strategy:
93
+ // "auto": Automatic duplicate removal only (fast, no LLM cost)
94
+ // "smart": Deduplication + AI analysis for intelligent pruning (recommended)
95
+ "pruningMode": "smart",
96
+
88
97
  // List of tools that should never be pruned from context
89
- // The 'task' tool is protected by default to preserve subagent coordination
90
- "protectedTools": ["task"]
98
+ // "task": Each subagent invocation is intentional
99
+ // "todowrite"/"todoread": Stateful tools where each call matters
100
+ "protectedTools": ["task", "todowrite", "todoread"]
91
101
  }
92
102
  `;
93
103
  writeFileSync(GLOBAL_CONFIG_PATH_JSONC, configContent, 'utf-8');
@@ -132,7 +142,8 @@ export function getConfig(ctx) {
132
142
  debug: globalConfig.debug ?? config.debug,
133
143
  protectedTools: globalConfig.protectedTools ?? config.protectedTools,
134
144
  model: globalConfig.model ?? config.model,
135
- showModelErrorToasts: globalConfig.showModelErrorToasts ?? config.showModelErrorToasts
145
+ showModelErrorToasts: globalConfig.showModelErrorToasts ?? config.showModelErrorToasts,
146
+ pruningMode: globalConfig.pruningMode ?? config.pruningMode
136
147
  };
137
148
  logger.info('config', 'Loaded global config', { path: configPaths.global });
138
149
  }
@@ -151,7 +162,8 @@ export function getConfig(ctx) {
151
162
  debug: projectConfig.debug ?? config.debug,
152
163
  protectedTools: projectConfig.protectedTools ?? config.protectedTools,
153
164
  model: projectConfig.model ?? config.model,
154
- showModelErrorToasts: projectConfig.showModelErrorToasts ?? config.showModelErrorToasts
165
+ showModelErrorToasts: projectConfig.showModelErrorToasts ?? config.showModelErrorToasts,
166
+ pruningMode: projectConfig.pruningMode ?? config.pruningMode
155
167
  };
156
168
  logger.info('config', 'Loaded project config (overrides global)', { path: configPaths.project });
157
169
  }
@@ -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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"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Deduplicator Module
3
+ *
4
+ * Handles automatic detection and removal of duplicate tool calls based on
5
+ * tool name + parameter signature matching.
6
+ */
7
+ export interface DuplicateDetectionResult {
8
+ duplicateIds: string[];
9
+ deduplicationDetails: Map<string, {
10
+ toolName: string;
11
+ parameterKey: string;
12
+ duplicateCount: number;
13
+ prunedIds: string[];
14
+ keptId: string;
15
+ }>;
16
+ }
17
+ /**
18
+ * Detects duplicate tool calls based on tool name + parameter signature
19
+ * Keeps only the most recent occurrence of each duplicate set
20
+ * Respects protected tools - they are never deduplicated
21
+ */
22
+ export declare function detectDuplicates(toolMetadata: Map<string, {
23
+ tool: string;
24
+ parameters?: any;
25
+ }>, unprunedToolCallIds: string[], // In chronological order
26
+ protectedTools: string[]): DuplicateDetectionResult;
27
+ /**
28
+ * Extract human-readable parameter key for notifications
29
+ * Supports all ACTIVE OpenCode tools with appropriate parameter extraction
30
+ *
31
+ * ACTIVE Tools (always available):
32
+ * - File: read, write, edit
33
+ * - Search: list, glob, grep
34
+ * - Execution: bash
35
+ * - Agent: task
36
+ * - Web: webfetch
37
+ * - Todo: todowrite, todoread
38
+ *
39
+ * CONDITIONAL Tools (may be disabled):
40
+ * - batch (experimental.batch_tool flag)
41
+ * - websearch, codesearch (OPENCODE_EXPERIMENTAL_EXA flag)
42
+ *
43
+ * INACTIVE Tools (exist but not registered, skip):
44
+ * - multiedit, patch, lsp_diagnostics, lsp_hover
45
+ */
46
+ export declare function extractParameterKey(metadata: {
47
+ tool: string;
48
+ parameters?: any;
49
+ }): string;
50
+ //# sourceMappingURL=deduplicator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deduplicator.d.ts","sourceRoot":"","sources":["../../lib/deduplicator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,wBAAwB;IACrC,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,oBAAoB,EAAE,GAAG,CAAC,MAAM,EAAE;QAC9B,QAAQ,EAAE,MAAM,CAAA;QAChB,YAAY,EAAE,MAAM,CAAA;QACpB,cAAc,EAAE,MAAM,CAAA;QACtB,SAAS,EAAE,MAAM,EAAE,CAAA;QACnB,MAAM,EAAE,MAAM,CAAA;KACjB,CAAC,CAAA;CACL;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC5B,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,GAAG,CAAA;CAAE,CAAC,EAC7D,mBAAmB,EAAE,MAAM,EAAE,EAAG,yBAAyB;AACzD,cAAc,EAAE,MAAM,EAAE,GACzB,wBAAwB,CA0C1B;AAgDD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,GAAG,CAAA;CAAE,GAAG,MAAM,CAwExF"}