dsh-context-compression-improved 0.1.1

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.
@@ -0,0 +1,70 @@
1
+ import { a as validatePublishedTailTrim, o as sessionEvents } from "./tail-trim.js";
2
+ //#region src/invariant.ts
3
+ const PACKAGE_NAME = "dsh-context-compression-improved-runtime";
4
+ /** Cordis companion plugin name. */
5
+ const name = "context-compression-selector-runtime-invariant";
6
+ /** Services required before the companion can register. */
7
+ const inject = ["invariants"];
8
+ /** Whether the next event claims the unresolved prune's replacement range. */
9
+ function resemblesCompanion(prune, event) {
10
+ if (event.type !== "tool/result" && event.type !== "user/message" || typeof event.surfaceOp !== "object") return false;
11
+ const sources = new Set(event.sourceEventSeqs ?? []);
12
+ return event.surfaceOp.start === prune.data.shadowedRange.start && event.surfaceOp.end === prune.data.shadowedRange.end || prune.data.shadowedSeqs.some((seq) => sources.has(seq));
13
+ }
14
+ /** Validate one standard prune's immediately adjacent surface replacement. */
15
+ function validateCompanion(session, prune, event, fail) {
16
+ if (event.type !== "tool/result" && event.type !== "user/message" || typeof event.surfaceOp !== "object") fail(`compaction/prune at seq ${prune.seq} must be immediately followed by a replacement surface event`);
17
+ const { shadowedRange, shadowedSeqs } = prune.data;
18
+ if (shadowedSeqs.length === 0 || shadowedSeqs[0] !== shadowedRange.start || shadowedSeqs.at(-1) !== shadowedRange.end) fail(`compaction/prune at seq ${prune.seq} has a shadowed range inconsistent with shadowedSeqs`);
19
+ if (event.surfaceOp.start !== shadowedRange.start || event.surfaceOp.end !== shadowedRange.end) fail(`replacement at seq ${event.seq} does not replace compaction/prune range ${shadowedRange.start}-${shadowedRange.end}`);
20
+ const sources = new Set(event.sourceEventSeqs ?? []);
21
+ const missing = shadowedSeqs.filter((seq) => !sources.has(seq));
22
+ if (missing.length > 0) fail(`replacement at seq ${event.seq} omits shadowed source seqs ${missing.join(", ")}`);
23
+ if (event.type === "user/message" && validatePublishedTailTrim(session, prune.seq) === null) fail(`TailTrim publication at seq ${prune.seq} is invalid`);
24
+ }
25
+ /** Validate a replayed log and return its only legal unresolved tail. */
26
+ function seedPending(session, fail) {
27
+ let pending;
28
+ for (const event of sessionEvents(session)) {
29
+ if (pending !== void 0) {
30
+ if (resemblesCompanion(pending, event)) validateCompanion(session, pending, event, fail);
31
+ pending = void 0;
32
+ }
33
+ if (event.type === "compaction/prune") pending = event;
34
+ }
35
+ return pending;
36
+ }
37
+ /** Install adjacency checks with pre-commit staging. */
38
+ const install = Object.assign((ctx, fail) => {
39
+ const pending = /* @__PURE__ */ new WeakMap();
40
+ const staged = /* @__PURE__ */ new WeakMap();
41
+ const seed = (session) => {
42
+ pending.set(session, seedPending(session, fail));
43
+ };
44
+ const current = (session) => {
45
+ if (!pending.has(session)) seed(session);
46
+ return pending.get(session);
47
+ };
48
+ for (const session of ctx.sessions.list()) seed(session);
49
+ ctx.on("session/created", seed, { global: true });
50
+ ctx.on("internal/dispatch", (_mode, eventName, args) => {
51
+ if (eventName !== "session/event") return;
52
+ const [session, event] = args;
53
+ const open = current(session);
54
+ if (open !== void 0 && resemblesCompanion(open, event)) validateCompanion(session, open, event, fail);
55
+ staged.set(event, {
56
+ session,
57
+ next: event.type === "compaction/prune" ? event : void 0
58
+ });
59
+ }, { global: true });
60
+ ctx.on("session/event", (session, event) => {
61
+ const candidate = staged.get(event);
62
+ if (candidate === void 0 || candidate.session !== session) return fail("session/event reached publication without matching pre-commit validation");
63
+ staged.delete(event);
64
+ pending.set(session, candidate.next);
65
+ }, { global: true });
66
+ }, { inject: ["sessions"] });
67
+ /** Register this package's invariant companion. */
68
+ const apply = (ctx) => Promise.resolve(ctx.invariants.register(PACKAGE_NAME, install));
69
+ //#endregion
70
+ export { apply, inject, name };