@tarquinen/opencode-dcp 1.3.0-beta.1 → 1.3.1-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -11
- package/dist/index.js +13 -13
- package/dist/index.js.map +1 -1
- 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 +7 -7
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +47 -46
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/hooks.d.ts.map +1 -1
- package/dist/lib/hooks.js +8 -29
- 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 +67 -62
- package/dist/lib/messages/inject.js.map +1 -1
- package/dist/lib/messages/prune.js +7 -7
- package/dist/lib/messages/prune.js.map +1 -1
- package/dist/lib/messages/utils.d.ts +22 -2
- package/dist/lib/messages/utils.d.ts.map +1 -1
- package/dist/lib/messages/utils.js +46 -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/distill-tool-spec.js +48 -0
- 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 -36
- package/dist/lib/prompts/index.js.map +1 -1
- package/dist/lib/prompts/nudge.generated.d.ts +2 -0
- package/dist/lib/prompts/nudge.generated.d.ts.map +1 -0
- package/dist/lib/prompts/nudge.generated.js +17 -0
- package/dist/lib/prompts/nudge.generated.js.map +1 -0
- 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/prompts/system.generated.d.ts +2 -0
- package/dist/lib/prompts/system.generated.d.ts.map +1 -0
- package/dist/lib/prompts/system.generated.js +90 -0
- package/dist/lib/prompts/system.generated.js.map +1 -0
- package/dist/lib/state/persistence.d.ts +2 -2
- package/dist/lib/state/persistence.d.ts.map +1 -1
- package/dist/lib/state/persistence.js +1 -1
- package/dist/lib/state/persistence.js.map +1 -1
- package/dist/lib/state/state.js +3 -3
- 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 +2 -5
- package/dist/lib/state/tool-cache.js.map +1 -1
- package/dist/lib/state/types.d.ts +2 -2
- package/dist/lib/state/types.d.ts.map +1 -1
- package/dist/lib/state/utils.js +1 -1
- 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/tools/compress.d.ts +4 -0
- package/dist/lib/tools/compress.d.ts.map +1 -0
- package/dist/lib/tools/{squash.js → compress.js} +22 -22
- package/dist/lib/tools/compress.js.map +1 -0
- package/dist/lib/tools/{discard.d.ts → distill.d.ts} +2 -2
- package/dist/lib/tools/distill.d.ts.map +1 -0
- package/dist/lib/tools/{extract.js → distill.js} +12 -7
- package/dist/lib/tools/{extract.js.map → distill.js.map} +1 -1
- package/dist/lib/tools/index.d.ts +3 -3
- package/dist/lib/tools/index.d.ts.map +1 -1
- package/dist/lib/tools/index.js +3 -3
- package/dist/lib/tools/index.js.map +1 -1
- package/dist/lib/tools/prune.d.ts +4 -0
- package/dist/lib/tools/prune.d.ts.map +1 -0
- package/dist/lib/tools/{discard.js → prune.js} +6 -6
- package/dist/lib/tools/prune.js.map +1 -0
- package/dist/lib/tools/utils.d.ts +3 -3
- package/dist/lib/tools/utils.d.ts.map +1 -1
- package/dist/lib/tools/utils.js +7 -7
- package/dist/lib/tools/utils.js.map +1 -1
- package/dist/lib/ui/notification.d.ts +1 -1
- package/dist/lib/ui/notification.d.ts.map +1 -1
- package/dist/lib/ui/notification.js +7 -7
- package/dist/lib/ui/notification.js.map +1 -1
- package/package.json +6 -4
- 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 -18
- 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 +0 -23
- package/dist/lib/prompts/extract-tool-spec.js.map +0 -1
- package/dist/lib/prompts/nudge/all.d.ts +0 -2
- package/dist/lib/prompts/nudge/all.d.ts.map +0 -1
- package/dist/lib/prompts/nudge/all.js +0 -9
- package/dist/lib/prompts/nudge/all.js.map +0 -1
- package/dist/lib/prompts/nudge/discard-extract.d.ts +0 -2
- package/dist/lib/prompts/nudge/discard-extract.d.ts.map +0 -1
- package/dist/lib/prompts/nudge/discard-extract.js +0 -8
- package/dist/lib/prompts/nudge/discard-extract.js.map +0 -1
- package/dist/lib/prompts/nudge/discard-squash.d.ts +0 -2
- package/dist/lib/prompts/nudge/discard-squash.d.ts.map +0 -1
- package/dist/lib/prompts/nudge/discard-squash.js +0 -8
- package/dist/lib/prompts/nudge/discard-squash.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 -8
- package/dist/lib/prompts/nudge/discard.js.map +0 -1
- package/dist/lib/prompts/nudge/extract-squash.d.ts +0 -2
- package/dist/lib/prompts/nudge/extract-squash.d.ts.map +0 -1
- package/dist/lib/prompts/nudge/extract-squash.js +0 -8
- package/dist/lib/prompts/nudge/extract-squash.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 -8
- package/dist/lib/prompts/nudge/extract.js.map +0 -1
- package/dist/lib/prompts/nudge/squash.d.ts +0 -2
- package/dist/lib/prompts/nudge/squash.d.ts.map +0 -1
- package/dist/lib/prompts/nudge/squash.js +0 -8
- package/dist/lib/prompts/nudge/squash.js.map +0 -1
- package/dist/lib/prompts/squash-tool-spec.d.ts +0 -2
- package/dist/lib/prompts/squash-tool-spec.d.ts.map +0 -1
- package/dist/lib/prompts/squash-tool-spec.js +0 -33
- package/dist/lib/prompts/squash-tool-spec.js.map +0 -1
- package/dist/lib/prompts/system/all.d.ts +0 -2
- package/dist/lib/prompts/system/all.d.ts.map +0 -1
- package/dist/lib/prompts/system/all.js +0 -26
- package/dist/lib/prompts/system/all.js.map +0 -1
- package/dist/lib/prompts/system/discard-extract.d.ts +0 -2
- package/dist/lib/prompts/system/discard-extract.d.ts.map +0 -1
- package/dist/lib/prompts/system/discard-extract.js +0 -26
- package/dist/lib/prompts/system/discard-extract.js.map +0 -1
- package/dist/lib/prompts/system/discard-squash.d.ts +0 -2
- package/dist/lib/prompts/system/discard-squash.d.ts.map +0 -1
- package/dist/lib/prompts/system/discard-squash.js +0 -25
- package/dist/lib/prompts/system/discard-squash.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 -27
- package/dist/lib/prompts/system/discard.js.map +0 -1
- package/dist/lib/prompts/system/extract-squash.d.ts +0 -2
- package/dist/lib/prompts/system/extract-squash.d.ts.map +0 -1
- package/dist/lib/prompts/system/extract-squash.js +0 -25
- package/dist/lib/prompts/system/extract-squash.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 -27
- package/dist/lib/prompts/system/extract.js.map +0 -1
- package/dist/lib/prompts/system/squash.d.ts +0 -2
- package/dist/lib/prompts/system/squash.d.ts.map +0 -1
- package/dist/lib/prompts/system/squash.js +0 -27
- package/dist/lib/prompts/system/squash.js.map +0 -1
- package/dist/lib/tools/discard.d.ts.map +0 -1
- package/dist/lib/tools/discard.js.map +0 -1
- package/dist/lib/tools/extract.d.ts +0 -4
- package/dist/lib/tools/extract.d.ts.map +0 -1
- package/dist/lib/tools/squash.d.ts +0 -4
- package/dist/lib/tools/squash.d.ts.map +0 -1
- package/dist/lib/tools/squash.js.map +0 -1
package/dist/lib/hooks.js
CHANGED
|
@@ -2,7 +2,7 @@ import { syncToolCache } from "./state/tool-cache";
|
|
|
2
2
|
import { deduplicate, supersedeWrites, purgeErrors } from "./strategies";
|
|
3
3
|
import { prune, insertPruneToolContext } from "./messages";
|
|
4
4
|
import { checkSession } from "./state";
|
|
5
|
-
import {
|
|
5
|
+
import { renderSystemPrompt } from "./prompts";
|
|
6
6
|
import { handleStatsCommand } from "./commands/stats";
|
|
7
7
|
import { handleContextCommand } from "./commands/context";
|
|
8
8
|
import { handleHelpCommand } from "./commands/help";
|
|
@@ -22,36 +22,15 @@ export function createSystemPromptHandler(state, logger, config) {
|
|
|
22
22
|
logger.info("Skipping DCP system prompt injection for internal agent");
|
|
23
23
|
return;
|
|
24
24
|
}
|
|
25
|
-
const
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
}
|
|
32
|
-
else if (discardEnabled && extractEnabled) {
|
|
33
|
-
promptName = "system/system-prompt-discard-extract";
|
|
34
|
-
}
|
|
35
|
-
else if (discardEnabled && squashEnabled) {
|
|
36
|
-
promptName = "system/system-prompt-discard-squash";
|
|
37
|
-
}
|
|
38
|
-
else if (extractEnabled && squashEnabled) {
|
|
39
|
-
promptName = "system/system-prompt-extract-squash";
|
|
40
|
-
}
|
|
41
|
-
else if (discardEnabled) {
|
|
42
|
-
promptName = "system/system-prompt-discard";
|
|
43
|
-
}
|
|
44
|
-
else if (extractEnabled) {
|
|
45
|
-
promptName = "system/system-prompt-extract";
|
|
46
|
-
}
|
|
47
|
-
else if (squashEnabled) {
|
|
48
|
-
promptName = "system/system-prompt-squash";
|
|
49
|
-
}
|
|
50
|
-
else {
|
|
25
|
+
const flags = {
|
|
26
|
+
prune: config.tools.prune.enabled,
|
|
27
|
+
distill: config.tools.distill.enabled,
|
|
28
|
+
compress: config.tools.compress.enabled,
|
|
29
|
+
};
|
|
30
|
+
if (!flags.prune && !flags.distill && !flags.compress) {
|
|
51
31
|
return;
|
|
52
32
|
}
|
|
53
|
-
|
|
54
|
-
output.system.push(syntheticPrompt);
|
|
33
|
+
output.system.push(renderSystemPrompt(flags));
|
|
55
34
|
};
|
|
56
35
|
}
|
|
57
36
|
export function createChatMessageTransformHandler(client, state, logger, config) {
|
package/dist/lib/hooks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../lib/hooks.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AACxE,OAAO,EAAE,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../lib/hooks.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
import type { SessionState, WithParts } from "../state";
|
|
2
2
|
import type { Logger } from "../logger";
|
|
3
3
|
import type { PluginConfig } from "../config";
|
|
4
|
+
export declare const wrapPrunableTools: (content: string) => string;
|
|
5
|
+
export declare const wrapCompressContext: (messageCount: number) => string;
|
|
6
|
+
export declare const wrapCooldownMessage: (flags: {
|
|
7
|
+
prune: boolean;
|
|
8
|
+
distill: boolean;
|
|
9
|
+
compress: boolean;
|
|
10
|
+
}) => string;
|
|
4
11
|
export declare const insertPruneToolContext: (state: SessionState, config: PluginConfig, logger: Logger, messages: WithParts[]) => void;
|
|
5
12
|
//# sourceMappingURL=inject.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inject.d.ts","sourceRoot":"","sources":["../../../lib/messages/inject.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AACvD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"inject.d.ts","sourceRoot":"","sources":["../../../lib/messages/inject.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AACvD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAe7C,eAAO,MAAM,iBAAiB,GAAI,SAAS,MAAM,KAAG,MAGlC,CAAA;AAElB,eAAO,MAAM,mBAAmB,GAAI,cAAc,MAAM,KAAG,MAIvC,CAAA;AAEpB,eAAO,MAAM,mBAAmB,GAAI,OAAO;IACvC,KAAK,EAAE,OAAO,CAAA;IACd,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,EAAE,OAAO,CAAA;CACpB,KAAG,MAmBH,CAAA;AA8ED,eAAO,MAAM,sBAAsB,GAC/B,OAAO,YAAY,EACnB,QAAQ,YAAY,EACpB,QAAQ,MAAM,EACd,UAAU,SAAS,EAAE,KACtB,IAsFF,CAAA"}
|
|
@@ -1,49 +1,24 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { extractParameterKey, buildToolIdList, createSyntheticToolPart,
|
|
1
|
+
import { renderNudge } from "../prompts";
|
|
2
|
+
import { extractParameterKey, buildToolIdList, createSyntheticUserMessage, createSyntheticAssistantMessage, createSyntheticToolPart, isDeepSeekOrKimi, isIgnoredUserMessage, } from "./utils";
|
|
3
3
|
import { getFilePathFromParameters, isProtectedFilePath } from "../protected-file-patterns";
|
|
4
4
|
import { getLastUserMessage, isMessageCompacted } from "../shared-utils";
|
|
5
|
-
const
|
|
6
|
-
const discardEnabled = config.tools.discard.enabled;
|
|
7
|
-
const extractEnabled = config.tools.extract.enabled;
|
|
8
|
-
const squashEnabled = config.tools.squash.enabled;
|
|
9
|
-
if (discardEnabled && extractEnabled && squashEnabled) {
|
|
10
|
-
return loadPrompt(`nudge/nudge-all`);
|
|
11
|
-
}
|
|
12
|
-
else if (discardEnabled && extractEnabled) {
|
|
13
|
-
return loadPrompt(`nudge/nudge-discard-extract`);
|
|
14
|
-
}
|
|
15
|
-
else if (discardEnabled && squashEnabled) {
|
|
16
|
-
return loadPrompt(`nudge/nudge-discard-squash`);
|
|
17
|
-
}
|
|
18
|
-
else if (extractEnabled && squashEnabled) {
|
|
19
|
-
return loadPrompt(`nudge/nudge-extract-squash`);
|
|
20
|
-
}
|
|
21
|
-
else if (discardEnabled) {
|
|
22
|
-
return loadPrompt(`nudge/nudge-discard`);
|
|
23
|
-
}
|
|
24
|
-
else if (extractEnabled) {
|
|
25
|
-
return loadPrompt(`nudge/nudge-extract`);
|
|
26
|
-
}
|
|
27
|
-
else if (squashEnabled) {
|
|
28
|
-
return loadPrompt(`nudge/nudge-squash`);
|
|
29
|
-
}
|
|
30
|
-
return "";
|
|
31
|
-
};
|
|
32
|
-
const wrapPrunableTools = (content) => `<prunable-tools>
|
|
5
|
+
export const wrapPrunableTools = (content) => `<prunable-tools>
|
|
33
6
|
The following tools have been invoked and are available for pruning. This list does not mandate immediate action. Consider your current goals and the resources you need before pruning valuable tool inputs or outputs. Consolidate your prunes for efficiency; it is rarely worth pruning a single tiny tool output. Keep the context free of noise.
|
|
34
7
|
${content}
|
|
35
8
|
</prunable-tools>`;
|
|
36
|
-
const
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
9
|
+
export const wrapCompressContext = (messageCount) => `<compress-context>
|
|
10
|
+
Compress available. Conversation: ${messageCount} messages.
|
|
11
|
+
Compress collapses completed task sequences or exploration phases into summaries.
|
|
12
|
+
Uses text boundaries [startString, endString, topic, summary].
|
|
13
|
+
</compress-context>`;
|
|
14
|
+
export const wrapCooldownMessage = (flags) => {
|
|
40
15
|
const enabledTools = [];
|
|
41
|
-
if (
|
|
42
|
-
enabledTools.push("
|
|
43
|
-
if (
|
|
44
|
-
enabledTools.push("
|
|
45
|
-
if (
|
|
46
|
-
enabledTools.push("
|
|
16
|
+
if (flags.prune)
|
|
17
|
+
enabledTools.push("prune");
|
|
18
|
+
if (flags.distill)
|
|
19
|
+
enabledTools.push("distill");
|
|
20
|
+
if (flags.compress)
|
|
21
|
+
enabledTools.push("compress");
|
|
47
22
|
let toolName;
|
|
48
23
|
if (enabledTools.length === 0) {
|
|
49
24
|
toolName = "pruning tools";
|
|
@@ -56,16 +31,30 @@ const getCooldownMessage = (config) => {
|
|
|
56
31
|
toolName = `${enabledTools.join(", ")} or ${last} tools`;
|
|
57
32
|
}
|
|
58
33
|
return `<context-info>
|
|
59
|
-
Context management was just performed. Do
|
|
34
|
+
Context management was just performed. Do NOT use the ${toolName} again. A fresh list will be available after your next tool use.
|
|
60
35
|
</context-info>`;
|
|
61
36
|
};
|
|
62
|
-
const
|
|
37
|
+
const getNudgeString = (config) => {
|
|
38
|
+
const flags = {
|
|
39
|
+
prune: config.tools.prune.enabled,
|
|
40
|
+
distill: config.tools.distill.enabled,
|
|
41
|
+
compress: config.tools.compress.enabled,
|
|
42
|
+
};
|
|
43
|
+
if (!flags.prune && !flags.distill && !flags.compress) {
|
|
44
|
+
return "";
|
|
45
|
+
}
|
|
46
|
+
return renderNudge(flags);
|
|
47
|
+
};
|
|
48
|
+
const getCooldownMessage = (config) => {
|
|
49
|
+
return wrapCooldownMessage({
|
|
50
|
+
prune: config.tools.prune.enabled,
|
|
51
|
+
distill: config.tools.distill.enabled,
|
|
52
|
+
compress: config.tools.compress.enabled,
|
|
53
|
+
});
|
|
54
|
+
};
|
|
55
|
+
const buildCompressContext = (state, messages) => {
|
|
63
56
|
const messageCount = messages.filter((msg) => !isMessageCompacted(state, msg)).length;
|
|
64
|
-
return
|
|
65
|
-
Squash available. Conversation: ${messageCount} messages.
|
|
66
|
-
Squash collapses completed task sequences or exploration phases into summaries.
|
|
67
|
-
Uses text boundaries [startString, endString, topic, summary].
|
|
68
|
-
</squash-context>`;
|
|
57
|
+
return wrapCompressContext(messageCount);
|
|
69
58
|
};
|
|
70
59
|
const buildPrunableToolsList = (state, config, logger, messages) => {
|
|
71
60
|
const lines = [];
|
|
@@ -103,32 +92,32 @@ const buildPrunableToolsList = (state, config, logger, messages) => {
|
|
|
103
92
|
return wrapPrunableTools(lines.join("\n"));
|
|
104
93
|
};
|
|
105
94
|
export const insertPruneToolContext = (state, config, logger, messages) => {
|
|
106
|
-
const
|
|
107
|
-
const
|
|
108
|
-
const
|
|
109
|
-
if (!
|
|
95
|
+
const pruneEnabled = config.tools.prune.enabled;
|
|
96
|
+
const distillEnabled = config.tools.distill.enabled;
|
|
97
|
+
const compressEnabled = config.tools.compress.enabled;
|
|
98
|
+
if (!pruneEnabled && !distillEnabled && !compressEnabled) {
|
|
110
99
|
return;
|
|
111
100
|
}
|
|
112
|
-
const
|
|
101
|
+
const pruneOrDistillEnabled = pruneEnabled || distillEnabled;
|
|
113
102
|
const contentParts = [];
|
|
114
103
|
if (state.lastToolPrune) {
|
|
115
104
|
logger.debug("Last tool was prune - injecting cooldown message");
|
|
116
105
|
contentParts.push(getCooldownMessage(config));
|
|
117
106
|
}
|
|
118
107
|
else {
|
|
119
|
-
// Inject <prunable-tools> only when
|
|
120
|
-
if (
|
|
108
|
+
// Inject <prunable-tools> only when prune or distill is enabled
|
|
109
|
+
if (pruneOrDistillEnabled) {
|
|
121
110
|
const prunableToolsList = buildPrunableToolsList(state, config, logger, messages);
|
|
122
111
|
if (prunableToolsList) {
|
|
123
112
|
// logger.debug("prunable-tools: \n" + prunableToolsList)
|
|
124
113
|
contentParts.push(prunableToolsList);
|
|
125
114
|
}
|
|
126
115
|
}
|
|
127
|
-
// Inject <
|
|
128
|
-
if (
|
|
129
|
-
const
|
|
130
|
-
// logger.debug("
|
|
131
|
-
contentParts.push(
|
|
116
|
+
// Inject <compress-context> always when compress is enabled (every turn)
|
|
117
|
+
if (compressEnabled) {
|
|
118
|
+
const compressContext = buildCompressContext(state, messages);
|
|
119
|
+
// logger.debug("compress-context: \n" + compressContext)
|
|
120
|
+
contentParts.push(compressContext);
|
|
132
121
|
}
|
|
133
122
|
// Add nudge if threshold reached
|
|
134
123
|
if (config.tools.settings.nudgeEnabled &&
|
|
@@ -149,13 +138,29 @@ export const insertPruneToolContext = (state, config, logger, messages) => {
|
|
|
149
138
|
const variant = state.variant ?? userInfo.variant;
|
|
150
139
|
// Find the last message that isn't an ignored user message
|
|
151
140
|
const lastNonIgnoredMessage = messages.findLast((msg) => !(msg.info.role === "user" && isIgnoredUserMessage(msg)));
|
|
141
|
+
// It's not safe to inject assistant role messages following a user message as models such
|
|
142
|
+
// as Claude expect the assistant "turn" to start with reasoning parts. Reasoning parts in many
|
|
143
|
+
// cases also cannot be faked as they may be encrypted by the model.
|
|
144
|
+
// Gemini only accepts synth reasoning text if it is "skip_thought_signature_validator"
|
|
152
145
|
if (!lastNonIgnoredMessage || lastNonIgnoredMessage.info.role === "user") {
|
|
153
146
|
messages.push(createSyntheticUserMessage(lastUserMessage, combinedContent, variant));
|
|
154
147
|
}
|
|
155
148
|
else {
|
|
156
|
-
//
|
|
157
|
-
|
|
158
|
-
|
|
149
|
+
// For DeepSeek and Kimi, append tool part to existing message, for some reason they don't
|
|
150
|
+
// output reasoning parts following an assistant injection containing either just text part,
|
|
151
|
+
// or text part with synth reasoning, and there's no docs on how their reasoning encryption
|
|
152
|
+
// works as far as I can find. IDK what's going on here, seems like the only possible ways
|
|
153
|
+
// to inject for them is a user role message, or a tool part apeended to last assistant message.
|
|
154
|
+
const providerID = userInfo.model?.providerID || "";
|
|
155
|
+
const modelID = userInfo.model?.modelID || "";
|
|
156
|
+
if (isDeepSeekOrKimi(providerID, modelID)) {
|
|
157
|
+
const toolPart = createSyntheticToolPart(lastNonIgnoredMessage, combinedContent);
|
|
158
|
+
lastNonIgnoredMessage.parts.push(toolPart);
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
// Create a new assistant message with just a text part
|
|
162
|
+
messages.push(createSyntheticAssistantMessage(lastUserMessage, combinedContent, variant));
|
|
163
|
+
}
|
|
159
164
|
}
|
|
160
165
|
};
|
|
161
166
|
//# sourceMappingURL=inject.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inject.js","sourceRoot":"","sources":["../../../lib/messages/inject.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"inject.js","sourceRoot":"","sources":["../../../lib/messages/inject.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { isMessageCompacted, getLastUserMessage } from "../shared-utils";
|
|
2
|
-
import { createSyntheticUserMessage,
|
|
2
|
+
import { createSyntheticUserMessage, COMPRESS_SUMMARY_PREFIX } from "./utils";
|
|
3
3
|
const PRUNED_TOOL_OUTPUT_REPLACEMENT = "[Output removed to save context - information superseded or no longer needed]";
|
|
4
4
|
const PRUNED_TOOL_ERROR_INPUT_REPLACEMENT = "[input removed due to failed tool call]";
|
|
5
5
|
const PRUNED_QUESTION_INPUT_REPLACEMENT = "[questions removed - see output for user's answers]";
|
|
6
6
|
export const prune = (state, logger, config, messages) => {
|
|
7
|
-
|
|
7
|
+
filterCompressedRanges(state, logger, messages);
|
|
8
8
|
pruneToolOutputs(state, logger, messages);
|
|
9
9
|
pruneToolInputs(state, logger, messages);
|
|
10
10
|
pruneToolErrors(state, logger, messages);
|
|
@@ -85,7 +85,7 @@ const pruneToolErrors = (state, logger, messages) => {
|
|
|
85
85
|
}
|
|
86
86
|
}
|
|
87
87
|
};
|
|
88
|
-
const
|
|
88
|
+
const filterCompressedRanges = (state, logger, messages) => {
|
|
89
89
|
if (!state.prune.messageIds?.length) {
|
|
90
90
|
return;
|
|
91
91
|
}
|
|
@@ -93,22 +93,22 @@ const filterSquashedRanges = (state, logger, messages) => {
|
|
|
93
93
|
for (const msg of messages) {
|
|
94
94
|
const msgId = msg.info.id;
|
|
95
95
|
// Check if there's a summary to inject at this anchor point
|
|
96
|
-
const summary = state.
|
|
96
|
+
const summary = state.compressSummaries?.find((s) => s.anchorMessageId === msgId);
|
|
97
97
|
if (summary) {
|
|
98
98
|
// Find user message for variant and as base for synthetic message
|
|
99
99
|
const msgIndex = messages.indexOf(msg);
|
|
100
100
|
const userMessage = getLastUserMessage(messages, msgIndex);
|
|
101
101
|
if (userMessage) {
|
|
102
102
|
const userInfo = userMessage.info;
|
|
103
|
-
const summaryContent =
|
|
103
|
+
const summaryContent = COMPRESS_SUMMARY_PREFIX + summary.summary;
|
|
104
104
|
result.push(createSyntheticUserMessage(userMessage, summaryContent, userInfo.variant));
|
|
105
|
-
logger.info("Injected
|
|
105
|
+
logger.info("Injected compress summary", {
|
|
106
106
|
anchorMessageId: msgId,
|
|
107
107
|
summaryLength: summary.summary.length,
|
|
108
108
|
});
|
|
109
109
|
}
|
|
110
110
|
else {
|
|
111
|
-
logger.warn("No user message found for
|
|
111
|
+
logger.warn("No user message found for compress summary", {
|
|
112
112
|
anchorMessageId: msgId,
|
|
113
113
|
});
|
|
114
114
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prune.js","sourceRoot":"","sources":["../../../lib/messages/prune.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AACxE,OAAO,EAAE,0BAA0B,EAAE,
|
|
1
|
+
{"version":3,"file":"prune.js","sourceRoot":"","sources":["../../../lib/messages/prune.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,28 @@
|
|
|
1
1
|
import { Logger } from "../logger";
|
|
2
2
|
import type { SessionState, WithParts } from "../state";
|
|
3
|
-
export declare const
|
|
3
|
+
export declare const COMPRESS_SUMMARY_PREFIX = "[Compressed conversation block]\n\n";
|
|
4
|
+
export declare const isDeepSeekOrKimi: (providerID: string, modelID: string) => boolean;
|
|
4
5
|
export declare const createSyntheticUserMessage: (baseMessage: WithParts, content: string, variant?: string) => WithParts;
|
|
5
|
-
export declare const
|
|
6
|
+
export declare const createSyntheticAssistantMessage: (baseMessage: WithParts, content: string, variant?: string) => WithParts;
|
|
7
|
+
export declare const createSyntheticToolPart: (baseMessage: WithParts, content: string) => {
|
|
8
|
+
id: string;
|
|
9
|
+
sessionID: string;
|
|
10
|
+
messageID: string;
|
|
11
|
+
type: "tool";
|
|
12
|
+
callID: string;
|
|
13
|
+
tool: string;
|
|
14
|
+
state: {
|
|
15
|
+
status: "completed";
|
|
16
|
+
input: {};
|
|
17
|
+
output: string;
|
|
18
|
+
title: string;
|
|
19
|
+
metadata: {};
|
|
20
|
+
time: {
|
|
21
|
+
start: number;
|
|
22
|
+
end: number;
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
};
|
|
6
26
|
/**
|
|
7
27
|
* Extracts a human-readable key from tool metadata for display purposes.
|
|
8
28
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../lib/messages/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAElC,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAGvD,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../lib/messages/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAElC,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAGvD,eAAO,MAAM,uBAAuB,wCAAwC,CAAA;AAI5E,eAAO,MAAM,gBAAgB,GAAI,YAAY,MAAM,EAAE,SAAS,MAAM,KAAG,OAStE,CAAA;AAED,eAAO,MAAM,0BAA0B,GACnC,aAAa,SAAS,EACtB,SAAS,MAAM,EACf,UAAU,MAAM,KACjB,SA2BF,CAAA;AAED,eAAO,MAAM,+BAA+B,GACxC,aAAa,SAAS,EACtB,SAAS,MAAM,EACf,UAAU,MAAM,KACjB,SAoCF,CAAA;AAED,eAAO,MAAM,uBAAuB,GAAI,aAAa,SAAS,EAAE,SAAS,MAAM;;;;;;;;;;;;;;;;;;CAuB9E,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAAI,MAAM,MAAM,EAAE,YAAY,GAAG,KAAG,MAkHnE,CAAA;AAED,wBAAgB,eAAe,CAC3B,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,SAAS,EAAE,EACrB,MAAM,EAAE,MAAM,GACf,MAAM,EAAE,CAgBV;AAED,eAAO,MAAM,oBAAoB,GAAI,SAAS,SAAS,KAAG,OAazD,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAI,UAAU,SAAS,EAAE,EAAE,WAAW,MAAM,KAAG,MAE3E,CAAA"}
|
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
import { ulid } from "ulid";
|
|
2
2
|
import { isMessageCompacted } from "../shared-utils";
|
|
3
|
-
export const
|
|
3
|
+
export const COMPRESS_SUMMARY_PREFIX = "[Compressed conversation block]\n\n";
|
|
4
4
|
const generateUniqueId = (prefix) => `${prefix}_${ulid()}`;
|
|
5
|
-
const
|
|
5
|
+
export const isDeepSeekOrKimi = (providerID, modelID) => {
|
|
6
|
+
const lowerProviderID = providerID.toLowerCase();
|
|
6
7
|
const lowerModelID = modelID.toLowerCase();
|
|
7
|
-
return
|
|
8
|
+
return (lowerProviderID.includes("deepseek") ||
|
|
9
|
+
lowerProviderID.includes("kimi") ||
|
|
10
|
+
lowerModelID.includes("deepseek") ||
|
|
11
|
+
lowerModelID.includes("kimi"));
|
|
8
12
|
};
|
|
9
13
|
export const createSyntheticUserMessage = (baseMessage, content, variant) => {
|
|
10
14
|
const userInfo = baseMessage.info;
|
|
@@ -32,19 +36,50 @@ export const createSyntheticUserMessage = (baseMessage, content, variant) => {
|
|
|
32
36
|
],
|
|
33
37
|
};
|
|
34
38
|
};
|
|
35
|
-
export const
|
|
39
|
+
export const createSyntheticAssistantMessage = (baseMessage, content, variant) => {
|
|
40
|
+
const userInfo = baseMessage.info;
|
|
41
|
+
const now = Date.now();
|
|
42
|
+
const messageId = generateUniqueId("msg");
|
|
43
|
+
const partId = generateUniqueId("prt");
|
|
44
|
+
return {
|
|
45
|
+
info: {
|
|
46
|
+
id: messageId,
|
|
47
|
+
sessionID: userInfo.sessionID,
|
|
48
|
+
role: "assistant",
|
|
49
|
+
agent: userInfo.agent || "code",
|
|
50
|
+
parentID: userInfo.id,
|
|
51
|
+
modelID: userInfo.model.modelID,
|
|
52
|
+
providerID: userInfo.model.providerID,
|
|
53
|
+
mode: "default",
|
|
54
|
+
path: {
|
|
55
|
+
cwd: "/",
|
|
56
|
+
root: "/",
|
|
57
|
+
},
|
|
58
|
+
time: { created: now, completed: now },
|
|
59
|
+
cost: 0,
|
|
60
|
+
tokens: { input: 0, output: 0, reasoning: 0, cache: { read: 0, write: 0 } },
|
|
61
|
+
...(variant !== undefined && { variant }),
|
|
62
|
+
},
|
|
63
|
+
parts: [
|
|
64
|
+
{
|
|
65
|
+
id: partId,
|
|
66
|
+
sessionID: userInfo.sessionID,
|
|
67
|
+
messageID: messageId,
|
|
68
|
+
type: "text",
|
|
69
|
+
text: content,
|
|
70
|
+
},
|
|
71
|
+
],
|
|
72
|
+
};
|
|
73
|
+
};
|
|
74
|
+
export const createSyntheticToolPart = (baseMessage, content) => {
|
|
75
|
+
const userInfo = baseMessage.info;
|
|
36
76
|
const now = Date.now();
|
|
37
77
|
const partId = generateUniqueId("prt");
|
|
38
78
|
const callId = generateUniqueId("call");
|
|
39
|
-
const modelID = assistantMessage.info.modelID || "";
|
|
40
|
-
// For Gemini models, add thoughtSignature bypass to avoid validation errors
|
|
41
|
-
const toolPartMetadata = isGeminiModel(modelID)
|
|
42
|
-
? { google: { thoughtSignature: "skip_thought_signature_validator" } }
|
|
43
|
-
: undefined;
|
|
44
79
|
return {
|
|
45
80
|
id: partId,
|
|
46
|
-
sessionID:
|
|
47
|
-
messageID:
|
|
81
|
+
sessionID: userInfo.sessionID,
|
|
82
|
+
messageID: baseMessage.info.id,
|
|
48
83
|
type: "tool",
|
|
49
84
|
callID: callId,
|
|
50
85
|
tool: "context_info",
|
|
@@ -56,7 +91,6 @@ export const createSyntheticToolPart = (assistantMessage, content) => {
|
|
|
56
91
|
metadata: {},
|
|
57
92
|
time: { start: now, end: now },
|
|
58
93
|
},
|
|
59
|
-
...(toolPartMetadata && { metadata: toolPartMetadata }),
|
|
60
94
|
};
|
|
61
95
|
};
|
|
62
96
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../lib/messages/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAIpD,MAAM,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../lib/messages/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export declare const COMPRESS_TOOL_SPEC = "Collapses a contiguous range of conversation into a single summary.\n\n## When to Use This Tool\n\nUse `compress` when you want to condense an entire sequence of work into a brief summary:\n\n- **Phase Completion:** You completed a phase (research, tool calls, implementation) and want to collapse the entire sequence into a summary.\n- **Exploration Done:** You explored multiple files or ran multiple commands and only need a summary of what you learned.\n- **Failed Attempts:** You tried several unsuccessful approaches and want to condense them into a brief note.\n- **Verbose Output:** A section of conversation has grown large but can be summarized without losing critical details.\n\n## When NOT to Use This Tool\n\n- **If you need specific details:** If you'll need exact code, file contents, or error messages from the range, keep them.\n- **For individual tool outputs:** Use `prune` or `distill` for single tool outputs. Compress targets conversation ranges.\n- **If it's recent content:** You may still need recent work for the current phase.\n\n## How It Works\n\n1. `startString` \u2014 A unique text string that marks the start of the range to compress\n2. `endString` \u2014 A unique text string that marks the end of the range to compress\n3. `topic` \u2014 A short label (3-5 words) describing the compressed content\n4. `summary` \u2014 The replacement text that will be inserted\n\nEverything between startString and endString (inclusive) is removed and replaced with your summary.\n\n**Important:** The compress will FAIL if `startString` or `endString` is not found in the conversation. The compress will also FAIL if either string is found multiple times. Provide a larger string with more surrounding context to uniquely identify the intended match.\n\n## Best Practices\n- **Choose unique strings:** Pick text that appears only once in the conversation.\n- **Write concise topics:** Examples: \"Auth System Exploration\", \"Token Logic Refactor\"\n- **Write comprehensive summaries:** Include key information like file names, function signatures, and important findings.\n- **Timing:** Best used after finishing a work phase, not during active exploration.\n\n## Format\n\n- `input`: Array with four elements: [startString, endString, topic, summary]\n\n## Example\n\n<example_compress>\nConversation: [Asked about auth] -> [Read 5 files] -> [Analyzed patterns] -> [Found \"JWT tokens with 24h expiry\"]\n\n[Uses compress with:\n input: [\n \"Asked about authentication\",\n \"JWT tokens with 24h expiry\",\n \"Auth System Exploration\",\n \"Auth: JWT 24h expiry, bcrypt passwords, refresh rotation. Files: auth.ts, tokens.ts, middleware/auth.ts\"\n ]\n]\n</example_compress>\n\n<example_keep>\nAssistant: [Just finished reading auth.ts]\nI've read the auth file and now need to make edits based on it. I'm keeping this in context rather than compressing.\n</example_keep>";
|
|
2
|
+
//# sourceMappingURL=compress-tool-spec.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compress-tool-spec.d.ts","sourceRoot":"","sources":["../../../lib/prompts/compress-tool-spec.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,o2FAwDf,CAAA"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
export const COMPRESS_TOOL_SPEC = `Collapses a contiguous range of conversation into a single summary.
|
|
2
|
+
|
|
3
|
+
## When to Use This Tool
|
|
4
|
+
|
|
5
|
+
Use \`compress\` when you want to condense an entire sequence of work into a brief summary:
|
|
6
|
+
|
|
7
|
+
- **Phase Completion:** You completed a phase (research, tool calls, implementation) and want to collapse the entire sequence into a summary.
|
|
8
|
+
- **Exploration Done:** You explored multiple files or ran multiple commands and only need a summary of what you learned.
|
|
9
|
+
- **Failed Attempts:** You tried several unsuccessful approaches and want to condense them into a brief note.
|
|
10
|
+
- **Verbose Output:** A section of conversation has grown large but can be summarized without losing critical details.
|
|
11
|
+
|
|
12
|
+
## When NOT to Use This Tool
|
|
13
|
+
|
|
14
|
+
- **If you need specific details:** If you'll need exact code, file contents, or error messages from the range, keep them.
|
|
15
|
+
- **For individual tool outputs:** Use \`prune\` or \`distill\` for single tool outputs. Compress targets conversation ranges.
|
|
16
|
+
- **If it's recent content:** You may still need recent work for the current phase.
|
|
17
|
+
|
|
18
|
+
## How It Works
|
|
19
|
+
|
|
20
|
+
1. \`startString\` — A unique text string that marks the start of the range to compress
|
|
21
|
+
2. \`endString\` — A unique text string that marks the end of the range to compress
|
|
22
|
+
3. \`topic\` — A short label (3-5 words) describing the compressed content
|
|
23
|
+
4. \`summary\` — The replacement text that will be inserted
|
|
24
|
+
|
|
25
|
+
Everything between startString and endString (inclusive) is removed and replaced with your summary.
|
|
26
|
+
|
|
27
|
+
**Important:** The compress will FAIL if \`startString\` or \`endString\` is not found in the conversation. The compress will also FAIL if either string is found multiple times. Provide a larger string with more surrounding context to uniquely identify the intended match.
|
|
28
|
+
|
|
29
|
+
## Best Practices
|
|
30
|
+
- **Choose unique strings:** Pick text that appears only once in the conversation.
|
|
31
|
+
- **Write concise topics:** Examples: "Auth System Exploration", "Token Logic Refactor"
|
|
32
|
+
- **Write comprehensive summaries:** Include key information like file names, function signatures, and important findings.
|
|
33
|
+
- **Timing:** Best used after finishing a work phase, not during active exploration.
|
|
34
|
+
|
|
35
|
+
## Format
|
|
36
|
+
|
|
37
|
+
- \`input\`: Array with four elements: [startString, endString, topic, summary]
|
|
38
|
+
|
|
39
|
+
## Example
|
|
40
|
+
|
|
41
|
+
<example_compress>
|
|
42
|
+
Conversation: [Asked about auth] -> [Read 5 files] -> [Analyzed patterns] -> [Found "JWT tokens with 24h expiry"]
|
|
43
|
+
|
|
44
|
+
[Uses compress with:
|
|
45
|
+
input: [
|
|
46
|
+
"Asked about authentication",
|
|
47
|
+
"JWT tokens with 24h expiry",
|
|
48
|
+
"Auth System Exploration",
|
|
49
|
+
"Auth: JWT 24h expiry, bcrypt passwords, refresh rotation. Files: auth.ts, tokens.ts, middleware/auth.ts"
|
|
50
|
+
]
|
|
51
|
+
]
|
|
52
|
+
</example_compress>
|
|
53
|
+
|
|
54
|
+
<example_keep>
|
|
55
|
+
Assistant: [Just finished reading auth.ts]
|
|
56
|
+
I've read the auth file and now need to make edits based on it. I'm keeping this in context rather than compressing.
|
|
57
|
+
</example_keep>`;
|
|
58
|
+
//# sourceMappingURL=compress-tool-spec.js.map
|