acp-kernel 0.0.79-pr.332.197 → 0.0.79
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/dist/absorb.d.ts +1 -2
- package/dist/absorb.d.ts.map +1 -1
- package/dist/{chunk-5TQA7ZQM.js → chunk-UX4LINT7.js} +1 -3
- package/dist/chunk-UX4LINT7.js.map +1 -0
- package/dist/compress.d.ts.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/index.d.ts +1 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -160
- package/dist/index.js.map +1 -1
- package/dist/persist/index.js +1 -3
- package/dist/persist/index.js.map +1 -1
- package/dist/persist/state-merge.d.ts.map +1 -1
- package/dist/protected.d.ts +2 -21
- package/dist/protected.d.ts.map +1 -1
- package/dist/recommend.d.ts.map +1 -1
- package/dist/state.d.ts.map +1 -1
- package/dist/sync.d.ts.map +1 -1
- package/dist/types.d.ts +0 -33
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/chunk-5TQA7ZQM.js.map +0 -1
- package/dist/rules.d.ts +0 -59
- package/dist/rules.d.ts.map +0 -1
package/dist/absorb.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { type LatestProtected } from "./protected.js";
|
|
2
1
|
import type { AbsorbConfig, Config, CompressionState, CoreMessage } from "./types.js";
|
|
3
2
|
/**
|
|
4
3
|
* Instant tool-result absorption ("absorb") — the middle layer between
|
|
@@ -18,7 +17,7 @@ export declare function buildAbsorbPrompt(ref: string, tokens: number, toolName?
|
|
|
18
17
|
export declare function buildAbsorbSystemPrompt(toolName?: string): string;
|
|
19
18
|
/** True when a tool-result message is in scope for absorption prompting:
|
|
20
19
|
* a tool-result of a non-ACP, non-excluded, non-protected tool. */
|
|
21
|
-
export declare function isAbsorbCandidate(msg: CoreMessage, config: Config
|
|
20
|
+
export declare function isAbsorbCandidate(msg: CoreMessage, config: Config): boolean;
|
|
22
21
|
/** Drop tool-call + tool-result pairs recorded in state.absorbed. Both halves
|
|
23
22
|
* go together so the provider-visible conversation stays structurally valid;
|
|
24
23
|
* prune's orphan stripping cleans up any straddling leftovers. */
|
package/dist/absorb.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"absorb.d.ts","sourceRoot":"","sources":["../src/absorb.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"absorb.d.ts","sourceRoot":"","sources":["../src/absorb.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,YAAY,EAEZ,MAAM,EACN,gBAAgB,EAChB,WAAW,EACZ,MAAM,YAAY,CAAC;AAEpB;;;;;;;;;GASG;AAEH,eAAO,MAAM,oBAAoB,iBAAiB,CAAC;AAEnD,eAAO,MAAM,qBAAqB,EAAE,YAMnC,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAEhE;AAQD,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,EACd,QAAQ,GAAE,MAAyB,GAClC,MAAM,CAQR;AAED,8DAA8D;AAC9D,wBAAgB,uBAAuB,CACrC,QAAQ,GAAE,MAAyB,GAClC,MAAM,CAIR;AAWD;oEACoE;AACpE,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAS3E;AAED;;mEAEmE;AACnE,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,WAAW,EAAE,EACvB,KAAK,EAAE,gBAAgB,GACtB,WAAW,EAAE,CASf;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;;sEAGsE;AACtE,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,WAAW,EAAE,EACvB,KAAK,EAAE,gBAAgB,EACvB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GACpC,yBAAyB,CAmC3B;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;4DAE4D;AAC5D,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,OAAO,EACd,MAAM,CAAC,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GACjC,YAAY,GAAG,IAAI,CA+BrB;AAaD,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,KAAK,EAAE,gBAAgB,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CACxC;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,gBAAgB,CAAC;IACxB,EAAE,EAAE,OAAO,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;0DAE0D;AAC1D,wBAAgB,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,aAAa,CAsG7D"}
|
|
@@ -13,8 +13,6 @@ function createInitialState() {
|
|
|
13
13
|
},
|
|
14
14
|
stats: { tokensCompressed: 0, compressionCount: 0, absorbedTokens: 0 },
|
|
15
15
|
absorbed: [],
|
|
16
|
-
rules: [],
|
|
17
|
-
nextRuleId: 1,
|
|
18
16
|
nextBlockId: 1,
|
|
19
17
|
nextRunId: 1
|
|
20
18
|
};
|
|
@@ -70,4 +68,4 @@ export {
|
|
|
70
68
|
highestActiveTier,
|
|
71
69
|
advanceSurvival
|
|
72
70
|
};
|
|
73
|
-
//# sourceMappingURL=chunk-
|
|
71
|
+
//# sourceMappingURL=chunk-UX4LINT7.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/state.ts"],"sourcesContent":["import type { CompressionBlock, CompressionState } from \"./types.js\";\n\nexport function createInitialState(): CompressionState {\n return {\n blocks: [],\n messageRefs: { byRaw: {}, byRef: {} },\n tokenSnapshot: {},\n nudge: {\n lastPerMessageNudgeTokens: 0,\n lastNudgeShownTokens: 0,\n baselineTokens: 0,\n anchors: {},\n lastShownByTier: {},\n },\n stats: { tokensCompressed: 0, compressionCount: 0, absorbedTokens: 0 },\n absorbed: [],\n nextBlockId: 1,\n nextRunId: 1,\n };\n}\n\nexport function allocateBlockId(state: CompressionState): string {\n const id = state.nextBlockId;\n state.nextBlockId = Math.max(1, id) + 1;\n return `b${id}`;\n}\n\nexport function allocateRunId(state: CompressionState): string {\n const id = state.nextRunId;\n state.nextRunId = Math.max(1, id) + 1;\n return `r${id}`;\n}\n\nexport function blockById(\n state: CompressionState,\n blockId: string,\n): CompressionBlock | undefined {\n return state.blocks.find((block) => block.blockId === blockId);\n}\n\nexport function activeBlocks(state: CompressionState): CompressionBlock[] {\n return state.blocks.filter((block) => block.active);\n}\n\nexport function coveredMessageIds(state: CompressionState): Set<string> {\n const covered = new Set<string>();\n for (const block of state.blocks) {\n if (!block.active) continue;\n for (const id of block.effectiveMessageIds) covered.add(id);\n }\n return covered;\n}\n\nexport function highestActiveTier(state: CompressionState): 0 | 1 | 2 | 3 {\n let highest: 0 | 1 | 2 | 3 = 0;\n for (const block of state.blocks) {\n if (block.active && block.tier > highest) highest = block.tier;\n }\n return highest;\n}\n\nexport function advanceSurvival(\n state: CompressionState,\n promotionThreshold: number,\n): void {\n for (const block of state.blocks) {\n if (!block.active) continue;\n block.survivedCount += 1;\n if (block.survivedCount >= promotionThreshold) {\n block.generation = \"old\";\n }\n }\n}\n"],"mappings":";AAEO,SAAS,qBAAuC;AACrD,SAAO;AAAA,IACL,QAAQ,CAAC;AAAA,IACT,aAAa,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,EAAE;AAAA,IACpC,eAAe,CAAC;AAAA,IAChB,OAAO;AAAA,MACL,2BAA2B;AAAA,MAC3B,sBAAsB;AAAA,MACtB,gBAAgB;AAAA,MAChB,SAAS,CAAC;AAAA,MACV,iBAAiB,CAAC;AAAA,IACpB;AAAA,IACA,OAAO,EAAE,kBAAkB,GAAG,kBAAkB,GAAG,gBAAgB,EAAE;AAAA,IACrE,UAAU,CAAC;AAAA,IACX,aAAa;AAAA,IACb,WAAW;AAAA,EACb;AACF;AAEO,SAAS,gBAAgB,OAAiC;AAC/D,QAAM,KAAK,MAAM;AACjB,QAAM,cAAc,KAAK,IAAI,GAAG,EAAE,IAAI;AACtC,SAAO,IAAI,EAAE;AACf;AAEO,SAAS,cAAc,OAAiC;AAC7D,QAAM,KAAK,MAAM;AACjB,QAAM,YAAY,KAAK,IAAI,GAAG,EAAE,IAAI;AACpC,SAAO,IAAI,EAAE;AACf;AAEO,SAAS,UACd,OACA,SAC8B;AAC9B,SAAO,MAAM,OAAO,KAAK,CAAC,UAAU,MAAM,YAAY,OAAO;AAC/D;AAEO,SAAS,aAAa,OAA6C;AACxE,SAAO,MAAM,OAAO,OAAO,CAAC,UAAU,MAAM,MAAM;AACpD;AAEO,SAAS,kBAAkB,OAAsC;AACtE,QAAM,UAAU,oBAAI,IAAY;AAChC,aAAW,SAAS,MAAM,QAAQ;AAChC,QAAI,CAAC,MAAM,OAAQ;AACnB,eAAW,MAAM,MAAM,oBAAqB,SAAQ,IAAI,EAAE;AAAA,EAC5D;AACA,SAAO;AACT;AAEO,SAAS,kBAAkB,OAAwC;AACxE,MAAI,UAAyB;AAC7B,aAAW,SAAS,MAAM,QAAQ;AAChC,QAAI,MAAM,UAAU,MAAM,OAAO,QAAS,WAAU,MAAM;AAAA,EAC5D;AACA,SAAO;AACT;AAEO,SAAS,gBACd,OACA,oBACM;AACN,aAAW,SAAS,MAAM,QAAQ;AAChC,QAAI,CAAC,MAAM,OAAQ;AACnB,UAAM,iBAAiB;AACvB,QAAI,MAAM,iBAAiB,oBAAoB;AAC7C,YAAM,aAAa;AAAA,IACrB;AAAA,EACF;AACF;","names":[]}
|
package/dist/compress.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compress.d.ts","sourceRoot":"","sources":["../src/compress.ts"],"names":[],"mappings":"AAIA,OAAO,EAAkC,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAgBhF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"compress.d.ts","sourceRoot":"","sources":["../src/compress.ts"],"names":[],"mappings":"AAIA,OAAO,EAAkC,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAgBhF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAUvD,OAAO,EAGL,KAAK,YAAY,EAGlB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EACV,sBAAsB,EACtB,gBAAgB,EAChB,gBAAgB,EAEhB,MAAM,EAEN,WAAW,EAGX,iBAAiB,EAEjB,YAAY,EACb,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,KAAK;IACpB,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CACxC;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,iBAAiB,CAAC;IACxD,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,sBAAsB,CAAC;IACvE,YAAY,IAAI,YAAY,EAAE,CAAC;IAC/B,UAAU,CACR,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,gBAAgB,GACtB,gBAAgB,GAAG,SAAS,CAAC;IAChC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,GAAG,gBAAgB,EAAE,CAAC;IACnE,MAAM,CACJ,KAAK,EAAE,gBAAgB,EACvB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,GACb,YAAY,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,KAAK,EAAE,gBAAgB,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;;;;;;;OAWG;IACH,UAAU,CAAC,EAAE,cAAc,CAAC;CAC7B;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE;QACN,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,EAAE,CAAC;IACJ,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,KAAK,EAAE,gBAAgB,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,mBAAmB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACnC;AA2DD,wBAAgB,UAAU,CAAC,KAAK,GAAE,KAAU,GAAG,eAAe,CA+U7D;AA0jCD,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC,wBAAgB,aAAa,CAC3B,iBAAiB,EAAE,MAAM,EACzB,SAAS,GAAE,OAAO,CAAC,MAAM,CAAM,GAC9B,MAAM,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC,wBAAgB,aAAa,CAC3B,iBAAiB,EAAE,MAAM,EACzB,SAAS,GAAE,OAAO,CAAC,MAAM,CAAM,GAC9B,MAAM,CA+CR;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CA8DvD"}
|
package/dist/index.d.ts
CHANGED
|
@@ -35,8 +35,6 @@ export type { HideConsumedResult } from "./hide-consumed.js";
|
|
|
35
35
|
export { ABSORB_TOOL_NAME, ABSORB_TOOL, ABSORB_TOOL_OPENAI, } from "./compress-tools.js";
|
|
36
36
|
export { ABSORB_PROMPT_MARKER, DEFAULT_ABSORB_CONFIG, resolveAbsorbConfig, buildAbsorbPrompt, buildAbsorbSystemPrompt, isAbsorbCandidate, hideAbsorbedMessages, appendAbsorbPrompts, parseAbsorbInput, applyAbsorb, } from "./absorb.js";
|
|
37
37
|
export type { AbsorbInput, AbsorbOutcome, ParsedAbsorb, AppendAbsorbPromptsResult, } from "./absorb.js";
|
|
38
|
-
export { RULE_TOOL_NAME, DEFAULT_RULE_LIMITS, RULES_USAGE_PROMPT, listRules, allocateRuleId, resolveRuleLimits, addRule, removeRule, clearRules, formatRulesForPrompt, formatRulesList, } from "./rules.js";
|
|
39
|
-
export type { RuleLimits, AddRuleResult, RemoveRuleResult, ClearRulesResult, } from "./rules.js";
|
|
40
38
|
export { rebuildCompressionState } from "./rebuild.js";
|
|
41
39
|
export type { RebuildResult, RebuildPorts } from "./rebuild.js";
|
|
42
40
|
export { parseCompressArgs } from "./parse-compress-input.js";
|
|
@@ -49,7 +47,7 @@ export { searchBlocks, searchBlocksAsync, blockDocs, messageDocs, } from "./sear
|
|
|
49
47
|
export { clearDocFeatures, docCacheInfo, docFeatures, setDocCacheCap, } from "./search.js";
|
|
50
48
|
export type { SearchResult, SearchOptions, SearchAlgorithm, AsyncSearchAlgorithm, AnySearchAlgorithm, SearchDoc, SearchDocKind, ScoredBlock, MessageRole, RoleWeights, MessageInput, } from "./search.js";
|
|
51
49
|
export { DEFAULT_ALGORITHM, DEFAULT_ROLE_WEIGHTS, registerSearchAlgorithm, getSearchAlgorithm, listSearchAlgorithms, } from "./search.js";
|
|
52
|
-
export {
|
|
50
|
+
export { isMessageProtected, matchToolPattern } from "./protected.js";
|
|
53
51
|
export { runPipeline, makeIO, type PipelineNode, type PipelineContext, type NodeIO, type NodeEffects, } from "./pipeline.js";
|
|
54
52
|
export * from "./filter/index.js";
|
|
55
53
|
export { VIABLE_RANGE_MIN_TOKENS, viableRanges } from "./viable.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -26,7 +26,7 @@ import {
|
|
|
26
26
|
coveredMessageIds,
|
|
27
27
|
createInitialState,
|
|
28
28
|
highestActiveTier
|
|
29
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-UX4LINT7.js";
|
|
30
30
|
|
|
31
31
|
// src/refs.ts
|
|
32
32
|
var REF_WIDTH = 5;
|
|
@@ -298,8 +298,6 @@ function syncBlocks(messages, state) {
|
|
|
298
298
|
nudge: { ...state.nudge, anchors: { ...state.nudge.anchors } },
|
|
299
299
|
stats: { ...state.stats },
|
|
300
300
|
absorbed: (state.absorbed ?? []).map((record) => ({ ...record })),
|
|
301
|
-
rules: (state.rules ?? []).map((rule) => ({ ...rule })),
|
|
302
|
-
nextRuleId: state.nextRuleId,
|
|
303
301
|
terminalStreak: state.terminalStreak,
|
|
304
302
|
nextBlockId: state.nextBlockId,
|
|
305
303
|
nextRunId: state.nextRunId
|
|
@@ -365,7 +363,6 @@ function defaultConfig(modelContextLimit, overrides = {}) {
|
|
|
365
363
|
minSummaryLength: 50
|
|
366
364
|
},
|
|
367
365
|
protectedTools: [],
|
|
368
|
-
protectedLatestTools: [],
|
|
369
366
|
preserveRecentMessages: 5,
|
|
370
367
|
preserveRecentTokens: 5e3,
|
|
371
368
|
modelContextLimit,
|
|
@@ -431,14 +428,6 @@ function validateConfig(config) {
|
|
|
431
428
|
errors.push("absorb.contextThresholdPct must be in [0, 1]");
|
|
432
429
|
}
|
|
433
430
|
}
|
|
434
|
-
if (config.rules) {
|
|
435
|
-
if (config.rules.maxRules !== void 0 && (!Number.isFinite(config.rules.maxRules) || config.rules.maxRules < 1)) {
|
|
436
|
-
errors.push("rules.maxRules must be >= 1");
|
|
437
|
-
}
|
|
438
|
-
if (config.rules.maxRuleChars !== void 0 && (!Number.isFinite(config.rules.maxRuleChars) || config.rules.maxRuleChars < 1)) {
|
|
439
|
-
errors.push("rules.maxRuleChars must be >= 1");
|
|
440
|
-
}
|
|
441
|
-
}
|
|
442
431
|
return errors;
|
|
443
432
|
}
|
|
444
433
|
|
|
@@ -1477,7 +1466,7 @@ var ABSORB_TOOL_GOOGLE = {
|
|
|
1477
1466
|
};
|
|
1478
1467
|
|
|
1479
1468
|
// src/protected.ts
|
|
1480
|
-
var ALWAYS_PROTECTED_TOOLS = ["compress"
|
|
1469
|
+
var ALWAYS_PROTECTED_TOOLS = ["compress"];
|
|
1481
1470
|
var NEVER_PRESERVE_RECENT_TOOLS = [
|
|
1482
1471
|
"decompress",
|
|
1483
1472
|
"search_context",
|
|
@@ -1526,31 +1515,6 @@ function isMessageProtectedWithPairing(msg, config, protectedCallIds) {
|
|
|
1526
1515
|
}
|
|
1527
1516
|
return false;
|
|
1528
1517
|
}
|
|
1529
|
-
function collectLatestProtected(messages, config) {
|
|
1530
|
-
const callIds = /* @__PURE__ */ new Set();
|
|
1531
|
-
const msgIds = /* @__PURE__ */ new Set();
|
|
1532
|
-
const patterns = config.protectedLatestTools ?? [];
|
|
1533
|
-
if (patterns.length === 0) return { callIds, msgIds };
|
|
1534
|
-
for (const pattern of patterns) {
|
|
1535
|
-
let last;
|
|
1536
|
-
for (const m of messages) {
|
|
1537
|
-
if (m.contentType === "tool-call" && m.toolName && matchToolPattern(m.toolName, pattern)) {
|
|
1538
|
-
last = m;
|
|
1539
|
-
}
|
|
1540
|
-
}
|
|
1541
|
-
if (!last) continue;
|
|
1542
|
-
if (last.toolCallId) callIds.add(last.toolCallId);
|
|
1543
|
-
else msgIds.add(last.id);
|
|
1544
|
-
}
|
|
1545
|
-
return { callIds, msgIds };
|
|
1546
|
-
}
|
|
1547
|
-
function isMessageLatestProtected(msg, latest) {
|
|
1548
|
-
if (msg.contentType === "tool-call" && latest.msgIds.has(msg.id)) return true;
|
|
1549
|
-
if ((msg.contentType === "tool-call" || msg.contentType === "tool-result") && msg.toolCallId && latest.callIds.has(msg.toolCallId)) {
|
|
1550
|
-
return true;
|
|
1551
|
-
}
|
|
1552
|
-
return false;
|
|
1553
|
-
}
|
|
1554
1518
|
|
|
1555
1519
|
// src/absorb.ts
|
|
1556
1520
|
var ABSORB_PROMPT_MARKER = "[ACP absorb]";
|
|
@@ -1582,12 +1546,11 @@ function isAcpOrConfiguredTool(toolName, cfg) {
|
|
|
1582
1546
|
if (toolName === cfg.toolName) return true;
|
|
1583
1547
|
return ACP_TOOL_NAMES.has(toolName);
|
|
1584
1548
|
}
|
|
1585
|
-
function isAbsorbCandidate(msg, config
|
|
1549
|
+
function isAbsorbCandidate(msg, config) {
|
|
1586
1550
|
if (msg.contentType !== "tool-result" || !msg.toolCallId) return false;
|
|
1587
1551
|
const cfg = resolveAbsorbConfig(config);
|
|
1588
1552
|
if (isAcpOrConfiguredTool(msg.toolName, cfg)) return false;
|
|
1589
1553
|
if (isMessageProtected(msg, config)) return false;
|
|
1590
|
-
if (latest && isMessageLatestProtected(msg, latest)) return false;
|
|
1591
1554
|
for (const pattern of cfg.excludeTools) {
|
|
1592
1555
|
if (msg.toolName && matchToolPattern(msg.toolName, pattern)) return false;
|
|
1593
1556
|
}
|
|
@@ -1615,9 +1578,8 @@ function appendAbsorbPrompts(messages, state, config, tokenCount, countTokens) {
|
|
|
1615
1578
|
if (record.resultMessageId) absorbedIds.add(record.resultMessageId);
|
|
1616
1579
|
}
|
|
1617
1580
|
let promptedCount = 0;
|
|
1618
|
-
const latest = collectLatestProtected(messages, config);
|
|
1619
1581
|
const out = messages.map((msg) => {
|
|
1620
|
-
if (!isAbsorbCandidate(msg, config
|
|
1582
|
+
if (!isAbsorbCandidate(msg, config)) return msg;
|
|
1621
1583
|
if (absorbedIds.has(msg.id)) return msg;
|
|
1622
1584
|
const text = msg.text ?? "";
|
|
1623
1585
|
if (text.includes(ABSORB_PROMPT_MARKER)) return msg;
|
|
@@ -1723,10 +1685,7 @@ function applyAbsorb(input) {
|
|
|
1723
1685
|
resultText: `absorb failed: ${target.toolName} is an ACP-managed tool result \u2014 it is not absorbable.`
|
|
1724
1686
|
};
|
|
1725
1687
|
}
|
|
1726
|
-
if (isMessageProtected(target, input.config)
|
|
1727
|
-
target,
|
|
1728
|
-
collectLatestProtected(input.messages, input.config)
|
|
1729
|
-
)) {
|
|
1688
|
+
if (isMessageProtected(target, input.config)) {
|
|
1730
1689
|
return {
|
|
1731
1690
|
state: input.state,
|
|
1732
1691
|
ok: false,
|
|
@@ -2237,8 +2196,6 @@ function buildCompressibleRanges(messages, state, config, protectedZoneRefs, cou
|
|
|
2237
2196
|
let compressibleMsgs = [];
|
|
2238
2197
|
const protectedMsgs = [];
|
|
2239
2198
|
const protectedCallIds = collectProtectedToolCallIds(messages, config);
|
|
2240
|
-
const latest = collectLatestProtected(messages, config);
|
|
2241
|
-
for (const id of latest.callIds) protectedCallIds.add(id);
|
|
2242
2199
|
let skipSinceCompressible = false;
|
|
2243
2200
|
let skipSinceProtected = false;
|
|
2244
2201
|
let msgIndex = -1;
|
|
@@ -2251,7 +2208,7 @@ function buildCompressibleRanges(messages, state, config, protectedZoneRefs, cou
|
|
|
2251
2208
|
skipSinceProtected = true;
|
|
2252
2209
|
continue;
|
|
2253
2210
|
}
|
|
2254
|
-
if (isMessageProtectedWithPairing(msg, config, protectedCallIds)
|
|
2211
|
+
if (isMessageProtectedWithPairing(msg, config, protectedCallIds)) {
|
|
2255
2212
|
protectedMsgs.push({
|
|
2256
2213
|
ref,
|
|
2257
2214
|
gapBefore: skipSinceProtected,
|
|
@@ -2712,9 +2669,8 @@ function createCore(ports = {}) {
|
|
|
2712
2669
|
var assignRefsNode = {
|
|
2713
2670
|
name: "assign-refs",
|
|
2714
2671
|
run(io, ctx) {
|
|
2715
|
-
const hasProtection = ctx.config.protectedTools.length > 0 || !!ctx.config.isToolProtected
|
|
2716
|
-
const
|
|
2717
|
-
const protectedFn = hasProtection ? (m) => isMessageProtected(m, ctx.config) || (latest ? isMessageLatestProtected(m, latest) : false) : void 0;
|
|
2672
|
+
const hasProtection = ctx.config.protectedTools.length > 0 || !!ctx.config.isToolProtected;
|
|
2673
|
+
const protectedFn = hasProtection ? (m) => isMessageProtected(m, ctx.config) : void 0;
|
|
2718
2674
|
const refResult = assignRefs(io.messages, {
|
|
2719
2675
|
existing: io.state.messageRefs,
|
|
2720
2676
|
nextIndex: highestUsedIndex(io.state.messageRefs) + 1,
|
|
@@ -3110,8 +3066,6 @@ function validateCompressionRange(input, directMessageIds, consumedBlockCount) {
|
|
|
3110
3066
|
function filterProtectedToolMessages(directMessageIds, messages, config) {
|
|
3111
3067
|
const protectedCallIds = /* @__PURE__ */ new Set();
|
|
3112
3068
|
const removedIds = /* @__PURE__ */ new Set();
|
|
3113
|
-
const latest = collectLatestProtected(messages, config);
|
|
3114
|
-
for (const id of latest.callIds) protectedCallIds.add(id);
|
|
3115
3069
|
for (const msg of messages) {
|
|
3116
3070
|
if (isMessageProtected(msg, config) && msg.toolCallId) {
|
|
3117
3071
|
protectedCallIds.add(msg.toolCallId);
|
|
@@ -3120,7 +3074,7 @@ function filterProtectedToolMessages(directMessageIds, messages, config) {
|
|
|
3120
3074
|
for (const id of directMessageIds) {
|
|
3121
3075
|
const msg = messages.find((m) => m.id === id);
|
|
3122
3076
|
if (!msg) continue;
|
|
3123
|
-
if (isMessageProtected(msg, config)
|
|
3077
|
+
if (isMessageProtected(msg, config)) {
|
|
3124
3078
|
removedIds.add(id);
|
|
3125
3079
|
if (msg.toolCallId) protectedCallIds.add(msg.toolCallId);
|
|
3126
3080
|
}
|
|
@@ -3378,8 +3332,6 @@ function cloneState(state) {
|
|
|
3378
3332
|
nudge: { ...state.nudge, anchors: { ...state.nudge.anchors } },
|
|
3379
3333
|
stats: { ...state.stats },
|
|
3380
3334
|
absorbed: (state.absorbed ?? []).map((record) => ({ ...record })),
|
|
3381
|
-
rules: (state.rules ?? []).map((rule) => ({ ...rule })),
|
|
3382
|
-
nextRuleId: state.nextRuleId,
|
|
3383
3335
|
terminalStreak: state.terminalStreak,
|
|
3384
3336
|
nextBlockId: state.nextBlockId,
|
|
3385
3337
|
nextRunId: state.nextRunId
|
|
@@ -4580,96 +4532,6 @@ function matchSession(sessions, selector, labelOf) {
|
|
|
4580
4532
|
return sessions.filter((s) => s.id.startsWith(selector) || (labelOf(s) ?? "").startsWith(selector));
|
|
4581
4533
|
}
|
|
4582
4534
|
|
|
4583
|
-
// src/rules.ts
|
|
4584
|
-
var RULE_TOOL_NAME = "acp_rule";
|
|
4585
|
-
var DEFAULT_RULE_LIMITS = Object.freeze({
|
|
4586
|
-
maxRules: 50,
|
|
4587
|
-
maxRuleChars: 300
|
|
4588
|
-
});
|
|
4589
|
-
var RULES_USAGE_PROMPT = [
|
|
4590
|
-
"Use the acp_rule tool to record short, principle-level reminders that must survive context compression:",
|
|
4591
|
-
"- behavioral corrections the user has had to repeat more than once,",
|
|
4592
|
-
"- project invariants the user explicitly asked you to remember,",
|
|
4593
|
-
"- pitfalls you ran into once and must not run into again.",
|
|
4594
|
-
"Rules are re-injected into the system prompt every turn. Omit the text argument to list recorded rules."
|
|
4595
|
-
].join("\n");
|
|
4596
|
-
function listRules(state) {
|
|
4597
|
-
return state.rules ?? [];
|
|
4598
|
-
}
|
|
4599
|
-
function resolveRuleLimits(config) {
|
|
4600
|
-
return {
|
|
4601
|
-
maxRules: config?.rules?.maxRules ?? DEFAULT_RULE_LIMITS.maxRules,
|
|
4602
|
-
maxRuleChars: config?.rules?.maxRuleChars ?? DEFAULT_RULE_LIMITS.maxRuleChars
|
|
4603
|
-
};
|
|
4604
|
-
}
|
|
4605
|
-
var RULE_ID_RE = /^rule(\d+)$/;
|
|
4606
|
-
function highestRuleNumber(state) {
|
|
4607
|
-
let highest = 0;
|
|
4608
|
-
for (const rule of state.rules ?? []) {
|
|
4609
|
-
const match = RULE_ID_RE.exec(rule.id);
|
|
4610
|
-
if (match) highest = Math.max(highest, Number(match[1]));
|
|
4611
|
-
}
|
|
4612
|
-
return highest;
|
|
4613
|
-
}
|
|
4614
|
-
function allocateRuleId(state) {
|
|
4615
|
-
return `rule${Math.max(state.nextRuleId ?? 1, highestRuleNumber(state) + 1)}`;
|
|
4616
|
-
}
|
|
4617
|
-
function addRule(state, text, limits = {}) {
|
|
4618
|
-
const maxRules = limits.maxRules ?? DEFAULT_RULE_LIMITS.maxRules;
|
|
4619
|
-
const maxRuleChars = limits.maxRuleChars ?? DEFAULT_RULE_LIMITS.maxRuleChars;
|
|
4620
|
-
const trimmed = (text ?? "").trim();
|
|
4621
|
-
if (!trimmed) {
|
|
4622
|
-
return { ok: false, error: "rule text is empty \u2014 provide the reminder to record." };
|
|
4623
|
-
}
|
|
4624
|
-
if (trimmed.length > maxRuleChars) {
|
|
4625
|
-
return {
|
|
4626
|
-
ok: false,
|
|
4627
|
-
error: `${trimmed.length} chars exceeds the ${maxRuleChars}-char limit \u2014 keep rules short and principle-level.`
|
|
4628
|
-
};
|
|
4629
|
-
}
|
|
4630
|
-
const rules = listRules(state);
|
|
4631
|
-
const duplicate = rules.find((rule2) => rule2.text === trimmed);
|
|
4632
|
-
if (duplicate) {
|
|
4633
|
-
return { ok: false, error: `identical rule already exists (${duplicate.id}) \u2014 no change.` };
|
|
4634
|
-
}
|
|
4635
|
-
if (rules.length >= maxRules) {
|
|
4636
|
-
return {
|
|
4637
|
-
ok: false,
|
|
4638
|
-
error: `rule limit reached (${maxRules}) \u2014 remove or clear outdated rules first.`
|
|
4639
|
-
};
|
|
4640
|
-
}
|
|
4641
|
-
const next = Math.max(state.nextRuleId ?? 1, highestRuleNumber(state) + 1);
|
|
4642
|
-
const rule = { id: `rule${next}`, text: trimmed };
|
|
4643
|
-
state.rules = [...rules, rule];
|
|
4644
|
-
state.nextRuleId = next + 1;
|
|
4645
|
-
return { ok: true, rule };
|
|
4646
|
-
}
|
|
4647
|
-
function removeRule(state, id) {
|
|
4648
|
-
const rules = listRules(state);
|
|
4649
|
-
const target = rules.find((rule) => rule.id === id.trim());
|
|
4650
|
-
if (!target) {
|
|
4651
|
-
return { ok: false, error: `no rule with id "${id.trim()}" \u2014 list current rules first (omit the text argument).` };
|
|
4652
|
-
}
|
|
4653
|
-
state.rules = rules.filter((rule) => rule.id !== target.id);
|
|
4654
|
-
return { ok: true, rule: target };
|
|
4655
|
-
}
|
|
4656
|
-
function clearRules(state) {
|
|
4657
|
-
const count = listRules(state).length;
|
|
4658
|
-
state.rules = [];
|
|
4659
|
-
return { ok: true, count };
|
|
4660
|
-
}
|
|
4661
|
-
function formatRulesForPrompt(state) {
|
|
4662
|
-
const rules = listRules(state);
|
|
4663
|
-
if (rules.length === 0) return "";
|
|
4664
|
-
return [
|
|
4665
|
-
"# Persistent rules (recorded via acp_rule \u2014 kept across compression)",
|
|
4666
|
-
...rules.map((rule) => `- [${rule.id}] ${rule.text}`)
|
|
4667
|
-
].join("\n");
|
|
4668
|
-
}
|
|
4669
|
-
function formatRulesList(rules) {
|
|
4670
|
-
return rules.map((rule, i) => `${i + 1}. [${rule.id}] ${rule.text}`).join("\n");
|
|
4671
|
-
}
|
|
4672
|
-
|
|
4673
4535
|
// src/parse-compress-input.ts
|
|
4674
4536
|
function parseCompressArgs(input, opts) {
|
|
4675
4537
|
const callId = opts?.callId;
|
|
@@ -5611,11 +5473,8 @@ export {
|
|
|
5611
5473
|
DEFAULT_ABSORB_CONFIG,
|
|
5612
5474
|
DEFAULT_ALGORITHM,
|
|
5613
5475
|
DEFAULT_ROLE_WEIGHTS,
|
|
5614
|
-
DEFAULT_RULE_LIMITS,
|
|
5615
5476
|
HOW_TO_COMPRESS_RULES,
|
|
5616
5477
|
LEAN_HOW_TO_COMPRESS,
|
|
5617
|
-
RULES_USAGE_PROMPT,
|
|
5618
|
-
RULE_TOOL_NAME,
|
|
5619
5478
|
SEARCH_CONTEXT_TOOL,
|
|
5620
5479
|
SEARCH_CONTEXT_TOOL_GOOGLE,
|
|
5621
5480
|
SEARCH_CONTEXT_TOOL_NAME,
|
|
@@ -5627,10 +5486,8 @@ export {
|
|
|
5627
5486
|
VIABLE_RANGE_MIN_TOKENS,
|
|
5628
5487
|
activeBlockSpans,
|
|
5629
5488
|
activeBlocks,
|
|
5630
|
-
addRule,
|
|
5631
5489
|
advanceSurvival,
|
|
5632
5490
|
allocateBlockId,
|
|
5633
|
-
allocateRuleId,
|
|
5634
5491
|
allocateRunId,
|
|
5635
5492
|
appendAbsorbPrompts,
|
|
5636
5493
|
applyAbsorb,
|
|
@@ -5653,10 +5510,8 @@ export {
|
|
|
5653
5510
|
builtinSource,
|
|
5654
5511
|
clearDocFeatures,
|
|
5655
5512
|
clearMessageFilters,
|
|
5656
|
-
clearRules,
|
|
5657
5513
|
cloneWithDescriptions,
|
|
5658
5514
|
collectBlockContent,
|
|
5659
|
-
collectLatestProtected,
|
|
5660
5515
|
computeFoldEconomics,
|
|
5661
5516
|
countMessageTokens,
|
|
5662
5517
|
coveredMessageIds,
|
|
@@ -5682,8 +5537,6 @@ export {
|
|
|
5682
5537
|
formatCacheReport,
|
|
5683
5538
|
formatCreatedBlocks,
|
|
5684
5539
|
formatRanges,
|
|
5685
|
-
formatRulesForPrompt,
|
|
5686
|
-
formatRulesList,
|
|
5687
5540
|
getMessageFilter,
|
|
5688
5541
|
getSearchAlgorithm,
|
|
5689
5542
|
hideAbsorbedMessages,
|
|
@@ -5692,14 +5545,12 @@ export {
|
|
|
5692
5545
|
highestUsedIndex,
|
|
5693
5546
|
indexToRef,
|
|
5694
5547
|
isAbsorbCandidate,
|
|
5695
|
-
isMessageLatestProtected,
|
|
5696
5548
|
isMessageProtected,
|
|
5697
5549
|
isRenderedSummaryMessage,
|
|
5698
5550
|
isSummaryMessageId,
|
|
5699
5551
|
isValidPackName,
|
|
5700
5552
|
leanPack,
|
|
5701
5553
|
listMessageFilters,
|
|
5702
|
-
listRules,
|
|
5703
5554
|
listSearchAlgorithms,
|
|
5704
5555
|
makeIO,
|
|
5705
5556
|
matchSession,
|
|
@@ -5717,7 +5568,6 @@ export {
|
|
|
5717
5568
|
refToIndex,
|
|
5718
5569
|
registerMessageFilter,
|
|
5719
5570
|
registerSearchAlgorithm,
|
|
5720
|
-
removeRule,
|
|
5721
5571
|
renderHandoff,
|
|
5722
5572
|
renderMessage2 as renderMessage,
|
|
5723
5573
|
renderNudgeText,
|
|
@@ -5727,7 +5577,6 @@ export {
|
|
|
5727
5577
|
resolveBlockSpan,
|
|
5728
5578
|
resolveBoundaries,
|
|
5729
5579
|
resolvePrompts,
|
|
5730
|
-
resolveRuleLimits,
|
|
5731
5580
|
resolveTransformChannel,
|
|
5732
5581
|
runPipeline,
|
|
5733
5582
|
sanitizePackSurface,
|