@tarquinen/opencode-dcp 1.3.1-beta1 → 1.3.3-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 +94 -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 +40 -26
- package/dist/lib/commands/context.js.map +1 -1
- package/dist/lib/commands/stats.d.ts.map +1 -1
- package/dist/lib/commands/stats.js +13 -8
- package/dist/lib/commands/stats.js.map +1 -1
- package/dist/lib/commands/sweep.d.ts.map +1 -1
- package/dist/lib/commands/sweep.js +4 -3
- package/dist/lib/commands/sweep.js.map +1 -1
- package/dist/lib/config.d.ts +10 -4
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +75 -31
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/hooks.d.ts.map +1 -1
- package/dist/lib/hooks.js +13 -19
- 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 -58
- 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 +81 -5
- package/dist/lib/messages/prune.js.map +1 -1
- package/dist/lib/messages/utils.d.ts +10 -4
- package/dist/lib/messages/utils.d.ts.map +1 -1
- package/dist/lib/messages/utils.js +24 -50
- 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 +9 -2
- package/dist/lib/state/persistence.d.ts.map +1 -1
- package/dist/lib/state/persistence.js +24 -1
- 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 +13 -32
- 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 +7 -1
- 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/deduplication.d.ts.map +1 -1
- package/dist/lib/strategies/deduplication.js +4 -3
- package/dist/lib/strategies/deduplication.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/purge-errors.d.ts.map +1 -1
- package/dist/lib/strategies/purge-errors.js +4 -3
- package/dist/lib/strategies/purge-errors.js.map +1 -1
- package/dist/lib/strategies/supersede-writes.js +5 -4
- package/dist/lib/strategies/supersede-writes.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 +102 -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 +109 -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 +95 -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
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { buildToolIdList } from "../messages/utils";
|
|
2
|
+
import { syncToolCache } from "../state/tool-cache";
|
|
3
|
+
import { sendUnifiedNotification } from "../ui/notification";
|
|
4
|
+
import { formatPruningResultForTool } from "../ui/utils";
|
|
5
|
+
import { ensureSessionInitialized } from "../state";
|
|
6
|
+
import { saveSessionState } from "../state/persistence";
|
|
7
|
+
import { calculateTokensSaved, getCurrentParams } from "../strategies/utils";
|
|
8
|
+
import { getFilePathFromParameters, isProtectedFilePath } from "../protected-file-patterns";
|
|
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
|
+
await ensureSessionInitialized(ctx.client, state, sessionId, logger, messages);
|
|
32
|
+
await syncToolCache(state, config, logger, messages);
|
|
33
|
+
const currentParams = getCurrentParams(state, messages, logger);
|
|
34
|
+
const toolIdList = buildToolIdList(state, messages, logger);
|
|
35
|
+
const validNumericIds = [];
|
|
36
|
+
const skippedIds = [];
|
|
37
|
+
// Validate and filter IDs
|
|
38
|
+
for (const index of numericToolIds) {
|
|
39
|
+
// Validate that all numeric IDs are within bounds
|
|
40
|
+
if (index < 0 || index >= toolIdList.length) {
|
|
41
|
+
logger.debug(`Rejecting prune request - index out of bounds: ${index}`);
|
|
42
|
+
skippedIds.push(index.toString());
|
|
43
|
+
continue;
|
|
44
|
+
}
|
|
45
|
+
const id = toolIdList[index];
|
|
46
|
+
const metadata = state.toolParameters.get(id);
|
|
47
|
+
// Validate that all IDs exist in cache and aren't protected
|
|
48
|
+
// (rejects hallucinated IDs and turn-protected tools not shown in <prunable-tools>)
|
|
49
|
+
if (!metadata) {
|
|
50
|
+
logger.debug("Rejecting prune request - ID not in cache (turn-protected or hallucinated)", { index, id });
|
|
51
|
+
skippedIds.push(index.toString());
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
const allProtectedTools = config.tools.settings.protectedTools;
|
|
55
|
+
if (allProtectedTools.includes(metadata.tool)) {
|
|
56
|
+
logger.debug("Rejecting prune request - protected tool", {
|
|
57
|
+
index,
|
|
58
|
+
id,
|
|
59
|
+
tool: metadata.tool,
|
|
60
|
+
});
|
|
61
|
+
skippedIds.push(index.toString());
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
const filePath = getFilePathFromParameters(metadata.parameters);
|
|
65
|
+
if (isProtectedFilePath(filePath, config.protectedFilePatterns)) {
|
|
66
|
+
logger.debug("Rejecting prune request - protected file path", {
|
|
67
|
+
index,
|
|
68
|
+
id,
|
|
69
|
+
tool: metadata.tool,
|
|
70
|
+
filePath,
|
|
71
|
+
});
|
|
72
|
+
skippedIds.push(index.toString());
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
validNumericIds.push(index);
|
|
76
|
+
}
|
|
77
|
+
if (validNumericIds.length === 0) {
|
|
78
|
+
const errorMsg = skippedIds.length > 0
|
|
79
|
+
? `Invalid IDs provided: [${skippedIds.join(", ")}]. Only use numeric IDs from the <prunable-tools> list.`
|
|
80
|
+
: `No valid IDs provided to ${toolName.toLowerCase()}.`;
|
|
81
|
+
throw new Error(errorMsg);
|
|
82
|
+
}
|
|
83
|
+
const pruneToolIds = validNumericIds.map((index) => toolIdList[index]);
|
|
84
|
+
for (const id of pruneToolIds) {
|
|
85
|
+
state.prune.toolIds.add(id);
|
|
86
|
+
}
|
|
87
|
+
const toolMetadata = new Map();
|
|
88
|
+
for (const id of pruneToolIds) {
|
|
89
|
+
const toolParameters = state.toolParameters.get(id);
|
|
90
|
+
if (toolParameters) {
|
|
91
|
+
toolMetadata.set(id, toolParameters);
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
logger.debug("No metadata found for ID", { id });
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
state.stats.pruneTokenCounter += calculateTokensSaved(state, messages, pruneToolIds);
|
|
98
|
+
await sendUnifiedNotification(client, logger, config, state, sessionId, pruneToolIds, toolMetadata, reason, currentParams, workingDirectory, distillation);
|
|
99
|
+
state.stats.totalPruneTokens += state.stats.pruneTokenCounter;
|
|
100
|
+
state.stats.pruneTokenCounter = 0;
|
|
101
|
+
state.nudgeCounter = 0;
|
|
102
|
+
saveSessionState(state, logger).catch((err) => logger.error("Failed to persist state", { error: err.message }));
|
|
103
|
+
let result = formatPruningResultForTool(pruneToolIds, toolMetadata, workingDirectory);
|
|
104
|
+
if (skippedIds.length > 0) {
|
|
105
|
+
result += `\n\nNote: ${skippedIds.length} IDs were skipped (invalid, protected, or missing metadata): ${skippedIds.join(", ")}`;
|
|
106
|
+
}
|
|
107
|
+
return result;
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=prune-shared.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prune-shared.js","sourceRoot":"","sources":["../../../lib/tools/prune-shared.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { tool } from "@opencode-ai/plugin";
|
|
2
1
|
import type { SessionState } from "../state";
|
|
3
2
|
import type { PluginConfig } from "../config";
|
|
4
3
|
import type { Logger } from "../logger";
|
|
@@ -9,6 +8,4 @@ export interface PruneToolContext {
|
|
|
9
8
|
config: PluginConfig;
|
|
10
9
|
workingDirectory: string;
|
|
11
10
|
}
|
|
12
|
-
|
|
13
|
-
export declare function createExtractTool(ctx: PruneToolContext): ReturnType<typeof tool>;
|
|
14
|
-
//# sourceMappingURL=tools.d.ts.map
|
|
11
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../lib/tools/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAC5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAC7C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAEvC,MAAM,WAAW,gBAAgB;IAC7B,MAAM,EAAE,GAAG,CAAA;IACX,KAAK,EAAE,YAAY,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,YAAY,CAAA;IACpB,gBAAgB,EAAE,MAAM,CAAA;CAC3B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../lib/tools/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { WithParts, CompressSummary } from "../state";
|
|
2
|
+
import type { Logger } from "../logger";
|
|
3
|
+
/**
|
|
4
|
+
* Searches messages for a string and returns the message ID where it's found.
|
|
5
|
+
* Searches in text parts, tool outputs, tool inputs, and other textual content.
|
|
6
|
+
* Also searches through existing compress summaries to enable chained compression.
|
|
7
|
+
* Throws an error if the string is not found or found more than once.
|
|
8
|
+
*/
|
|
9
|
+
export declare function findStringInMessages(messages: WithParts[], searchString: string, logger: Logger, compressSummaries: CompressSummary[] | undefined, stringType: "startString" | "endString"): {
|
|
10
|
+
messageId: string;
|
|
11
|
+
messageIndex: number;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Collects all tool callIDs from messages between start and end indices (inclusive).
|
|
15
|
+
*/
|
|
16
|
+
export declare function collectToolIdsInRange(messages: WithParts[], startIndex: number, endIndex: number): string[];
|
|
17
|
+
/**
|
|
18
|
+
* Collects all message IDs from messages between start and end indices (inclusive).
|
|
19
|
+
*/
|
|
20
|
+
export declare function collectMessageIdsInRange(messages: WithParts[], startIndex: number, endIndex: number): string[];
|
|
21
|
+
/**
|
|
22
|
+
* Collects all textual content (text parts, tool inputs, and tool outputs)
|
|
23
|
+
* from a range of messages. Used for token estimation.
|
|
24
|
+
*/
|
|
25
|
+
export declare function collectContentInRange(messages: WithParts[], startIndex: number, endIndex: number): string[];
|
|
26
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../lib/tools/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAC1D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAEvC;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAChC,QAAQ,EAAE,SAAS,EAAE,EACrB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,iBAAiB,EAAE,eAAe,EAAE,YAAK,EACzC,UAAU,EAAE,aAAa,GAAG,WAAW,GACxC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CA2D7C;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACjC,QAAQ,EAAE,SAAS,EAAE,EACrB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACjB,MAAM,EAAE,CAiBV;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACpC,QAAQ,EAAE,SAAS,EAAE,EACrB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACjB,MAAM,EAAE,CAWV;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACjC,QAAQ,EAAE,SAAS,EAAE,EACrB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACjB,MAAM,EAAE,CAkCV"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Searches messages for a string and returns the message ID where it's found.
|
|
3
|
+
* Searches in text parts, tool outputs, tool inputs, and other textual content.
|
|
4
|
+
* Also searches through existing compress summaries to enable chained compression.
|
|
5
|
+
* Throws an error if the string is not found or found more than once.
|
|
6
|
+
*/
|
|
7
|
+
export function findStringInMessages(messages, searchString, logger, compressSummaries = [], stringType) {
|
|
8
|
+
const matches = [];
|
|
9
|
+
// First, search through existing compress summaries
|
|
10
|
+
// This allows referencing text from previous compress operations
|
|
11
|
+
for (const summary of compressSummaries) {
|
|
12
|
+
if (summary.summary.includes(searchString)) {
|
|
13
|
+
const anchorIndex = messages.findIndex((m) => m.info.id === summary.anchorMessageId);
|
|
14
|
+
if (anchorIndex !== -1) {
|
|
15
|
+
matches.push({
|
|
16
|
+
messageId: summary.anchorMessageId,
|
|
17
|
+
messageIndex: anchorIndex,
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
// Then search through raw messages
|
|
23
|
+
for (let i = 0; i < messages.length; i++) {
|
|
24
|
+
const msg = messages[i];
|
|
25
|
+
const parts = Array.isArray(msg.parts) ? msg.parts : [];
|
|
26
|
+
for (const part of parts) {
|
|
27
|
+
let content = "";
|
|
28
|
+
if (part.type === "text" && typeof part.text === "string") {
|
|
29
|
+
content = part.text;
|
|
30
|
+
}
|
|
31
|
+
else if (part.type === "tool" && part.state?.status === "completed") {
|
|
32
|
+
if (typeof part.state.output === "string") {
|
|
33
|
+
content = part.state.output;
|
|
34
|
+
}
|
|
35
|
+
if (part.state.input) {
|
|
36
|
+
const inputStr = typeof part.state.input === "string"
|
|
37
|
+
? part.state.input
|
|
38
|
+
: JSON.stringify(part.state.input);
|
|
39
|
+
content += " " + inputStr;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
if (content.includes(searchString)) {
|
|
43
|
+
matches.push({ messageId: msg.info.id, messageIndex: i });
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
if (matches.length === 0) {
|
|
48
|
+
throw new Error(`${stringType} not found in conversation. Make sure the string exists and is spelled exactly as it appears.`);
|
|
49
|
+
}
|
|
50
|
+
if (matches.length > 1) {
|
|
51
|
+
throw new Error(`Found multiple matches for ${stringType}. Provide more surrounding context to uniquely identify the intended match.`);
|
|
52
|
+
}
|
|
53
|
+
return matches[0];
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Collects all tool callIDs from messages between start and end indices (inclusive).
|
|
57
|
+
*/
|
|
58
|
+
export function collectToolIdsInRange(messages, startIndex, endIndex) {
|
|
59
|
+
const toolIds = [];
|
|
60
|
+
for (let i = startIndex; i <= endIndex; i++) {
|
|
61
|
+
const msg = messages[i];
|
|
62
|
+
const parts = Array.isArray(msg.parts) ? msg.parts : [];
|
|
63
|
+
for (const part of parts) {
|
|
64
|
+
if (part.type === "tool" && part.callID) {
|
|
65
|
+
if (!toolIds.includes(part.callID)) {
|
|
66
|
+
toolIds.push(part.callID);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return toolIds;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Collects all message IDs from messages between start and end indices (inclusive).
|
|
75
|
+
*/
|
|
76
|
+
export function collectMessageIdsInRange(messages, startIndex, endIndex) {
|
|
77
|
+
const messageIds = [];
|
|
78
|
+
for (let i = startIndex; i <= endIndex; i++) {
|
|
79
|
+
const msgId = messages[i].info.id;
|
|
80
|
+
if (!messageIds.includes(msgId)) {
|
|
81
|
+
messageIds.push(msgId);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return messageIds;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Collects all textual content (text parts, tool inputs, and tool outputs)
|
|
88
|
+
* from a range of messages. Used for token estimation.
|
|
89
|
+
*/
|
|
90
|
+
export function collectContentInRange(messages, startIndex, endIndex) {
|
|
91
|
+
const contents = [];
|
|
92
|
+
for (let i = startIndex; i <= endIndex; i++) {
|
|
93
|
+
const msg = messages[i];
|
|
94
|
+
const parts = Array.isArray(msg.parts) ? msg.parts : [];
|
|
95
|
+
for (const part of parts) {
|
|
96
|
+
if (part.type === "text") {
|
|
97
|
+
contents.push(part.text);
|
|
98
|
+
}
|
|
99
|
+
else if (part.type === "tool") {
|
|
100
|
+
const toolState = part.state;
|
|
101
|
+
if (toolState?.input) {
|
|
102
|
+
contents.push(typeof toolState.input === "string"
|
|
103
|
+
? toolState.input
|
|
104
|
+
: JSON.stringify(toolState.input));
|
|
105
|
+
}
|
|
106
|
+
if (toolState?.status === "completed" && toolState?.output) {
|
|
107
|
+
contents.push(typeof toolState.output === "string"
|
|
108
|
+
? toolState.output
|
|
109
|
+
: JSON.stringify(toolState.output));
|
|
110
|
+
}
|
|
111
|
+
else if (toolState?.status === "error" && toolState?.error) {
|
|
112
|
+
contents.push(typeof toolState.error === "string"
|
|
113
|
+
? toolState.error
|
|
114
|
+
: JSON.stringify(toolState.error));
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
return contents;
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../lib/tools/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,5 +5,6 @@ import { PluginConfig } from "../config";
|
|
|
5
5
|
export type PruneReason = "completion" | "noise" | "extraction";
|
|
6
6
|
export declare const PRUNE_REASON_LABELS: Record<PruneReason, string>;
|
|
7
7
|
export declare function sendUnifiedNotification(client: any, logger: Logger, config: PluginConfig, state: SessionState, sessionId: string, pruneToolIds: string[], toolMetadata: Map<string, ToolParameterEntry>, reason: PruneReason | undefined, params: any, workingDirectory: string, distillation?: string[]): Promise<boolean>;
|
|
8
|
+
export declare function sendCompressNotification(client: any, logger: Logger, config: PluginConfig, state: SessionState, sessionId: string, toolIds: string[], messageIds: string[], topic: string, summary: string, startResult: any, endResult: any, totalMessages: number, params: any): Promise<boolean>;
|
|
8
9
|
export declare function sendIgnoredMessage(client: any, sessionID: string, text: string, params: any, logger: Logger): Promise<void>;
|
|
9
10
|
//# sourceMappingURL=notification.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notification.d.ts","sourceRoot":"","sources":["../../../lib/ui/notification.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"notification.d.ts","sourceRoot":"","sources":["../../../lib/ui/notification.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAS5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAExC,MAAM,MAAM,WAAW,GAAG,YAAY,GAAG,OAAO,GAAG,YAAY,CAAA;AAC/D,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAI3D,CAAA;AAmFD,wBAAsB,uBAAuB,CACzC,MAAM,EAAE,GAAG,EACX,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,YAAY,EACnB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EAAE,EACtB,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,EAC7C,MAAM,EAAE,WAAW,GAAG,SAAS,EAC/B,MAAM,EAAE,GAAG,EACX,gBAAgB,EAAE,MAAM,EACxB,YAAY,CAAC,EAAE,MAAM,EAAE,GACxB,OAAO,CAAC,OAAO,CAAC,CA2ClB;AAED,wBAAsB,wBAAwB,CAC1C,MAAM,EAAE,GAAG,EACX,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,YAAY,EACnB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EAAE,EACjB,UAAU,EAAE,MAAM,EAAE,EACpB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,GAAG,EAChB,SAAS,EAAE,GAAG,EACd,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,GAAG,GACZ,OAAO,CAAC,OAAO,CAAC,CA2DlB;AAED,wBAAsB,kBAAkB,CACpC,MAAM,EAAE,GAAG,EACX,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,GAAG,EACX,MAAM,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CAiCf"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { countDistillationTokens, formatExtracted, formatPrunedItemsList, formatStatsHeader, formatTokenCount, } from "./utils";
|
|
1
|
+
import { countDistillationTokens, formatExtracted, formatPrunedItemsList, formatStatsHeader, formatTokenCount, formatProgressBar, } from "./utils";
|
|
2
2
|
export const PRUNE_REASON_LABELS = {
|
|
3
3
|
completion: "Task Complete",
|
|
4
4
|
noise: "Noise Removal",
|
|
@@ -6,7 +6,7 @@ export const PRUNE_REASON_LABELS = {
|
|
|
6
6
|
};
|
|
7
7
|
function buildMinimalMessage(state, reason, distillation, showDistillation) {
|
|
8
8
|
const extractedTokens = countDistillationTokens(distillation);
|
|
9
|
-
const extractedSuffix = extractedTokens > 0 ? ` (
|
|
9
|
+
const extractedSuffix = extractedTokens > 0 ? ` (distilled ${formatTokenCount(extractedTokens)})` : "";
|
|
10
10
|
const reasonSuffix = reason && extractedTokens === 0 ? ` — ${PRUNE_REASON_LABELS[reason]}` : "";
|
|
11
11
|
let message = formatStatsHeader(state.stats.totalPruneTokens, state.stats.pruneTokenCounter) +
|
|
12
12
|
reasonSuffix +
|
|
@@ -18,7 +18,7 @@ function buildDetailedMessage(state, reason, pruneToolIds, toolMetadata, working
|
|
|
18
18
|
if (pruneToolIds.length > 0) {
|
|
19
19
|
const pruneTokenCounterStr = `~${formatTokenCount(state.stats.pruneTokenCounter)}`;
|
|
20
20
|
const extractedTokens = countDistillationTokens(distillation);
|
|
21
|
-
const extractedSuffix = extractedTokens > 0 ? `,
|
|
21
|
+
const extractedSuffix = extractedTokens > 0 ? `, distilled ${formatTokenCount(extractedTokens)}` : "";
|
|
22
22
|
const reasonLabel = reason && extractedTokens === 0 ? ` — ${PRUNE_REASON_LABELS[reason]}` : "";
|
|
23
23
|
message += `\n\n▣ Pruning (${pruneTokenCounterStr}${extractedSuffix})${reasonLabel}`;
|
|
24
24
|
const itemLines = formatPrunedItemsList(pruneToolIds, toolMetadata, workingDirectory);
|
|
@@ -26,6 +26,35 @@ function buildDetailedMessage(state, reason, pruneToolIds, toolMetadata, working
|
|
|
26
26
|
}
|
|
27
27
|
return (message + formatExtracted(showDistillation ? distillation : undefined)).trim();
|
|
28
28
|
}
|
|
29
|
+
const TOAST_BODY_MAX_LINES = 12;
|
|
30
|
+
const TOAST_SUMMARY_MAX_CHARS = 600;
|
|
31
|
+
function truncateToastBody(body, maxLines = TOAST_BODY_MAX_LINES) {
|
|
32
|
+
const lines = body.split("\n");
|
|
33
|
+
if (lines.length <= maxLines) {
|
|
34
|
+
return body;
|
|
35
|
+
}
|
|
36
|
+
const kept = lines.slice(0, maxLines - 1);
|
|
37
|
+
const remaining = lines.length - maxLines + 1;
|
|
38
|
+
return kept.join("\n") + `\n... and ${remaining} more`;
|
|
39
|
+
}
|
|
40
|
+
function truncateToastSummary(summary, maxChars = TOAST_SUMMARY_MAX_CHARS) {
|
|
41
|
+
if (summary.length <= maxChars) {
|
|
42
|
+
return summary;
|
|
43
|
+
}
|
|
44
|
+
return summary.slice(0, maxChars - 3) + "...";
|
|
45
|
+
}
|
|
46
|
+
function truncateExtractedSection(message, maxChars = TOAST_SUMMARY_MAX_CHARS) {
|
|
47
|
+
const marker = "\n\n▣ Extracted";
|
|
48
|
+
const index = message.indexOf(marker);
|
|
49
|
+
if (index === -1) {
|
|
50
|
+
return message;
|
|
51
|
+
}
|
|
52
|
+
const extracted = message.slice(index);
|
|
53
|
+
if (extracted.length <= maxChars) {
|
|
54
|
+
return message;
|
|
55
|
+
}
|
|
56
|
+
return message.slice(0, index) + truncateToastSummary(extracted, maxChars);
|
|
57
|
+
}
|
|
29
58
|
export async function sendUnifiedNotification(client, logger, config, state, sessionId, pruneToolIds, toolMetadata, reason, params, workingDirectory, distillation) {
|
|
30
59
|
const hasPruned = pruneToolIds.length > 0;
|
|
31
60
|
if (!hasPruned) {
|
|
@@ -34,10 +63,72 @@ export async function sendUnifiedNotification(client, logger, config, state, ses
|
|
|
34
63
|
if (config.pruneNotification === "off") {
|
|
35
64
|
return false;
|
|
36
65
|
}
|
|
37
|
-
const showDistillation = config.tools.
|
|
66
|
+
const showDistillation = config.tools.distill.showDistillation;
|
|
38
67
|
const message = config.pruneNotification === "minimal"
|
|
39
68
|
? buildMinimalMessage(state, reason, distillation, showDistillation)
|
|
40
69
|
: buildDetailedMessage(state, reason, pruneToolIds, toolMetadata, workingDirectory, distillation, showDistillation);
|
|
70
|
+
if (config.pruneNotificationType === "toast") {
|
|
71
|
+
let toastMessage = truncateExtractedSection(message);
|
|
72
|
+
toastMessage =
|
|
73
|
+
config.pruneNotification === "minimal" ? toastMessage : truncateToastBody(toastMessage);
|
|
74
|
+
await client.tui.showToast({
|
|
75
|
+
body: {
|
|
76
|
+
title: "DCP: Prune Notification",
|
|
77
|
+
message: toastMessage,
|
|
78
|
+
variant: "info",
|
|
79
|
+
duration: 5000,
|
|
80
|
+
},
|
|
81
|
+
});
|
|
82
|
+
return true;
|
|
83
|
+
}
|
|
84
|
+
await sendIgnoredMessage(client, sessionId, message, params, logger);
|
|
85
|
+
return true;
|
|
86
|
+
}
|
|
87
|
+
export async function sendCompressNotification(client, logger, config, state, sessionId, toolIds, messageIds, topic, summary, startResult, endResult, totalMessages, params) {
|
|
88
|
+
if (config.pruneNotification === "off") {
|
|
89
|
+
return false;
|
|
90
|
+
}
|
|
91
|
+
let message;
|
|
92
|
+
if (config.pruneNotification === "minimal") {
|
|
93
|
+
message = formatStatsHeader(state.stats.totalPruneTokens, state.stats.pruneTokenCounter);
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
message = formatStatsHeader(state.stats.totalPruneTokens, state.stats.pruneTokenCounter);
|
|
97
|
+
const pruneTokenCounterStr = `~${formatTokenCount(state.stats.pruneTokenCounter)}`;
|
|
98
|
+
const progressBar = formatProgressBar(totalMessages, startResult.messageIndex, endResult.messageIndex, 25);
|
|
99
|
+
message += `\n\n▣ Compressing (${pruneTokenCounterStr}) ${progressBar}`;
|
|
100
|
+
message += `\n→ Topic: ${topic}`;
|
|
101
|
+
message += `\n→ Items: ${messageIds.length} messages`;
|
|
102
|
+
if (toolIds.length > 0) {
|
|
103
|
+
message += ` and ${toolIds.length} tools condensed`;
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
message += ` condensed`;
|
|
107
|
+
}
|
|
108
|
+
if (config.tools.compress.showCompression) {
|
|
109
|
+
message += `\n→ Compression: ${summary}`;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
if (config.pruneNotificationType === "toast") {
|
|
113
|
+
let toastMessage = message;
|
|
114
|
+
if (config.tools.compress.showCompression) {
|
|
115
|
+
const truncatedSummary = truncateToastSummary(summary);
|
|
116
|
+
if (truncatedSummary !== summary) {
|
|
117
|
+
toastMessage = toastMessage.replace(`\n→ Compression: ${summary}`, `\n→ Compression: ${truncatedSummary}`);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
toastMessage =
|
|
121
|
+
config.pruneNotification === "minimal" ? toastMessage : truncateToastBody(toastMessage);
|
|
122
|
+
await client.tui.showToast({
|
|
123
|
+
body: {
|
|
124
|
+
title: "DCP: Compress Notification",
|
|
125
|
+
message: toastMessage,
|
|
126
|
+
variant: "info",
|
|
127
|
+
duration: 5000,
|
|
128
|
+
},
|
|
129
|
+
});
|
|
130
|
+
return true;
|
|
131
|
+
}
|
|
41
132
|
await sendIgnoredMessage(client, sessionId, message, params, logger);
|
|
42
133
|
return true;
|
|
43
134
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notification.js","sourceRoot":"","sources":["../../../lib/ui/notification.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,uBAAuB,EACvB,eAAe,EACf,qBAAqB,EACrB,iBAAiB,EACjB,gBAAgB,
|
|
1
|
+
{"version":3,"file":"notification.js","sourceRoot":"","sources":["../../../lib/ui/notification.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/ui/utils.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ export declare function formatExtracted(distillation?: string[]): string;
|
|
|
4
4
|
export declare function formatStatsHeader(totalTokensSaved: number, pruneTokenCounter: number): string;
|
|
5
5
|
export declare function formatTokenCount(tokens: number): string;
|
|
6
6
|
export declare function truncate(str: string, maxLen?: number): string;
|
|
7
|
+
export declare function formatProgressBar(total: number, start: number, end: number, width?: number): string;
|
|
7
8
|
export declare function shortenPath(input: string, workingDirectory?: string): string;
|
|
8
9
|
export declare function formatPrunedItemsList(pruneToolIds: string[], toolMetadata: Map<string, ToolParameterEntry>, workingDirectory?: string): string[];
|
|
9
10
|
export declare function formatPruningResultForTool(prunedIds: string[], toolMetadata: Map<string, ToolParameterEntry>, workingDirectory?: string): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../lib/ui/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAI7C,wBAAgB,uBAAuB,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAGvE;AAED,wBAAgB,eAAe,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAS/D;AAED,wBAAgB,iBAAiB,CAAC,gBAAgB,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,GAAG,MAAM,CAG7F;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAKvD;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,MAAW,GAAG,MAAM,CAGjE;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,CAU5E;AAeD,wBAAgB,qBAAqB,CACjC,YAAY,EAAE,MAAM,EAAE,EACtB,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,EAC7C,gBAAgB,CAAC,EAAE,MAAM,GAC1B,MAAM,EAAE,CA0BV;AAED,wBAAgB,0BAA0B,CACtC,SAAS,EAAE,MAAM,EAAE,EACnB,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,EAC7C,gBAAgB,CAAC,EAAE,MAAM,GAC1B,MAAM,CAWR"}
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../lib/ui/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAI7C,wBAAgB,uBAAuB,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAGvE;AAED,wBAAgB,eAAe,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAS/D;AAED,wBAAgB,iBAAiB,CAAC,gBAAgB,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,GAAG,MAAM,CAG7F;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAKvD;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,MAAW,GAAG,MAAM,CAGjE;AAED,wBAAgB,iBAAiB,CAC7B,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,KAAK,GAAE,MAAW,GACnB,MAAM,CAgBR;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,CAU5E;AAeD,wBAAgB,qBAAqB,CACjC,YAAY,EAAE,MAAM,EAAE,EACtB,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,EAC7C,gBAAgB,CAAC,EAAE,MAAM,GAC1B,MAAM,EAAE,CA0BV;AAED,wBAAgB,0BAA0B,CACtC,SAAS,EAAE,MAAM,EAAE,EACnB,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,EAC7C,gBAAgB,CAAC,EAAE,MAAM,GAC1B,MAAM,CAWR"}
|
package/dist/lib/ui/utils.js
CHANGED
|
@@ -30,6 +30,22 @@ export function truncate(str, maxLen = 60) {
|
|
|
30
30
|
return str;
|
|
31
31
|
return str.slice(0, maxLen - 3) + "...";
|
|
32
32
|
}
|
|
33
|
+
export function formatProgressBar(total, start, end, width = 20) {
|
|
34
|
+
if (total <= 0)
|
|
35
|
+
return `│${" ".repeat(width)}│`;
|
|
36
|
+
const startIdx = Math.floor((start / total) * width);
|
|
37
|
+
const endIdx = Math.min(width - 1, Math.floor((end / total) * width));
|
|
38
|
+
let bar = "";
|
|
39
|
+
for (let i = 0; i < width; i++) {
|
|
40
|
+
if (i >= startIdx && i <= endIdx) {
|
|
41
|
+
bar += "░";
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
bar += "█";
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return `│${bar}│`;
|
|
48
|
+
}
|
|
33
49
|
export function shortenPath(input, workingDirectory) {
|
|
34
50
|
const inPathMatch = input.match(/^(.+) in (.+)$/);
|
|
35
51
|
if (inPathMatch) {
|
package/dist/lib/ui/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../lib/ui/utils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../lib/ui/utils.ts"],"names":[],"mappings":"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"}
|