acp-kernel 0.0.38 → 0.0.40
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/boundaries.d.ts +1 -0
- package/dist/boundaries.d.ts.map +1 -1
- package/dist/chunk-DPH62BGM.js +70 -0
- package/dist/chunk-DPH62BGM.js.map +1 -0
- package/dist/compress.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +33 -63
- package/dist/index.js.map +1 -1
- package/dist/persist/index.d.ts +19 -0
- package/dist/persist/index.d.ts.map +1 -0
- package/dist/persist/index.js +335 -0
- package/dist/persist/index.js.map +1 -0
- package/dist/persist/state-merge.d.ts +11 -0
- package/dist/persist/state-merge.d.ts.map +1 -0
- package/dist/persist/store.d.ts +136 -0
- package/dist/persist/store.d.ts.map +1 -0
- package/package.json +5 -1
package/dist/boundaries.d.ts
CHANGED
|
@@ -43,6 +43,7 @@ export declare function resolveBoundaries(input: ResolveBoundariesInput): Resolv
|
|
|
43
43
|
* promoted (dog/billion-context-pi#195).
|
|
44
44
|
*/
|
|
45
45
|
export declare function visibleBlockAnchor(block: CompressionBlock, indexByMessageId: Map<string, number>): number | null;
|
|
46
|
+
export declare function blockVisibleInRange(block: CompressionBlock, indexByMessageId: Map<string, number>, startIndex: number, endIndex: number): boolean;
|
|
46
47
|
export declare function earliestIndexOfIds(ids: string[], indexByMessageId: Map<string, number>): number | null;
|
|
47
48
|
export declare function toResolvedBoundary(range: ResolvedRange): ResolvedBoundary;
|
|
48
49
|
//# sourceMappingURL=boundaries.d.ts.map
|
package/dist/boundaries.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"boundaries.d.ts","sourceRoot":"","sources":["../src/boundaries.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EACX,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,OAAO,CAAC;AAE/C,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,YAAY,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;CACb;AAKD,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAehE;AAED;;;;;;GAMG;AACH,qBAAa,qBAAsB,SAAQ,KAAK;IAC9C,QAAQ,CAAC,IAAI,wBAAwB;IACrC,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,UAAU,CAAC;IACtC,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,KAAK,CAAC;gBAGjC,IAAI,EAAE,SAAS,GAAG,UAAU,EAC5B,QAAQ,EAAE,OAAO,GAAG,KAAK,EACzB,OAAO,EAAE,MAAM;CAQlB;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,KAAK,EAAE,gBAAgB,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,YAAY,EAAE,YAAY,CAAC;IAC3B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,iBAAiB,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,sBAAsB,GAC5B,aAAa,
|
|
1
|
+
{"version":3,"file":"boundaries.d.ts","sourceRoot":"","sources":["../src/boundaries.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EACX,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,OAAO,CAAC;AAE/C,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,YAAY,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;CACb;AAKD,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAehE;AAED;;;;;;GAMG;AACH,qBAAa,qBAAsB,SAAQ,KAAK;IAC9C,QAAQ,CAAC,IAAI,wBAAwB;IACrC,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,UAAU,CAAC;IACtC,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,KAAK,CAAC;gBAGjC,IAAI,EAAE,SAAS,GAAG,UAAU,EAC5B,QAAQ,EAAE,OAAO,GAAG,KAAK,EACzB,OAAO,EAAE,MAAM;CAQlB;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,KAAK,EAAE,gBAAgB,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,YAAY,EAAE,YAAY,CAAC;IAC3B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,iBAAiB,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,sBAAsB,GAC5B,aAAa,CAuEf;AAgJD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,gBAAgB,EACvB,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GACpC,MAAM,GAAG,IAAI,CAIf;AAOD,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,gBAAgB,EACvB,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EACrC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf,OAAO,CAcT;AAED,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,MAAM,EAAE,EACb,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GACpC,MAAM,GAAG,IAAI,CASf;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,aAAa,GAAG,gBAAgB,CAMzE"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
// src/state.ts
|
|
2
|
+
function createInitialState() {
|
|
3
|
+
return {
|
|
4
|
+
blocks: [],
|
|
5
|
+
messageRefs: { byRaw: {}, byRef: {} },
|
|
6
|
+
tokenSnapshot: {},
|
|
7
|
+
nudge: {
|
|
8
|
+
lastPerMessageNudgeTokens: 0,
|
|
9
|
+
lastNudgeShownTokens: 0,
|
|
10
|
+
baselineTokens: 0,
|
|
11
|
+
anchors: {},
|
|
12
|
+
lastShownByTier: {}
|
|
13
|
+
},
|
|
14
|
+
stats: { tokensCompressed: 0, compressionCount: 0 },
|
|
15
|
+
nextBlockId: 1,
|
|
16
|
+
nextRunId: 1
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
function allocateBlockId(state) {
|
|
20
|
+
const id = state.nextBlockId;
|
|
21
|
+
state.nextBlockId = Math.max(1, id) + 1;
|
|
22
|
+
return `b${id}`;
|
|
23
|
+
}
|
|
24
|
+
function allocateRunId(state) {
|
|
25
|
+
const id = state.nextRunId;
|
|
26
|
+
state.nextRunId = Math.max(1, id) + 1;
|
|
27
|
+
return `r${id}`;
|
|
28
|
+
}
|
|
29
|
+
function blockById(state, blockId) {
|
|
30
|
+
return state.blocks.find((block) => block.blockId === blockId);
|
|
31
|
+
}
|
|
32
|
+
function activeBlocks(state) {
|
|
33
|
+
return state.blocks.filter((block) => block.active);
|
|
34
|
+
}
|
|
35
|
+
function coveredMessageIds(state) {
|
|
36
|
+
const covered = /* @__PURE__ */ new Set();
|
|
37
|
+
for (const block of state.blocks) {
|
|
38
|
+
if (!block.active) continue;
|
|
39
|
+
for (const id of block.effectiveMessageIds) covered.add(id);
|
|
40
|
+
}
|
|
41
|
+
return covered;
|
|
42
|
+
}
|
|
43
|
+
function highestActiveTier(state) {
|
|
44
|
+
let highest = 0;
|
|
45
|
+
for (const block of state.blocks) {
|
|
46
|
+
if (block.active && block.tier > highest) highest = block.tier;
|
|
47
|
+
}
|
|
48
|
+
return highest;
|
|
49
|
+
}
|
|
50
|
+
function advanceSurvival(state, promotionThreshold) {
|
|
51
|
+
for (const block of state.blocks) {
|
|
52
|
+
if (!block.active) continue;
|
|
53
|
+
block.survivedCount += 1;
|
|
54
|
+
if (block.survivedCount >= promotionThreshold) {
|
|
55
|
+
block.generation = "old";
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export {
|
|
61
|
+
createInitialState,
|
|
62
|
+
allocateBlockId,
|
|
63
|
+
allocateRunId,
|
|
64
|
+
blockById,
|
|
65
|
+
activeBlocks,
|
|
66
|
+
coveredMessageIds,
|
|
67
|
+
highestActiveTier,
|
|
68
|
+
advanceSurvival
|
|
69
|
+
};
|
|
70
|
+
//# sourceMappingURL=chunk-DPH62BGM.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 },\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,EAAE;AAAA,IAClD,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;AAahF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AASvD,OAAO,EAGL,KAAK,YAAY,EAElB,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;AA2BD,wBAAgB,UAAU,CAAC,KAAK,GAAE,KAAU,GAAG,eAAe,CA6T7D;
|
|
1
|
+
{"version":3,"file":"compress.d.ts","sourceRoot":"","sources":["../src/compress.ts"],"names":[],"mappings":"AAIA,OAAO,EAAkC,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAahF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AASvD,OAAO,EAGL,KAAK,YAAY,EAElB,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;AA2BD,wBAAgB,UAAU,CAAC,KAAK,GAAE,KAAU,GAAG,eAAe,CA6T7D;AAs2BD,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ export { defaultConfig, validateConfig } from "./config.js";
|
|
|
6
6
|
export { assignRefs, highestUsedIndex, emptyRefMap, indexToRef, refToIndex, refForRaw, rawForRef, BLOCKED_REF, } from "./refs.js";
|
|
7
7
|
export { prune, SUMMARY_HEADER, summaryMessageId, isSummaryMessageId, isRenderedSummaryMessage, } from "./prune.js";
|
|
8
8
|
export { syncBlocks } from "./sync.js";
|
|
9
|
-
export { resolveBoundaries, parseBoundary, BoundaryNotFoundError, visibleBlockAnchor, } from "./boundaries.js";
|
|
9
|
+
export { resolveBoundaries, parseBoundary, BoundaryNotFoundError, visibleBlockAnchor, blockVisibleInRange, } from "./boundaries.js";
|
|
10
10
|
export { defaultCountTokens, estimateTokensFast, createBpeTokenizer, } from "./tokenize.js";
|
|
11
11
|
export type { TokenCountFn } from "./tokenize.js";
|
|
12
12
|
export { renderNudgeText, formatRanges } from "./nudge-text.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,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,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -13,6 +13,16 @@ import {
|
|
|
13
13
|
resolvePrompts,
|
|
14
14
|
viableRanges
|
|
15
15
|
} from "./chunk-MWXUJVMN.js";
|
|
16
|
+
import {
|
|
17
|
+
activeBlocks,
|
|
18
|
+
advanceSurvival,
|
|
19
|
+
allocateBlockId,
|
|
20
|
+
allocateRunId,
|
|
21
|
+
blockById,
|
|
22
|
+
coveredMessageIds,
|
|
23
|
+
createInitialState,
|
|
24
|
+
highestActiveTier
|
|
25
|
+
} from "./chunk-DPH62BGM.js";
|
|
16
26
|
|
|
17
27
|
// src/refs.ts
|
|
18
28
|
var REF_WIDTH = 5;
|
|
@@ -88,65 +98,6 @@ function highestUsedIndex(map) {
|
|
|
88
98
|
return highest;
|
|
89
99
|
}
|
|
90
100
|
|
|
91
|
-
// src/state.ts
|
|
92
|
-
function createInitialState() {
|
|
93
|
-
return {
|
|
94
|
-
blocks: [],
|
|
95
|
-
messageRefs: { byRaw: {}, byRef: {} },
|
|
96
|
-
tokenSnapshot: {},
|
|
97
|
-
nudge: {
|
|
98
|
-
lastPerMessageNudgeTokens: 0,
|
|
99
|
-
lastNudgeShownTokens: 0,
|
|
100
|
-
baselineTokens: 0,
|
|
101
|
-
anchors: {},
|
|
102
|
-
lastShownByTier: {}
|
|
103
|
-
},
|
|
104
|
-
stats: { tokensCompressed: 0, compressionCount: 0 },
|
|
105
|
-
nextBlockId: 1,
|
|
106
|
-
nextRunId: 1
|
|
107
|
-
};
|
|
108
|
-
}
|
|
109
|
-
function allocateBlockId(state) {
|
|
110
|
-
const id = state.nextBlockId;
|
|
111
|
-
state.nextBlockId = Math.max(1, id) + 1;
|
|
112
|
-
return `b${id}`;
|
|
113
|
-
}
|
|
114
|
-
function allocateRunId(state) {
|
|
115
|
-
const id = state.nextRunId;
|
|
116
|
-
state.nextRunId = Math.max(1, id) + 1;
|
|
117
|
-
return `r${id}`;
|
|
118
|
-
}
|
|
119
|
-
function blockById(state, blockId) {
|
|
120
|
-
return state.blocks.find((block) => block.blockId === blockId);
|
|
121
|
-
}
|
|
122
|
-
function activeBlocks(state) {
|
|
123
|
-
return state.blocks.filter((block) => block.active);
|
|
124
|
-
}
|
|
125
|
-
function coveredMessageIds(state) {
|
|
126
|
-
const covered = /* @__PURE__ */ new Set();
|
|
127
|
-
for (const block of state.blocks) {
|
|
128
|
-
if (!block.active) continue;
|
|
129
|
-
for (const id of block.effectiveMessageIds) covered.add(id);
|
|
130
|
-
}
|
|
131
|
-
return covered;
|
|
132
|
-
}
|
|
133
|
-
function highestActiveTier(state) {
|
|
134
|
-
let highest = 0;
|
|
135
|
-
for (const block of state.blocks) {
|
|
136
|
-
if (block.active && block.tier > highest) highest = block.tier;
|
|
137
|
-
}
|
|
138
|
-
return highest;
|
|
139
|
-
}
|
|
140
|
-
function advanceSurvival(state, promotionThreshold) {
|
|
141
|
-
for (const block of state.blocks) {
|
|
142
|
-
if (!block.active) continue;
|
|
143
|
-
block.survivedCount += 1;
|
|
144
|
-
if (block.survivedCount >= promotionThreshold) {
|
|
145
|
-
block.generation = "old";
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
|
|
150
101
|
// src/prune.ts
|
|
151
102
|
var SUMMARY_HEADER = "[Compressed conversation section]";
|
|
152
103
|
var SUMMARY_ID_PREFIX = "acp_summary_";
|
|
@@ -484,8 +435,7 @@ function resolveBoundaries(input) {
|
|
|
484
435
|
const nestedBlockIds = [];
|
|
485
436
|
const nestedSeen = /* @__PURE__ */ new Set();
|
|
486
437
|
for (const block of activeBlocks(input.state)) {
|
|
487
|
-
|
|
488
|
-
if (anchor !== null && anchor >= startIndex && anchor <= endIndex) {
|
|
438
|
+
if (blockVisibleInRange(block, indexByMessageId, startIndex, endIndex)) {
|
|
489
439
|
if (!nestedSeen.has(block.blockId)) {
|
|
490
440
|
nestedSeen.add(block.blockId);
|
|
491
441
|
nestedBlockIds.push(block.blockId);
|
|
@@ -609,6 +559,17 @@ function visibleBlockAnchor(block, indexByMessageId) {
|
|
|
609
559
|
if (summaryIndex !== void 0) return summaryIndex;
|
|
610
560
|
return earliestIndexOfIds(block.effectiveMessageIds, indexByMessageId);
|
|
611
561
|
}
|
|
562
|
+
function blockVisibleInRange(block, indexByMessageId, startIndex, endIndex) {
|
|
563
|
+
const summaryIndex = indexByMessageId.get(summaryMessageId(block.blockId));
|
|
564
|
+
if (summaryIndex !== void 0 && summaryIndex >= startIndex && summaryIndex <= endIndex) {
|
|
565
|
+
return true;
|
|
566
|
+
}
|
|
567
|
+
const rawIndex = earliestIndexOfIds(
|
|
568
|
+
block.effectiveMessageIds,
|
|
569
|
+
indexByMessageId
|
|
570
|
+
);
|
|
571
|
+
return rawIndex !== null && rawIndex >= startIndex && rawIndex <= endIndex;
|
|
572
|
+
}
|
|
612
573
|
function earliestIndexOfIds(ids, indexByMessageId) {
|
|
613
574
|
let earliest = null;
|
|
614
575
|
for (const id of ids) {
|
|
@@ -1661,8 +1622,7 @@ function applySingleRange(input) {
|
|
|
1661
1622
|
const nestedSeen = new Set(resolved.nestedBlockIds);
|
|
1662
1623
|
for (const block2 of activeBlocks(input.state)) {
|
|
1663
1624
|
if (nestedSeen.has(block2.blockId)) continue;
|
|
1664
|
-
|
|
1665
|
-
if (anchor !== null && anchor >= adjustedStart && anchor <= adjustedEnd) {
|
|
1625
|
+
if (blockVisibleInRange(block2, indexByMessageId, adjustedStart, adjustedEnd)) {
|
|
1666
1626
|
nestedSeen.add(block2.blockId);
|
|
1667
1627
|
resolved.nestedBlockIds.push(block2.blockId);
|
|
1668
1628
|
}
|
|
@@ -1725,6 +1685,15 @@ function applySingleRange(input) {
|
|
|
1725
1685
|
)} from compression range (recent/last-user zone).`
|
|
1726
1686
|
);
|
|
1727
1687
|
}
|
|
1688
|
+
if (!isBlockBoundary && filteredIds.length === 0 && consumedBlockIds.length > 0) {
|
|
1689
|
+
const first = consumedBlockIds[0];
|
|
1690
|
+
const last = consumedBlockIds[consumedBlockIds.length - 1];
|
|
1691
|
+
throw new Error(
|
|
1692
|
+
`Range ${input.spec.startRef}..${input.spec.endRef} contains no new compressible messages \u2014 every message in it is already covered by active block(s) ${consumedBlockIds.join(
|
|
1693
|
+
", "
|
|
1694
|
+
)}. Nothing was compressed. To rewrite or merge those blocks, reference them by block ID (${first}..${last}); otherwise run acp_status and compress a range it reports as compressible.`
|
|
1695
|
+
);
|
|
1696
|
+
}
|
|
1728
1697
|
validateCompressionRange(input, filteredIds, consumedBlockIds.length);
|
|
1729
1698
|
let compressedTokens = 0;
|
|
1730
1699
|
for (const id of filteredIds) {
|
|
@@ -2896,6 +2865,7 @@ export {
|
|
|
2896
2865
|
assignRefs,
|
|
2897
2866
|
blockById,
|
|
2898
2867
|
blockDocs,
|
|
2868
|
+
blockVisibleInRange,
|
|
2899
2869
|
buildRecap,
|
|
2900
2870
|
buildRestoredContentPreview,
|
|
2901
2871
|
buildStatusReport,
|