acp-kernel 0.0.85-pr.378.238 → 0.0.85-pr.380.239
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 +1 -1
- package/dist/absorb.d.ts +2 -2
- package/dist/absorb.d.ts.map +1 -1
- package/dist/ccr.d.ts.map +1 -1
- package/dist/compress.d.ts.map +1 -1
- package/dist/crush.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +114 -177
- package/dist/index.js.map +1 -1
- package/dist/protected.d.ts +5 -42
- package/dist/protected.d.ts.map +1 -1
- package/dist/recommend.d.ts.map +1 -1
- package/dist/rules.d.ts +3 -6
- package/dist/rules.d.ts.map +1 -1
- package/dist/types.d.ts +3 -5
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -230,7 +230,7 @@ The nudge system tells the model *when* to compress. It implements:
|
|
|
230
230
|
|
|
231
231
|
- **Threshold gate**: fires when context usage ≥ `nudge.minContextLimitPct`.
|
|
232
232
|
- **Growth-gating**: a repeat nudge requires positive growth since the baseline (prevents re-firing every turn). `"strong"` force relaxes this.
|
|
233
|
-
- **Tier-distillation triggers**: when active tier-1 blocks pile up past `tiers.tier2Trigger`, emit a tier-2 distillation nudge; tier-3 analogously.
|
|
233
|
+
- **Tier-distillation triggers**: when active tier-1 blocks pile up past `tiers.tier2Trigger`, emit a tier-2 distillation nudge; tier-3 analogously. Block COUNT is not a need signal, so the count path defaults OFF (`tier2Trigger: 1000`, `tier3Trigger: 2000`) — no usage gate: token-mass paths (≥1.5× growthFloor) and the T1 growth path are the need signal and fire ungated (#379, supersedes the #237/#238 usage band).
|
|
234
234
|
- **Compressible-range computation**: reports the actual compressible ranges (excluding covered + preserved-recent messages) so the model knows what to target.
|
|
235
235
|
- **Baseline reset on compress**: `applyCompression` clears the growth baseline on success, preventing the feedback-loop bug where the nudge re-fires post-compress.
|
|
236
236
|
|
package/dist/absorb.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type LatestProtected
|
|
1
|
+
import { type LatestProtected } from "./protected.js";
|
|
2
2
|
import type { AbsorbConfig, Config, CompressionState, CoreMessage } from "./types.js";
|
|
3
3
|
/**
|
|
4
4
|
* Instant tool-result absorption ("absorb") — the middle layer between
|
|
@@ -18,7 +18,7 @@ export declare function buildAbsorbPrompt(ref: string, tokens: number, toolName?
|
|
|
18
18
|
export declare function buildAbsorbSystemPrompt(toolName?: string): string;
|
|
19
19
|
/** True when a tool-result message is in scope for absorption prompting:
|
|
20
20
|
* a tool-result of a non-ACP, non-excluded, non-protected tool. */
|
|
21
|
-
export declare function isAbsorbCandidate(msg: CoreMessage, config: Config, latest?: LatestProtected
|
|
21
|
+
export declare function isAbsorbCandidate(msg: CoreMessage, config: Config, latest?: LatestProtected): boolean;
|
|
22
22
|
/** Drop tool-call + tool-result pairs recorded in state.absorbed. Both halves
|
|
23
23
|
* go together so the provider-visible conversation stays structurally valid;
|
|
24
24
|
* 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":"AAGA,OAAO,
|
|
1
|
+
{"version":3,"file":"absorb.d.ts","sourceRoot":"","sources":["../src/absorb.ts"],"names":[],"mappings":"AAGA,OAAO,EAKL,KAAK,eAAe,EACrB,MAAM,gBAAgB,CAAC;AACxB,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,YAQnC,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,CAC/B,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,eAAe,GACvB,OAAO,CAWT;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,CAoC3B;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,CA4G7D"}
|
package/dist/ccr.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ccr.d.ts","sourceRoot":"","sources":["../src/ccr.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,MAAM,EACN,gBAAgB,EAChB,WAAW,EACZ,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"ccr.d.ts","sourceRoot":"","sources":["../src/ccr.ts"],"names":[],"mappings":"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"}
|
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;AAehF,OAAO,KAAK,EAAE,mBAAmB,EAAa,MAAM,UAAU,CAAC;AAE/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAI9D,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;AAehF,OAAO,KAAK,EAAE,mBAAmB,EAAa,MAAM,UAAU,CAAC;AAE/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAI9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAevD,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;mEAC+D;IAC/D,QAAQ,CAAC,KAAK,EAAE,mBAAmB,EAAE,GAAG,EAAE,MAAM,GAAG,mBAAmB,CAAC;IACvE,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;IAC5B;8DAC0D;IAC1D,YAAY,CAAC,EAAE,mBAAmB,CAAC;CACpC;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;AA2GD,wBAAgB,UAAU,CAAC,KAAK,GAAE,KAAU,GAAG,eAAe,CAmW7D;AAwoCD,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
|
package/dist/crush.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crush.d.ts","sourceRoot":"","sources":["../src/crush.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"crush.d.ts","sourceRoot":"","sources":["../src/crush.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AAQH,OAAO,EAAsB,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AACtE,OAAO,KAAK,EACV,YAAY,EACZ,MAAM,EACN,WAAW,EACX,WAAW,EACZ,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,oBAAoB,EAAE,WAGlC,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;AAEhD,sEAAsE;AACtE,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,sEAAsE;AACtE,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,iFAAiF;IACjF,QAAQ,CAAC,KAAK,EAAE,SAAS,SAAS,EAAE,CAAC;IACrC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,GAAG,IAAI,CAAC;CAC1E;AAED,MAAM,WAAW,YAAY;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,YAAY,CAAC;IAC3B,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,yEAAyE;IACzE,OAAO,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;CACrC;AAED,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;AAE/D,qDAAqD;AACrD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,iBAAiB,CAAC;IACxB,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAiBD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CASzD;AAED;;mFAEmF;AACnF,wBAAgB,SAAS,CACvB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,YAAiB,GACzB,WAAW,GAAG,IAAI,CA2CpB;AAmMD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQrD;AAsfD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAKrD;AAqrBD,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA2BpD;AAkBD,eAAO,MAAM,cAAc,EAAE,cAO5B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,cAO5B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,cAO7B,CAAC;AAUF,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,cAAc,GAAG,IAAI,CAE7D;AAED,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAEtD;AAED,wBAAgB,gBAAgB,IAAI,KAAK,CACvC,IAAI,CAAC,cAAc,EAAE,IAAI,GAAG,OAAO,CAAC,CACrC,CAKA;AAED,yEAAyE;AACzE,wBAAgB,iBAAiB,IAAI,IAAI,CAGxC;AAMD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAE9D;AAmBD,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,YAAY,CAAC;IACrB,KAAK,EAAE,WAAW,CAAC;IACnB,6DAA6D;IAC7D,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,WAAW,CAAC,EAAE,YAAY,CAAC;CAC5B;AAED;;;;mEAImE;AACnE,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,kBAAkB,GAAG,eAAe,CAgC7E;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,iEAAiE;IACjE,YAAY,EAAE,MAAM,CAAC;IACrB,qEAAqE;IACrE,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;oDAGoD;AACpD,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,WAAW,EAAE,EACvB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,YAAY,GACxB,gBAAgB,CAqClB"}
|
package/dist/index.d.ts
CHANGED
|
@@ -58,7 +58,7 @@ export { searchBlocks, searchBlocksAsync, blockDocs, messageDocs, } from "./sear
|
|
|
58
58
|
export { clearDocFeatures, docCacheInfo, docFeatures, setDocCacheCap, } from "./search.js";
|
|
59
59
|
export type { SearchResult, SearchOptions, SearchAlgorithm, AsyncSearchAlgorithm, AnySearchAlgorithm, SearchDoc, SearchDocKind, ScoredBlock, MessageRole, RoleWeights, MessageInput, } from "./search.js";
|
|
60
60
|
export { DEFAULT_ALGORITHM, DEFAULT_ROLE_WEIGHTS, registerSearchAlgorithm, getSearchAlgorithm, listSearchAlgorithms, } from "./search.js";
|
|
61
|
-
export { collectLatestProtected,
|
|
61
|
+
export { collectLatestProtected, hasMediaPayload, isMessageLatestProtected, isMessageProtected, matchToolPattern, type LatestProtected, } from "./protected.js";
|
|
62
62
|
export { runPipeline, makeIO, type PipelineNode, type PipelineContext, type NodeIO, type NodeEffects, } from "./pipeline.js";
|
|
63
63
|
export * from "./filter/index.js";
|
|
64
64
|
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":"AAAA,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,YAAY,EACV,KAAK,EACL,eAAe,EACf,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,aAAa,EACb,SAAS,EACT,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,GAChB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC5D,cAAc,qBAAqB,CAAC;AACpC,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,UAAU,EACV,SAAS,EACT,SAAS,EACT,WAAW,GACZ,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,KAAK,EACL,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,wBAAwB,GACzB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAChE,YAAY,EACV,UAAU,EACV,aAAa,EACb,mBAAmB,GACpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9D,YAAY,EAAE,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,eAAe,EACf,sBAAsB,EACtB,mBAAmB,EACnB,WAAW,EACX,WAAW,GACZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,WAAW,EACX,QAAQ,EACR,oBAAoB,EACpB,aAAa,EACb,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,cAAc,EACd,WAAW,EACX,IAAI,EACJ,UAAU,EACV,YAAY,GACb,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EACL,eAAe,EACf,6BAA6B,EAC7B,kBAAkB,EAClB,eAAe,EACf,2BAA2B,EAC3B,mBAAmB,GACpB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,iBAAiB,EACjB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC5D,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACzE,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,EACf,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,WAAW,EACX,SAAS,EACT,kBAAkB,EAClB,YAAY,EACZ,mBAAmB,EACnB,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,WAAW,EACX,wBAAwB,GACzB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC1E,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChF,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,kBAAkB,EAClB,oBAAoB,EACpB,eAAe,EACf,sBAAsB,EACtB,yBAAyB,GAC1B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,oBAAoB,EACpB,uBAAuB,EACvB,yBAAyB,GAC1B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,aAAa,EACb,aAAa,EACb,YAAY,EACZ,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,mBAAmB,EACnB,WAAW,EACX,SAAS,EACT,cAAc,EACd,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,yBAAyB,EACzB,mBAAmB,EACnB,YAAY,EACZ,aAAa,EACb,cAAc,EACd,sBAAsB,EACtB,uBAAuB,EACvB,kBAAkB,EAClB,kBAAkB,EAClB,uBAAuB,EACvB,aAAa,EACb,iBAAiB,EACjB,qBAAqB,EACrB,aAAa,EACb,YAAY,GACb,MAAM,UAAU,CAAC;AAClB,YAAY,EACV,sBAAsB,EACtB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,EACtB,uBAAuB,EACvB,SAAS,GACV,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACnB,iBAAiB,EACjB,uBAAuB,EACvB,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,EAChB,WAAW,GACZ,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,WAAW,EACX,aAAa,EACb,YAAY,EACZ,yBAAyB,GAC1B,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,kBAAkB,EAClB,SAAS,EACT,cAAc,EACd,iBAAiB,EACjB,OAAO,EACP,UAAU,EACV,UAAU,EACV,oBAAoB,EACpB,eAAe,GAChB,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,UAAU,EACV,aAAa,EACb,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,SAAS,EACT,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,eAAe,GAChB,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,SAAS,EACT,SAAS,EACT,WAAW,EACX,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,gCAAgC,EAChC,6BAA6B,EAC7B,2BAA2B,EAC3B,oBAAoB,EACpB,8BAA8B,EAC9B,iBAAiB,EACjB,mBAAmB,EACnB,yBAAyB,EACzB,6BAA6B,EAC7B,gBAAgB,EAChB,wBAAwB,EACxB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,EACd,mBAAmB,EACnB,yBAAyB,GAC1B,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,eAAe,EACf,SAAS,EACT,oBAAoB,EACpB,0BAA0B,EAC1B,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,EACf,eAAe,EACf,cAAc,EACd,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvD,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,YAAY,EACV,wBAAwB,EACxB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,YAAY,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,SAAS,EACT,WAAW,GACZ,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACX,cAAc,GACf,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,YAAY,EACZ,aAAa,EACb,eAAe,EACf,oBAAoB,EACpB,kBAAkB,EAClB,SAAS,EACT,aAAa,EACb,WAAW,EACX,WAAW,EACX,WAAW,EACX,YAAY,GACb,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,uBAAuB,EACvB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,sBAAsB,EACtB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -342,7 +342,7 @@ function syncBlocks(messages, state) {
|
|
|
342
342
|
// src/config.ts
|
|
343
343
|
function defaultConfig(modelContextLimit, overrides = {}) {
|
|
344
344
|
const base = {
|
|
345
|
-
tiers: { enabled: true, tier2Trigger:
|
|
345
|
+
tiers: { enabled: true, tier2Trigger: 1e3, tier3Trigger: 2e3 },
|
|
346
346
|
nudge: {
|
|
347
347
|
maxContextLimitPct: 0.75,
|
|
348
348
|
minContextLimitPct: 0.45,
|
|
@@ -1175,107 +1175,8 @@ var RETRIEVE_TOOL_RESPONSES = {
|
|
|
1175
1175
|
parameters: RETRIEVE_PARAMETERS
|
|
1176
1176
|
};
|
|
1177
1177
|
|
|
1178
|
-
// src/rules.ts
|
|
1179
|
-
var RULE_TOOL_NAME = "acp_rule";
|
|
1180
|
-
var DEFAULT_RULE_LIMITS = Object.freeze({
|
|
1181
|
-
maxRules: 50,
|
|
1182
|
-
maxRuleChars: 300
|
|
1183
|
-
});
|
|
1184
|
-
var RULES_USAGE_PROMPT = [
|
|
1185
|
-
"Use the acp_rule tool to record short, principle-level reminders that must survive context compression:",
|
|
1186
|
-
"- behavioral corrections the user has had to repeat more than once,",
|
|
1187
|
-
"- project invariants the user explicitly asked you to remember,",
|
|
1188
|
-
"- pitfalls you ran into once and must not run into again.",
|
|
1189
|
-
"Rules are re-injected into the system prompt every turn. Omit the text argument to list recorded rules."
|
|
1190
|
-
].join("\n");
|
|
1191
|
-
function listRules(state) {
|
|
1192
|
-
return state.rules ?? [];
|
|
1193
|
-
}
|
|
1194
|
-
function resolveRuleLimits(config) {
|
|
1195
|
-
return {
|
|
1196
|
-
maxRules: config?.rules?.maxRules ?? DEFAULT_RULE_LIMITS.maxRules,
|
|
1197
|
-
maxRuleChars: config?.rules?.maxRuleChars ?? DEFAULT_RULE_LIMITS.maxRuleChars
|
|
1198
|
-
};
|
|
1199
|
-
}
|
|
1200
|
-
var RULE_ID_RE = /^rule(\d+)$/;
|
|
1201
|
-
function highestRuleNumber(state) {
|
|
1202
|
-
let highest = 0;
|
|
1203
|
-
for (const rule of state.rules ?? []) {
|
|
1204
|
-
const match = RULE_ID_RE.exec(rule.id);
|
|
1205
|
-
if (match) highest = Math.max(highest, Number(match[1]));
|
|
1206
|
-
}
|
|
1207
|
-
return highest;
|
|
1208
|
-
}
|
|
1209
|
-
function allocateRuleId(state) {
|
|
1210
|
-
return `rule${Math.max(state.nextRuleId ?? 1, highestRuleNumber(state) + 1)}`;
|
|
1211
|
-
}
|
|
1212
|
-
function addRule(state, text, limits = {}) {
|
|
1213
|
-
const maxRules = limits.maxRules ?? DEFAULT_RULE_LIMITS.maxRules;
|
|
1214
|
-
const maxRuleChars = limits.maxRuleChars ?? DEFAULT_RULE_LIMITS.maxRuleChars;
|
|
1215
|
-
const trimmed = (text ?? "").trim();
|
|
1216
|
-
if (!trimmed) {
|
|
1217
|
-
return {
|
|
1218
|
-
ok: false,
|
|
1219
|
-
error: "rule text is empty \u2014 provide the reminder to record."
|
|
1220
|
-
};
|
|
1221
|
-
}
|
|
1222
|
-
if (trimmed.length > maxRuleChars) {
|
|
1223
|
-
return {
|
|
1224
|
-
ok: false,
|
|
1225
|
-
error: `${trimmed.length} chars exceeds the ${maxRuleChars}-char limit \u2014 keep rules short and principle-level.`
|
|
1226
|
-
};
|
|
1227
|
-
}
|
|
1228
|
-
const rules = listRules(state);
|
|
1229
|
-
const duplicate = rules.find((rule2) => rule2.text === trimmed);
|
|
1230
|
-
if (duplicate) {
|
|
1231
|
-
return {
|
|
1232
|
-
ok: false,
|
|
1233
|
-
error: `identical rule already exists (${duplicate.id}) \u2014 no change.`
|
|
1234
|
-
};
|
|
1235
|
-
}
|
|
1236
|
-
if (rules.length >= maxRules) {
|
|
1237
|
-
return {
|
|
1238
|
-
ok: false,
|
|
1239
|
-
error: `rule limit reached (${maxRules}) \u2014 remove or clear outdated rules first.`
|
|
1240
|
-
};
|
|
1241
|
-
}
|
|
1242
|
-
const next = Math.max(state.nextRuleId ?? 1, highestRuleNumber(state) + 1);
|
|
1243
|
-
const rule = { id: `rule${next}`, text: trimmed };
|
|
1244
|
-
state.rules = [...rules, rule];
|
|
1245
|
-
state.nextRuleId = next + 1;
|
|
1246
|
-
return { ok: true, rule };
|
|
1247
|
-
}
|
|
1248
|
-
function removeRule(state, id) {
|
|
1249
|
-
const rules = listRules(state);
|
|
1250
|
-
const target = rules.find((rule) => rule.id === id.trim());
|
|
1251
|
-
if (!target) {
|
|
1252
|
-
return {
|
|
1253
|
-
ok: false,
|
|
1254
|
-
error: `no rule with id "${id.trim()}" \u2014 list current rules first (omit the text argument).`
|
|
1255
|
-
};
|
|
1256
|
-
}
|
|
1257
|
-
state.rules = rules.filter((rule) => rule.id !== target.id);
|
|
1258
|
-
return { ok: true, rule: target };
|
|
1259
|
-
}
|
|
1260
|
-
function clearRules(state) {
|
|
1261
|
-
const count = listRules(state).length;
|
|
1262
|
-
state.rules = [];
|
|
1263
|
-
return { ok: true, count };
|
|
1264
|
-
}
|
|
1265
|
-
function formatRulesForPrompt(state) {
|
|
1266
|
-
const rules = listRules(state);
|
|
1267
|
-
if (rules.length === 0) return "";
|
|
1268
|
-
return [
|
|
1269
|
-
"# Persistent rules (recorded via acp_rule \u2014 kept across compression)",
|
|
1270
|
-
...rules.map((rule) => `- [${rule.id}] ${rule.text}`)
|
|
1271
|
-
].join("\n");
|
|
1272
|
-
}
|
|
1273
|
-
function formatRulesList(rules) {
|
|
1274
|
-
return rules.map((rule, i) => `${i + 1}. [${rule.id}] ${rule.text}`).join("\n");
|
|
1275
|
-
}
|
|
1276
|
-
|
|
1277
1178
|
// src/protected.ts
|
|
1278
|
-
var ALWAYS_PROTECTED_TOOLS = ["compress"];
|
|
1179
|
+
var ALWAYS_PROTECTED_TOOLS = ["compress", "acp_rule"];
|
|
1279
1180
|
var NEVER_PRESERVE_RECENT_TOOLS = [
|
|
1280
1181
|
"decompress",
|
|
1281
1182
|
"search_context",
|
|
@@ -1369,57 +1270,6 @@ function hasMediaPayload(msg) {
|
|
|
1369
1270
|
function isObjWith(v, key, value) {
|
|
1370
1271
|
return typeof v === "object" && v !== null && v[key] === value;
|
|
1371
1272
|
}
|
|
1372
|
-
var RULE_RECORD_RESULT_RE = /^Recorded (rule\d+): /;
|
|
1373
|
-
var RULE_REMOVE_RESULT_RE = /^Removed (rule\d+): /;
|
|
1374
|
-
var RULE_CLEAR_RESULT_RE = /^Cleared \d+ rule\(s\)\./;
|
|
1375
|
-
function collectRulePairProtection(messages) {
|
|
1376
|
-
const callNameById = /* @__PURE__ */ new Map();
|
|
1377
|
-
for (const m of messages) {
|
|
1378
|
-
if (m.contentType === "tool-call" && m.toolCallId && m.toolName) {
|
|
1379
|
-
callNameById.set(m.toolCallId, m.toolName);
|
|
1380
|
-
}
|
|
1381
|
-
}
|
|
1382
|
-
const isRuleResult = (m) => m.contentType === "tool-result" && (m.toolName === RULE_TOOL_NAME || m.toolCallId != null && callNameById.get(m.toolCallId) === RULE_TOOL_NAME);
|
|
1383
|
-
const live = /* @__PURE__ */ new Set();
|
|
1384
|
-
const malformedMsgIds = /* @__PURE__ */ new Set();
|
|
1385
|
-
const callIds = /* @__PURE__ */ new Set();
|
|
1386
|
-
for (const m of messages) {
|
|
1387
|
-
if (!isRuleResult(m)) continue;
|
|
1388
|
-
const text = m.text ?? "";
|
|
1389
|
-
const removedId = RULE_REMOVE_RESULT_RE.exec(text)?.[1];
|
|
1390
|
-
if (removedId !== void 0) {
|
|
1391
|
-
live.delete(removedId);
|
|
1392
|
-
continue;
|
|
1393
|
-
}
|
|
1394
|
-
if (RULE_CLEAR_RESULT_RE.test(text)) {
|
|
1395
|
-
live.clear();
|
|
1396
|
-
continue;
|
|
1397
|
-
}
|
|
1398
|
-
const recordedId = RULE_RECORD_RESULT_RE.exec(text)?.[1];
|
|
1399
|
-
if (recordedId !== void 0) {
|
|
1400
|
-
live.add(recordedId);
|
|
1401
|
-
} else if (text.startsWith("Recorded ")) {
|
|
1402
|
-
malformedMsgIds.add(m.id);
|
|
1403
|
-
if (m.toolCallId) callIds.add(m.toolCallId);
|
|
1404
|
-
}
|
|
1405
|
-
}
|
|
1406
|
-
const msgIds = new Set(malformedMsgIds);
|
|
1407
|
-
for (const m of messages) {
|
|
1408
|
-
if (!isRuleResult(m)) continue;
|
|
1409
|
-
const recordedId = RULE_RECORD_RESULT_RE.exec(m.text ?? "")?.[1];
|
|
1410
|
-
if (recordedId === void 0 || !live.has(recordedId)) continue;
|
|
1411
|
-
if (m.toolCallId) callIds.add(m.toolCallId);
|
|
1412
|
-
else msgIds.add(m.id);
|
|
1413
|
-
}
|
|
1414
|
-
return { callIds, msgIds };
|
|
1415
|
-
}
|
|
1416
|
-
function isMessageRuleProtected(msg, protection) {
|
|
1417
|
-
if (msg.contentType !== "tool-call" && msg.contentType !== "tool-result") {
|
|
1418
|
-
return false;
|
|
1419
|
-
}
|
|
1420
|
-
if (protection.msgIds.has(msg.id)) return true;
|
|
1421
|
-
return msg.toolCallId != null && protection.callIds.has(msg.toolCallId);
|
|
1422
|
-
}
|
|
1423
1273
|
|
|
1424
1274
|
// src/content-store.ts
|
|
1425
1275
|
import { createHash } from "crypto";
|
|
@@ -1597,7 +1447,6 @@ function storeLargeResults(input) {
|
|
|
1597
1447
|
callById.set(message.toolCallId, message);
|
|
1598
1448
|
}
|
|
1599
1449
|
}
|
|
1600
|
-
const ruleProt = collectRulePairProtection(input.messages);
|
|
1601
1450
|
const updated = input.messages.map((message) => {
|
|
1602
1451
|
if (message.contentType !== "tool-result") return message;
|
|
1603
1452
|
const text = message.text ?? "";
|
|
@@ -1611,8 +1460,7 @@ function storeLargeResults(input) {
|
|
|
1611
1460
|
if (toolName && cfg.excludeTools.some((pattern) => matchToolPattern(toolName, pattern))) {
|
|
1612
1461
|
return message;
|
|
1613
1462
|
}
|
|
1614
|
-
if (isMessageProtected(message, input.config)
|
|
1615
|
-
return message;
|
|
1463
|
+
if (isMessageProtected(message, input.config)) return message;
|
|
1616
1464
|
const tokens = input.countTokens(text);
|
|
1617
1465
|
if (tokens < cfg.minToolTokens) return message;
|
|
1618
1466
|
const ref = refForRaw(input.state.messageRefs, message.id);
|
|
@@ -2177,14 +2025,13 @@ function isAcpOrConfiguredTool(toolName, cfg) {
|
|
|
2177
2025
|
if (toolName === cfg.toolName) return true;
|
|
2178
2026
|
return ACP_TOOL_NAMES.has(toolName);
|
|
2179
2027
|
}
|
|
2180
|
-
function isAbsorbCandidate(msg, config, latest
|
|
2028
|
+
function isAbsorbCandidate(msg, config, latest) {
|
|
2181
2029
|
if (msg.contentType !== "tool-result" || !msg.toolCallId) return false;
|
|
2182
2030
|
if (isStoredPlaceholderText(msg.text ?? "")) return false;
|
|
2183
2031
|
const cfg = resolveAbsorbConfig(config);
|
|
2184
2032
|
if (isAcpOrConfiguredTool(msg.toolName, cfg)) return false;
|
|
2185
2033
|
if (isMessageProtected(msg, config)) return false;
|
|
2186
2034
|
if (latest && isMessageLatestProtected(msg, latest)) return false;
|
|
2187
|
-
if (rule && isMessageRuleProtected(msg, rule)) return false;
|
|
2188
2035
|
for (const pattern of cfg.excludeTools) {
|
|
2189
2036
|
if (msg.toolName && matchToolPattern(msg.toolName, pattern)) return false;
|
|
2190
2037
|
}
|
|
@@ -2213,9 +2060,8 @@ function appendAbsorbPrompts(messages, state, config, tokenCount, countTokens) {
|
|
|
2213
2060
|
}
|
|
2214
2061
|
let promptedCount = 0;
|
|
2215
2062
|
const latest = collectLatestProtected(messages, config);
|
|
2216
|
-
const ruleProt = collectRulePairProtection(messages);
|
|
2217
2063
|
const out = messages.map((msg) => {
|
|
2218
|
-
if (!isAbsorbCandidate(msg, config, latest
|
|
2064
|
+
if (!isAbsorbCandidate(msg, config, latest)) return msg;
|
|
2219
2065
|
if (absorbedIds.has(msg.id)) return msg;
|
|
2220
2066
|
const text = msg.text ?? "";
|
|
2221
2067
|
if (text.includes(ABSORB_PROMPT_MARKER)) return msg;
|
|
@@ -2324,7 +2170,7 @@ function applyAbsorb(input) {
|
|
|
2324
2170
|
if (isMessageProtected(target, input.config) || isMessageLatestProtected(
|
|
2325
2171
|
target,
|
|
2326
2172
|
collectLatestProtected(input.messages, input.config)
|
|
2327
|
-
)
|
|
2173
|
+
)) {
|
|
2328
2174
|
return {
|
|
2329
2175
|
state: input.state,
|
|
2330
2176
|
ok: false,
|
|
@@ -3659,9 +3505,8 @@ function applyCrushToMessages(messages, config, tokenCount, countTokens) {
|
|
|
3659
3505
|
let distilledCount = 0;
|
|
3660
3506
|
let changed = false;
|
|
3661
3507
|
const out = [];
|
|
3662
|
-
const ruleProt = collectRulePairProtection(messages);
|
|
3663
3508
|
for (const msg of messages) {
|
|
3664
|
-
if (!isAbsorbCandidate(msg, config
|
|
3509
|
+
if (!isAbsorbCandidate(msg, config)) {
|
|
3665
3510
|
out.push(msg);
|
|
3666
3511
|
continue;
|
|
3667
3512
|
}
|
|
@@ -4158,7 +4003,6 @@ function buildCompressibleRanges(messages, state, config, protectedZoneRefs, cou
|
|
|
4158
4003
|
const protectedCallIds = collectProtectedToolCallIds(messages, config);
|
|
4159
4004
|
const latest = collectLatestProtected(messages, config);
|
|
4160
4005
|
for (const id of latest.callIds) protectedCallIds.add(id);
|
|
4161
|
-
const ruleProt = collectRulePairProtection(messages);
|
|
4162
4006
|
let skipSinceCompressible = false;
|
|
4163
4007
|
let skipSinceProtected = false;
|
|
4164
4008
|
let msgIndex = -1;
|
|
@@ -4176,7 +4020,7 @@ function buildCompressibleRanges(messages, state, config, protectedZoneRefs, cou
|
|
|
4176
4020
|
skipSinceProtected = true;
|
|
4177
4021
|
continue;
|
|
4178
4022
|
}
|
|
4179
|
-
if (isMessageProtectedWithPairing(msg, config, protectedCallIds) || isMessageLatestProtected(msg, latest)
|
|
4023
|
+
if (isMessageProtectedWithPairing(msg, config, protectedCallIds) || isMessageLatestProtected(msg, latest)) {
|
|
4180
4024
|
protectedMsgs.push({
|
|
4181
4025
|
ref,
|
|
4182
4026
|
gapBefore: skipSinceProtected,
|
|
@@ -4700,8 +4544,7 @@ var assignRefsNode = {
|
|
|
4700
4544
|
run(io, ctx) {
|
|
4701
4545
|
const hasProtection = ctx.config.protectedTools.length > 0 || !!ctx.config.isToolProtected || (ctx.config.protectedLatestTools?.length ?? 0) > 0;
|
|
4702
4546
|
const latest = hasProtection ? collectLatestProtected(io.messages, ctx.config) : void 0;
|
|
4703
|
-
const
|
|
4704
|
-
const protectedFn = (m) => hasMediaPayload(m) || isMessageRuleProtected(m, ruleProt) || (hasProtection ? isMessageProtected(m, ctx.config) || (latest ? isMessageLatestProtected(m, latest) : false) : false);
|
|
4547
|
+
const protectedFn = (m) => hasMediaPayload(m) || (hasProtection ? isMessageProtected(m, ctx.config) || (latest ? isMessageLatestProtected(m, latest) : false) : false);
|
|
4705
4548
|
const refResult = assignRefs(io.messages, {
|
|
4706
4549
|
existing: io.state.messageRefs,
|
|
4707
4550
|
nextIndex: highestUsedIndex(io.state.messageRefs) + 1,
|
|
@@ -5150,7 +4993,6 @@ function filterProtectedToolMessages(directMessageIds, messages, config) {
|
|
|
5150
4993
|
const removedIds = /* @__PURE__ */ new Set();
|
|
5151
4994
|
const latest = collectLatestProtected(messages, config);
|
|
5152
4995
|
for (const id of latest.callIds) protectedCallIds.add(id);
|
|
5153
|
-
const ruleProt = collectRulePairProtection(messages);
|
|
5154
4996
|
for (const msg of messages) {
|
|
5155
4997
|
if (isMessageProtected(msg, config) && msg.toolCallId) {
|
|
5156
4998
|
protectedCallIds.add(msg.toolCallId);
|
|
@@ -5159,7 +5001,7 @@ function filterProtectedToolMessages(directMessageIds, messages, config) {
|
|
|
5159
5001
|
for (const id of directMessageIds) {
|
|
5160
5002
|
const msg = messages.find((m) => m.id === id);
|
|
5161
5003
|
if (!msg) continue;
|
|
5162
|
-
if (hasMediaPayload(msg) || isMessageProtected(msg, config) || isMessageLatestProtected(msg, latest)
|
|
5004
|
+
if (hasMediaPayload(msg) || isMessageProtected(msg, config) || isMessageLatestProtected(msg, latest)) {
|
|
5163
5005
|
removedIds.add(id);
|
|
5164
5006
|
if (msg.toolCallId) protectedCallIds.add(msg.toolCallId);
|
|
5165
5007
|
}
|
|
@@ -5265,9 +5107,8 @@ function decideNudge(input) {
|
|
|
5265
5107
|
const growthReady = firstSightMassReady || growthSinceReference >= growthFloor;
|
|
5266
5108
|
const t2Count = tiers[2]?.targetBlocks.length ?? 0;
|
|
5267
5109
|
const t3Count = tiers[3]?.targetBlocks.length ?? 0;
|
|
5268
|
-
const
|
|
5269
|
-
const
|
|
5270
|
-
const t3CountReady = t3Count >= config.tiers.tier3Trigger && usage >= tierCountUsageFloor;
|
|
5110
|
+
const t2CountReady = t2Count >= config.tiers.tier2Trigger;
|
|
5111
|
+
const t3CountReady = t3Count >= config.tiers.tier3Trigger;
|
|
5271
5112
|
if (pressure) {
|
|
5272
5113
|
const candidates = [1];
|
|
5273
5114
|
if (config.tiers.enabled) {
|
|
@@ -5319,13 +5160,12 @@ function decideNudge(input) {
|
|
|
5319
5160
|
} else {
|
|
5320
5161
|
const tiersList = [1, 2, 3];
|
|
5321
5162
|
const eligible = tiersList.filter((t) => config.tiers.enabled || t === 1);
|
|
5322
|
-
const
|
|
5323
|
-
const countReady = (t) => countReadyUngated(t) && usage >= tierCountUsageFloor;
|
|
5163
|
+
const countReady = (t) => t === 2 ? t2Count >= config.tiers.tier2Trigger : t === 3 ? t3Count >= config.tiers.tier3Trigger : false;
|
|
5324
5164
|
const ready = eligible.filter((t) => (tiers[t]?.pending ?? 0) >= nudgeGrowthTokens).map((t) => `T${t} ${tiers[t].pending}`);
|
|
5325
5165
|
const readyCount = eligible.filter(
|
|
5326
|
-
(t) => (tiers[t]?.pending ?? 0) < nudgeGrowthTokens &&
|
|
5166
|
+
(t) => (tiers[t]?.pending ?? 0) < nudgeGrowthTokens && countReady(t)
|
|
5327
5167
|
).map(
|
|
5328
|
-
(t) => `T${t} ${t === 2 ? t2Count : t3Count} blocks (count
|
|
5168
|
+
(t) => `T${t} ${t === 2 ? t2Count : t3Count} blocks (count)`
|
|
5329
5169
|
);
|
|
5330
5170
|
const readyAll = [...ready, ...readyCount];
|
|
5331
5171
|
const readyHint = readyAll.length > 0 ? `, ready: ${readyAll.join(", ")}` : "";
|
|
@@ -6619,6 +6459,105 @@ function matchSession(sessions, selector, labelOf) {
|
|
|
6619
6459
|
return sessions.filter((s) => s.id.startsWith(selector) || (labelOf(s) ?? "").startsWith(selector));
|
|
6620
6460
|
}
|
|
6621
6461
|
|
|
6462
|
+
// src/rules.ts
|
|
6463
|
+
var RULE_TOOL_NAME = "acp_rule";
|
|
6464
|
+
var DEFAULT_RULE_LIMITS = Object.freeze({
|
|
6465
|
+
maxRules: 50,
|
|
6466
|
+
maxRuleChars: 300
|
|
6467
|
+
});
|
|
6468
|
+
var RULES_USAGE_PROMPT = [
|
|
6469
|
+
"Use the acp_rule tool to record short, principle-level reminders that must survive context compression:",
|
|
6470
|
+
"- behavioral corrections the user has had to repeat more than once,",
|
|
6471
|
+
"- project invariants the user explicitly asked you to remember,",
|
|
6472
|
+
"- pitfalls you ran into once and must not run into again.",
|
|
6473
|
+
"Rules are re-injected into the system prompt every turn. Omit the text argument to list recorded rules."
|
|
6474
|
+
].join("\n");
|
|
6475
|
+
function listRules(state) {
|
|
6476
|
+
return state.rules ?? [];
|
|
6477
|
+
}
|
|
6478
|
+
function resolveRuleLimits(config) {
|
|
6479
|
+
return {
|
|
6480
|
+
maxRules: config?.rules?.maxRules ?? DEFAULT_RULE_LIMITS.maxRules,
|
|
6481
|
+
maxRuleChars: config?.rules?.maxRuleChars ?? DEFAULT_RULE_LIMITS.maxRuleChars
|
|
6482
|
+
};
|
|
6483
|
+
}
|
|
6484
|
+
var RULE_ID_RE = /^rule(\d+)$/;
|
|
6485
|
+
function highestRuleNumber(state) {
|
|
6486
|
+
let highest = 0;
|
|
6487
|
+
for (const rule of state.rules ?? []) {
|
|
6488
|
+
const match = RULE_ID_RE.exec(rule.id);
|
|
6489
|
+
if (match) highest = Math.max(highest, Number(match[1]));
|
|
6490
|
+
}
|
|
6491
|
+
return highest;
|
|
6492
|
+
}
|
|
6493
|
+
function allocateRuleId(state) {
|
|
6494
|
+
return `rule${Math.max(state.nextRuleId ?? 1, highestRuleNumber(state) + 1)}`;
|
|
6495
|
+
}
|
|
6496
|
+
function addRule(state, text, limits = {}) {
|
|
6497
|
+
const maxRules = limits.maxRules ?? DEFAULT_RULE_LIMITS.maxRules;
|
|
6498
|
+
const maxRuleChars = limits.maxRuleChars ?? DEFAULT_RULE_LIMITS.maxRuleChars;
|
|
6499
|
+
const trimmed = (text ?? "").trim();
|
|
6500
|
+
if (!trimmed) {
|
|
6501
|
+
return {
|
|
6502
|
+
ok: false,
|
|
6503
|
+
error: "rule text is empty \u2014 provide the reminder to record."
|
|
6504
|
+
};
|
|
6505
|
+
}
|
|
6506
|
+
if (trimmed.length > maxRuleChars) {
|
|
6507
|
+
return {
|
|
6508
|
+
ok: false,
|
|
6509
|
+
error: `${trimmed.length} chars exceeds the ${maxRuleChars}-char limit \u2014 keep rules short and principle-level.`
|
|
6510
|
+
};
|
|
6511
|
+
}
|
|
6512
|
+
const rules = listRules(state);
|
|
6513
|
+
const duplicate = rules.find((rule2) => rule2.text === trimmed);
|
|
6514
|
+
if (duplicate) {
|
|
6515
|
+
return {
|
|
6516
|
+
ok: false,
|
|
6517
|
+
error: `identical rule already exists (${duplicate.id}) \u2014 no change.`
|
|
6518
|
+
};
|
|
6519
|
+
}
|
|
6520
|
+
if (rules.length >= maxRules) {
|
|
6521
|
+
return {
|
|
6522
|
+
ok: false,
|
|
6523
|
+
error: `rule limit reached (${maxRules}) \u2014 remove or clear outdated rules first.`
|
|
6524
|
+
};
|
|
6525
|
+
}
|
|
6526
|
+
const next = Math.max(state.nextRuleId ?? 1, highestRuleNumber(state) + 1);
|
|
6527
|
+
const rule = { id: `rule${next}`, text: trimmed };
|
|
6528
|
+
state.rules = [...rules, rule];
|
|
6529
|
+
state.nextRuleId = next + 1;
|
|
6530
|
+
return { ok: true, rule };
|
|
6531
|
+
}
|
|
6532
|
+
function removeRule(state, id) {
|
|
6533
|
+
const rules = listRules(state);
|
|
6534
|
+
const target = rules.find((rule) => rule.id === id.trim());
|
|
6535
|
+
if (!target) {
|
|
6536
|
+
return {
|
|
6537
|
+
ok: false,
|
|
6538
|
+
error: `no rule with id "${id.trim()}" \u2014 list current rules first (omit the text argument).`
|
|
6539
|
+
};
|
|
6540
|
+
}
|
|
6541
|
+
state.rules = rules.filter((rule) => rule.id !== target.id);
|
|
6542
|
+
return { ok: true, rule: target };
|
|
6543
|
+
}
|
|
6544
|
+
function clearRules(state) {
|
|
6545
|
+
const count = listRules(state).length;
|
|
6546
|
+
state.rules = [];
|
|
6547
|
+
return { ok: true, count };
|
|
6548
|
+
}
|
|
6549
|
+
function formatRulesForPrompt(state) {
|
|
6550
|
+
const rules = listRules(state);
|
|
6551
|
+
if (rules.length === 0) return "";
|
|
6552
|
+
return [
|
|
6553
|
+
"# Persistent rules (recorded via acp_rule \u2014 kept across compression)",
|
|
6554
|
+
...rules.map((rule) => `- [${rule.id}] ${rule.text}`)
|
|
6555
|
+
].join("\n");
|
|
6556
|
+
}
|
|
6557
|
+
function formatRulesList(rules) {
|
|
6558
|
+
return rules.map((rule, i) => `${i + 1}. [${rule.id}] ${rule.text}`).join("\n");
|
|
6559
|
+
}
|
|
6560
|
+
|
|
6622
6561
|
// src/image-compress.ts
|
|
6623
6562
|
var DEFAULT_IMAGE_COMPRESSION_CONFIG = {
|
|
6624
6563
|
enabled: false,
|
|
@@ -8056,7 +7995,6 @@ export {
|
|
|
8056
7995
|
codeTrimPlugin,
|
|
8057
7996
|
collectBlockContent,
|
|
8058
7997
|
collectLatestProtected,
|
|
8059
|
-
collectRulePairProtection,
|
|
8060
7998
|
computeFoldEconomics,
|
|
8061
7999
|
contentStoreStats,
|
|
8062
8000
|
countMessageTokens,
|
|
@@ -8108,7 +8046,6 @@ export {
|
|
|
8108
8046
|
isImageFullRestored,
|
|
8109
8047
|
isMessageLatestProtected,
|
|
8110
8048
|
isMessageProtected,
|
|
8111
|
-
isMessageRuleProtected,
|
|
8112
8049
|
isRenderedSummaryMessage,
|
|
8113
8050
|
isRetrievedMessage,
|
|
8114
8051
|
isStoredPlaceholderText,
|