@tarquinen/opencode-dcp 0.3.29 → 0.3.31
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 +10 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -6
- package/dist/index.js.map +1 -1
- package/dist/lib/api-formats/synth-instruction.d.ts.map +1 -0
- package/dist/lib/api-formats/synth-instruction.js.map +1 -0
- package/dist/lib/config.js +7 -7
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/core/janitor.d.ts +47 -0
- package/dist/lib/core/janitor.d.ts.map +1 -0
- package/dist/lib/core/janitor.js +301 -0
- package/dist/lib/core/janitor.js.map +1 -0
- package/dist/lib/core/prompt.d.ts.map +1 -0
- package/dist/lib/{prompt.js → core/prompt.js} +1 -1
- package/dist/lib/core/prompt.js.map +1 -0
- package/dist/lib/core/strategies/deduplication.d.ts +7 -0
- package/dist/lib/core/strategies/deduplication.d.ts.map +1 -0
- package/dist/lib/core/strategies/deduplication.js +76 -0
- package/dist/lib/core/strategies/deduplication.js.map +1 -0
- package/dist/lib/core/strategies/index.d.ts +21 -0
- package/dist/lib/core/strategies/index.d.ts.map +1 -0
- package/dist/lib/core/strategies/index.js +48 -0
- package/dist/lib/core/strategies/index.js.map +1 -0
- package/dist/lib/core/strategies/types.d.ts +35 -0
- package/dist/lib/core/strategies/types.d.ts.map +1 -0
- package/dist/lib/core/strategies/types.js +6 -0
- package/dist/lib/core/strategies/types.js.map +1 -0
- package/dist/lib/fetch-wrapper/gc-tracker.d.ts +4 -0
- package/dist/lib/fetch-wrapper/gc-tracker.d.ts.map +1 -0
- package/dist/lib/fetch-wrapper/gc-tracker.js +61 -0
- package/dist/lib/fetch-wrapper/gc-tracker.js.map +1 -0
- package/dist/lib/fetch-wrapper/gemini.js +1 -1
- package/dist/lib/fetch-wrapper/gemini.js.map +1 -1
- package/dist/lib/fetch-wrapper/index.d.ts +1 -1
- package/dist/lib/fetch-wrapper/index.d.ts.map +1 -1
- package/dist/lib/fetch-wrapper/index.js +23 -1
- package/dist/lib/fetch-wrapper/index.js.map +1 -1
- package/dist/lib/fetch-wrapper/openai-chat.js +2 -2
- package/dist/lib/fetch-wrapper/openai-chat.js.map +1 -1
- package/dist/lib/fetch-wrapper/openai-responses.js +2 -2
- package/dist/lib/fetch-wrapper/openai-responses.js.map +1 -1
- package/dist/lib/fetch-wrapper/types.d.ts +1 -1
- package/dist/lib/fetch-wrapper/types.d.ts.map +1 -1
- package/dist/lib/hooks.d.ts +3 -3
- package/dist/lib/hooks.d.ts.map +1 -1
- package/dist/lib/hooks.js +4 -3
- package/dist/lib/hooks.js.map +1 -1
- package/dist/lib/pruning-tool.d.ts +3 -3
- package/dist/lib/pruning-tool.d.ts.map +1 -1
- package/dist/lib/pruning-tool.js +7 -5
- package/dist/lib/pruning-tool.js.map +1 -1
- package/dist/lib/state/index.d.ts +25 -0
- package/dist/lib/state/index.d.ts.map +1 -0
- package/dist/lib/{state.js → state/index.js} +10 -6
- package/dist/lib/state/index.js.map +1 -0
- package/dist/lib/{state-persistence.d.ts → state/persistence.d.ts} +3 -3
- package/dist/lib/state/persistence.d.ts.map +1 -0
- package/dist/lib/{state-persistence.js → state/persistence.js} +1 -1
- package/dist/lib/state/persistence.js.map +1 -0
- package/dist/lib/{tool-cache.d.ts → state/tool-cache.d.ts} +6 -1
- package/dist/lib/state/tool-cache.d.ts.map +1 -0
- package/dist/lib/{tool-cache.js → state/tool-cache.js} +16 -0
- package/dist/lib/state/tool-cache.js.map +1 -0
- package/dist/lib/tokenizer.js +2 -2
- package/dist/lib/tokenizer.js.map +1 -1
- package/dist/lib/ui/display-utils.d.ts.map +1 -0
- package/dist/lib/{display-utils.js → ui/display-utils.js} +0 -3
- package/dist/lib/ui/display-utils.js.map +1 -0
- package/dist/lib/ui/notification.d.ts +32 -0
- package/dist/lib/ui/notification.d.ts.map +1 -0
- package/dist/lib/ui/notification.js +180 -0
- package/dist/lib/ui/notification.js.map +1 -0
- package/package.json +6 -6
- package/dist/lib/deduplicator.d.ts +0 -16
- package/dist/lib/deduplicator.d.ts.map +0 -1
- package/dist/lib/deduplicator.js +0 -68
- package/dist/lib/deduplicator.js.map +0 -1
- package/dist/lib/display-utils.d.ts.map +0 -1
- package/dist/lib/display-utils.js.map +0 -1
- package/dist/lib/janitor.d.ts +0 -57
- package/dist/lib/janitor.d.ts.map +0 -1
- package/dist/lib/janitor.js +0 -547
- package/dist/lib/janitor.js.map +0 -1
- package/dist/lib/prompt.d.ts.map +0 -1
- package/dist/lib/prompt.js.map +0 -1
- package/dist/lib/state-persistence.d.ts.map +0 -1
- package/dist/lib/state-persistence.js.map +0 -1
- package/dist/lib/state.d.ts +0 -43
- package/dist/lib/state.d.ts.map +0 -1
- package/dist/lib/state.js.map +0 -1
- package/dist/lib/synth-instruction.d.ts.map +0 -1
- package/dist/lib/synth-instruction.js.map +0 -1
- package/dist/lib/tool-cache.d.ts.map +0 -1
- package/dist/lib/tool-cache.js.map +0 -1
- /package/dist/lib/{synth-instruction.d.ts → api-formats/synth-instruction.d.ts} +0 -0
- /package/dist/lib/{synth-instruction.js → api-formats/synth-instruction.js} +0 -0
- /package/dist/lib/{prompt.d.ts → core/prompt.d.ts} +0 -0
- /package/dist/lib/{display-utils.d.ts → ui/display-utils.d.ts} +0 -0
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { extractParameterKey } from "../../ui/display-utils";
|
|
2
|
+
/**
|
|
3
|
+
* Deduplication strategy - prunes older tool calls that have identical
|
|
4
|
+
* tool name and parameters, keeping only the most recent occurrence.
|
|
5
|
+
*/
|
|
6
|
+
export const deduplicationStrategy = {
|
|
7
|
+
name: "deduplication",
|
|
8
|
+
detect(toolMetadata, unprunedIds, protectedTools) {
|
|
9
|
+
const signatureMap = new Map();
|
|
10
|
+
const deduplicatableIds = unprunedIds.filter(id => {
|
|
11
|
+
const metadata = toolMetadata.get(id);
|
|
12
|
+
const protectedToolsLower = protectedTools.map(t => t.toLowerCase());
|
|
13
|
+
return !metadata || !protectedToolsLower.includes(metadata.tool.toLowerCase());
|
|
14
|
+
});
|
|
15
|
+
for (const id of deduplicatableIds) {
|
|
16
|
+
const metadata = toolMetadata.get(id);
|
|
17
|
+
if (!metadata)
|
|
18
|
+
continue;
|
|
19
|
+
const signature = createToolSignature(metadata.tool, metadata.parameters);
|
|
20
|
+
if (!signatureMap.has(signature)) {
|
|
21
|
+
signatureMap.set(signature, []);
|
|
22
|
+
}
|
|
23
|
+
signatureMap.get(signature).push(id);
|
|
24
|
+
}
|
|
25
|
+
const prunedIds = [];
|
|
26
|
+
const details = new Map();
|
|
27
|
+
for (const [signature, ids] of signatureMap.entries()) {
|
|
28
|
+
if (ids.length > 1) {
|
|
29
|
+
const metadata = toolMetadata.get(ids[0]);
|
|
30
|
+
const idsToRemove = ids.slice(0, -1); // All except last
|
|
31
|
+
prunedIds.push(...idsToRemove);
|
|
32
|
+
details.set(signature, {
|
|
33
|
+
toolName: metadata.tool,
|
|
34
|
+
parameterKey: extractParameterKey(metadata),
|
|
35
|
+
reason: `duplicate (${ids.length} occurrences, kept most recent)`,
|
|
36
|
+
duplicateCount: ids.length,
|
|
37
|
+
prunedIds: idsToRemove,
|
|
38
|
+
keptId: ids[ids.length - 1]
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return { prunedIds, details };
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
function createToolSignature(tool, parameters) {
|
|
46
|
+
if (!parameters)
|
|
47
|
+
return tool;
|
|
48
|
+
const normalized = normalizeParameters(parameters);
|
|
49
|
+
const sorted = sortObjectKeys(normalized);
|
|
50
|
+
return `${tool}::${JSON.stringify(sorted)}`;
|
|
51
|
+
}
|
|
52
|
+
function normalizeParameters(params) {
|
|
53
|
+
if (typeof params !== 'object' || params === null)
|
|
54
|
+
return params;
|
|
55
|
+
if (Array.isArray(params))
|
|
56
|
+
return params;
|
|
57
|
+
const normalized = {};
|
|
58
|
+
for (const [key, value] of Object.entries(params)) {
|
|
59
|
+
if (value !== undefined && value !== null) {
|
|
60
|
+
normalized[key] = value;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return normalized;
|
|
64
|
+
}
|
|
65
|
+
function sortObjectKeys(obj) {
|
|
66
|
+
if (typeof obj !== 'object' || obj === null)
|
|
67
|
+
return obj;
|
|
68
|
+
if (Array.isArray(obj))
|
|
69
|
+
return obj.map(sortObjectKeys);
|
|
70
|
+
const sorted = {};
|
|
71
|
+
for (const key of Object.keys(obj).sort()) {
|
|
72
|
+
sorted[key] = sortObjectKeys(obj[key]);
|
|
73
|
+
}
|
|
74
|
+
return sorted;
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=deduplication.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deduplication.js","sourceRoot":"","sources":["../../../../lib/core/strategies/deduplication.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Strategy runner - executes all enabled pruning strategies and collects results.
|
|
3
|
+
*/
|
|
4
|
+
import type { StrategyResult, ToolMetadata } from "./types";
|
|
5
|
+
export type { PruningStrategy, StrategyResult, ToolMetadata, StrategyDetail } from "./types";
|
|
6
|
+
export interface RunStrategiesResult {
|
|
7
|
+
/** All tool IDs that should be pruned (deduplicated) */
|
|
8
|
+
prunedIds: string[];
|
|
9
|
+
/** Results keyed by strategy name */
|
|
10
|
+
byStrategy: Map<string, StrategyResult>;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Run all enabled strategies and collect pruned IDs.
|
|
14
|
+
*
|
|
15
|
+
* @param toolMetadata - Map of tool call ID to metadata
|
|
16
|
+
* @param unprunedIds - Tool call IDs not yet pruned (chronological order)
|
|
17
|
+
* @param protectedTools - Tool names that should never be pruned
|
|
18
|
+
* @param enabledStrategies - Strategy names to run (defaults to all)
|
|
19
|
+
*/
|
|
20
|
+
export declare function runStrategies(toolMetadata: Map<string, ToolMetadata>, unprunedIds: string[], protectedTools: string[], enabledStrategies?: string[]): RunStrategiesResult;
|
|
21
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../lib/core/strategies/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAmB,cAAc,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAG5E,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAW5F,MAAM,WAAW,mBAAmB;IAChC,wDAAwD;IACxD,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,qCAAqC;IACrC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;CAC1C;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CACzB,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,EACvC,WAAW,EAAE,MAAM,EAAE,EACrB,cAAc,EAAE,MAAM,EAAE,EACxB,iBAAiB,CAAC,EAAE,MAAM,EAAE,GAC7B,mBAAmB,CAiCrB"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Strategy runner - executes all enabled pruning strategies and collects results.
|
|
3
|
+
*/
|
|
4
|
+
import { deduplicationStrategy } from "./deduplication";
|
|
5
|
+
/** All available strategies */
|
|
6
|
+
const ALL_STRATEGIES = [
|
|
7
|
+
deduplicationStrategy,
|
|
8
|
+
// Future strategies will be added here:
|
|
9
|
+
// errorPruningStrategy,
|
|
10
|
+
// writeReadStrategy,
|
|
11
|
+
// partialReadStrategy,
|
|
12
|
+
];
|
|
13
|
+
/**
|
|
14
|
+
* Run all enabled strategies and collect pruned IDs.
|
|
15
|
+
*
|
|
16
|
+
* @param toolMetadata - Map of tool call ID to metadata
|
|
17
|
+
* @param unprunedIds - Tool call IDs not yet pruned (chronological order)
|
|
18
|
+
* @param protectedTools - Tool names that should never be pruned
|
|
19
|
+
* @param enabledStrategies - Strategy names to run (defaults to all)
|
|
20
|
+
*/
|
|
21
|
+
export function runStrategies(toolMetadata, unprunedIds, protectedTools, enabledStrategies) {
|
|
22
|
+
const byStrategy = new Map();
|
|
23
|
+
const allPrunedIds = new Set();
|
|
24
|
+
// Filter to enabled strategies (or all if not specified)
|
|
25
|
+
const strategies = enabledStrategies
|
|
26
|
+
? ALL_STRATEGIES.filter(s => enabledStrategies.includes(s.name))
|
|
27
|
+
: ALL_STRATEGIES;
|
|
28
|
+
// Track which IDs are still available for each strategy
|
|
29
|
+
let remainingIds = unprunedIds;
|
|
30
|
+
for (const strategy of strategies) {
|
|
31
|
+
const result = strategy.detect(toolMetadata, remainingIds, protectedTools);
|
|
32
|
+
if (result.prunedIds.length > 0) {
|
|
33
|
+
byStrategy.set(strategy.name, result);
|
|
34
|
+
// Add to overall pruned set
|
|
35
|
+
for (const id of result.prunedIds) {
|
|
36
|
+
allPrunedIds.add(id);
|
|
37
|
+
}
|
|
38
|
+
// Remove pruned IDs from remaining for next strategy
|
|
39
|
+
const prunedSet = new Set(result.prunedIds.map(id => id.toLowerCase()));
|
|
40
|
+
remainingIds = remainingIds.filter(id => !prunedSet.has(id.toLowerCase()));
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return {
|
|
44
|
+
prunedIds: Array.from(allPrunedIds),
|
|
45
|
+
byStrategy
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/core/strategies/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AAIvD,+BAA+B;AAC/B,MAAM,cAAc,GAAsB;IACtC,qBAAqB;IACrB,wCAAwC;IACxC,wBAAwB;IACxB,qBAAqB;IACrB,uBAAuB;CAC1B,CAAA;AASD;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CACzB,YAAuC,EACvC,WAAqB,EACrB,cAAwB,EACxB,iBAA4B;IAE5B,MAAM,UAAU,GAAG,IAAI,GAAG,EAA0B,CAAA;IACpD,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAA;IAEtC,yDAAyD;IACzD,MAAM,UAAU,GAAG,iBAAiB;QAChC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAChE,CAAC,CAAC,cAAc,CAAA;IAEpB,wDAAwD;IACxD,IAAI,YAAY,GAAG,WAAW,CAAA;IAE9B,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,YAAY,EAAE,cAAc,CAAC,CAAA;QAE1E,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;YAErC,4BAA4B;YAC5B,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;gBAChC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YACxB,CAAC;YAED,qDAAqD;YACrD,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAA;YACvE,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAA;QAC9E,CAAC;IACL,CAAC;IAED,OAAO;QACH,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC;QACnC,UAAU;KACb,CAAA;AACL,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Common interface for rule-based pruning strategies.
|
|
3
|
+
* Each strategy analyzes tool metadata and returns IDs that should be pruned.
|
|
4
|
+
*/
|
|
5
|
+
export interface ToolMetadata {
|
|
6
|
+
tool: string;
|
|
7
|
+
parameters?: any;
|
|
8
|
+
}
|
|
9
|
+
export interface StrategyResult {
|
|
10
|
+
/** Tool call IDs that should be pruned */
|
|
11
|
+
prunedIds: string[];
|
|
12
|
+
/** Optional details about what was pruned and why */
|
|
13
|
+
details?: Map<string, StrategyDetail>;
|
|
14
|
+
}
|
|
15
|
+
export interface StrategyDetail {
|
|
16
|
+
toolName: string;
|
|
17
|
+
parameterKey: string;
|
|
18
|
+
reason: string;
|
|
19
|
+
/** Additional info specific to the strategy */
|
|
20
|
+
[key: string]: any;
|
|
21
|
+
}
|
|
22
|
+
export interface PruningStrategy {
|
|
23
|
+
/** Unique identifier for this strategy */
|
|
24
|
+
name: string;
|
|
25
|
+
/**
|
|
26
|
+
* Analyze tool metadata and determine which tool calls should be pruned.
|
|
27
|
+
*
|
|
28
|
+
* @param toolMetadata - Map of tool call ID to metadata (tool name + parameters)
|
|
29
|
+
* @param unprunedIds - Tool call IDs that haven't been pruned yet (chronological order)
|
|
30
|
+
* @param protectedTools - Tool names that should never be pruned
|
|
31
|
+
* @returns IDs to prune and optional details
|
|
32
|
+
*/
|
|
33
|
+
detect(toolMetadata: Map<string, ToolMetadata>, unprunedIds: string[], protectedTools: string[]): StrategyResult;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../lib/core/strategies/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,YAAY;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,CAAC,EAAE,GAAG,CAAA;CACnB;AAED,MAAM,WAAW,cAAc;IAC3B,0CAA0C;IAC1C,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,qDAAqD;IACrD,OAAO,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;CACxC;AAED,MAAM,WAAW,cAAc;IAC3B,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,+CAA+C;IAC/C,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CACrB;AAED,MAAM,WAAW,eAAe;IAC5B,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAA;IAEZ;;;;;;;OAOG;IACH,MAAM,CACF,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,EACvC,WAAW,EAAE,MAAM,EAAE,EACrB,cAAc,EAAE,MAAM,EAAE,GACzB,cAAc,CAAA;CACpB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../lib/core/strategies/types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gc-tracker.d.ts","sourceRoot":"","sources":["../../../lib/fetch-wrapper/gc-tracker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAC3C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAEvC,wBAAgB,iBAAiB,CAC7B,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EAAE,EACnB,IAAI,EAAE,GAAG,EACT,MAAM,EAAE,MAAM,GACf,IAAI,CAmBN"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
export function accumulateGCStats(state, sessionId, prunedIds, body, logger) {
|
|
2
|
+
if (prunedIds.length === 0)
|
|
3
|
+
return;
|
|
4
|
+
const toolOutputs = extractToolOutputsFromBody(body, prunedIds);
|
|
5
|
+
const tokensCollected = estimateTokensFromOutputs(toolOutputs);
|
|
6
|
+
const existing = state.gcPending.get(sessionId) ?? { tokensCollected: 0, toolsDeduped: 0 };
|
|
7
|
+
state.gcPending.set(sessionId, {
|
|
8
|
+
tokensCollected: existing.tokensCollected + tokensCollected,
|
|
9
|
+
toolsDeduped: existing.toolsDeduped + prunedIds.length
|
|
10
|
+
});
|
|
11
|
+
logger.debug("gc-tracker", "Accumulated GC stats", {
|
|
12
|
+
sessionId: sessionId.substring(0, 8),
|
|
13
|
+
newlyDeduped: prunedIds.length,
|
|
14
|
+
tokensThisCycle: tokensCollected,
|
|
15
|
+
pendingTotal: state.gcPending.get(sessionId)
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
function extractToolOutputsFromBody(body, prunedIds) {
|
|
19
|
+
const outputs = [];
|
|
20
|
+
const prunedIdSet = new Set(prunedIds.map(id => id.toLowerCase()));
|
|
21
|
+
// OpenAI Chat format
|
|
22
|
+
if (body.messages && Array.isArray(body.messages)) {
|
|
23
|
+
for (const m of body.messages) {
|
|
24
|
+
if (m.role === 'tool' && m.tool_call_id && prunedIdSet.has(m.tool_call_id.toLowerCase())) {
|
|
25
|
+
if (typeof m.content === 'string') {
|
|
26
|
+
outputs.push(m.content);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
// Anthropic format
|
|
30
|
+
if (m.role === 'user' && Array.isArray(m.content)) {
|
|
31
|
+
for (const part of m.content) {
|
|
32
|
+
if (part.type === 'tool_result' && part.tool_use_id && prunedIdSet.has(part.tool_use_id.toLowerCase())) {
|
|
33
|
+
if (typeof part.content === 'string') {
|
|
34
|
+
outputs.push(part.content);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
// OpenAI Responses format
|
|
42
|
+
if (body.input && Array.isArray(body.input)) {
|
|
43
|
+
for (const item of body.input) {
|
|
44
|
+
if (item.type === 'function_call_output' && item.call_id && prunedIdSet.has(item.call_id.toLowerCase())) {
|
|
45
|
+
if (typeof item.output === 'string') {
|
|
46
|
+
outputs.push(item.output);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return outputs;
|
|
52
|
+
}
|
|
53
|
+
// Character-based approximation (chars / 4) to avoid async tokenizer in fetch path
|
|
54
|
+
function estimateTokensFromOutputs(outputs) {
|
|
55
|
+
let totalChars = 0;
|
|
56
|
+
for (const output of outputs) {
|
|
57
|
+
totalChars += output.length;
|
|
58
|
+
}
|
|
59
|
+
return Math.round(totalChars / 4);
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=gc-tracker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gc-tracker.js","sourceRoot":"","sources":["../../../lib/fetch-wrapper/gc-tracker.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { PRUNED_CONTENT_MESSAGE, getAllPrunedIds, fetchSessionMessages } from "./types";
|
|
2
|
-
import { injectNudgeGemini, injectSynthGemini } from "../synth-instruction";
|
|
2
|
+
import { injectNudgeGemini, injectSynthGemini } from "../api-formats/synth-instruction";
|
|
3
3
|
/**
|
|
4
4
|
* Handles Google/Gemini format (body.contents array with functionResponse parts).
|
|
5
5
|
* Uses position-based correlation since Google's native format doesn't include tool call IDs.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../../lib/fetch-wrapper/gemini.ts"],"names":[],"mappings":"AACA,OAAO,EACH,sBAAsB,EACtB,eAAe,EACf,oBAAoB,EACvB,MAAM,SAAS,CAAA;AAChB,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../../lib/fetch-wrapper/gemini.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { PluginState } from "../state";
|
|
2
2
|
import type { Logger } from "../logger";
|
|
3
3
|
import type { SynthPrompts } from "./types";
|
|
4
|
-
import type { ToolTracker } from "../synth-instruction";
|
|
4
|
+
import type { ToolTracker } from "../api-formats/synth-instruction";
|
|
5
5
|
import type { PluginConfig } from "../config";
|
|
6
6
|
export type { FetchHandlerContext, FetchHandlerResult, SynthPrompts } from "./types";
|
|
7
7
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/fetch-wrapper/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAC3C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,KAAK,EAAuB,YAAY,EAAE,MAAM,SAAS,CAAA;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/fetch-wrapper/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAC3C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,KAAK,EAAuB,YAAY,EAAE,MAAM,SAAS,CAAA;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAA;AACnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAQ7C,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAEpF;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAC/B,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,GAAG,EACX,MAAM,EAAE,YAAY,EACpB,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,YAAY,GACtB,MAAM,IAAI,CA4FZ"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { handleOpenAIChatAndAnthropic } from "./openai-chat";
|
|
2
2
|
import { handleGemini } from "./gemini";
|
|
3
3
|
import { handleOpenAIResponses } from "./openai-responses";
|
|
4
|
+
import { runStrategies } from "../core/strategies";
|
|
5
|
+
import { accumulateGCStats } from "./gc-tracker";
|
|
6
|
+
import { trimToolParametersCache } from "../state/tool-cache";
|
|
4
7
|
/**
|
|
5
8
|
* Creates a wrapped global fetch that intercepts API calls and performs
|
|
6
9
|
* context pruning on tool outputs that have been marked for removal.
|
|
@@ -22,7 +25,6 @@ export function installFetchWrapper(state, logger, client, config, toolTracker,
|
|
|
22
25
|
prompts
|
|
23
26
|
};
|
|
24
27
|
globalThis.fetch = async (input, init) => {
|
|
25
|
-
// Skip all DCP processing for subagent sessions
|
|
26
28
|
if (state.lastSeenSessionId && state.subagentSessions.has(state.lastSeenSessionId)) {
|
|
27
29
|
logger.debug("fetch-wrapper", "Skipping DCP processing for subagent session", {
|
|
28
30
|
sessionId: state.lastSeenSessionId.substring(0, 8)
|
|
@@ -34,6 +36,8 @@ export function installFetchWrapper(state, logger, client, config, toolTracker,
|
|
|
34
36
|
const body = JSON.parse(init.body);
|
|
35
37
|
const inputUrl = typeof input === 'string' ? input : 'URL object';
|
|
36
38
|
let modified = false;
|
|
39
|
+
// Capture tool IDs before handlers run to track what gets cached this request
|
|
40
|
+
const toolIdsBefore = new Set(state.toolParameters.keys());
|
|
37
41
|
// Try each format handler in order
|
|
38
42
|
// OpenAI Chat Completions & Anthropic style (body.messages)
|
|
39
43
|
if (body.messages && Array.isArray(body.messages)) {
|
|
@@ -56,6 +60,24 @@ export function installFetchWrapper(state, logger, client, config, toolTracker,
|
|
|
56
60
|
modified = true;
|
|
57
61
|
}
|
|
58
62
|
}
|
|
63
|
+
const sessionId = state.lastSeenSessionId;
|
|
64
|
+
const toolIdsAfter = Array.from(state.toolParameters.keys());
|
|
65
|
+
const newToolsCached = toolIdsAfter.filter(id => !toolIdsBefore.has(id)).length > 0;
|
|
66
|
+
if (sessionId && newToolsCached && state.toolParameters.size > 0) {
|
|
67
|
+
const toolIds = Array.from(state.toolParameters.keys());
|
|
68
|
+
const alreadyPruned = state.prunedIds.get(sessionId) ?? [];
|
|
69
|
+
const alreadyPrunedLower = new Set(alreadyPruned.map(id => id.toLowerCase()));
|
|
70
|
+
const unpruned = toolIds.filter(id => !alreadyPrunedLower.has(id.toLowerCase()));
|
|
71
|
+
if (unpruned.length > 1) {
|
|
72
|
+
const result = runStrategies(state.toolParameters, unpruned, config.protectedTools);
|
|
73
|
+
if (result.prunedIds.length > 0) {
|
|
74
|
+
const normalizedIds = result.prunedIds.map(id => id.toLowerCase());
|
|
75
|
+
state.prunedIds.set(sessionId, [...new Set([...alreadyPruned, ...normalizedIds])]);
|
|
76
|
+
accumulateGCStats(state, sessionId, result.prunedIds, body, logger);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
trimToolParametersCache(state);
|
|
80
|
+
}
|
|
59
81
|
if (modified) {
|
|
60
82
|
init.body = JSON.stringify(body);
|
|
61
83
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../lib/fetch-wrapper/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,4BAA4B,EAAE,MAAM,eAAe,CAAA;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACvC,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../lib/fetch-wrapper/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { PRUNED_CONTENT_MESSAGE, getAllPrunedIds, fetchSessionMessages, getMostRecentActiveSession } from "./types";
|
|
2
|
-
import { cacheToolParametersFromMessages } from "../tool-cache";
|
|
3
|
-
import { injectNudge, injectSynth } from "../synth-instruction";
|
|
2
|
+
import { cacheToolParametersFromMessages } from "../state/tool-cache";
|
|
3
|
+
import { injectNudge, injectSynth } from "../api-formats/synth-instruction";
|
|
4
4
|
/**
|
|
5
5
|
* Handles OpenAI Chat Completions format (body.messages with role='tool').
|
|
6
6
|
* Also handles Anthropic format (role='user' with tool_result content parts).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai-chat.js","sourceRoot":"","sources":["../../../lib/fetch-wrapper/openai-chat.ts"],"names":[],"mappings":"AACA,OAAO,EACH,sBAAsB,EACtB,eAAe,EACf,oBAAoB,EACpB,0BAA0B,EAC7B,MAAM,SAAS,CAAA;AAChB,OAAO,EAAE,+BAA+B,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"openai-chat.js","sourceRoot":"","sources":["../../../lib/fetch-wrapper/openai-chat.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { PRUNED_CONTENT_MESSAGE, getAllPrunedIds, fetchSessionMessages, getMostRecentActiveSession } from "./types";
|
|
2
|
-
import { cacheToolParametersFromInput } from "../tool-cache";
|
|
3
|
-
import { injectNudgeResponses, injectSynthResponses } from "../synth-instruction";
|
|
2
|
+
import { cacheToolParametersFromInput } from "../state/tool-cache";
|
|
3
|
+
import { injectNudgeResponses, injectSynthResponses } from "../api-formats/synth-instruction";
|
|
4
4
|
/**
|
|
5
5
|
* Handles OpenAI Responses API format (body.input array with function_call_output items).
|
|
6
6
|
* Used by GPT-5 models via sdk.responses().
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai-responses.js","sourceRoot":"","sources":["../../../lib/fetch-wrapper/openai-responses.ts"],"names":[],"mappings":"AACA,OAAO,EACH,sBAAsB,EACtB,eAAe,EACf,oBAAoB,EACpB,0BAA0B,EAC7B,MAAM,SAAS,CAAA;AAChB,OAAO,EAAE,4BAA4B,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"openai-responses.js","sourceRoot":"","sources":["../../../lib/fetch-wrapper/openai-responses.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type PluginState } from "../state";
|
|
2
2
|
import type { Logger } from "../logger";
|
|
3
|
-
import type { ToolTracker } from "../synth-instruction";
|
|
3
|
+
import type { ToolTracker } from "../api-formats/synth-instruction";
|
|
4
4
|
import type { PluginConfig } from "../config";
|
|
5
5
|
/** The message used to replace pruned tool output content */
|
|
6
6
|
export declare const PRUNED_CONTENT_MESSAGE = "[Output removed to save context - information superseded or no longer needed]";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../lib/fetch-wrapper/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAyB,MAAM,UAAU,CAAA;AAClE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../lib/fetch-wrapper/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAyB,MAAM,UAAU,CAAA;AAClE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAA;AACnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAE7C,6DAA6D;AAC7D,eAAO,MAAM,sBAAsB,kFAAkF,CAAA;AAErH,uDAAuD;AACvD,MAAM,WAAW,YAAY;IACzB,gBAAgB,EAAE,MAAM,CAAA;IACxB,gBAAgB,EAAE,MAAM,CAAA;CAC3B;AAED,qDAAqD;AACrD,MAAM,WAAW,mBAAmB;IAChC,KAAK,EAAE,WAAW,CAAA;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,GAAG,CAAA;IACX,MAAM,EAAE,YAAY,CAAA;IACpB,WAAW,EAAE,WAAW,CAAA;IACxB,OAAO,EAAE,YAAY,CAAA;CACxB;AAED,4DAA4D;AAC5D,MAAM,WAAW,kBAAkB;IAC/B,gEAAgE;IAChE,QAAQ,EAAE,OAAO,CAAA;IACjB,2CAA2C;IAC3C,IAAI,EAAE,GAAG,CAAA;CACZ;AAED,iDAAiD;AACjD,MAAM,WAAW,YAAY;IACzB,WAAW,EAAE,GAAG,CAAA;IAChB,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CAC5B;AAED,wBAAsB,eAAe,CACjC,MAAM,EAAE,GAAG,EACX,KAAK,EAAE,WAAW,EAClB,MAAM,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,YAAY,CAAC,CAYvB;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACtC,MAAM,EAAE,GAAG,EACX,SAAS,EAAE,MAAM,GAClB,OAAO,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,CAY5B;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,GAAG,GAAG,GAAG,GAAG,SAAS,CAG5E"}
|
package/dist/lib/hooks.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import type { PluginState } from "./state";
|
|
2
2
|
import type { Logger } from "./logger";
|
|
3
|
-
import type {
|
|
3
|
+
import type { JanitorContext } from "./core/janitor";
|
|
4
4
|
import type { PluginConfig } from "./config";
|
|
5
|
-
import type { ToolTracker } from "./synth-instruction";
|
|
5
|
+
import type { ToolTracker } from "./api-formats/synth-instruction";
|
|
6
6
|
export declare function isSubagentSession(client: any, sessionID: string): Promise<boolean>;
|
|
7
|
-
export declare function createEventHandler(client: any,
|
|
7
|
+
export declare function createEventHandler(client: any, janitorCtx: JanitorContext, logger: Logger, config: PluginConfig, toolTracker?: ToolTracker): ({ event }: {
|
|
8
8
|
event: any;
|
|
9
9
|
}) => Promise<void>;
|
|
10
10
|
/**
|
package/dist/lib/hooks.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../lib/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAC1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACtC,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../lib/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAC1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACtC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAEpD,OAAO,KAAK,EAAE,YAAY,EAAmB,MAAM,UAAU,CAAA;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAA;AAGlE,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOxF;AAMD,wBAAgB,kBAAkB,CAC9B,MAAM,EAAE,GAAG,EACX,UAAU,EAAE,cAAc,EAC1B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,YAAY,EACpB,WAAW,CAAC,EAAE,WAAW,IAEX,WAAW;IAAE,KAAK,EAAE,GAAG,CAAA;CAAE,mBA4B1C;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACnC,MAAM,EAAE,GAAG,EACX,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,MAAM,IAEA,OAAO,GAAG,EAAE,SAAS,GAAG,mBA8EzC"}
|
package/dist/lib/hooks.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { runOnIdle } from "./core/janitor";
|
|
2
|
+
import { resetToolTrackerCount } from "./api-formats/synth-instruction";
|
|
2
3
|
export async function isSubagentSession(client, sessionID) {
|
|
3
4
|
try {
|
|
4
5
|
const result = await client.session.get({ path: { id: sessionID } });
|
|
@@ -11,7 +12,7 @@ export async function isSubagentSession(client, sessionID) {
|
|
|
11
12
|
function toolStrategiesCoveredByIdle(onIdle, onTool) {
|
|
12
13
|
return onTool.every(strategy => onIdle.includes(strategy));
|
|
13
14
|
}
|
|
14
|
-
export function createEventHandler(client,
|
|
15
|
+
export function createEventHandler(client, janitorCtx, logger, config, toolTracker) {
|
|
15
16
|
return async ({ event }) => {
|
|
16
17
|
if (event.type === "session.status" && event.properties.status.type === "idle") {
|
|
17
18
|
if (await isSubagentSession(client, event.properties.sessionID))
|
|
@@ -27,7 +28,7 @@ export function createEventHandler(client, janitor, logger, config, toolTracker)
|
|
|
27
28
|
}
|
|
28
29
|
}
|
|
29
30
|
try {
|
|
30
|
-
const result = await
|
|
31
|
+
const result = await runOnIdle(janitorCtx, event.properties.sessionID, config.strategies.onIdle);
|
|
31
32
|
// Reset nudge counter if idle pruning succeeded and covers tool strategies
|
|
32
33
|
if (result && result.prunedCount > 0 && toolTracker && config.nudge_freq > 0) {
|
|
33
34
|
if (toolStrategiesCoveredByIdle(config.strategies.onIdle, config.strategies.onTool)) {
|
package/dist/lib/hooks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../lib/hooks.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../lib/hooks.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { tool } from "@opencode-ai/plugin";
|
|
2
|
-
import type {
|
|
2
|
+
import type { JanitorContext } from "./core/janitor";
|
|
3
3
|
import type { PluginConfig } from "./config";
|
|
4
|
-
import type { ToolTracker } from "./synth-instruction";
|
|
4
|
+
import type { ToolTracker } from "./api-formats/synth-instruction";
|
|
5
5
|
/** Tool description for the prune tool, loaded from prompts/tool.txt */
|
|
6
6
|
export declare const CONTEXT_PRUNING_DESCRIPTION: string;
|
|
7
7
|
/**
|
|
8
8
|
* Creates the prune tool definition.
|
|
9
9
|
* Returns a tool definition that can be passed to the plugin's tool registry.
|
|
10
10
|
*/
|
|
11
|
-
export declare function createPruningTool(client: any,
|
|
11
|
+
export declare function createPruningTool(client: any, janitorCtx: JanitorContext, config: PluginConfig, toolTracker: ToolTracker): ReturnType<typeof tool>;
|
|
12
12
|
//# sourceMappingURL=pruning-tool.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pruning-tool.d.ts","sourceRoot":"","sources":["../../lib/pruning-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAC1C,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"pruning-tool.d.ts","sourceRoot":"","sources":["../../lib/pruning-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAC1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAGpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAC5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAA;AAKlE,wEAAwE;AACxE,eAAO,MAAM,2BAA2B,QAAqB,CAAA;AAE7D;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,GAAG,UAAU,CAAC,OAAO,IAAI,CAAC,CAuClJ"}
|