@tarquinen/opencode-dcp 2.1.6 → 2.2.0-beta0
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 +30 -49
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -29
- package/dist/index.js.map +1 -1
- package/dist/lib/commands/context.d.ts.map +1 -1
- package/dist/lib/commands/context.js +36 -8
- package/dist/lib/commands/context.js.map +1 -1
- package/dist/lib/commands/help.d.ts.map +1 -1
- package/dist/lib/commands/help.js +2 -6
- package/dist/lib/commands/help.js.map +1 -1
- package/dist/lib/commands/manual.d.ts +1 -3
- package/dist/lib/commands/manual.d.ts.map +1 -1
- package/dist/lib/commands/manual.js +4 -43
- package/dist/lib/commands/manual.js.map +1 -1
- package/dist/lib/commands/sweep.js +1 -1
- package/dist/lib/commands/sweep.js.map +1 -1
- package/dist/lib/compress-logger.d.ts +15 -0
- package/dist/lib/compress-logger.d.ts.map +1 -0
- package/dist/lib/compress-logger.js +132 -0
- package/dist/lib/compress-logger.js.map +1 -0
- package/dist/lib/config.d.ts +5 -20
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +172 -346
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/hooks.d.ts +7 -0
- package/dist/lib/hooks.d.ts.map +1 -1
- package/dist/lib/hooks.js +23 -16
- package/dist/lib/hooks.js.map +1 -1
- package/dist/lib/logger.d.ts.map +1 -1
- package/dist/lib/logger.js +6 -0
- package/dist/lib/logger.js.map +1 -1
- package/dist/lib/messages/index.d.ts +2 -2
- package/dist/lib/messages/index.d.ts.map +1 -1
- package/dist/lib/messages/index.js +2 -2
- package/dist/lib/messages/index.js.map +1 -1
- package/dist/lib/messages/inject/inject.d.ts +6 -0
- package/dist/lib/messages/inject/inject.d.ts.map +1 -0
- package/dist/lib/messages/inject/inject.js +99 -0
- package/dist/lib/messages/inject/inject.js.map +1 -0
- package/dist/lib/messages/inject/utils.d.ts +20 -0
- package/dist/lib/messages/inject/utils.d.ts.map +1 -0
- package/dist/lib/messages/inject/utils.js +137 -0
- package/dist/lib/messages/inject/utils.js.map +1 -0
- package/dist/lib/messages/prune.js +7 -7
- package/dist/lib/messages/prune.js.map +1 -1
- package/dist/lib/messages/utils.d.ts +16 -28
- package/dist/lib/messages/utils.d.ts.map +1 -1
- package/dist/lib/messages/utils.js +40 -133
- package/dist/lib/messages/utils.js.map +1 -1
- package/dist/lib/prompts/_codegen/system.generated.d.ts +1 -1
- package/dist/lib/prompts/_codegen/system.generated.d.ts.map +1 -1
- package/dist/lib/prompts/_codegen/system.generated.js +36 -32
- package/dist/lib/prompts/_codegen/system.generated.js.map +1 -1
- package/dist/lib/prompts/compress.d.ts +2 -0
- package/dist/lib/prompts/compress.d.ts.map +1 -0
- package/dist/lib/prompts/compress.js +122 -0
- package/dist/lib/prompts/compress.js.map +1 -0
- package/dist/lib/prompts/index.d.ts +6 -10
- package/dist/lib/prompts/index.d.ts.map +1 -1
- package/dist/lib/prompts/index.js +17 -40
- package/dist/lib/prompts/index.js.map +1 -1
- package/dist/lib/prompts/iteration-nudge.d.ts +2 -0
- package/dist/lib/prompts/iteration-nudge.d.ts.map +1 -0
- package/dist/lib/prompts/iteration-nudge.js +9 -0
- package/dist/lib/prompts/iteration-nudge.js.map +1 -0
- package/dist/lib/prompts/nudge.d.ts +2 -0
- package/dist/lib/prompts/nudge.d.ts.map +1 -0
- package/dist/lib/prompts/nudge.js +40 -0
- package/dist/lib/prompts/nudge.js.map +1 -0
- package/dist/lib/prompts/turn-nudge.d.ts +2 -0
- package/dist/lib/prompts/turn-nudge.d.ts.map +1 -0
- package/dist/lib/prompts/turn-nudge.js +12 -0
- package/dist/lib/prompts/turn-nudge.js.map +1 -0
- package/dist/lib/state/persistence.d.ts +6 -0
- package/dist/lib/state/persistence.d.ts.map +1 -1
- package/dist/lib/state/persistence.js +58 -38
- package/dist/lib/state/persistence.js.map +1 -1
- package/dist/lib/state/state.d.ts.map +1 -1
- package/dist/lib/state/state.js +20 -5
- 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 +3 -17
- package/dist/lib/state/tool-cache.js.map +1 -1
- package/dist/lib/state/types.d.ts +7 -2
- package/dist/lib/state/types.d.ts.map +1 -1
- package/dist/lib/state/utils.d.ts +1 -0
- package/dist/lib/state/utils.d.ts.map +1 -1
- package/dist/lib/state/utils.js +33 -6
- package/dist/lib/state/utils.js.map +1 -1
- package/dist/lib/strategies/index.d.ts +0 -1
- package/dist/lib/strategies/index.d.ts.map +1 -1
- package/dist/lib/strategies/index.js +0 -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 +15 -0
- package/dist/lib/strategies/utils.js.map +1 -1
- package/dist/lib/tools/compress-utils.d.ts +7 -4
- package/dist/lib/tools/compress-utils.d.ts.map +1 -1
- package/dist/lib/tools/compress-utils.js +34 -25
- package/dist/lib/tools/compress-utils.js.map +1 -1
- package/dist/lib/tools/compress.d.ts +2 -2
- package/dist/lib/tools/compress.d.ts.map +1 -1
- package/dist/lib/tools/compress.js +21 -58
- package/dist/lib/tools/compress.js.map +1 -1
- package/dist/lib/tools/index.d.ts +1 -3
- package/dist/lib/tools/index.d.ts.map +1 -1
- package/dist/lib/tools/index.js +0 -2
- package/dist/lib/tools/index.js.map +1 -1
- package/dist/lib/tools/types.d.ts +1 -1
- package/dist/lib/tools/types.d.ts.map +1 -1
- package/dist/lib/ui/notification.d.ts +2 -2
- package/dist/lib/ui/notification.d.ts.map +1 -1
- package/dist/lib/ui/notification.js +31 -28
- package/dist/lib/ui/notification.js.map +1 -1
- package/dist/lib/ui/utils.d.ts +3 -4
- package/dist/lib/ui/utils.d.ts.map +1 -1
- package/dist/lib/ui/utils.js +165 -24
- package/dist/lib/ui/utils.js.map +1 -1
- package/package.json +2 -1
- package/dist/lib/messages/inject.d.ts +0 -14
- package/dist/lib/messages/inject.d.ts.map +0 -1
- package/dist/lib/messages/inject.js +0 -266
- package/dist/lib/messages/inject.js.map +0 -1
- package/dist/lib/prompts/_codegen/compress-nudge.generated.d.ts +0 -2
- package/dist/lib/prompts/_codegen/compress-nudge.generated.d.ts.map +0 -1
- package/dist/lib/prompts/_codegen/compress-nudge.generated.js +0 -15
- package/dist/lib/prompts/_codegen/compress-nudge.generated.js.map +0 -1
- package/dist/lib/prompts/_codegen/compress.generated.d.ts +0 -2
- package/dist/lib/prompts/_codegen/compress.generated.d.ts.map +0 -1
- package/dist/lib/prompts/_codegen/compress.generated.js +0 -66
- package/dist/lib/prompts/_codegen/compress.generated.js.map +0 -1
- package/dist/lib/prompts/_codegen/distill.generated.d.ts +0 -2
- package/dist/lib/prompts/_codegen/distill.generated.d.ts.map +0 -1
- package/dist/lib/prompts/_codegen/distill.generated.js +0 -33
- package/dist/lib/prompts/_codegen/distill.generated.js.map +0 -1
- package/dist/lib/prompts/_codegen/nudge.generated.d.ts +0 -2
- package/dist/lib/prompts/_codegen/nudge.generated.d.ts.map +0 -1
- package/dist/lib/prompts/_codegen/nudge.generated.js +0 -17
- package/dist/lib/prompts/_codegen/nudge.generated.js.map +0 -1
- package/dist/lib/prompts/_codegen/prune.generated.d.ts +0 -2
- package/dist/lib/prompts/_codegen/prune.generated.d.ts.map +0 -1
- package/dist/lib/prompts/_codegen/prune.generated.js +0 -23
- package/dist/lib/prompts/_codegen/prune.generated.js.map +0 -1
- package/dist/lib/tools/distill.d.ts +0 -4
- package/dist/lib/tools/distill.d.ts.map +0 -1
- package/dist/lib/tools/distill.js +0 -41
- package/dist/lib/tools/distill.js.map +0 -1
- package/dist/lib/tools/prune-shared.d.ts +0 -6
- package/dist/lib/tools/prune-shared.d.ts.map +0 -1
- package/dist/lib/tools/prune-shared.js +0 -113
- package/dist/lib/tools/prune-shared.js.map +0 -1
- package/dist/lib/tools/prune.d.ts +0 -4
- package/dist/lib/tools/prune.d.ts.map +0 -1
- package/dist/lib/tools/prune.js +0 -28
- package/dist/lib/tools/prune.js.map +0 -1
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { tool } from "@opencode-ai/plugin";
|
|
2
|
-
import { executePruneOperation } from "./prune-shared";
|
|
3
|
-
import { loadPrompt } from "../prompts";
|
|
4
|
-
const DISTILL_TOOL_DESCRIPTION = loadPrompt("distill-tool-spec");
|
|
5
|
-
export function createDistillTool(ctx) {
|
|
6
|
-
return tool({
|
|
7
|
-
description: DISTILL_TOOL_DESCRIPTION,
|
|
8
|
-
args: {
|
|
9
|
-
targets: tool.schema
|
|
10
|
-
.array(tool.schema.object({
|
|
11
|
-
id: tool.schema
|
|
12
|
-
.string()
|
|
13
|
-
.describe("Numeric ID from the <prunable-tools> list"),
|
|
14
|
-
distillation: tool.schema
|
|
15
|
-
.string()
|
|
16
|
-
.describe("Complete technical distillation for this tool output"),
|
|
17
|
-
}))
|
|
18
|
-
.describe("Tool outputs to distill, each pairing an ID with its distillation"),
|
|
19
|
-
},
|
|
20
|
-
async execute(args, toolCtx) {
|
|
21
|
-
if (!args.targets || !Array.isArray(args.targets) || args.targets.length === 0) {
|
|
22
|
-
ctx.logger.debug("Distill tool called without targets: " + JSON.stringify(args));
|
|
23
|
-
throw new Error("Missing targets. Provide at least one { id, distillation } entry.");
|
|
24
|
-
}
|
|
25
|
-
for (const target of args.targets) {
|
|
26
|
-
if (!target.id || typeof target.id !== "string" || target.id.trim() === "") {
|
|
27
|
-
ctx.logger.debug("Distill target missing id: " + JSON.stringify(target));
|
|
28
|
-
throw new Error("Each target must have an id (numeric string from <prunable-tools>).");
|
|
29
|
-
}
|
|
30
|
-
if (!target.distillation || typeof target.distillation !== "string") {
|
|
31
|
-
ctx.logger.debug("Distill target missing distillation: " + JSON.stringify(target));
|
|
32
|
-
throw new Error("Each target must have a distillation string.");
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
const ids = args.targets.map((t) => t.id);
|
|
36
|
-
const distillations = args.targets.map((t) => t.distillation);
|
|
37
|
-
return executePruneOperation(ctx, toolCtx, ids, "extraction", "Distill", distillations);
|
|
38
|
-
},
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
//# sourceMappingURL=distill.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"distill.js","sourceRoot":"","sources":["../../../lib/tools/distill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAE1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AAEtD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAEvC,MAAM,wBAAwB,GAAG,UAAU,CAAC,mBAAmB,CAAC,CAAA;AAEhE,MAAM,UAAU,iBAAiB,CAAC,GAAqB;IACnD,OAAO,IAAI,CAAC;QACR,WAAW,EAAE,wBAAwB;QACrC,IAAI,EAAE;YACF,OAAO,EAAE,IAAI,CAAC,MAAM;iBACf,KAAK,CACF,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;gBACf,EAAE,EAAE,IAAI,CAAC,MAAM;qBACV,MAAM,EAAE;qBACR,QAAQ,CAAC,2CAA2C,CAAC;gBAC1D,YAAY,EAAE,IAAI,CAAC,MAAM;qBACpB,MAAM,EAAE;qBACR,QAAQ,CAAC,sDAAsD,CAAC;aACxE,CAAC,CACL;iBACA,QAAQ,CAAC,mEAAmE,CAAC;SACrF;QACD,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO;YACvB,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC7E,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,uCAAuC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAA;gBAChF,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAA;YACxF,CAAC;YAED,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBAChC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,OAAO,MAAM,CAAC,EAAE,KAAK,QAAQ,IAAI,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;oBACzE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAA;oBACxE,MAAM,IAAI,KAAK,CACX,qEAAqE,CACxE,CAAA;gBACL,CAAC;gBACD,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,OAAO,MAAM,CAAC,YAAY,KAAK,QAAQ,EAAE,CAAC;oBAClE,GAAG,CAAC,MAAM,CAAC,KAAK,CACZ,uCAAuC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CACnE,CAAA;oBACD,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAA;gBACnE,CAAC;YACL,CAAC;YAED,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;YACzC,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAA;YAE7D,OAAO,qBAAqB,CACxB,GAAG,EACH,OAAO,EACP,GAAG,EACH,YAA2B,EAC3B,SAAS,EACT,aAAa,CAChB,CAAA;QACL,CAAC;KACJ,CAAC,CAAA;AACN,CAAC"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import type { PruneToolContext } from "./types";
|
|
2
|
-
import { PruneReason } from "../ui/notification";
|
|
3
|
-
export declare function executePruneOperation(ctx: PruneToolContext, toolCtx: {
|
|
4
|
-
sessionID: string;
|
|
5
|
-
}, ids: string[], reason: PruneReason, toolName: string, distillation?: string[]): Promise<string>;
|
|
6
|
-
//# sourceMappingURL=prune-shared.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"prune-shared.d.ts","sourceRoot":"","sources":["../../../lib/tools/prune-shared.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAE/C,OAAO,EAAE,WAAW,EAA2B,MAAM,oBAAoB,CAAA;AASzE,wBAAsB,qBAAqB,CACvC,GAAG,EAAE,gBAAgB,EACrB,OAAO,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,EAC9B,GAAG,EAAE,MAAM,EAAE,EACb,MAAM,EAAE,WAAW,EACnB,QAAQ,EAAE,MAAM,EAChB,YAAY,CAAC,EAAE,MAAM,EAAE,GACxB,OAAO,CAAC,MAAM,CAAC,CAuJjB"}
|
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
import { syncToolCache } from "../state/tool-cache";
|
|
2
|
-
import { sendUnifiedNotification } from "../ui/notification";
|
|
3
|
-
import { formatPruningResultForTool } from "../ui/utils";
|
|
4
|
-
import { ensureSessionInitialized } from "../state";
|
|
5
|
-
import { saveSessionState } from "../state/persistence";
|
|
6
|
-
import { getTotalToolTokens, getCurrentParams } from "../strategies/utils";
|
|
7
|
-
import { getFilePathsFromParameters, isProtected } from "../protected-file-patterns";
|
|
8
|
-
import { buildToolIdList } from "../messages/utils";
|
|
9
|
-
// Shared logic for executing prune operations.
|
|
10
|
-
export async function executePruneOperation(ctx, toolCtx, ids, reason, toolName, distillation) {
|
|
11
|
-
const { client, state, logger, config, workingDirectory } = ctx;
|
|
12
|
-
const sessionId = toolCtx.sessionID;
|
|
13
|
-
logger.info(`${toolName} tool invoked`);
|
|
14
|
-
logger.info(JSON.stringify(reason ? { ids, reason } : { ids }));
|
|
15
|
-
if (!ids || ids.length === 0) {
|
|
16
|
-
logger.debug(`${toolName} tool called but ids is empty or undefined`);
|
|
17
|
-
throw new Error(`No IDs provided. Check the <prunable-tools> list for available IDs to ${toolName.toLowerCase()}.`);
|
|
18
|
-
}
|
|
19
|
-
const numericToolIds = ids
|
|
20
|
-
.map((id) => parseInt(id, 10))
|
|
21
|
-
.filter((n) => !isNaN(n));
|
|
22
|
-
if (numericToolIds.length === 0) {
|
|
23
|
-
logger.debug(`No numeric tool IDs provided for ${toolName}: ` + JSON.stringify(ids));
|
|
24
|
-
throw new Error("No numeric IDs provided. Format: ids: [id1, id2, ...]");
|
|
25
|
-
}
|
|
26
|
-
// Fetch messages to calculate tokens and find current agent
|
|
27
|
-
const messagesResponse = await client.session.messages({
|
|
28
|
-
path: { id: sessionId },
|
|
29
|
-
});
|
|
30
|
-
const messages = messagesResponse.data || messagesResponse;
|
|
31
|
-
// These 3 are probably not needed as they should always be set in the message
|
|
32
|
-
// transform handler, but in case something causes state to reset, this is a safety net
|
|
33
|
-
await ensureSessionInitialized(ctx.client, state, sessionId, logger, messages, config.manualMode.enabled);
|
|
34
|
-
syncToolCache(state, config, logger, messages);
|
|
35
|
-
buildToolIdList(state, messages, logger);
|
|
36
|
-
const currentParams = getCurrentParams(state, messages, logger);
|
|
37
|
-
const toolIdList = state.toolIdList;
|
|
38
|
-
const validNumericIds = [];
|
|
39
|
-
const skippedIds = [];
|
|
40
|
-
// Validate and filter IDs
|
|
41
|
-
for (const index of numericToolIds) {
|
|
42
|
-
// Validate that index is within bounds
|
|
43
|
-
if (index < 0 || index >= toolIdList.length) {
|
|
44
|
-
logger.debug(`Rejecting prune request - index out of bounds: ${index}`);
|
|
45
|
-
skippedIds.push(index.toString());
|
|
46
|
-
continue;
|
|
47
|
-
}
|
|
48
|
-
const id = toolIdList[index];
|
|
49
|
-
const metadata = state.toolParameters.get(id);
|
|
50
|
-
// Validate that all IDs exist in cache and aren't protected
|
|
51
|
-
// (rejects hallucinated IDs and turn-protected tools not shown in <prunable-tools>)
|
|
52
|
-
if (!metadata) {
|
|
53
|
-
logger.debug("Rejecting prune request - ID not in cache (turn-protected or hallucinated)", { index, id });
|
|
54
|
-
skippedIds.push(index.toString());
|
|
55
|
-
continue;
|
|
56
|
-
}
|
|
57
|
-
const allProtectedTools = config.tools.settings.protectedTools;
|
|
58
|
-
if (allProtectedTools.includes(metadata.tool)) {
|
|
59
|
-
logger.debug("Rejecting prune request - protected tool", {
|
|
60
|
-
index,
|
|
61
|
-
id,
|
|
62
|
-
tool: metadata.tool,
|
|
63
|
-
});
|
|
64
|
-
skippedIds.push(index.toString());
|
|
65
|
-
continue;
|
|
66
|
-
}
|
|
67
|
-
const filePaths = getFilePathsFromParameters(metadata.tool, metadata.parameters);
|
|
68
|
-
if (isProtected(filePaths, config.protectedFilePatterns)) {
|
|
69
|
-
logger.debug("Rejecting prune request - protected file path", {
|
|
70
|
-
index,
|
|
71
|
-
id,
|
|
72
|
-
tool: metadata.tool,
|
|
73
|
-
filePaths,
|
|
74
|
-
});
|
|
75
|
-
skippedIds.push(index.toString());
|
|
76
|
-
continue;
|
|
77
|
-
}
|
|
78
|
-
validNumericIds.push(index);
|
|
79
|
-
}
|
|
80
|
-
if (validNumericIds.length === 0) {
|
|
81
|
-
const errorMsg = skippedIds.length > 0
|
|
82
|
-
? `Invalid IDs provided: [${skippedIds.join(", ")}]. Only use numeric IDs from the <prunable-tools> list.`
|
|
83
|
-
: `No valid IDs provided to ${toolName.toLowerCase()}.`;
|
|
84
|
-
throw new Error(errorMsg);
|
|
85
|
-
}
|
|
86
|
-
const pruneToolIds = validNumericIds.map((index) => toolIdList[index]);
|
|
87
|
-
for (const id of pruneToolIds) {
|
|
88
|
-
const entry = state.toolParameters.get(id);
|
|
89
|
-
state.prune.tools.set(id, entry?.tokenCount ?? 0);
|
|
90
|
-
}
|
|
91
|
-
const toolMetadata = new Map();
|
|
92
|
-
for (const id of pruneToolIds) {
|
|
93
|
-
const toolParameters = state.toolParameters.get(id);
|
|
94
|
-
if (toolParameters) {
|
|
95
|
-
toolMetadata.set(id, toolParameters);
|
|
96
|
-
}
|
|
97
|
-
else {
|
|
98
|
-
logger.debug("No metadata found for ID", { id });
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
state.stats.pruneTokenCounter += getTotalToolTokens(state, pruneToolIds);
|
|
102
|
-
await sendUnifiedNotification(client, logger, config, state, sessionId, pruneToolIds, toolMetadata, reason, currentParams, workingDirectory, distillation);
|
|
103
|
-
state.stats.totalPruneTokens += state.stats.pruneTokenCounter;
|
|
104
|
-
state.stats.pruneTokenCounter = 0;
|
|
105
|
-
state.nudgeCounter = 0;
|
|
106
|
-
saveSessionState(state, logger).catch((err) => logger.error("Failed to persist state", { error: err.message }));
|
|
107
|
-
let result = formatPruningResultForTool(pruneToolIds, toolMetadata, workingDirectory);
|
|
108
|
-
if (skippedIds.length > 0) {
|
|
109
|
-
result += `\n\nNote: ${skippedIds.length} IDs were skipped (invalid, protected, or missing metadata): ${skippedIds.join(", ")}`;
|
|
110
|
-
}
|
|
111
|
-
return result;
|
|
112
|
-
}
|
|
113
|
-
//# sourceMappingURL=prune-shared.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"prune-shared.js","sourceRoot":"","sources":["../../../lib/tools/prune-shared.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"prune.d.ts","sourceRoot":"","sources":["../../../lib/tools/prune.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAC1C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAO/C,wBAAgB,eAAe,CAAC,GAAG,EAAE,gBAAgB,GAAG,UAAU,CAAC,OAAO,IAAI,CAAC,CA2B9E"}
|
package/dist/lib/tools/prune.js
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { tool } from "@opencode-ai/plugin";
|
|
2
|
-
import { executePruneOperation } from "./prune-shared";
|
|
3
|
-
import { loadPrompt } from "../prompts";
|
|
4
|
-
const PRUNE_TOOL_DESCRIPTION = loadPrompt("prune-tool-spec");
|
|
5
|
-
export function createPruneTool(ctx) {
|
|
6
|
-
return tool({
|
|
7
|
-
description: PRUNE_TOOL_DESCRIPTION,
|
|
8
|
-
args: {
|
|
9
|
-
ids: tool.schema
|
|
10
|
-
.array(tool.schema.string())
|
|
11
|
-
.describe("Numeric IDs as strings from the <prunable-tools> list to prune"),
|
|
12
|
-
},
|
|
13
|
-
async execute(args, toolCtx) {
|
|
14
|
-
if (!args.ids || !Array.isArray(args.ids) || args.ids.length === 0) {
|
|
15
|
-
ctx.logger.debug("Prune tool called without ids: " + JSON.stringify(args));
|
|
16
|
-
throw new Error("Missing ids. You must provide at least one ID to prune.");
|
|
17
|
-
}
|
|
18
|
-
if (!args.ids.every((id) => typeof id === "string" && id.trim() !== "")) {
|
|
19
|
-
ctx.logger.debug("Prune tool called with invalid ids: " + JSON.stringify(args));
|
|
20
|
-
throw new Error('Invalid ids. All IDs must be numeric strings (e.g., "1", "23") from the <prunable-tools> list.');
|
|
21
|
-
}
|
|
22
|
-
const numericIds = args.ids;
|
|
23
|
-
const reason = "noise";
|
|
24
|
-
return executePruneOperation(ctx, toolCtx, numericIds, reason, "Prune");
|
|
25
|
-
},
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
//# sourceMappingURL=prune.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"prune.js","sourceRoot":"","sources":["../../../lib/tools/prune.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAE1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AAEtD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAEvC,MAAM,sBAAsB,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAA;AAE5D,MAAM,UAAU,eAAe,CAAC,GAAqB;IACjD,OAAO,IAAI,CAAC;QACR,WAAW,EAAE,sBAAsB;QACnC,IAAI,EAAE;YACF,GAAG,EAAE,IAAI,CAAC,MAAM;iBACX,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;iBAC3B,QAAQ,CAAC,gEAAgE,CAAC;SAClF;QACD,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO;YACvB,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACjE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,iCAAiC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAA;gBAC1E,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAA;YAC9E,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;gBACtE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,sCAAsC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAA;gBAC/E,MAAM,IAAI,KAAK,CACX,gGAAgG,CACnG,CAAA;YACL,CAAC;YAED,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAA;YAC3B,MAAM,MAAM,GAAG,OAAO,CAAA;YAEtB,OAAO,qBAAqB,CAAC,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;QAC3E,CAAC;KACJ,CAAC,CAAA;AACN,CAAC"}
|