@tarquinen/opencode-dcp 0.4.17 → 1.0.0-beta.2
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 +58 -30
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -59
- package/dist/index.js.map +1 -1
- package/dist/lib/config.d.ts +30 -13
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +339 -121
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/hooks.d.ts +5 -13
- package/dist/lib/hooks.d.ts.map +1 -1
- package/dist/lib/hooks.js +26 -125
- package/dist/lib/hooks.js.map +1 -1
- package/dist/lib/logger.d.ts +5 -9
- package/dist/lib/logger.d.ts.map +1 -1
- package/dist/lib/logger.js +30 -160
- package/dist/lib/logger.js.map +1 -1
- package/dist/lib/messages/index.d.ts +2 -0
- package/dist/lib/messages/index.d.ts.map +1 -0
- package/dist/lib/messages/index.js +2 -0
- package/dist/lib/messages/index.js.map +1 -0
- package/dist/lib/messages/prune.d.ts +6 -0
- package/dist/lib/messages/prune.d.ts.map +1 -0
- package/dist/lib/messages/prune.js +85 -0
- package/dist/lib/messages/prune.js.map +1 -0
- package/dist/lib/messages/utils.d.ts +10 -0
- package/dist/lib/messages/utils.d.ts.map +1 -0
- package/dist/lib/messages/utils.js +103 -0
- package/dist/lib/messages/utils.js.map +1 -0
- package/dist/lib/model-selector.js +3 -3
- package/dist/lib/model-selector.js.map +1 -1
- package/dist/lib/{core/prompt.d.ts → prompt.d.ts} +1 -1
- package/dist/lib/prompt.d.ts.map +1 -0
- package/dist/lib/{core/prompt.js → prompt.js} +2 -6
- package/dist/lib/prompt.js.map +1 -0
- package/dist/lib/prompts/pruning.txt +1 -1
- package/dist/lib/prompts/tool.txt +3 -3
- package/dist/lib/state/index.d.ts +3 -27
- package/dist/lib/state/index.d.ts.map +1 -1
- package/dist/lib/state/index.js +3 -40
- package/dist/lib/state/index.js.map +1 -1
- package/dist/lib/state/persistence.d.ts +4 -4
- package/dist/lib/state/persistence.d.ts.map +1 -1
- package/dist/lib/state/persistence.js +24 -20
- package/dist/lib/state/persistence.js.map +1 -1
- package/dist/lib/state/state.d.ts +7 -0
- package/dist/lib/state/state.d.ts.map +1 -0
- package/dist/lib/state/state.js +76 -0
- package/dist/lib/state/state.js.map +1 -0
- package/dist/lib/state/tool-cache.d.ts +4 -6
- package/dist/lib/state/tool-cache.d.ts.map +1 -1
- package/dist/lib/state/tool-cache.js +20 -46
- package/dist/lib/state/tool-cache.js.map +1 -1
- package/dist/lib/state/types.d.ts +30 -0
- package/dist/lib/state/types.d.ts.map +1 -0
- package/dist/lib/state/types.js +2 -0
- package/dist/lib/state/types.js.map +1 -0
- package/dist/lib/strategies/deduplication.d.ts +10 -0
- package/dist/lib/strategies/deduplication.d.ts.map +1 -0
- package/dist/lib/strategies/deduplication.js +89 -0
- package/dist/lib/strategies/deduplication.js.map +1 -0
- package/dist/lib/strategies/index.d.ts +4 -0
- package/dist/lib/strategies/index.d.ts.map +1 -0
- package/dist/lib/strategies/index.js +4 -0
- package/dist/lib/strategies/index.js.map +1 -0
- package/dist/lib/strategies/on-idle.d.ts +14 -0
- package/dist/lib/strategies/on-idle.d.ts.map +1 -0
- package/dist/lib/strategies/on-idle.js +216 -0
- package/dist/lib/strategies/on-idle.js.map +1 -0
- package/dist/lib/strategies/prune-tool.d.ts +17 -0
- package/dist/lib/strategies/prune-tool.d.ts.map +1 -0
- package/dist/lib/strategies/prune-tool.js +70 -0
- package/dist/lib/strategies/prune-tool.js.map +1 -0
- package/dist/lib/ui/display-utils.d.ts +3 -12
- package/dist/lib/ui/display-utils.d.ts.map +1 -1
- package/dist/lib/ui/display-utils.js +12 -79
- package/dist/lib/ui/display-utils.js.map +1 -1
- package/dist/lib/ui/notification.d.ts +7 -23
- package/dist/lib/ui/notification.d.ts.map +1 -1
- package/dist/lib/ui/notification.js +38 -47
- package/dist/lib/ui/notification.js.map +1 -1
- package/dist/lib/utils.d.ts +9 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/lib/utils.js +61 -0
- package/dist/lib/utils.js.map +1 -0
- package/package.json +1 -1
- package/dist/lib/core/janitor.d.ts +0 -38
- package/dist/lib/core/janitor.d.ts.map +0 -1
- package/dist/lib/core/janitor.js +0 -294
- package/dist/lib/core/janitor.js.map +0 -1
- package/dist/lib/core/prompt.d.ts.map +0 -1
- package/dist/lib/core/prompt.js.map +0 -1
- package/dist/lib/core/strategies/deduplication.d.ts +0 -7
- package/dist/lib/core/strategies/deduplication.d.ts.map +0 -1
- package/dist/lib/core/strategies/deduplication.js +0 -76
- package/dist/lib/core/strategies/deduplication.js.map +0 -1
- package/dist/lib/core/strategies/index.d.ts +0 -51
- package/dist/lib/core/strategies/index.d.ts.map +0 -1
- package/dist/lib/core/strategies/index.js +0 -48
- package/dist/lib/core/strategies/index.js.map +0 -1
- package/dist/lib/fetch-wrapper/formats/anthropic.d.ts +0 -8
- package/dist/lib/fetch-wrapper/formats/anthropic.d.ts.map +0 -1
- package/dist/lib/fetch-wrapper/formats/anthropic.js +0 -96
- package/dist/lib/fetch-wrapper/formats/anthropic.js.map +0 -1
- package/dist/lib/fetch-wrapper/formats/bedrock.d.ts +0 -8
- package/dist/lib/fetch-wrapper/formats/bedrock.d.ts.map +0 -1
- package/dist/lib/fetch-wrapper/formats/bedrock.js +0 -97
- package/dist/lib/fetch-wrapper/formats/bedrock.js.map +0 -1
- package/dist/lib/fetch-wrapper/formats/gemini.d.ts +0 -8
- package/dist/lib/fetch-wrapper/formats/gemini.d.ts.map +0 -1
- package/dist/lib/fetch-wrapper/formats/gemini.js +0 -134
- package/dist/lib/fetch-wrapper/formats/gemini.js.map +0 -1
- package/dist/lib/fetch-wrapper/formats/index.d.ts +0 -6
- package/dist/lib/fetch-wrapper/formats/index.d.ts.map +0 -1
- package/dist/lib/fetch-wrapper/formats/index.js +0 -6
- package/dist/lib/fetch-wrapper/formats/index.js.map +0 -1
- package/dist/lib/fetch-wrapper/formats/openai-chat.d.ts +0 -3
- package/dist/lib/fetch-wrapper/formats/openai-chat.d.ts.map +0 -1
- package/dist/lib/fetch-wrapper/formats/openai-chat.js +0 -100
- package/dist/lib/fetch-wrapper/formats/openai-chat.js.map +0 -1
- package/dist/lib/fetch-wrapper/formats/openai-responses.d.ts +0 -3
- package/dist/lib/fetch-wrapper/formats/openai-responses.d.ts.map +0 -1
- package/dist/lib/fetch-wrapper/formats/openai-responses.js +0 -63
- package/dist/lib/fetch-wrapper/formats/openai-responses.js.map +0 -1
- package/dist/lib/fetch-wrapper/gc-tracker.d.ts +0 -4
- package/dist/lib/fetch-wrapper/gc-tracker.d.ts.map +0 -1
- package/dist/lib/fetch-wrapper/gc-tracker.js +0 -61
- package/dist/lib/fetch-wrapper/gc-tracker.js.map +0 -1
- package/dist/lib/fetch-wrapper/handler.d.ts +0 -3
- package/dist/lib/fetch-wrapper/handler.d.ts.map +0 -1
- package/dist/lib/fetch-wrapper/handler.js +0 -118
- package/dist/lib/fetch-wrapper/handler.js.map +0 -1
- package/dist/lib/fetch-wrapper/index.d.ts +0 -18
- package/dist/lib/fetch-wrapper/index.d.ts.map +0 -1
- package/dist/lib/fetch-wrapper/index.js +0 -107
- package/dist/lib/fetch-wrapper/index.js.map +0 -1
- package/dist/lib/fetch-wrapper/prunable-list.d.ts +0 -8
- package/dist/lib/fetch-wrapper/prunable-list.d.ts.map +0 -1
- package/dist/lib/fetch-wrapper/prunable-list.js +0 -38
- package/dist/lib/fetch-wrapper/prunable-list.js.map +0 -1
- package/dist/lib/fetch-wrapper/tool-tracker.d.ts +0 -9
- package/dist/lib/fetch-wrapper/tool-tracker.d.ts.map +0 -1
- package/dist/lib/fetch-wrapper/tool-tracker.js +0 -12
- package/dist/lib/fetch-wrapper/tool-tracker.js.map +0 -1
- package/dist/lib/fetch-wrapper/types.d.ts +0 -62
- package/dist/lib/fetch-wrapper/types.d.ts.map +0 -1
- package/dist/lib/fetch-wrapper/types.js +0 -7
- package/dist/lib/fetch-wrapper/types.js.map +0 -1
- package/dist/lib/pruning-tool.d.ts +0 -20
- package/dist/lib/pruning-tool.d.ts.map +0 -1
- package/dist/lib/pruning-tool.js +0 -160
- package/dist/lib/pruning-tool.js.map +0 -1
- package/dist/lib/state/id-mapping.d.ts +0 -25
- package/dist/lib/state/id-mapping.d.ts.map +0 -1
- package/dist/lib/state/id-mapping.js +0 -51
- package/dist/lib/state/id-mapping.js.map +0 -1
- package/dist/lib/tokenizer.d.ts +0 -3
- package/dist/lib/tokenizer.d.ts.map +0 -1
- package/dist/lib/tokenizer.js +0 -16
- package/dist/lib/tokenizer.js.map +0 -1
- package/dist/lib/version-checker.d.ts +0 -9
- package/dist/lib/version-checker.d.ts.map +0 -1
- package/dist/lib/version-checker.js +0 -77
- package/dist/lib/version-checker.js.map +0 -1
package/README.md
CHANGED
|
@@ -23,19 +23,15 @@ Restart OpenCode. The plugin will automatically start optimizing your sessions.
|
|
|
23
23
|
|
|
24
24
|
## How Pruning Works
|
|
25
25
|
|
|
26
|
-
DCP uses
|
|
26
|
+
DCP uses multiple strategies to reduce context size:
|
|
27
27
|
|
|
28
|
-
**
|
|
28
|
+
**Deduplication** — Identifies repeated tool calls (e.g., reading the same file multiple times) and keeps only the most recent output. Runs automatically on every request with zero LLM cost.
|
|
29
29
|
|
|
30
|
-
**
|
|
30
|
+
**Prune Thinking Blocks** — Removes LLM thinking/reasoning blocks from the conversation history.
|
|
31
31
|
|
|
32
|
-
|
|
32
|
+
**On Idle Analysis** — Uses a language model to semantically analyze conversation context during idle periods and identify tool outputs that are no longer relevant.
|
|
33
33
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
Adjust `nudge_freq` to control how aggressively the AI is prompted to prune — lower values trigger reminders sooner and more often.
|
|
37
|
-
|
|
38
|
-
## How It Works
|
|
34
|
+
**Prune Tool** — Exposes a `prune` tool that the AI can call to manually trigger pruning when it determines context cleanup is needed.
|
|
39
35
|
|
|
40
36
|
Your session history is never modified. DCP replaces pruned outputs with a placeholder before sending requests to your LLM.
|
|
41
37
|
|
|
@@ -49,35 +45,67 @@ LLM providers like Anthropic and OpenAI cache prompts based on exact prefix matc
|
|
|
49
45
|
|
|
50
46
|
DCP uses its own config file (`~/.config/opencode/dcp.jsonc` or `.opencode/dcp.jsonc`), created automatically on first run.
|
|
51
47
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
| Option | Default | Description |
|
|
55
|
-
|--------|---------|-------------|
|
|
56
|
-
| `enabled` | `true` | Enable/disable the plugin |
|
|
57
|
-
| `debug` | `false` | Log to `~/.config/opencode/logs/dcp/` |
|
|
58
|
-
| `model` | (session) | Model for analysis (e.g., `"anthropic/claude-haiku-4-5"`) |
|
|
59
|
-
| `showModelErrorToasts` | `true` | Show notifications on model fallback |
|
|
60
|
-
| `showUpdateToasts` | `true` | Show notifications when a new version is available |
|
|
61
|
-
| `strictModelSelection` | `false` | Only run AI analysis with session or configured model (disables fallback models) |
|
|
62
|
-
| `pruning_summary` | `"detailed"` | `"off"`, `"minimal"`, or `"detailed"` |
|
|
63
|
-
| `nudge_freq` | `10` | How often to remind AI to prune (lower = more frequent) |
|
|
64
|
-
| `protectedTools` | `["task", "todowrite", "todoread", "prune", "batch", "write", "edit"]` | Tools that are never pruned |
|
|
65
|
-
| `strategies.onIdle` | `["ai-analysis"]` | Strategies for automatic pruning |
|
|
66
|
-
| `strategies.onTool` | `["ai-analysis"]` | Strategies when AI calls `prune` |
|
|
67
|
-
|
|
68
|
-
**Strategies:** `"ai-analysis"` uses LLM to identify prunable outputs. Empty array disables that trigger. Deduplication runs automatically on every request.
|
|
48
|
+
<details>
|
|
49
|
+
<summary><strong>Default Configuration</strong> (click to expand)</summary>
|
|
69
50
|
|
|
70
51
|
```jsonc
|
|
71
52
|
{
|
|
53
|
+
// Enable or disable the plugin
|
|
72
54
|
"enabled": true,
|
|
55
|
+
// Enable debug logging to ~/.config/opencode/logs/dcp/
|
|
56
|
+
"debug": false,
|
|
57
|
+
// Show toast notifications when a new version is available
|
|
58
|
+
"showUpdateToasts": true,
|
|
59
|
+
// Summary display: "off", "minimal", or "detailed"
|
|
60
|
+
"pruningSummary": "detailed",
|
|
61
|
+
// Strategies for pruning tokens from chat history
|
|
73
62
|
"strategies": {
|
|
74
|
-
|
|
75
|
-
"
|
|
76
|
-
|
|
77
|
-
|
|
63
|
+
// Remove duplicate tool calls (same tool with same arguments)
|
|
64
|
+
"deduplication": {
|
|
65
|
+
"enabled": true,
|
|
66
|
+
// Additional tools to protect from pruning
|
|
67
|
+
"protectedTools": []
|
|
68
|
+
},
|
|
69
|
+
// Remove thinking/reasoning LLM blocks
|
|
70
|
+
"pruneThinkingBlocks": {
|
|
71
|
+
"enabled": false
|
|
72
|
+
},
|
|
73
|
+
// Exposes a prune tool to your LLM to call when it determines pruning is necessary
|
|
74
|
+
"pruneTool": {
|
|
75
|
+
"enabled": true,
|
|
76
|
+
// Additional tools to protect from pruning
|
|
77
|
+
"protectedTools": [],
|
|
78
|
+
// Nudge the LLM to use the prune tool (every <frequency> tool results)
|
|
79
|
+
"nudge": {
|
|
80
|
+
"enabled": true,
|
|
81
|
+
"frequency": 10
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
// (Legacy) Run an LLM to analyze what tool calls are no longer relevant on idle
|
|
85
|
+
"onIdle": {
|
|
86
|
+
"enabled": false,
|
|
87
|
+
// Override model for analysis (format: "provider/model")
|
|
88
|
+
// "model": "anthropic/claude-haiku-4-5",
|
|
89
|
+
// Show toast notifications when model selection fails
|
|
90
|
+
"showModelErrorToasts": true,
|
|
91
|
+
// When true, fallback models are not permitted
|
|
92
|
+
"strictModelSelection": false,
|
|
93
|
+
// Additional tools to protect from pruning
|
|
94
|
+
"protectedTools": []
|
|
95
|
+
}
|
|
96
|
+
}
|
|
78
97
|
}
|
|
79
98
|
```
|
|
80
99
|
|
|
100
|
+
</details>
|
|
101
|
+
|
|
102
|
+
### Protected Tools
|
|
103
|
+
|
|
104
|
+
By default, these tools are always protected from pruning across all strategies:
|
|
105
|
+
`task`, `todowrite`, `todoread`, `prune`, `batch`, `write`, `edit`
|
|
106
|
+
|
|
107
|
+
The `protectedTools` arrays in each strategy add to this default list.
|
|
108
|
+
|
|
81
109
|
### Config Precedence
|
|
82
110
|
|
|
83
111
|
Settings are merged in order: **Defaults** → **Global** (`~/.config/opencode/dcp.jsonc`) → **Project** (`.opencode/dcp.jsonc`). Each level overrides the previous, so project settings take priority over global, which takes priority over defaults.
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAOjD,QAAA,MAAM,MAAM,EAAE,MAmDK,CAAA;AAEnB,eAAe,MAAM,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -1,14 +1,10 @@
|
|
|
1
1
|
import { getConfig } from "./lib/config";
|
|
2
2
|
import { Logger } from "./lib/logger";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { installFetchWrapper } from "./lib/fetch-wrapper";
|
|
7
|
-
import { createPruningTool } from "./lib/pruning-tool";
|
|
8
|
-
import { createEventHandler, createChatParamsHandler } from "./lib/hooks";
|
|
9
|
-
import { createToolTracker } from "./lib/fetch-wrapper/tool-tracker";
|
|
3
|
+
import { createSessionState } from "./lib/state";
|
|
4
|
+
import { createPruneTool } from "./lib/strategies";
|
|
5
|
+
import { createChatMessageTransformHandler, createEventHandler } from "./lib/hooks";
|
|
10
6
|
const plugin = (async (ctx) => {
|
|
11
|
-
const
|
|
7
|
+
const config = getConfig(ctx);
|
|
12
8
|
if (!config.enabled) {
|
|
13
9
|
return {};
|
|
14
10
|
}
|
|
@@ -18,71 +14,35 @@ const plugin = (async (ctx) => {
|
|
|
18
14
|
}
|
|
19
15
|
// Initialize core components
|
|
20
16
|
const logger = new Logger(config.debug);
|
|
21
|
-
const state =
|
|
22
|
-
const janitorCtx = createJanitorContext(ctx.client, state, logger, {
|
|
23
|
-
protectedTools: config.protectedTools,
|
|
24
|
-
model: config.model,
|
|
25
|
-
showModelErrorToasts: config.showModelErrorToasts ?? true,
|
|
26
|
-
strictModelSelection: config.strictModelSelection ?? false,
|
|
27
|
-
pruningSummary: config.pruning_summary,
|
|
28
|
-
workingDirectory: ctx.directory
|
|
29
|
-
});
|
|
30
|
-
// Create tool tracker for nudge injection
|
|
31
|
-
const toolTracker = createToolTracker();
|
|
32
|
-
// Install global fetch wrapper for context pruning and system message injection
|
|
33
|
-
installFetchWrapper(state, logger, ctx.client, config, toolTracker);
|
|
17
|
+
const state = createSessionState();
|
|
34
18
|
// Log initialization
|
|
35
|
-
logger.info("
|
|
19
|
+
logger.info("DCP initialized", {
|
|
36
20
|
strategies: config.strategies,
|
|
37
|
-
model: config.model || "auto"
|
|
38
21
|
});
|
|
39
|
-
// Check for updates after a delay
|
|
40
|
-
setTimeout(() => {
|
|
41
|
-
checkForUpdates(ctx.client, logger, config.showUpdateToasts ?? true).catch(() => { });
|
|
42
|
-
}, 5000);
|
|
43
|
-
// Show migration toast if there were config migrations
|
|
44
|
-
if (migrations.length > 0) {
|
|
45
|
-
setTimeout(async () => {
|
|
46
|
-
try {
|
|
47
|
-
await ctx.client.tui.showToast({
|
|
48
|
-
body: {
|
|
49
|
-
title: "DCP: Config upgraded",
|
|
50
|
-
message: migrations.join('\n'),
|
|
51
|
-
variant: "info",
|
|
52
|
-
duration: 8000
|
|
53
|
-
}
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
catch {
|
|
57
|
-
// Silently ignore toast errors
|
|
58
|
-
}
|
|
59
|
-
}, 7000);
|
|
60
|
-
}
|
|
61
22
|
return {
|
|
23
|
+
"experimental.chat.messages.transform": createChatMessageTransformHandler(ctx.client, state, logger, config),
|
|
24
|
+
tool: config.strategies.pruneTool.enabled ? {
|
|
25
|
+
prune: createPruneTool({
|
|
26
|
+
client: ctx.client,
|
|
27
|
+
state,
|
|
28
|
+
logger,
|
|
29
|
+
config,
|
|
30
|
+
workingDirectory: ctx.directory
|
|
31
|
+
}),
|
|
32
|
+
} : undefined,
|
|
62
33
|
config: async (opencodeConfig) => {
|
|
63
34
|
// Add prune to primary_tools by mutating the opencode config
|
|
64
35
|
// This works because config is cached and passed by reference
|
|
65
|
-
if (config.strategies.
|
|
36
|
+
if (config.strategies.pruneTool.enabled) {
|
|
66
37
|
const existingPrimaryTools = opencodeConfig.experimental?.primary_tools ?? [];
|
|
67
38
|
opencodeConfig.experimental = {
|
|
68
39
|
...opencodeConfig.experimental,
|
|
69
40
|
primary_tools: [...existingPrimaryTools, "prune"],
|
|
70
41
|
};
|
|
71
|
-
logger.info("
|
|
42
|
+
logger.info("Added 'prune' to experimental.primary_tools via config mutation");
|
|
72
43
|
}
|
|
73
44
|
},
|
|
74
|
-
event: createEventHandler(ctx.client,
|
|
75
|
-
"chat.params": createChatParamsHandler(ctx.client, state, logger, toolTracker),
|
|
76
|
-
tool: config.strategies.onTool.length > 0 ? {
|
|
77
|
-
prune: createPruningTool({
|
|
78
|
-
client: ctx.client,
|
|
79
|
-
state,
|
|
80
|
-
logger,
|
|
81
|
-
config,
|
|
82
|
-
notificationCtx: janitorCtx.notificationCtx,
|
|
83
|
-
workingDirectory: ctx.directory
|
|
84
|
-
}, toolTracker),
|
|
85
|
-
} : undefined,
|
|
45
|
+
event: createEventHandler(ctx.client, config, state, logger, ctx.directory),
|
|
86
46
|
};
|
|
87
47
|
});
|
|
88
48
|
export default plugin;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,EAAE,iCAAiC,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAEnF,MAAM,MAAM,GAAW,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IAClC,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAA;IAE7B,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAClB,OAAO,EAAE,CAAA;IACb,CAAC;IAED,2BAA2B;IAC3B,IAAI,OAAO,UAAU,KAAK,WAAW,EAAE,CAAC;QACnC,UAAkB,CAAC,mBAAmB,GAAG,KAAK,CAAA;IACnD,CAAC;IAED,6BAA6B;IAC7B,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACvC,MAAM,KAAK,GAAG,kBAAkB,EAAE,CAAA;IAElC,qBAAqB;IACrB,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE;QAC3B,UAAU,EAAE,MAAM,CAAC,UAAU;KAChC,CAAC,CAAA;IAEF,OAAO;QACH,sCAAsC,EAAE,iCAAiC,CACrE,GAAG,CAAC,MAAM,EACV,KAAK,EACL,MAAM,EACN,MAAM,CACT;QACD,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;YACxC,KAAK,EAAE,eAAe,CAAC;gBACnB,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,KAAK;gBACL,MAAM;gBACN,MAAM;gBACN,gBAAgB,EAAE,GAAG,CAAC,SAAS;aAClC,CAAC;SACL,CAAC,CAAC,CAAC,SAAS;QACb,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE;YAC7B,6DAA6D;YAC7D,8DAA8D;YAC9D,IAAI,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;gBACtC,MAAM,oBAAoB,GAAG,cAAc,CAAC,YAAY,EAAE,aAAa,IAAI,EAAE,CAAA;gBAC7E,cAAc,CAAC,YAAY,GAAG;oBAC1B,GAAG,cAAc,CAAC,YAAY;oBAC9B,aAAa,EAAE,CAAC,GAAG,oBAAoB,EAAE,OAAO,CAAC;iBACpD,CAAA;gBACD,MAAM,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAA;YAClF,CAAC;QACL,CAAC;QACD,KAAK,EAAE,kBAAkB,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,SAAS,CAAC;KAC9E,CAAA;AACL,CAAC,CAAkB,CAAA;AAEnB,eAAe,MAAM,CAAA"}
|
package/dist/lib/config.d.ts
CHANGED
|
@@ -1,23 +1,40 @@
|
|
|
1
1
|
import type { PluginInput } from '@opencode-ai/plugin';
|
|
2
|
-
export
|
|
3
|
-
export interface PluginConfig {
|
|
2
|
+
export interface Deduplication {
|
|
4
3
|
enabled: boolean;
|
|
5
|
-
debug: boolean;
|
|
6
4
|
protectedTools: string[];
|
|
5
|
+
}
|
|
6
|
+
export interface PruneThinkingBlocks {
|
|
7
|
+
enabled: boolean;
|
|
8
|
+
}
|
|
9
|
+
export interface OnIdle {
|
|
10
|
+
enabled: boolean;
|
|
7
11
|
model?: string;
|
|
8
12
|
showModelErrorToasts?: boolean;
|
|
9
|
-
showUpdateToasts?: boolean;
|
|
10
13
|
strictModelSelection?: boolean;
|
|
11
|
-
|
|
12
|
-
|
|
14
|
+
protectedTools: string[];
|
|
15
|
+
}
|
|
16
|
+
export interface PruneToolNudge {
|
|
17
|
+
enabled: boolean;
|
|
18
|
+
frequency: number;
|
|
19
|
+
}
|
|
20
|
+
export interface PruneTool {
|
|
21
|
+
enabled: boolean;
|
|
22
|
+
protectedTools: string[];
|
|
23
|
+
nudge: PruneToolNudge;
|
|
24
|
+
}
|
|
25
|
+
export interface PluginConfig {
|
|
26
|
+
enabled: boolean;
|
|
27
|
+
debug: boolean;
|
|
28
|
+
showUpdateToasts?: boolean;
|
|
29
|
+
pruningSummary: "off" | "minimal" | "detailed";
|
|
13
30
|
strategies: {
|
|
14
|
-
|
|
15
|
-
|
|
31
|
+
deduplication: Deduplication;
|
|
32
|
+
pruneThinkingBlocks: PruneThinkingBlocks;
|
|
33
|
+
onIdle: OnIdle;
|
|
34
|
+
pruneTool: PruneTool;
|
|
16
35
|
};
|
|
17
36
|
}
|
|
18
|
-
export
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
}
|
|
22
|
-
export declare function getConfig(ctx?: PluginInput): ConfigResult;
|
|
37
|
+
export declare const VALID_CONFIG_KEYS: Set<string>;
|
|
38
|
+
export declare function getInvalidConfigKeys(userConfig: Record<string, any>): string[];
|
|
39
|
+
export declare function getConfig(ctx: PluginInput): PluginConfig;
|
|
23
40
|
//# sourceMappingURL=config.d.ts.map
|
package/dist/lib/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../lib/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../lib/config.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAEtD,MAAM,WAAW,aAAa;IAC1B,OAAO,EAAE,OAAO,CAAA;IAChB,cAAc,EAAE,MAAM,EAAE,CAAA;CAC3B;AAED,MAAM,WAAW,mBAAmB;IAChC,OAAO,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,WAAW,MAAM;IACnB,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,cAAc,EAAE,MAAM,EAAE,CAAA;CAC3B;AAED,MAAM,WAAW,cAAc;IAC3B,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,SAAS;IACtB,OAAO,EAAE,OAAO,CAAA;IAChB,cAAc,EAAE,MAAM,EAAE,CAAA;IACxB,KAAK,EAAE,cAAc,CAAA;CACxB;AAED,MAAM,WAAW,YAAY;IACzB,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,OAAO,CAAA;IACd,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,cAAc,EAAE,KAAK,GAAG,SAAS,GAAG,UAAU,CAAA;IAC9C,UAAU,EAAE;QACR,aAAa,EAAE,aAAa,CAAA;QAC5B,mBAAmB,EAAE,mBAAmB,CAAA;QACxC,MAAM,EAAE,MAAM,CAAA;QACd,SAAS,EAAE,SAAS,CAAA;KACvB,CAAA;CACJ;AAKD,eAAO,MAAM,iBAAiB,aA4B5B,CAAA;AAgBF,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,EAAE,CAG9E;AAkWD,wBAAgB,SAAS,CAAC,GAAG,EAAE,WAAW,GAAG,YAAY,CAkExD"}
|