@tarquinen/opencode-dcp 1.3.1-beta1 → 1.3.2-beta.0
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 +92 -85
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +25 -9
- package/dist/index.js.map +1 -1
- package/dist/lib/auth.d.ts +4 -0
- package/dist/lib/auth.d.ts.map +1 -0
- package/dist/lib/auth.js +32 -0
- package/dist/lib/auth.js.map +1 -0
- package/dist/lib/commands/context.d.ts.map +1 -1
- package/dist/lib/commands/context.js +36 -23
- package/dist/lib/commands/context.js.map +1 -1
- package/dist/lib/config.d.ts +9 -4
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +60 -31
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/hooks.d.ts.map +1 -1
- package/dist/lib/hooks.js +8 -16
- package/dist/lib/hooks.js.map +1 -1
- package/dist/lib/messages/inject.d.ts +7 -0
- package/dist/lib/messages/inject.d.ts.map +1 -1
- package/dist/lib/messages/inject.js +86 -51
- package/dist/lib/messages/inject.js.map +1 -1
- package/dist/lib/messages/prune.d.ts.map +1 -1
- package/dist/lib/messages/prune.js +78 -2
- package/dist/lib/messages/prune.js.map +1 -1
- package/dist/lib/messages/utils.d.ts +2 -0
- package/dist/lib/messages/utils.d.ts.map +1 -1
- package/dist/lib/messages/utils.js +21 -12
- package/dist/lib/messages/utils.js.map +1 -1
- package/dist/lib/prompts/compress-tool-spec.d.ts +2 -0
- package/dist/lib/prompts/compress-tool-spec.d.ts.map +1 -0
- package/dist/lib/prompts/compress-tool-spec.js +58 -0
- package/dist/lib/prompts/compress-tool-spec.js.map +1 -0
- package/dist/lib/prompts/distill-tool-spec.d.ts +2 -0
- package/dist/lib/prompts/distill-tool-spec.d.ts.map +1 -0
- package/dist/lib/prompts/{extract-tool-spec.js → distill-tool-spec.js} +14 -14
- package/dist/lib/prompts/distill-tool-spec.js.map +1 -0
- package/dist/lib/prompts/index.d.ts +7 -0
- package/dist/lib/prompts/index.d.ts.map +1 -1
- package/dist/lib/prompts/index.js +28 -18
- package/dist/lib/prompts/index.js.map +1 -1
- package/dist/lib/prompts/prune-tool-spec.d.ts +2 -0
- package/dist/lib/prompts/prune-tool-spec.d.ts.map +1 -0
- package/dist/lib/prompts/prune-tool-spec.js +40 -0
- package/dist/lib/prompts/prune-tool-spec.js.map +1 -0
- package/dist/lib/shared-utils.d.ts +1 -1
- package/dist/lib/shared-utils.d.ts.map +1 -1
- package/dist/lib/shared-utils.js +10 -3
- package/dist/lib/shared-utils.js.map +1 -1
- package/dist/lib/state/persistence.d.ts +2 -1
- package/dist/lib/state/persistence.d.ts.map +1 -1
- package/dist/lib/state/persistence.js +18 -0
- package/dist/lib/state/persistence.js.map +1 -1
- package/dist/lib/state/state.d.ts +0 -1
- package/dist/lib/state/state.d.ts.map +1 -1
- package/dist/lib/state/state.js +10 -29
- package/dist/lib/state/state.js.map +1 -1
- package/dist/lib/state/tool-cache.d.ts.map +1 -1
- package/dist/lib/state/tool-cache.js +8 -7
- package/dist/lib/state/tool-cache.js.map +1 -1
- package/dist/lib/state/types.d.ts +6 -0
- package/dist/lib/state/types.d.ts.map +1 -1
- package/dist/lib/state/utils.d.ts +4 -0
- package/dist/lib/state/utils.d.ts.map +1 -1
- package/dist/lib/state/utils.js +33 -0
- package/dist/lib/state/utils.js.map +1 -1
- package/dist/lib/strategies/index.d.ts +1 -1
- package/dist/lib/strategies/index.d.ts.map +1 -1
- package/dist/lib/strategies/index.js +1 -1
- package/dist/lib/strategies/index.js.map +1 -1
- package/dist/lib/strategies/utils.d.ts +1 -0
- package/dist/lib/strategies/utils.d.ts.map +1 -1
- package/dist/lib/strategies/utils.js +13 -4
- package/dist/lib/strategies/utils.js.map +1 -1
- package/dist/lib/tools/compress.d.ts +4 -0
- package/dist/lib/tools/compress.d.ts.map +1 -0
- package/dist/lib/tools/compress.js +98 -0
- package/dist/lib/tools/compress.js.map +1 -0
- package/dist/lib/tools/distill.d.ts +4 -0
- package/dist/lib/tools/distill.d.ts.map +1 -0
- package/dist/lib/tools/distill.js +41 -0
- package/dist/lib/tools/distill.js.map +1 -0
- package/dist/lib/tools/index.d.ts +5 -0
- package/dist/lib/tools/index.d.ts.map +1 -0
- package/dist/lib/tools/index.js +4 -0
- package/dist/lib/tools/index.js.map +1 -0
- package/dist/lib/tools/prune-shared.d.ts +6 -0
- package/dist/lib/tools/prune-shared.d.ts.map +1 -0
- package/dist/lib/tools/prune-shared.js +107 -0
- package/dist/lib/tools/prune-shared.js.map +1 -0
- package/dist/lib/tools/prune.d.ts +4 -0
- package/dist/lib/tools/prune.d.ts.map +1 -0
- package/dist/lib/tools/prune.js +28 -0
- package/dist/lib/tools/prune.js.map +1 -0
- package/dist/lib/{strategies/tools.d.ts → tools/types.d.ts} +1 -4
- package/dist/lib/tools/types.d.ts.map +1 -0
- package/dist/lib/tools/types.js +2 -0
- package/dist/lib/tools/types.js.map +1 -0
- package/dist/lib/tools/utils.d.ts +26 -0
- package/dist/lib/tools/utils.d.ts.map +1 -0
- package/dist/lib/tools/utils.js +121 -0
- package/dist/lib/tools/utils.js.map +1 -0
- package/dist/lib/ui/notification.d.ts +1 -0
- package/dist/lib/ui/notification.d.ts.map +1 -1
- package/dist/lib/ui/notification.js +32 -4
- package/dist/lib/ui/notification.js.map +1 -1
- package/dist/lib/ui/utils.d.ts +1 -0
- package/dist/lib/ui/utils.d.ts.map +1 -1
- package/dist/lib/ui/utils.js +16 -0
- package/dist/lib/ui/utils.js.map +1 -1
- package/package.json +12 -9
- package/dist/lib/prompts/discard-tool-spec.d.ts +0 -2
- package/dist/lib/prompts/discard-tool-spec.d.ts.map +0 -1
- package/dist/lib/prompts/discard-tool-spec.js +0 -41
- package/dist/lib/prompts/discard-tool-spec.js.map +0 -1
- package/dist/lib/prompts/extract-tool-spec.d.ts +0 -2
- package/dist/lib/prompts/extract-tool-spec.d.ts.map +0 -1
- package/dist/lib/prompts/extract-tool-spec.js.map +0 -1
- package/dist/lib/prompts/nudge/both.d.ts +0 -2
- package/dist/lib/prompts/nudge/both.d.ts.map +0 -1
- package/dist/lib/prompts/nudge/both.js +0 -11
- package/dist/lib/prompts/nudge/both.js.map +0 -1
- package/dist/lib/prompts/nudge/discard.d.ts +0 -2
- package/dist/lib/prompts/nudge/discard.d.ts.map +0 -1
- package/dist/lib/prompts/nudge/discard.js +0 -10
- package/dist/lib/prompts/nudge/discard.js.map +0 -1
- package/dist/lib/prompts/nudge/extract.d.ts +0 -2
- package/dist/lib/prompts/nudge/extract.d.ts.map +0 -1
- package/dist/lib/prompts/nudge/extract.js +0 -10
- package/dist/lib/prompts/nudge/extract.js.map +0 -1
- package/dist/lib/prompts/system/both.d.ts +0 -2
- package/dist/lib/prompts/system/both.d.ts.map +0 -1
- package/dist/lib/prompts/system/both.js +0 -61
- package/dist/lib/prompts/system/both.js.map +0 -1
- package/dist/lib/prompts/system/discard.d.ts +0 -2
- package/dist/lib/prompts/system/discard.d.ts.map +0 -1
- package/dist/lib/prompts/system/discard.js +0 -52
- package/dist/lib/prompts/system/discard.js.map +0 -1
- package/dist/lib/prompts/system/extract.d.ts +0 -2
- package/dist/lib/prompts/system/extract.d.ts.map +0 -1
- package/dist/lib/prompts/system/extract.js +0 -52
- package/dist/lib/prompts/system/extract.js.map +0 -1
- package/dist/lib/strategies/tools.d.ts.map +0 -1
- package/dist/lib/strategies/tools.js +0 -135
- package/dist/lib/strategies/tools.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
# Dynamic Context Pruning Plugin
|
|
2
2
|
|
|
3
|
+
[](https://ko-fi.com/dansmolsky)
|
|
3
4
|
[](https://www.npmjs.com/package/@tarquinen/opencode-dcp)
|
|
4
5
|
|
|
5
6
|
Automatically reduces token usage in OpenCode by removing obsolete tools from conversation history.
|
|
6
7
|
|
|
7
|
-

|
|
8
|
+

|
|
8
9
|
|
|
9
10
|
## Installation
|
|
10
11
|
|
|
@@ -27,15 +28,17 @@ DCP uses multiple tools and strategies to reduce context size:
|
|
|
27
28
|
|
|
28
29
|
### Tools
|
|
29
30
|
|
|
30
|
-
**
|
|
31
|
+
**Distill** — Exposes a `distill` tool that the AI can call to distill valuable context into concise summaries before removing the tool content.
|
|
31
32
|
|
|
32
|
-
**
|
|
33
|
+
**Compress** — Exposes a `compress` tool that the AI can call to collapse a large section of conversation (messages and tools) into a single summary.
|
|
34
|
+
|
|
35
|
+
**Prune** — Exposes a `prune` tool that the AI can call to remove completed or noisy tool content from context.
|
|
33
36
|
|
|
34
37
|
### Strategies
|
|
35
38
|
|
|
36
39
|
**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.
|
|
37
40
|
|
|
38
|
-
**Supersede Writes** —
|
|
41
|
+
**Supersede Writes** — Removes write tool calls for files that have subsequently been read. When a file is written and later read, the original write content becomes redundant since the current file state is captured in the read result. Runs automatically on every request with zero LLM cost.
|
|
39
42
|
|
|
40
43
|
**Purge Errors** — Prunes tool inputs for tools that returned errors after a configurable number of turns (default: 4). Error messages are preserved for context, but the potentially large input content is removed. Runs automatically on every request with zero LLM cost.
|
|
41
44
|
|
|
@@ -49,7 +52,9 @@ LLM providers like Anthropic and OpenAI cache prompts based on exact prefix matc
|
|
|
49
52
|
|
|
50
53
|
> **Note:** In testing, cache hit rates were approximately 65% with DCP enabled vs 85% without.
|
|
51
54
|
|
|
52
|
-
**Best use case:** Providers that count usage in requests, such as Github Copilot and Google Antigravity have no negative price impact.
|
|
55
|
+
**Best use case:** Providers that count usage in requests, such as Github Copilot and Google Antigravity, have no negative price impact.
|
|
56
|
+
|
|
57
|
+
**Claude Subscriptions:** Anthropic subscription users (who receive "free" caching) may experience faster limit depletion than hit-rate ratios suggest due to the higher relative cost of cache misses. See [Claude Cache Limits](https://she-llac.com/claude-limits) for details.
|
|
53
58
|
|
|
54
59
|
## Configuration
|
|
55
60
|
|
|
@@ -57,80 +62,86 @@ DCP uses its own config file:
|
|
|
57
62
|
|
|
58
63
|
- Global: `~/.config/opencode/dcp.jsonc` (or `dcp.json`), created automatically on first run
|
|
59
64
|
- Custom config directory: `$OPENCODE_CONFIG_DIR/dcp.jsonc` (or `dcp.json`), if `OPENCODE_CONFIG_DIR` is set
|
|
60
|
-
- Project: `.opencode/dcp.jsonc` (or `dcp.json`) in your project
|
|
61
|
-
|
|
62
|
-
<details>
|
|
63
|
-
<summary><strong>Default Configuration</strong> (click to expand)</summary>
|
|
64
|
-
|
|
65
|
-
```jsonc
|
|
66
|
-
{
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
65
|
+
- Project: `.opencode/dcp.jsonc` (or `dcp.json`) in your project's `.opencode` directory
|
|
66
|
+
|
|
67
|
+
> <details>
|
|
68
|
+
> <summary><strong>Default Configuration</strong> (click to expand)</summary>
|
|
69
|
+
>
|
|
70
|
+
> ```jsonc
|
|
71
|
+
> {
|
|
72
|
+
> "$schema": "https://raw.githubusercontent.com/Opencode-DCP/opencode-dynamic-context-pruning/master/dcp.schema.json",
|
|
73
|
+
> // Enable or disable the plugin
|
|
74
|
+
> "enabled": true,
|
|
75
|
+
> // Enable debug logging to ~/.config/opencode/logs/dcp/
|
|
76
|
+
> "debug": false,
|
|
77
|
+
> // Notification display: "off", "minimal", or "detailed"
|
|
78
|
+
> "pruneNotification": "detailed",
|
|
79
|
+
> // Slash commands configuration
|
|
80
|
+
> "commands": {
|
|
81
|
+
> "enabled": true,
|
|
82
|
+
> // Additional tools to protect from pruning via commands (e.g., /dcp sweep)
|
|
83
|
+
> "protectedTools": [],
|
|
84
|
+
> },
|
|
85
|
+
> // Protect from pruning for <turns> message turns past tool invocation
|
|
86
|
+
> "turnProtection": {
|
|
87
|
+
> "enabled": false,
|
|
88
|
+
> "turns": 4,
|
|
89
|
+
> },
|
|
90
|
+
> // Protect file operations from pruning via glob patterns
|
|
91
|
+
> // Patterns match tool parameters.filePath (e.g. read/write/edit)
|
|
92
|
+
> "protectedFilePatterns": [],
|
|
93
|
+
> // LLM-driven context pruning tools
|
|
94
|
+
> "tools": {
|
|
95
|
+
> // Shared settings for all prune tools
|
|
96
|
+
> "settings": {
|
|
97
|
+
> // Nudge the LLM to use prune tools (every <nudgeFrequency> tool results)
|
|
98
|
+
> "nudgeEnabled": true,
|
|
99
|
+
> "nudgeFrequency": 10,
|
|
100
|
+
> // Additional tools to protect from pruning
|
|
101
|
+
> "protectedTools": [],
|
|
102
|
+
> },
|
|
103
|
+
> // Removes tool content from context without preservation (for completed tasks or noise)
|
|
104
|
+
> "prune": {
|
|
105
|
+
> "enabled": true,
|
|
106
|
+
> },
|
|
107
|
+
> // Distills key findings into preserved knowledge before removing raw content
|
|
108
|
+
> "distill": {
|
|
109
|
+
> "enabled": true,
|
|
110
|
+
> // Show distillation content as an ignored message notification
|
|
111
|
+
> "showDistillation": false,
|
|
112
|
+
> },
|
|
113
|
+
> // Collapses a range of conversation content into a single summary
|
|
114
|
+
> "compress": {
|
|
115
|
+
> "enabled": true,
|
|
116
|
+
> // Show summary content as an ignored message notification
|
|
117
|
+
> "showCompression": true,
|
|
118
|
+
> },
|
|
119
|
+
> },
|
|
120
|
+
> // Automatic pruning strategies
|
|
121
|
+
> "strategies": {
|
|
122
|
+
> // Remove duplicate tool calls (same tool with same arguments)
|
|
123
|
+
> "deduplication": {
|
|
124
|
+
> "enabled": true,
|
|
125
|
+
> // Additional tools to protect from pruning
|
|
126
|
+
> "protectedTools": [],
|
|
127
|
+
> },
|
|
128
|
+
> // Prune write tool inputs when the file has been subsequently read
|
|
129
|
+
> "supersedeWrites": {
|
|
130
|
+
> "enabled": true,
|
|
131
|
+
> },
|
|
132
|
+
> // Prune tool inputs for errored tools after X turns
|
|
133
|
+
> "purgeErrors": {
|
|
134
|
+
> "enabled": true,
|
|
135
|
+
> // Number of turns before errored tool inputs are pruned
|
|
136
|
+
> "turns": 4,
|
|
137
|
+
> // Additional tools to protect from pruning
|
|
138
|
+
> "protectedTools": [],
|
|
139
|
+
> },
|
|
140
|
+
> },
|
|
141
|
+
> }
|
|
142
|
+
> ```
|
|
143
|
+
>
|
|
144
|
+
> </details>
|
|
134
145
|
|
|
135
146
|
### Commands
|
|
136
147
|
|
|
@@ -141,14 +152,10 @@ DCP provides a `/dcp` slash command:
|
|
|
141
152
|
- `/dcp stats` — Shows cumulative pruning statistics across all sessions.
|
|
142
153
|
- `/dcp sweep` — Prunes all tools since the last user message. Accepts an optional count: `/dcp sweep 10` prunes the last 10 tools. Respects `commands.protectedTools`.
|
|
143
154
|
|
|
144
|
-
### Turn Protection
|
|
145
|
-
|
|
146
|
-
When enabled, turn protection prevents tool outputs from being pruned for a configurable number of message turns. This gives the AI time to reference recent tool outputs before they become prunable. Applies to both `discard` and `extract` tools, as well as automatic strategies.
|
|
147
|
-
|
|
148
155
|
### Protected Tools
|
|
149
156
|
|
|
150
|
-
By default, these tools are always protected from pruning
|
|
151
|
-
`task`, `todowrite`, `todoread`, `
|
|
157
|
+
By default, these tools are always protected from pruning:
|
|
158
|
+
`task`, `todowrite`, `todoread`, `distill`, `compress`, `prune`, `batch`, `plan_enter`, `plan_exit`
|
|
152
159
|
|
|
153
160
|
The `protectedTools` arrays in each section add to this default list.
|
|
154
161
|
|
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;AAYjD,QAAA,MAAM,MAAM,EAAE,MAyGK,CAAA;AAEnB,eAAe,MAAM,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { getConfig } from "./lib/config";
|
|
2
2
|
import { Logger } from "./lib/logger";
|
|
3
3
|
import { createSessionState } from "./lib/state";
|
|
4
|
-
import {
|
|
4
|
+
import { createPruneTool, createDistillTool, createCompressTool } from "./lib/strategies";
|
|
5
5
|
import { createChatMessageTransformHandler, createCommandExecuteHandler, createSystemPromptHandler, } from "./lib/hooks";
|
|
6
|
+
import { configureClientAuth, isSecureMode } from "./lib/auth";
|
|
6
7
|
const plugin = (async (ctx) => {
|
|
7
8
|
const config = getConfig(ctx);
|
|
8
9
|
if (!config.enabled) {
|
|
@@ -10,6 +11,10 @@ const plugin = (async (ctx) => {
|
|
|
10
11
|
}
|
|
11
12
|
const logger = new Logger(config.debug);
|
|
12
13
|
const state = createSessionState();
|
|
14
|
+
if (isSecureMode()) {
|
|
15
|
+
configureClientAuth(ctx.client);
|
|
16
|
+
// logger.info("Secure mode detected, configured client authentication")
|
|
17
|
+
}
|
|
13
18
|
logger.info("DCP initialized", {
|
|
14
19
|
strategies: config.strategies,
|
|
15
20
|
});
|
|
@@ -24,8 +29,17 @@ const plugin = (async (ctx) => {
|
|
|
24
29
|
},
|
|
25
30
|
"command.execute.before": createCommandExecuteHandler(ctx.client, state, logger, config, ctx.directory),
|
|
26
31
|
tool: {
|
|
27
|
-
...(config.tools.
|
|
28
|
-
|
|
32
|
+
...(config.tools.distill.enabled && {
|
|
33
|
+
distill: createDistillTool({
|
|
34
|
+
client: ctx.client,
|
|
35
|
+
state,
|
|
36
|
+
logger,
|
|
37
|
+
config,
|
|
38
|
+
workingDirectory: ctx.directory,
|
|
39
|
+
}),
|
|
40
|
+
}),
|
|
41
|
+
...(config.tools.compress.enabled && {
|
|
42
|
+
compress: createCompressTool({
|
|
29
43
|
client: ctx.client,
|
|
30
44
|
state,
|
|
31
45
|
logger,
|
|
@@ -33,8 +47,8 @@ const plugin = (async (ctx) => {
|
|
|
33
47
|
workingDirectory: ctx.directory,
|
|
34
48
|
}),
|
|
35
49
|
}),
|
|
36
|
-
...(config.tools.
|
|
37
|
-
|
|
50
|
+
...(config.tools.prune.enabled && {
|
|
51
|
+
prune: createPruneTool({
|
|
38
52
|
client: ctx.client,
|
|
39
53
|
state,
|
|
40
54
|
logger,
|
|
@@ -52,10 +66,12 @@ const plugin = (async (ctx) => {
|
|
|
52
66
|
};
|
|
53
67
|
}
|
|
54
68
|
const toolsToAdd = [];
|
|
55
|
-
if (config.tools.
|
|
56
|
-
toolsToAdd.push("
|
|
57
|
-
if (config.tools.
|
|
58
|
-
toolsToAdd.push("
|
|
69
|
+
if (config.tools.prune.enabled)
|
|
70
|
+
toolsToAdd.push("prune");
|
|
71
|
+
if (config.tools.distill.enabled)
|
|
72
|
+
toolsToAdd.push("distill");
|
|
73
|
+
if (config.tools.compress.enabled)
|
|
74
|
+
toolsToAdd.push("compress");
|
|
59
75
|
if (toolsToAdd.length > 0) {
|
|
60
76
|
const existingPrimaryTools = opencodeConfig.experimental?.primary_tools ?? [];
|
|
61
77
|
opencodeConfig.experimental = {
|
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,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../lib/auth.ts"],"names":[],"mappings":"AAAA,wBAAgB,YAAY,IAAI,OAAO,CAEtC;AAED,wBAAgB,sBAAsB,IAAI,MAAM,GAAG,SAAS,CAQ3D;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,CAsBpD"}
|
package/dist/lib/auth.js
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export function isSecureMode() {
|
|
2
|
+
return !!process.env.OPENCODE_SERVER_PASSWORD;
|
|
3
|
+
}
|
|
4
|
+
export function getAuthorizationHeader() {
|
|
5
|
+
const password = process.env.OPENCODE_SERVER_PASSWORD;
|
|
6
|
+
if (!password)
|
|
7
|
+
return undefined;
|
|
8
|
+
const username = process.env.OPENCODE_SERVER_USERNAME ?? "opencode";
|
|
9
|
+
// Use Buffer for Node.js base64 encoding (btoa may not be available in all Node versions)
|
|
10
|
+
const credentials = Buffer.from(`${username}:${password}`).toString("base64");
|
|
11
|
+
return `Basic ${credentials}`;
|
|
12
|
+
}
|
|
13
|
+
export function configureClientAuth(client) {
|
|
14
|
+
const authHeader = getAuthorizationHeader();
|
|
15
|
+
if (!authHeader) {
|
|
16
|
+
return client;
|
|
17
|
+
}
|
|
18
|
+
// The SDK client has an internal client with request interceptors
|
|
19
|
+
// Access the underlying client to add the interceptor
|
|
20
|
+
const innerClient = client._client || client.client;
|
|
21
|
+
if (innerClient?.interceptors?.request) {
|
|
22
|
+
innerClient.interceptors.request.use((request) => {
|
|
23
|
+
// Only add auth header if not already present
|
|
24
|
+
if (!request.headers.has("Authorization")) {
|
|
25
|
+
request.headers.set("Authorization", authHeader);
|
|
26
|
+
}
|
|
27
|
+
return request;
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
return client;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../lib/auth.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,YAAY;IACxB,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAA;AACjD,CAAC;AAED,MAAM,UAAU,sBAAsB;IAClC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAA;IACrD,IAAI,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAA;IAE/B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,UAAU,CAAA;IACnE,0FAA0F;IAC1F,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,IAAI,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;IAC7E,OAAO,SAAS,WAAW,EAAE,CAAA;AACjC,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAW;IAC3C,MAAM,UAAU,GAAG,sBAAsB,EAAE,CAAA;IAE3C,IAAI,CAAC,UAAU,EAAE,CAAC;QACd,OAAO,MAAM,CAAA;IACjB,CAAC;IAED,kEAAkE;IAClE,sDAAsD;IACtD,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,CAAA;IAEnD,IAAI,WAAW,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC;QACrC,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAgB,EAAE,EAAE;YACtD,8CAA8C;YAC9C,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC;gBACxC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU,CAAC,CAAA;YACpD,CAAC;YACD,OAAO,OAAO,CAAA;QAClB,CAAC,CAAC,CAAA;IACN,CAAC;IAED,OAAO,MAAM,CAAA;AACjB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../lib/commands/context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAQvD,MAAM,WAAW,qBAAqB;IAClC,MAAM,EAAE,GAAG,CAAA;IACX,KAAK,EAAE,YAAY,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,SAAS,EAAE,CAAA;CACxB;
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../lib/commands/context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAQvD,MAAM,WAAW,qBAAqB;IAClC,MAAM,EAAE,GAAG,CAAA;IACX,KAAK,EAAE,YAAY,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,SAAS,EAAE,CAAA;CACxB;AAwMD,wBAAsB,oBAAoB,CAAC,GAAG,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CASpF"}
|
|
@@ -50,6 +50,7 @@ function analyzeTokens(state, messages) {
|
|
|
50
50
|
toolCount: 0,
|
|
51
51
|
prunedTokens: state.stats.totalPruneTokens,
|
|
52
52
|
prunedCount: state.prune.toolIds.length,
|
|
53
|
+
prunedMessageCount: state.prune.messageIds.length,
|
|
53
54
|
total: 0,
|
|
54
55
|
};
|
|
55
56
|
let firstAssistant;
|
|
@@ -84,14 +85,37 @@ function analyzeTokens(state, messages) {
|
|
|
84
85
|
const toolOutputParts = [];
|
|
85
86
|
let firstUserText = "";
|
|
86
87
|
let foundFirstUser = false;
|
|
88
|
+
const foundToolIds = new Set();
|
|
87
89
|
for (const msg of messages) {
|
|
88
|
-
if (isMessageCompacted(state, msg))
|
|
89
|
-
continue;
|
|
90
|
-
if (msg.info.role === "user" && isIgnoredUserMessage(msg))
|
|
91
|
-
continue;
|
|
92
90
|
const parts = Array.isArray(msg.parts) ? msg.parts : [];
|
|
91
|
+
const isCompacted = isMessageCompacted(state, msg);
|
|
92
|
+
const isIgnoredUser = msg.info.role === "user" && isIgnoredUserMessage(msg);
|
|
93
93
|
for (const part of parts) {
|
|
94
|
-
if (part.type === "
|
|
94
|
+
if (part.type === "tool") {
|
|
95
|
+
const toolPart = part;
|
|
96
|
+
if (toolPart.callID && !foundToolIds.has(toolPart.callID)) {
|
|
97
|
+
breakdown.toolCount++;
|
|
98
|
+
foundToolIds.add(toolPart.callID);
|
|
99
|
+
}
|
|
100
|
+
if (!isCompacted) {
|
|
101
|
+
if (toolPart.state?.input) {
|
|
102
|
+
const inputStr = typeof toolPart.state.input === "string"
|
|
103
|
+
? toolPart.state.input
|
|
104
|
+
: JSON.stringify(toolPart.state.input);
|
|
105
|
+
toolInputParts.push(inputStr);
|
|
106
|
+
}
|
|
107
|
+
if (toolPart.state?.status === "completed" && toolPart.state?.output) {
|
|
108
|
+
const outputStr = typeof toolPart.state.output === "string"
|
|
109
|
+
? toolPart.state.output
|
|
110
|
+
: JSON.stringify(toolPart.state.output);
|
|
111
|
+
toolOutputParts.push(outputStr);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
else if (part.type === "text" &&
|
|
116
|
+
msg.info.role === "user" &&
|
|
117
|
+
!isCompacted &&
|
|
118
|
+
!isIgnoredUser) {
|
|
95
119
|
const textPart = part;
|
|
96
120
|
const text = textPart.text || "";
|
|
97
121
|
userTextParts.push(text);
|
|
@@ -99,24 +123,8 @@ function analyzeTokens(state, messages) {
|
|
|
99
123
|
firstUserText += text;
|
|
100
124
|
}
|
|
101
125
|
}
|
|
102
|
-
else if (part.type === "tool") {
|
|
103
|
-
const toolPart = part;
|
|
104
|
-
breakdown.toolCount++;
|
|
105
|
-
if (toolPart.state?.input) {
|
|
106
|
-
const inputStr = typeof toolPart.state.input === "string"
|
|
107
|
-
? toolPart.state.input
|
|
108
|
-
: JSON.stringify(toolPart.state.input);
|
|
109
|
-
toolInputParts.push(inputStr);
|
|
110
|
-
}
|
|
111
|
-
if (toolPart.state?.status === "completed" && toolPart.state?.output) {
|
|
112
|
-
const outputStr = typeof toolPart.state.output === "string"
|
|
113
|
-
? toolPart.state.output
|
|
114
|
-
: JSON.stringify(toolPart.state.output);
|
|
115
|
-
toolOutputParts.push(outputStr);
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
126
|
}
|
|
119
|
-
if (msg.info.role === "user" && !
|
|
127
|
+
if (msg.info.role === "user" && !isIgnoredUser && !foundFirstUser) {
|
|
120
128
|
foundFirstUser = true;
|
|
121
129
|
}
|
|
122
130
|
}
|
|
@@ -171,7 +179,12 @@ function formatContextMessage(breakdown) {
|
|
|
171
179
|
lines.push("Summary:");
|
|
172
180
|
if (breakdown.prunedTokens > 0) {
|
|
173
181
|
const withoutPruning = breakdown.total + breakdown.prunedTokens;
|
|
174
|
-
|
|
182
|
+
const pruned = [];
|
|
183
|
+
if (breakdown.prunedCount > 0)
|
|
184
|
+
pruned.push(`${breakdown.prunedCount} tools`);
|
|
185
|
+
if (breakdown.prunedMessageCount > 0)
|
|
186
|
+
pruned.push(`${breakdown.prunedMessageCount} messages`);
|
|
187
|
+
lines.push(` Pruned: ${pruned.join(", ")} (~${formatTokenCount(breakdown.prunedTokens)})`);
|
|
175
188
|
lines.push(` Current context: ~${formatTokenCount(breakdown.total)}`);
|
|
176
189
|
lines.push(` Without DCP: ~${formatTokenCount(withoutPruning)}`);
|
|
177
190
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../lib/commands/context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAIH,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../lib/commands/context.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/config.d.ts
CHANGED
|
@@ -3,13 +3,17 @@ export interface Deduplication {
|
|
|
3
3
|
enabled: boolean;
|
|
4
4
|
protectedTools: string[];
|
|
5
5
|
}
|
|
6
|
-
export interface
|
|
6
|
+
export interface PruneTool {
|
|
7
7
|
enabled: boolean;
|
|
8
8
|
}
|
|
9
|
-
export interface
|
|
9
|
+
export interface DistillTool {
|
|
10
10
|
enabled: boolean;
|
|
11
11
|
showDistillation: boolean;
|
|
12
12
|
}
|
|
13
|
+
export interface CompressTool {
|
|
14
|
+
enabled: boolean;
|
|
15
|
+
showCompression: boolean;
|
|
16
|
+
}
|
|
13
17
|
export interface ToolSettings {
|
|
14
18
|
nudgeEnabled: boolean;
|
|
15
19
|
nudgeFrequency: number;
|
|
@@ -17,8 +21,9 @@ export interface ToolSettings {
|
|
|
17
21
|
}
|
|
18
22
|
export interface Tools {
|
|
19
23
|
settings: ToolSettings;
|
|
20
|
-
|
|
21
|
-
|
|
24
|
+
prune: PruneTool;
|
|
25
|
+
distill: DistillTool;
|
|
26
|
+
compress: CompressTool;
|
|
22
27
|
}
|
|
23
28
|
export interface Commands {
|
|
24
29
|
enabled: boolean;
|
package/dist/lib/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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,
|
|
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,SAAS;IACtB,OAAO,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,WAAW,WAAW;IACxB,OAAO,EAAE,OAAO,CAAA;IAChB,gBAAgB,EAAE,OAAO,CAAA;CAC5B;AAED,MAAM,WAAW,YAAY;IACzB,OAAO,EAAE,OAAO,CAAA;IAChB,eAAe,EAAE,OAAO,CAAA;CAC3B;AAED,MAAM,WAAW,YAAY;IACzB,YAAY,EAAE,OAAO,CAAA;IACrB,cAAc,EAAE,MAAM,CAAA;IACtB,cAAc,EAAE,MAAM,EAAE,CAAA;CAC3B;AAED,MAAM,WAAW,KAAK;IAClB,QAAQ,EAAE,YAAY,CAAA;IACtB,KAAK,EAAE,SAAS,CAAA;IAChB,OAAO,EAAE,WAAW,CAAA;IACpB,QAAQ,EAAE,YAAY,CAAA;CACzB;AAED,MAAM,WAAW,QAAQ;IACrB,OAAO,EAAE,OAAO,CAAA;IAChB,cAAc,EAAE,MAAM,EAAE,CAAA;CAC3B;AAED,MAAM,WAAW,eAAe;IAC5B,OAAO,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,WAAW,WAAW;IACxB,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,cAAc,EAAE,MAAM,EAAE,CAAA;CAC3B;AAED,MAAM,WAAW,cAAc;IAC3B,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,YAAY;IACzB,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,OAAO,CAAA;IACd,iBAAiB,EAAE,KAAK,GAAG,SAAS,GAAG,UAAU,CAAA;IACjD,QAAQ,EAAE,QAAQ,CAAA;IAClB,cAAc,EAAE,cAAc,CAAA;IAC9B,qBAAqB,EAAE,MAAM,EAAE,CAAA;IAC/B,KAAK,EAAE,KAAK,CAAA;IACZ,UAAU,EAAE;QACR,aAAa,EAAE,aAAa,CAAA;QAC5B,eAAe,EAAE,eAAe,CAAA;QAChC,WAAW,EAAE,WAAW,CAAA;KAC3B,CAAA;CACJ;AAeD,eAAO,MAAM,iBAAiB,aAwC5B,CAAA;AAgBF,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,EAAE,CAG9E;AAkjBD,wBAAgB,SAAS,CAAC,GAAG,EAAE,WAAW,GAAG,YAAY,CAgIxD"}
|