@cortexkit/opencode-magic-context 0.14.2 → 0.15.0
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/config/schema/magic-context.d.ts +26 -0
- package/dist/config/schema/magic-context.d.ts.map +1 -1
- package/dist/features/magic-context/storage-db.d.ts.map +1 -1
- package/dist/features/magic-context/storage-tags.d.ts +8 -0
- package/dist/features/magic-context/storage-tags.d.ts.map +1 -1
- package/dist/features/magic-context/storage.d.ts +1 -1
- package/dist/features/magic-context/storage.d.ts.map +1 -1
- package/dist/features/magic-context/types.d.ts +8 -0
- package/dist/features/magic-context/types.d.ts.map +1 -1
- package/dist/hooks/magic-context/caveman-cleanup.d.ts +86 -0
- package/dist/hooks/magic-context/caveman-cleanup.d.ts.map +1 -0
- package/dist/hooks/magic-context/heuristic-cleanup.d.ts +8 -0
- package/dist/hooks/magic-context/heuristic-cleanup.d.ts.map +1 -1
- package/dist/hooks/magic-context/hook.d.ts +4 -0
- package/dist/hooks/magic-context/hook.d.ts.map +1 -1
- package/dist/hooks/magic-context/system-prompt-hash.d.ts.map +1 -1
- package/dist/hooks/magic-context/tag-messages.d.ts +13 -1
- package/dist/hooks/magic-context/tag-messages.d.ts.map +1 -1
- package/dist/hooks/magic-context/transform-postprocess-phase.d.ts +9 -0
- package/dist/hooks/magic-context/transform-postprocess-phase.d.ts.map +1 -1
- package/dist/hooks/magic-context/transform.d.ts +19 -0
- package/dist/hooks/magic-context/transform.d.ts.map +1 -1
- package/dist/index.js +290 -121
- package/dist/plugin/hooks/create-session-hooks.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -308,6 +308,24 @@ export interface MagicContextConfig {
|
|
|
308
308
|
/** Minimum user message length in characters (skip short prompts). */
|
|
309
309
|
min_prompt_chars: number;
|
|
310
310
|
};
|
|
311
|
+
/**
|
|
312
|
+
* Age-tier caveman compression for long user/assistant text parts.
|
|
313
|
+
*
|
|
314
|
+
* Only active when `ctx_reduce_enabled: false`. Buckets eligible
|
|
315
|
+
* (outside-protected-tail) messages into four age tiers by tag
|
|
316
|
+
* position — oldest 20% → ultra, next 20% → full, next 20% → lite,
|
|
317
|
+
* newest 40% → untouched — and rewrites the text part in place.
|
|
318
|
+
* Always compresses from the original source (source_contents), so
|
|
319
|
+
* tier shifts produce the same result as if the target depth were
|
|
320
|
+
* applied directly to the original text.
|
|
321
|
+
*
|
|
322
|
+
* Disabled by default because it rewrites agent-visible history.
|
|
323
|
+
*/
|
|
324
|
+
caveman_text_compression: {
|
|
325
|
+
enabled: boolean;
|
|
326
|
+
/** Text parts shorter than this (characters) are left untouched. */
|
|
327
|
+
min_chars: number;
|
|
328
|
+
};
|
|
311
329
|
};
|
|
312
330
|
embedding: EmbeddingConfig;
|
|
313
331
|
memory: {
|
|
@@ -511,6 +529,10 @@ export declare const MagicContextConfigSchema: z.ZodPipe<z.ZodObject<{
|
|
|
511
529
|
score_threshold: z.ZodDefault<z.ZodNumber>;
|
|
512
530
|
min_prompt_chars: z.ZodDefault<z.ZodNumber>;
|
|
513
531
|
}, z.core.$strip>>;
|
|
532
|
+
caveman_text_compression: z.ZodDefault<z.ZodObject<{
|
|
533
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
534
|
+
min_chars: z.ZodDefault<z.ZodNumber>;
|
|
535
|
+
}, z.core.$strip>>;
|
|
514
536
|
}, z.core.$strip>>;
|
|
515
537
|
memory: z.ZodDefault<z.ZodObject<{
|
|
516
538
|
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
@@ -626,6 +648,10 @@ export declare const MagicContextConfigSchema: z.ZodPipe<z.ZodObject<{
|
|
|
626
648
|
score_threshold: number;
|
|
627
649
|
min_prompt_chars: number;
|
|
628
650
|
};
|
|
651
|
+
caveman_text_compression: {
|
|
652
|
+
enabled: boolean;
|
|
653
|
+
min_chars: number;
|
|
654
|
+
};
|
|
629
655
|
};
|
|
630
656
|
memory: {
|
|
631
657
|
enabled: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"magic-context.d.ts","sourceRoot":"","sources":["../../../src/config/schema/magic-context.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"magic-context.d.ts","sourceRoot":"","sources":["../../../src/config/schema/magic-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,6BAA6B,QAAS,CAAC;AACpD,eAAO,MAAM,oCAAoC,KAAK,CAAC;AACvD,eAAO,MAAM,4BAA4B,SAAU,CAAC;AACpD,eAAO,MAAM,iCAAiC,OAAO,CAAC;AACtD,eAAO,MAAM,6BAA6B,4BAA4B,CAAC;AACvE,0EAA0E;AAC1E,eAAO,MAAM,wCAAwC,OAAO,CAAC;AAC7D,eAAO,MAAM,kCAAkC,IAAI,CAAC;AACpD,eAAO,MAAM,8BAA8B,SAAU,CAAC;AACtD;8FAC8F;AAC9F,eAAO,MAAM,4CAA4C,KAAK,CAAC;AAC/D;;yFAEyF;AACzF,eAAO,MAAM,qCAAqC,KAAK,CAAC;AACxD;+EAC+E;AAC/E,eAAO,MAAM,+BAA+B,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAMlE,CAAC;AAEF,eAAO,MAAM,aAAa,iFAMhB,CAAC;AAEX,eAAO,MAAM,kBAAkB;;;;;;EAAwB,CAAC;AACxD,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,eAAO,MAAM,qBAAqB,EAAE,YAAY,EAK/C,CAAC;AAEF,wDAAwD;AACxD,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA2C/B,CAAC;AACF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAIpB,CAAC;AACd,MAAM,MAAM,cAAc,GAAG,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC,CAAC;AAE/E;;;;2CAI2C;AAC3C,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAKrB,CAAC;AACd,MAAM,MAAM,eAAe,GAAG,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC,CAAC;AA2BjF,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;GAmBhC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,MAAM,WAAW,kBAAkB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB;;oFAEgF;IAChF,kBAAkB,EAAE,OAAO,CAAC;IAC5B,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,SAAS,EAAE,MAAM,GAAG;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IACpE,qBAAqB,EAAE,MAAM,CAAC;IAC9B,4BAA4B,EAAE,MAAM,GAAG;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IACvF;;uGAEmG;IACnG,wBAAwB,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;KAAE,CAAC;IACxF,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,yBAAyB,EAAE,MAAM,CAAC;IAClC,yBAAyB,EAAE,MAAM,CAAC;IAClC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,sBAAsB,EAAE;QACpB,OAAO,EAAE,OAAO,CAAC;QACjB,YAAY,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,kBAAkB,EAAE,OAAO,CAAC;IAC5B,UAAU,EAAE;QACR,OAAO,EAAE,OAAO,CAAC;QACjB,qBAAqB,EAAE,MAAM,CAAC;QAC9B,eAAe,EAAE,MAAM,CAAC;QACxB,WAAW,EAAE,MAAM,CAAC;QACpB,yBAAyB,EAAE,MAAM,CAAC;QAClC,kBAAkB,EAAE,MAAM,CAAC;KAC9B,CAAC;IACF,YAAY,EAAE;QACV;+EACuE;QACvE,kBAAkB,EAAE,OAAO,CAAC;QAC5B;;+DAEuD;QACvD,mBAAmB,EAAE;YACjB,OAAO,EAAE,OAAO,CAAC;YACjB,8CAA8C;YAC9C,UAAU,EAAE,MAAM,CAAC;YACnB,mEAAmE;YACnE,WAAW,EAAE,MAAM,CAAC;SACvB,CAAC;QACF;;;uDAG+C;QAC/C,WAAW,EAAE;YACT,OAAO,EAAE,OAAO,CAAC;YACjB,qEAAqE;YACrE,eAAe,EAAE,MAAM,CAAC;YACxB,sEAAsE;YACtE,gBAAgB,EAAE,MAAM,CAAC;SAC5B,CAAC;QACF;;;;;;;;;;;;WAYG;QACH,wBAAwB,EAAE;YACtB,OAAO,EAAE,OAAO,CAAC;YACjB,oEAAoE;YACpE,SAAS,EAAE,MAAM,CAAC;SACrB,CAAC;KACL,CAAC;IACF,SAAS,EAAE,eAAe,CAAC;IAC3B,MAAM,EAAE;QACJ,OAAO,EAAE,OAAO,CAAC;QACjB,uBAAuB,EAAE,MAAM,CAAC;QAChC,YAAY,EAAE,OAAO,CAAC;QACtB,mCAAmC,EAAE,MAAM,CAAC;KAC/C,CAAC;IACF,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC7B;AAED,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgN/B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage-db.d.ts","sourceRoot":"","sources":["../../../src/features/magic-context/storage-db.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAkBtC,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,QAAQ,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"storage-db.d.ts","sourceRoot":"","sources":["../../../src/features/magic-context/storage-db.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAkBtC,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,QAAQ,GAAG,IAAI,CAoVrD;AAsHD,wBAAgB,YAAY,IAAI,QAAQ,CAsCvC;AAED,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO,CAEzD;AAED,wBAAgB,2BAA2B,CAAC,EAAE,EAAE,QAAQ,GAAG,MAAM,GAAG,IAAI,CAEvE;AAED,wBAAgB,aAAa,IAAI,IAAI,CAUpC;AAED,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC"}
|
|
@@ -3,6 +3,14 @@ import type { TagEntry } from "./types";
|
|
|
3
3
|
export declare function insertTag(db: Database, sessionId: string, messageId: string, type: TagEntry["type"], byteSize: number, tagNumber: number, reasoningByteSize?: number, toolName?: string | null, inputByteSize?: number): number;
|
|
4
4
|
export declare function updateTagStatus(db: Database, sessionId: string, tagId: number, status: TagEntry["status"]): void;
|
|
5
5
|
export declare function updateTagDropMode(db: Database, sessionId: string, tagNumber: number, dropMode: TagEntry["dropMode"]): void;
|
|
6
|
+
/**
|
|
7
|
+
* Set the caveman compression depth for a tag.
|
|
8
|
+
*
|
|
9
|
+
* Only message tags are expected to receive non-zero depth; callers enforce
|
|
10
|
+
* that. Persisted so later transform passes and restarts can resume without
|
|
11
|
+
* re-compressing text that already matches its target age-tier depth.
|
|
12
|
+
*/
|
|
13
|
+
export declare function updateCavemanDepth(db: Database, sessionId: string, tagNumber: number, depth: number): void;
|
|
6
14
|
export declare function updateTagMessageId(db: Database, sessionId: string, tagId: number, messageId: string): void;
|
|
7
15
|
export declare function deleteTagsByMessageId(db: Database, sessionId: string, messageId: string): number[];
|
|
8
16
|
export declare function getMaxTagNumberBySession(db: Database, sessionId: string): number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage-tags.d.ts","sourceRoot":"","sources":["../../../src/features/magic-context/storage-tags.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"storage-tags.d.ts","sourceRoot":"","sources":["../../../src/features/magic-context/storage-tags.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAiKxC,wBAAgB,SAAS,CACrB,EAAE,EAAE,QAAQ,EACZ,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,EACtB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,iBAAiB,GAAE,MAAU,EAC7B,QAAQ,GAAE,MAAM,GAAG,IAAW,EAC9B,aAAa,GAAE,MAAU,GAC1B,MAAM,CAaR;AAED,wBAAgB,eAAe,CAC3B,EAAE,EAAE,QAAQ,EACZ,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAC3B,IAAI,CAEN;AAED,wBAAgB,iBAAiB,CAC7B,EAAE,EAAE,QAAQ,EACZ,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,GAC/B,IAAI,CAEN;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAC9B,EAAE,EAAE,QAAQ,EACZ,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GACd,IAAI,CAMN;AAED,wBAAgB,kBAAkB,CAC9B,EAAE,EAAE,QAAQ,EACZ,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,GAClB,IAAI,CAEN;AAED,wBAAgB,qBAAqB,CACjC,EAAE,EAAE,QAAQ,EACZ,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAClB,MAAM,EAAE,CAoBV;AAED,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAGhF;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,GAAG,QAAQ,EAAE,CAS5E;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAY1F;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,QAAQ,EAAE,CAapF"}
|
|
@@ -6,5 +6,5 @@ export { clearDetectedContextLimit, clearEmergencyRecovery, clearHistorianFailur
|
|
|
6
6
|
export { addNote, deleteNote, dismissNote, getNotes, getPendingSmartNotes, getReadySmartNotes, getSessionNotes, getSmartNotes, markNoteChecked, markNoteReady, type Note, type NoteStatus, type NoteType, replaceAllSessionNotes, updateNote, } from "./storage-notes";
|
|
7
7
|
export { clearPendingOps, getPendingOps, queuePendingOp, removePendingOp, } from "./storage-ops";
|
|
8
8
|
export { getSourceContents, replaceSourceContent, saveSourceContent, } from "./storage-source";
|
|
9
|
-
export { deleteTagsByMessageId, getMaxTagNumberBySession, getTagById, getTagsBySession, getTopNBySize, insertTag, updateTagDropMode, updateTagMessageId, updateTagStatus, } from "./storage-tags";
|
|
9
|
+
export { deleteTagsByMessageId, getMaxTagNumberBySession, getTagById, getTagsBySession, getTopNBySize, insertTag, updateCavemanDepth, updateTagDropMode, updateTagMessageId, updateTagStatus, } from "./storage-tags";
|
|
10
10
|
//# sourceMappingURL=storage.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../../src/features/magic-context/storage.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,qBAAqB,EACrB,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,0BAA0B,EAC1B,KAAK,WAAW,GACnB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACH,qBAAqB,EACrB,0BAA0B,EAC1B,sBAAsB,EACtB,yBAAyB,GAC5B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACH,oBAAoB,EACpB,oBAAoB,GACvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACH,KAAK,eAAe,EACpB,aAAa,EACb,2BAA2B,EAC3B,mBAAmB,EACnB,YAAY,GACf,MAAM,cAAc,CAAC;AACtB,OAAO,EACH,yBAAyB,EACzB,sBAAsB,EACtB,0BAA0B,EAC1B,uBAAuB,EACvB,4BAA4B,EAC5B,gCAAgC,EAChC,gCAAgC,EAChC,YAAY,EACZ,wBAAwB,EACxB,iBAAiB,EACjB,sBAAsB,EACtB,gBAAgB,EAChB,qBAAqB,EACrB,0BAA0B,EAC1B,8BAA8B,EAC9B,8BAA8B,EAC9B,yBAAyB,EACzB,yBAAyB,EACzB,kBAAkB,EAClB,KAAK,sBAAsB,EAC3B,sBAAsB,EACtB,2BAA2B,EAC3B,iBAAiB,EACjB,0BAA0B,EAC1B,8BAA8B,EAC9B,8BAA8B,EAC9B,yBAAyB,EACzB,iBAAiB,GACpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACH,OAAO,EACP,UAAU,EACV,WAAW,EACX,QAAQ,EACR,oBAAoB,EACpB,kBAAkB,EAClB,eAAe,EACf,aAAa,EACb,eAAe,EACf,aAAa,EACb,KAAK,IAAI,EACT,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,sBAAsB,EACtB,UAAU,GACb,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACH,eAAe,EACf,aAAa,EACb,cAAc,EACd,eAAe,GAClB,MAAM,eAAe,CAAC;AACvB,OAAO,EACH,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,GACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACH,qBAAqB,EACrB,wBAAwB,EACxB,UAAU,EACV,gBAAgB,EAChB,aAAa,EACb,SAAS,EACT,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,GAClB,MAAM,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../../src/features/magic-context/storage.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,qBAAqB,EACrB,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,0BAA0B,EAC1B,KAAK,WAAW,GACnB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACH,qBAAqB,EACrB,0BAA0B,EAC1B,sBAAsB,EACtB,yBAAyB,GAC5B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACH,oBAAoB,EACpB,oBAAoB,GACvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACH,KAAK,eAAe,EACpB,aAAa,EACb,2BAA2B,EAC3B,mBAAmB,EACnB,YAAY,GACf,MAAM,cAAc,CAAC;AACtB,OAAO,EACH,yBAAyB,EACzB,sBAAsB,EACtB,0BAA0B,EAC1B,uBAAuB,EACvB,4BAA4B,EAC5B,gCAAgC,EAChC,gCAAgC,EAChC,YAAY,EACZ,wBAAwB,EACxB,iBAAiB,EACjB,sBAAsB,EACtB,gBAAgB,EAChB,qBAAqB,EACrB,0BAA0B,EAC1B,8BAA8B,EAC9B,8BAA8B,EAC9B,yBAAyB,EACzB,yBAAyB,EACzB,kBAAkB,EAClB,KAAK,sBAAsB,EAC3B,sBAAsB,EACtB,2BAA2B,EAC3B,iBAAiB,EACjB,0BAA0B,EAC1B,8BAA8B,EAC9B,8BAA8B,EAC9B,yBAAyB,EACzB,iBAAiB,GACpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACH,OAAO,EACP,UAAU,EACV,WAAW,EACX,QAAQ,EACR,oBAAoB,EACpB,kBAAkB,EAClB,eAAe,EACf,aAAa,EACb,eAAe,EACf,aAAa,EACb,KAAK,IAAI,EACT,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,sBAAsB,EACtB,UAAU,GACb,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACH,eAAe,EACf,aAAa,EACb,cAAc,EACd,eAAe,GAClB,MAAM,eAAe,CAAC;AACvB,OAAO,EACH,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,GACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACH,qBAAqB,EACrB,wBAAwB,EACxB,UAAU,EACV,gBAAgB,EAChB,aAAa,EACb,SAAS,EACT,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,GAClB,MAAM,gBAAgB,CAAC"}
|
|
@@ -9,6 +9,14 @@ export interface TagEntry {
|
|
|
9
9
|
byteSize: number;
|
|
10
10
|
reasoningByteSize: number;
|
|
11
11
|
sessionId: string;
|
|
12
|
+
/**
|
|
13
|
+
* Caveman compression depth applied to this tag's text part. 0 = none,
|
|
14
|
+
* 1 = lite, 2 = full, 3 = ultra. Only meaningful for `type: "message"`;
|
|
15
|
+
* tool/file tags stay at 0. Used by experimental age-tier caveman
|
|
16
|
+
* heuristic to avoid re-compressing text that already matches the
|
|
17
|
+
* target depth for its age band.
|
|
18
|
+
*/
|
|
19
|
+
cavemanDepth: number;
|
|
12
20
|
}
|
|
13
21
|
export interface PendingOp {
|
|
14
22
|
id: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/features/magic-context/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;IAClC,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,WAAW,CAAC;IAC3C,QAAQ,EAAE,MAAM,GAAG,WAAW,CAAC;IAC/B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/features/magic-context/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;IAClC,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,WAAW,CAAC;IAC3C,QAAQ,EAAE,MAAM,GAAG,WAAW,CAAC;IAC/B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB;;;;;;OAMG;IACH,YAAY,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,SAAS;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,KAAK,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,GAAG,IAAI,CAAC;IAC7D,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,UAAU,EAAE,OAAO,CAAC;IACpB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,eAAe,EAAE,MAAM,CAAC;IACxB,4BAA4B,EAAE,MAAM,CAAC;IACrC,qBAAqB,EAAE,OAAO,CAAC;IAC/B,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,0BAA0B,EAAE,MAAM,CAAC;CACtC;AAED,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,OAAO,CAAC;AAEpD,MAAM,WAAW,YAAY;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACvB"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Age-tier caveman text compression for long user/assistant text parts.
|
|
3
|
+
*
|
|
4
|
+
* Two entry points:
|
|
5
|
+
*
|
|
6
|
+
* 1. `applyCavemanCleanup` — runs ONLY on cache-busting heuristic passes
|
|
7
|
+
* (execute / flush / force-materialize) and is the only path that may
|
|
8
|
+
* INCREASE `tags.caveman_depth`. Computes age tiers (20/20/20/40),
|
|
9
|
+
* persists the new depth, and applies the compressed text in place.
|
|
10
|
+
*
|
|
11
|
+
* 2. `replayCavemanCompression` — runs on EVERY transform pass (defer too)
|
|
12
|
+
* and re-applies the persisted depth to message text without ever
|
|
13
|
+
* increasing it. This exists because `tagMessages` restores
|
|
14
|
+
* `textPart.text = source_contents.content` (the pristine original) on
|
|
15
|
+
* every pass; without a replay step the compressed text would oscillate
|
|
16
|
+
* between compressed (post-execute) and original (defer), which would
|
|
17
|
+
* bust the provider prompt cache on every turn.
|
|
18
|
+
*
|
|
19
|
+
* Partitioning: eligible tags (message-type, active, byte_size >= threshold,
|
|
20
|
+
* tag_number <= protected cutoff) are sorted by tag_number ascending, then
|
|
21
|
+
* bucketed 20/20/20/40:
|
|
22
|
+
* - oldest 20% → ultra
|
|
23
|
+
* - next 20% → full
|
|
24
|
+
* - next 20% → lite
|
|
25
|
+
* - newest 40% → untouched
|
|
26
|
+
*
|
|
27
|
+
* Source-of-truth invariant: compression is ALWAYS computed from the
|
|
28
|
+
* pristine original (`source_contents.content`), never from an already-
|
|
29
|
+
* cavemaned intermediate. So repeated tier shifts converge identically to
|
|
30
|
+
* direct compression at the target depth, and the replay path can produce
|
|
31
|
+
* the exact same output as the original execute pass.
|
|
32
|
+
*
|
|
33
|
+
* Persisted state:
|
|
34
|
+
* - tags.caveman_depth records the applied depth
|
|
35
|
+
* - source_contents.content is unchanged (remains the pristine original)
|
|
36
|
+
* - message-part text holds the cavemaned result visible to the agent
|
|
37
|
+
*/
|
|
38
|
+
import type { ContextDatabase } from "../../features/magic-context/storage";
|
|
39
|
+
import type { TagEntry } from "../../features/magic-context/types";
|
|
40
|
+
import type { TagTarget } from "./tag-messages";
|
|
41
|
+
export interface CavemanCleanupConfig {
|
|
42
|
+
enabled: boolean;
|
|
43
|
+
minChars: number;
|
|
44
|
+
}
|
|
45
|
+
export interface CavemanCleanupResult {
|
|
46
|
+
compressedToLite: number;
|
|
47
|
+
compressedToFull: number;
|
|
48
|
+
compressedToUltra: number;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Compute target caveman depth for a tag by its position in the sorted
|
|
52
|
+
* eligible list. Visible for testing.
|
|
53
|
+
*/
|
|
54
|
+
export declare function computeTargetDepth(positionIndex: number, totalEligible: number): number;
|
|
55
|
+
/**
|
|
56
|
+
* Apply age-tier caveman compression to eligible message tags.
|
|
57
|
+
*
|
|
58
|
+
* Preconditions: caller has already acquired the DB transaction context for
|
|
59
|
+
* this heuristic pass (or this function opens its own). Caller is expected
|
|
60
|
+
* to gate on `ctx_reduce_enabled === false` and `config.enabled === true`.
|
|
61
|
+
*/
|
|
62
|
+
export declare function applyCavemanCleanup(sessionId: string, db: ContextDatabase, targets: Map<number, TagTarget>, tags: TagEntry[], config: CavemanCleanupConfig & {
|
|
63
|
+
protectedTags: number;
|
|
64
|
+
}): CavemanCleanupResult;
|
|
65
|
+
/**
|
|
66
|
+
* Re-apply persisted caveman compression on every transform pass (defer
|
|
67
|
+
* included). This is the cache-stability counterpart to applyCavemanCleanup.
|
|
68
|
+
*
|
|
69
|
+
* Why this exists: tagMessages restores `textPart.text = source_contents.content`
|
|
70
|
+
* (the pristine original) for every existing tag on every pass. Without this
|
|
71
|
+
* replay step, a tag compressed during an execute pass would revert to its
|
|
72
|
+
* original text on the next defer pass. Anthropic's prompt cache hashes the
|
|
73
|
+
* full message prefix, so an oscillating tag would bust cache on every turn
|
|
74
|
+
* after compression first runs.
|
|
75
|
+
*
|
|
76
|
+
* Mirrors the pattern used by replayClearedReasoning / replayStrippedInline
|
|
77
|
+
* for typed reasoning. Pure read \u2014 never increases caveman_depth, never
|
|
78
|
+
* mutates the database. Only execute/flush passes (via applyCavemanCleanup)
|
|
79
|
+
* can deepen the depth.
|
|
80
|
+
*
|
|
81
|
+
* Idempotent: cavemanCompress is deterministic over (originalText, level),
|
|
82
|
+
* so calling this on every pass produces the exact same text the original
|
|
83
|
+
* execute pass produced.
|
|
84
|
+
*/
|
|
85
|
+
export declare function replayCavemanCompression(sessionId: string, db: ContextDatabase, targets: Map<number, TagTarget>, tags: TagEntry[]): number;
|
|
86
|
+
//# sourceMappingURL=caveman-cleanup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"caveman-cleanup.d.ts","sourceRoot":"","sources":["../../../src/hooks/magic-context/caveman-cleanup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAE5E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AAGnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAahD,MAAM,WAAW,oBAAoB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACjC,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;CAC7B;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAOvF;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAC/B,SAAS,EAAE,MAAM,EACjB,EAAE,EAAE,eAAe,EACnB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,EAC/B,IAAI,EAAE,QAAQ,EAAE,EAChB,MAAM,EAAE,oBAAoB,GAAG;IAAE,aAAa,EAAE,MAAM,CAAA;CAAE,GACzD,oBAAoB,CAoGtB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,wBAAwB,CACpC,SAAS,EAAE,MAAM,EACjB,EAAE,EAAE,eAAe,EACnB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,EAC/B,IAAI,EAAE,QAAQ,EAAE,GACjB,MAAM,CA0CR"}
|
|
@@ -1,14 +1,22 @@
|
|
|
1
1
|
import type { ContextDatabase } from "../../features/magic-context/storage";
|
|
2
2
|
import type { TagEntry } from "../../features/magic-context/types";
|
|
3
|
+
import { type CavemanCleanupConfig } from "./caveman-cleanup";
|
|
3
4
|
import type { MessageLike, TagTarget } from "./tag-messages";
|
|
4
5
|
export declare function applyHeuristicCleanup(sessionId: string, db: ContextDatabase, targets: Map<number, TagTarget>, messageTagNumbers: Map<MessageLike, number>, config: {
|
|
5
6
|
autoDropToolAge: number;
|
|
6
7
|
dropToolStructure: boolean;
|
|
7
8
|
protectedTags: number;
|
|
8
9
|
dropAllTools?: boolean;
|
|
10
|
+
/**
|
|
11
|
+
* Age-tier caveman text compression settings. Only honored when the
|
|
12
|
+
* session is running with ctx_reduce_enabled=false — caller is
|
|
13
|
+
* responsible for zeroing this out when ctx_reduce is on.
|
|
14
|
+
*/
|
|
15
|
+
caveman?: CavemanCleanupConfig;
|
|
9
16
|
}, preloadedTags?: TagEntry[]): {
|
|
10
17
|
droppedTools: number;
|
|
11
18
|
deduplicatedTools: number;
|
|
12
19
|
droppedInjections: number;
|
|
20
|
+
compressedTextTags: number;
|
|
13
21
|
};
|
|
14
22
|
//# sourceMappingURL=heuristic-cleanup.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"heuristic-cleanup.d.ts","sourceRoot":"","sources":["../../../src/hooks/magic-context/heuristic-cleanup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAO5E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"heuristic-cleanup.d.ts","sourceRoot":"","sources":["../../../src/hooks/magic-context/heuristic-cleanup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAO5E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AAEnE,OAAO,EAAuB,KAAK,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAEnF,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAe7D,wBAAgB,qBAAqB,CACjC,SAAS,EAAE,MAAM,EACjB,EAAE,EAAE,eAAe,EACnB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,EAC/B,iBAAiB,EAAE,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,EAC3C,MAAM,EAAE;IACJ,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;;OAIG;IACH,OAAO,CAAC,EAAE,oBAAoB,CAAC;CAClC,EACD,aAAa,CAAC,EAAE,QAAQ,EAAE,GAC3B;IACC,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kBAAkB,EAAE,MAAM,CAAC;CAC9B,CAsJA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook.d.ts","sourceRoot":"","sources":["../../../src/hooks/magic-context/hook.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"hook.d.ts","sourceRoot":"","sources":["../../../src/hooks/magic-context/hook.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"system-prompt-hash.d.ts","sourceRoot":"","sources":["../../../src/hooks/magic-context/system-prompt-hash.ts"],"names":[],"mappings":"AAQA,OAAO,EACH,KAAK,eAAe,EAGvB,MAAM,sCAAsC,CAAC;AAiB9C;;;;;GAKG;AACH,wBAAgB,4BAA4B,CACxC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE;IACR,mBAAmB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,mBAAmB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;CACnD,GACF,IAAI,CAKN;AA8BD;;;;;;;;;;;;GAYG;AACH,wBAAgB,6BAA6B,CAAC,IAAI,EAAE;IAChD,EAAE,EAAE,eAAe,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,cAAc,EAAE,OAAO,CAAC;IACxB,6FAA6F;IAC7F,UAAU,EAAE,OAAO,CAAC;IACpB,mDAAmD;IACnD,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7B,oBAAoB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,kFAAkF;IAClF,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,2EAA2E;IAC3E,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,2DAA2D;IAC3D,kCAAkC,CAAC,EAAE,MAAM,CAAC;IAC5C,yFAAyF;IACzF,6BAA6B,CAAC,EAAE,OAAO,CAAC;CAC3C,GAAG;IACA,OAAO,EAAE,CAAC,KAAK,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxF,YAAY,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7C,
|
|
1
|
+
{"version":3,"file":"system-prompt-hash.d.ts","sourceRoot":"","sources":["../../../src/hooks/magic-context/system-prompt-hash.ts"],"names":[],"mappings":"AAQA,OAAO,EACH,KAAK,eAAe,EAGvB,MAAM,sCAAsC,CAAC;AAiB9C;;;;;GAKG;AACH,wBAAgB,4BAA4B,CACxC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE;IACR,mBAAmB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,mBAAmB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;CACnD,GACF,IAAI,CAKN;AA8BD;;;;;;;;;;;;GAYG;AACH,wBAAgB,6BAA6B,CAAC,IAAI,EAAE;IAChD,EAAE,EAAE,eAAe,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,cAAc,EAAE,OAAO,CAAC;IACxB,6FAA6F;IAC7F,UAAU,EAAE,OAAO,CAAC;IACpB,mDAAmD;IACnD,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7B,oBAAoB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,kFAAkF;IAClF,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,2EAA2E;IAC3E,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,2DAA2D;IAC3D,kCAAkC,CAAC,EAAE,MAAM,CAAC;IAC5C,yFAAyF;IACzF,6BAA6B,CAAC,EAAE,OAAO,CAAC;CAC3C,GAAG;IACA,OAAO,EAAE,CAAC,KAAK,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxF,YAAY,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7C,CA0SA"}
|
|
@@ -32,5 +32,17 @@ export interface TagMessagesResult {
|
|
|
32
32
|
/** Whether recent assistant messages contain git commit hash patterns */
|
|
33
33
|
hasRecentCommit: boolean;
|
|
34
34
|
}
|
|
35
|
-
export
|
|
35
|
+
export interface TagMessagesOptions {
|
|
36
|
+
/**
|
|
37
|
+
* When true, skip injecting §N§ prefix into message text/tool output parts.
|
|
38
|
+
* DB-level tag records are still created normally — this flag only affects
|
|
39
|
+
* whether the agent-visible part content gets the tag prefix. Used when
|
|
40
|
+
* `ctx_reduce_enabled: false` so agents don't see tag markers they can't
|
|
41
|
+
* act on. Subagents also set this flag (they are always treated as
|
|
42
|
+
* ctx_reduce_enabled=false). Cache-safe: skipping is consistent across
|
|
43
|
+
* passes, so message shape stays stable.
|
|
44
|
+
*/
|
|
45
|
+
skipPrefixInjection?: boolean;
|
|
46
|
+
}
|
|
47
|
+
export declare function tagMessages(sessionId: string, messages: MessageLike[], tagger: Tagger, db: ContextDatabase, options?: TagMessagesOptions): TagMessagesResult;
|
|
36
48
|
//# sourceMappingURL=tag-messages.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tag-messages.d.ts","sourceRoot":"","sources":["../../../src/hooks/magic-context/tag-messages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAE5E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qCAAqC,CAAC;AAYlE,OAAO,EAGH,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,iBAAiB,EACpB,MAAM,oBAAoB,CAAC;AAE5B,MAAM,MAAM,WAAW,GAAG;IAAE,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7E,MAAM,WAAW,gBAAgB;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,WAAW,GAAG;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,OAAO,EAAE,CAAA;CAAE,CAAC;AAElE,MAAM,MAAM,SAAS,GAAG;IACpB,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;IACzC,UAAU,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,cAAc,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,cAAc,CAAC;IAChC,OAAO,CAAC,EAAE,WAAW,CAAC;CACzB,CAAC;AAEF,MAAM,WAAW,iBAAiB;IAC9B,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAChC,kBAAkB,EAAE,GAAG,CAAC,WAAW,EAAE,gBAAgB,EAAE,CAAC,CAAC;IACzD,iBAAiB,EAAE,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAC5C,aAAa,EAAE,aAAa,CAAC;IAC7B,KAAK,EAAE,iBAAiB,CAAC;IACzB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,yEAAyE;IACzE,eAAe,EAAE,OAAO,CAAC;CAC5B;AAkED,wBAAgB,WAAW,CACvB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,WAAW,EAAE,EACvB,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"tag-messages.d.ts","sourceRoot":"","sources":["../../../src/hooks/magic-context/tag-messages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAE5E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qCAAqC,CAAC;AAYlE,OAAO,EAGH,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,iBAAiB,EACpB,MAAM,oBAAoB,CAAC;AAE5B,MAAM,MAAM,WAAW,GAAG;IAAE,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7E,MAAM,WAAW,gBAAgB;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,WAAW,GAAG;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,OAAO,EAAE,CAAA;CAAE,CAAC;AAElE,MAAM,MAAM,SAAS,GAAG;IACpB,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;IACzC,UAAU,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,cAAc,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,cAAc,CAAC;IAChC,OAAO,CAAC,EAAE,WAAW,CAAC;CACzB,CAAC;AAEF,MAAM,WAAW,iBAAiB;IAC9B,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAChC,kBAAkB,EAAE,GAAG,CAAC,WAAW,EAAE,gBAAgB,EAAE,CAAC,CAAC;IACzD,iBAAiB,EAAE,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAC5C,aAAa,EAAE,aAAa,CAAC;IAC7B,KAAK,EAAE,iBAAiB,CAAC;IACzB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,yEAAyE;IACzE,eAAe,EAAE,OAAO,CAAC;CAC5B;AAkED,MAAM,WAAW,kBAAkB;IAC/B;;;;;;;;OAQG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,wBAAgB,WAAW,CACvB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,WAAW,EAAE,EACvB,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,eAAe,EACnB,OAAO,GAAE,kBAAuB,GACjC,iBAAiB,CA4PnB"}
|
|
@@ -68,6 +68,15 @@ interface RunPostTransformPhaseArgs {
|
|
|
68
68
|
embeddingEnabled: boolean;
|
|
69
69
|
gitCommitsEnabled: boolean;
|
|
70
70
|
};
|
|
71
|
+
/**
|
|
72
|
+
* Age-tier caveman compression (experimental). Only honored when
|
|
73
|
+
* ctx_reduce_enabled is false. Caller is responsible for zeroing this
|
|
74
|
+
* out when ctx_reduce is on. Passed through to `applyHeuristicCleanup`.
|
|
75
|
+
*/
|
|
76
|
+
cavemanTextCompression?: {
|
|
77
|
+
enabled: boolean;
|
|
78
|
+
minChars: number;
|
|
79
|
+
};
|
|
71
80
|
}
|
|
72
81
|
export declare function runPostTransformPhase(args: RunPostTransformPhaseArgs): Promise<void>;
|
|
73
82
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transform-postprocess-phase.d.ts","sourceRoot":"","sources":["../../../src/hooks/magic-context/transform-postprocess-phase.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"transform-postprocess-phase.d.ts","sourceRoot":"","sources":["../../../src/hooks/magic-context/transform-postprocess-phase.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,6 +28,14 @@ export interface TransformDeps {
|
|
|
28
28
|
db: ContextDatabase;
|
|
29
29
|
nudgePlacements: NudgePlacementStore;
|
|
30
30
|
protectedTags: number;
|
|
31
|
+
/**
|
|
32
|
+
* Primary-session ctx_reduce setting. When false, tag prefix injection is
|
|
33
|
+
* skipped for ALL sessions (primary + subagent). When true, primary sessions
|
|
34
|
+
* get prefixes but subagent sessions still skip (subagents are always
|
|
35
|
+
* treated as ctx_reduce_enabled=false). See tag-messages.ts for the gate.
|
|
36
|
+
* Defaults to true when omitted (preserves legacy behavior for tests).
|
|
37
|
+
*/
|
|
38
|
+
ctxReduceEnabled?: boolean;
|
|
31
39
|
autoDropToolAge: number;
|
|
32
40
|
dropToolStructure?: boolean;
|
|
33
41
|
clearReasoningAge: number;
|
|
@@ -90,6 +98,17 @@ export interface TransformDeps {
|
|
|
90
98
|
embeddingEnabled: boolean;
|
|
91
99
|
gitCommitsEnabled: boolean;
|
|
92
100
|
};
|
|
101
|
+
/**
|
|
102
|
+
* Experimental age-tier caveman text compression — rewrites long
|
|
103
|
+
* user/assistant text parts with progressively aggressive caveman
|
|
104
|
+
* rules based on their position in the eligible tag window. Only
|
|
105
|
+
* honored when `ctx_reduce_enabled: false` (transform zeroes this
|
|
106
|
+
* out when ctx_reduce is on so the postprocess path stays unaware).
|
|
107
|
+
*/
|
|
108
|
+
cavemanTextCompression?: {
|
|
109
|
+
enabled: boolean;
|
|
110
|
+
minChars: number;
|
|
111
|
+
};
|
|
93
112
|
}
|
|
94
113
|
export declare function createTransform(deps: TransformDeps): (_input: Record<string, never>, output: {
|
|
95
114
|
messages: unknown[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transform.d.ts","sourceRoot":"","sources":["../../../src/hooks/magic-context/transform.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AAExE,OAAO,EACH,KAAK,eAAe,EAIpB,KAAK,aAAa,EAErB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qCAAqC,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AACjF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"transform.d.ts","sourceRoot":"","sources":["../../../src/hooks/magic-context/transform.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -14215,11 +14215,16 @@ var init_magic_context = __esm(() => {
|
|
|
14215
14215
|
enabled: exports_external.boolean().default(false),
|
|
14216
14216
|
score_threshold: exports_external.number().min(0.3).max(0.95).default(0.55),
|
|
14217
14217
|
min_prompt_chars: exports_external.number().min(5).max(500).default(20)
|
|
14218
|
-
}).default({ enabled: false, score_threshold: 0.55, min_prompt_chars: 20 })
|
|
14218
|
+
}).default({ enabled: false, score_threshold: 0.55, min_prompt_chars: 20 }),
|
|
14219
|
+
caveman_text_compression: exports_external.object({
|
|
14220
|
+
enabled: exports_external.boolean().default(false),
|
|
14221
|
+
min_chars: exports_external.number().min(100).max(1e4).default(500)
|
|
14222
|
+
}).default({ enabled: false, min_chars: 500 })
|
|
14219
14223
|
}).default({
|
|
14220
14224
|
temporal_awareness: false,
|
|
14221
14225
|
git_commit_indexing: { enabled: false, since_days: 365, max_commits: 2000 },
|
|
14222
|
-
auto_search: { enabled: false, score_threshold: 0.55, min_prompt_chars: 20 }
|
|
14226
|
+
auto_search: { enabled: false, score_threshold: 0.55, min_prompt_chars: 20 },
|
|
14227
|
+
caveman_text_compression: { enabled: false, min_chars: 500 }
|
|
14223
14228
|
}),
|
|
14224
14229
|
memory: exports_external.object({
|
|
14225
14230
|
enabled: exports_external.boolean().default(true),
|
|
@@ -150849,6 +150854,7 @@ CREATE INDEX IF NOT EXISTS idx_dream_queue_pending ON dream_queue(started_at, en
|
|
|
150849
150854
|
ensureColumn(db, "tags", "drop_mode", "TEXT DEFAULT 'full'");
|
|
150850
150855
|
ensureColumn(db, "tags", "tool_name", "TEXT");
|
|
150851
150856
|
ensureColumn(db, "tags", "input_byte_size", "INTEGER DEFAULT 0");
|
|
150857
|
+
ensureColumn(db, "tags", "caveman_depth", "INTEGER DEFAULT 0");
|
|
150852
150858
|
ensureColumn(db, "session_meta", "system_prompt_tokens", "INTEGER DEFAULT 0");
|
|
150853
150859
|
ensureColumn(db, "session_meta", "compaction_marker_state", "TEXT DEFAULT ''");
|
|
150854
150860
|
ensureColumn(db, "session_meta", "key_files", "TEXT DEFAULT ''");
|
|
@@ -151577,7 +151583,8 @@ function toTagEntry(row) {
|
|
|
151577
151583
|
inputByteSize: row.input_byte_size ?? 0,
|
|
151578
151584
|
byteSize: row.byte_size,
|
|
151579
151585
|
reasoningByteSize: row.reasoning_byte_size ?? 0,
|
|
151580
|
-
sessionId: row.session_id
|
|
151586
|
+
sessionId: row.session_id,
|
|
151587
|
+
cavemanDepth: typeof row.caveman_depth === "number" && Number.isFinite(row.caveman_depth) ? row.caveman_depth : 0
|
|
151581
151588
|
};
|
|
151582
151589
|
}
|
|
151583
151590
|
function isTagNumberRow(row) {
|
|
@@ -151605,6 +151612,9 @@ function updateTagStatus(db, sessionId, tagId, status) {
|
|
|
151605
151612
|
function updateTagDropMode(db, sessionId, tagNumber, dropMode) {
|
|
151606
151613
|
getUpdateTagDropModeStatement(db).run(dropMode, sessionId, tagNumber);
|
|
151607
151614
|
}
|
|
151615
|
+
function updateCavemanDepth(db, sessionId, tagNumber, depth) {
|
|
151616
|
+
db.prepare("UPDATE tags SET caveman_depth = ? WHERE session_id = ? AND tag_number = ?").run(depth, sessionId, tagNumber);
|
|
151617
|
+
}
|
|
151608
151618
|
function updateTagMessageId(db, sessionId, tagId, messageId) {
|
|
151609
151619
|
getUpdateTagMessageIdStatement(db).run(messageId, sessionId, tagId);
|
|
151610
151620
|
}
|
|
@@ -151624,14 +151634,14 @@ function getMaxTagNumberBySession(db, sessionId) {
|
|
|
151624
151634
|
return isMaxTagNumberRow(row) ? row.max_tag_number : 0;
|
|
151625
151635
|
}
|
|
151626
151636
|
function getTagsBySession(db, sessionId) {
|
|
151627
|
-
const rows = db.prepare("SELECT id, message_id, type, status, drop_mode, tool_name, input_byte_size, byte_size, reasoning_byte_size, session_id, tag_number FROM tags WHERE session_id = ? ORDER BY tag_number ASC, id ASC").all(sessionId).filter(isTagRow);
|
|
151637
|
+
const rows = db.prepare("SELECT id, message_id, type, status, drop_mode, tool_name, input_byte_size, byte_size, reasoning_byte_size, session_id, tag_number, caveman_depth FROM tags WHERE session_id = ? ORDER BY tag_number ASC, id ASC").all(sessionId).filter(isTagRow);
|
|
151628
151638
|
return rows.map(toTagEntry);
|
|
151629
151639
|
}
|
|
151630
151640
|
function getTopNBySize(db, sessionId, n) {
|
|
151631
151641
|
if (n <= 0) {
|
|
151632
151642
|
return [];
|
|
151633
151643
|
}
|
|
151634
|
-
const rows = db.prepare("SELECT id, message_id, type, status, drop_mode, tool_name, input_byte_size, byte_size, reasoning_byte_size, session_id, tag_number FROM tags WHERE session_id = ? AND status = 'active' ORDER BY byte_size DESC, tag_number ASC LIMIT ?").all(sessionId, n).filter(isTagRow);
|
|
151644
|
+
const rows = db.prepare("SELECT id, message_id, type, status, drop_mode, tool_name, input_byte_size, byte_size, reasoning_byte_size, session_id, tag_number, caveman_depth FROM tags WHERE session_id = ? AND status = 'active' ORDER BY byte_size DESC, tag_number ASC LIMIT ?").all(sessionId, n).filter(isTagRow);
|
|
151635
151645
|
return rows.map(toTagEntry);
|
|
151636
151646
|
}
|
|
151637
151647
|
var insertTagStatements, updateTagStatusStatements, updateTagDropModeStatements, updateTagMessageIdStatements, getTagNumbersByMessageIdStatements, deleteTagsByMessageIdStatements, getMaxTagNumberBySessionStatements;
|
|
@@ -153602,108 +153612,6 @@ var init_note_nudger = __esm(() => {
|
|
|
153602
153612
|
lastDeliveredAt = new Map;
|
|
153603
153613
|
});
|
|
153604
153614
|
|
|
153605
|
-
// src/features/magic-context/memory/embedding-backfill.ts
|
|
153606
|
-
async function ensureMemoryEmbeddings(args) {
|
|
153607
|
-
if (!isEmbeddingEnabled()) {
|
|
153608
|
-
return args.existingEmbeddings;
|
|
153609
|
-
}
|
|
153610
|
-
const missingMemories = args.memories.filter((memory) => !args.existingEmbeddings.has(memory.id));
|
|
153611
|
-
if (missingMemories.length === 0) {
|
|
153612
|
-
return args.existingEmbeddings;
|
|
153613
|
-
}
|
|
153614
|
-
try {
|
|
153615
|
-
const embeddings = await embedBatch(missingMemories.map((memory) => memory.content));
|
|
153616
|
-
const modelId = getEmbeddingModelId();
|
|
153617
|
-
const staged = new Map;
|
|
153618
|
-
args.db.transaction(() => {
|
|
153619
|
-
for (const [index, memory] of missingMemories.entries()) {
|
|
153620
|
-
const embedding = embeddings[index];
|
|
153621
|
-
if (!embedding) {
|
|
153622
|
-
continue;
|
|
153623
|
-
}
|
|
153624
|
-
saveEmbedding(args.db, memory.id, embedding, modelId);
|
|
153625
|
-
staged.set(memory.id, embedding);
|
|
153626
|
-
}
|
|
153627
|
-
})();
|
|
153628
|
-
for (const [id, embedding] of staged) {
|
|
153629
|
-
args.existingEmbeddings.set(id, embedding);
|
|
153630
|
-
}
|
|
153631
|
-
} catch (error48) {
|
|
153632
|
-
log("[magic-context] failed to backfill memory embeddings:", error48);
|
|
153633
|
-
}
|
|
153634
|
-
return args.existingEmbeddings;
|
|
153635
|
-
}
|
|
153636
|
-
var init_embedding_backfill = __esm(() => {
|
|
153637
|
-
init_logger();
|
|
153638
|
-
init_embedding();
|
|
153639
|
-
init_storage_memory_embeddings();
|
|
153640
|
-
});
|
|
153641
|
-
|
|
153642
|
-
// src/features/magic-context/memory/promotion.ts
|
|
153643
|
-
function isPromotableCategory(category) {
|
|
153644
|
-
return PROMOTABLE_CATEGORIES.some((promotableCategory) => promotableCategory === category);
|
|
153645
|
-
}
|
|
153646
|
-
function resolveExpiresAt(category) {
|
|
153647
|
-
const ttl = CATEGORY_DEFAULT_TTL[category];
|
|
153648
|
-
return ttl === undefined ? null : Date.now() + ttl;
|
|
153649
|
-
}
|
|
153650
|
-
function promoteSessionFactsToMemory(db, sessionId, projectPath, facts) {
|
|
153651
|
-
for (const fact of facts) {
|
|
153652
|
-
if (!isPromotableCategory(fact.category)) {
|
|
153653
|
-
continue;
|
|
153654
|
-
}
|
|
153655
|
-
try {
|
|
153656
|
-
const normalizedHash = computeNormalizedHash(fact.content);
|
|
153657
|
-
const existingMemory = getMemoryByHash(db, projectPath, fact.category, normalizedHash);
|
|
153658
|
-
if (existingMemory) {
|
|
153659
|
-
updateMemorySeenCount(db, existingMemory.id);
|
|
153660
|
-
continue;
|
|
153661
|
-
}
|
|
153662
|
-
const memoryInput = {
|
|
153663
|
-
projectPath,
|
|
153664
|
-
category: fact.category,
|
|
153665
|
-
content: fact.content,
|
|
153666
|
-
sourceSessionId: sessionId,
|
|
153667
|
-
sourceType: "historian",
|
|
153668
|
-
expiresAt: resolveExpiresAt(fact.category)
|
|
153669
|
-
};
|
|
153670
|
-
const memory = insertMemory(db, memoryInput);
|
|
153671
|
-
embedAndStoreMemory(db, sessionId, memory.id, memory.content);
|
|
153672
|
-
} catch (error48) {
|
|
153673
|
-
sessionLog(sessionId, `memory promotion failed for fact "${fact.content.slice(0, 60)}":`, error48);
|
|
153674
|
-
}
|
|
153675
|
-
}
|
|
153676
|
-
}
|
|
153677
|
-
async function embedAndStoreMemory(db, sessionId, memoryId, content) {
|
|
153678
|
-
try {
|
|
153679
|
-
const embedding = await embedText(content);
|
|
153680
|
-
if (embedding) {
|
|
153681
|
-
saveEmbedding(db, memoryId, embedding, getEmbeddingModelId());
|
|
153682
|
-
}
|
|
153683
|
-
} catch (error48) {
|
|
153684
|
-
sessionLog(sessionId, `memory embedding failed for memory ${memoryId}:`, error48);
|
|
153685
|
-
}
|
|
153686
|
-
}
|
|
153687
|
-
var init_promotion = __esm(() => {
|
|
153688
|
-
init_logger();
|
|
153689
|
-
init_constants();
|
|
153690
|
-
init_embedding();
|
|
153691
|
-
init_storage_memory();
|
|
153692
|
-
init_storage_memory_embeddings();
|
|
153693
|
-
});
|
|
153694
|
-
// src/features/magic-context/memory/index.ts
|
|
153695
|
-
var init_memory = __esm(() => {
|
|
153696
|
-
init_project_identity();
|
|
153697
|
-
init_promotion();
|
|
153698
|
-
init_constants();
|
|
153699
|
-
init_embedding();
|
|
153700
|
-
init_embedding_backfill();
|
|
153701
|
-
init_embedding_cache();
|
|
153702
|
-
init_storage_memory();
|
|
153703
|
-
init_storage_memory_embeddings();
|
|
153704
|
-
init_storage_memory_fts();
|
|
153705
|
-
});
|
|
153706
|
-
|
|
153707
153615
|
// src/hooks/magic-context/caveman.ts
|
|
153708
153616
|
function protectRegions(text) {
|
|
153709
153617
|
const preserved = [];
|
|
@@ -153936,6 +153844,108 @@ var init_caveman = __esm(() => {
|
|
|
153936
153844
|
};
|
|
153937
153845
|
});
|
|
153938
153846
|
|
|
153847
|
+
// src/features/magic-context/memory/embedding-backfill.ts
|
|
153848
|
+
async function ensureMemoryEmbeddings(args) {
|
|
153849
|
+
if (!isEmbeddingEnabled()) {
|
|
153850
|
+
return args.existingEmbeddings;
|
|
153851
|
+
}
|
|
153852
|
+
const missingMemories = args.memories.filter((memory) => !args.existingEmbeddings.has(memory.id));
|
|
153853
|
+
if (missingMemories.length === 0) {
|
|
153854
|
+
return args.existingEmbeddings;
|
|
153855
|
+
}
|
|
153856
|
+
try {
|
|
153857
|
+
const embeddings = await embedBatch(missingMemories.map((memory) => memory.content));
|
|
153858
|
+
const modelId = getEmbeddingModelId();
|
|
153859
|
+
const staged = new Map;
|
|
153860
|
+
args.db.transaction(() => {
|
|
153861
|
+
for (const [index, memory] of missingMemories.entries()) {
|
|
153862
|
+
const embedding = embeddings[index];
|
|
153863
|
+
if (!embedding) {
|
|
153864
|
+
continue;
|
|
153865
|
+
}
|
|
153866
|
+
saveEmbedding(args.db, memory.id, embedding, modelId);
|
|
153867
|
+
staged.set(memory.id, embedding);
|
|
153868
|
+
}
|
|
153869
|
+
})();
|
|
153870
|
+
for (const [id, embedding] of staged) {
|
|
153871
|
+
args.existingEmbeddings.set(id, embedding);
|
|
153872
|
+
}
|
|
153873
|
+
} catch (error48) {
|
|
153874
|
+
log("[magic-context] failed to backfill memory embeddings:", error48);
|
|
153875
|
+
}
|
|
153876
|
+
return args.existingEmbeddings;
|
|
153877
|
+
}
|
|
153878
|
+
var init_embedding_backfill = __esm(() => {
|
|
153879
|
+
init_logger();
|
|
153880
|
+
init_embedding();
|
|
153881
|
+
init_storage_memory_embeddings();
|
|
153882
|
+
});
|
|
153883
|
+
|
|
153884
|
+
// src/features/magic-context/memory/promotion.ts
|
|
153885
|
+
function isPromotableCategory(category) {
|
|
153886
|
+
return PROMOTABLE_CATEGORIES.some((promotableCategory) => promotableCategory === category);
|
|
153887
|
+
}
|
|
153888
|
+
function resolveExpiresAt(category) {
|
|
153889
|
+
const ttl = CATEGORY_DEFAULT_TTL[category];
|
|
153890
|
+
return ttl === undefined ? null : Date.now() + ttl;
|
|
153891
|
+
}
|
|
153892
|
+
function promoteSessionFactsToMemory(db, sessionId, projectPath, facts) {
|
|
153893
|
+
for (const fact of facts) {
|
|
153894
|
+
if (!isPromotableCategory(fact.category)) {
|
|
153895
|
+
continue;
|
|
153896
|
+
}
|
|
153897
|
+
try {
|
|
153898
|
+
const normalizedHash = computeNormalizedHash(fact.content);
|
|
153899
|
+
const existingMemory = getMemoryByHash(db, projectPath, fact.category, normalizedHash);
|
|
153900
|
+
if (existingMemory) {
|
|
153901
|
+
updateMemorySeenCount(db, existingMemory.id);
|
|
153902
|
+
continue;
|
|
153903
|
+
}
|
|
153904
|
+
const memoryInput = {
|
|
153905
|
+
projectPath,
|
|
153906
|
+
category: fact.category,
|
|
153907
|
+
content: fact.content,
|
|
153908
|
+
sourceSessionId: sessionId,
|
|
153909
|
+
sourceType: "historian",
|
|
153910
|
+
expiresAt: resolveExpiresAt(fact.category)
|
|
153911
|
+
};
|
|
153912
|
+
const memory = insertMemory(db, memoryInput);
|
|
153913
|
+
embedAndStoreMemory(db, sessionId, memory.id, memory.content);
|
|
153914
|
+
} catch (error48) {
|
|
153915
|
+
sessionLog(sessionId, `memory promotion failed for fact "${fact.content.slice(0, 60)}":`, error48);
|
|
153916
|
+
}
|
|
153917
|
+
}
|
|
153918
|
+
}
|
|
153919
|
+
async function embedAndStoreMemory(db, sessionId, memoryId, content) {
|
|
153920
|
+
try {
|
|
153921
|
+
const embedding = await embedText(content);
|
|
153922
|
+
if (embedding) {
|
|
153923
|
+
saveEmbedding(db, memoryId, embedding, getEmbeddingModelId());
|
|
153924
|
+
}
|
|
153925
|
+
} catch (error48) {
|
|
153926
|
+
sessionLog(sessionId, `memory embedding failed for memory ${memoryId}:`, error48);
|
|
153927
|
+
}
|
|
153928
|
+
}
|
|
153929
|
+
var init_promotion = __esm(() => {
|
|
153930
|
+
init_logger();
|
|
153931
|
+
init_constants();
|
|
153932
|
+
init_embedding();
|
|
153933
|
+
init_storage_memory();
|
|
153934
|
+
init_storage_memory_embeddings();
|
|
153935
|
+
});
|
|
153936
|
+
// src/features/magic-context/memory/index.ts
|
|
153937
|
+
var init_memory = __esm(() => {
|
|
153938
|
+
init_project_identity();
|
|
153939
|
+
init_promotion();
|
|
153940
|
+
init_constants();
|
|
153941
|
+
init_embedding();
|
|
153942
|
+
init_embedding_backfill();
|
|
153943
|
+
init_embedding_cache();
|
|
153944
|
+
init_storage_memory();
|
|
153945
|
+
init_storage_memory_embeddings();
|
|
153946
|
+
init_storage_memory_fts();
|
|
153947
|
+
});
|
|
153948
|
+
|
|
153939
153949
|
// src/hooks/magic-context/compartment-runner-compressor.ts
|
|
153940
153950
|
function cavemanLevelForDepth(outputDepth) {
|
|
153941
153951
|
if (outputDepth <= 1)
|
|
@@ -166518,6 +166528,120 @@ init_compartment_storage();
|
|
|
166518
166528
|
init_project_identity();
|
|
166519
166529
|
init_storage();
|
|
166520
166530
|
init_logger();
|
|
166531
|
+
|
|
166532
|
+
// src/hooks/magic-context/caveman-cleanup.ts
|
|
166533
|
+
init_storage();
|
|
166534
|
+
init_shared();
|
|
166535
|
+
init_caveman();
|
|
166536
|
+
var DEPTH_UNTOUCHED = 0;
|
|
166537
|
+
var DEPTH_LITE = 1;
|
|
166538
|
+
var DEPTH_FULL = 2;
|
|
166539
|
+
var DEPTH_ULTRA = 3;
|
|
166540
|
+
var DEPTH_TO_LEVEL = {
|
|
166541
|
+
[DEPTH_LITE]: "lite",
|
|
166542
|
+
[DEPTH_FULL]: "full",
|
|
166543
|
+
[DEPTH_ULTRA]: "ultra"
|
|
166544
|
+
};
|
|
166545
|
+
function computeTargetDepth(positionIndex, totalEligible) {
|
|
166546
|
+
if (totalEligible <= 0)
|
|
166547
|
+
return DEPTH_UNTOUCHED;
|
|
166548
|
+
const fraction = positionIndex / totalEligible;
|
|
166549
|
+
if (fraction < 0.2)
|
|
166550
|
+
return DEPTH_ULTRA;
|
|
166551
|
+
if (fraction < 0.4)
|
|
166552
|
+
return DEPTH_FULL;
|
|
166553
|
+
if (fraction < 0.6)
|
|
166554
|
+
return DEPTH_LITE;
|
|
166555
|
+
return DEPTH_UNTOUCHED;
|
|
166556
|
+
}
|
|
166557
|
+
function applyCavemanCleanup(sessionId, db, targets, tags, config2) {
|
|
166558
|
+
const result = {
|
|
166559
|
+
compressedToLite: 0,
|
|
166560
|
+
compressedToFull: 0,
|
|
166561
|
+
compressedToUltra: 0
|
|
166562
|
+
};
|
|
166563
|
+
if (!config2.enabled)
|
|
166564
|
+
return result;
|
|
166565
|
+
const maxTag = tags.reduce((max, t) => Math.max(max, t.tagNumber), 0);
|
|
166566
|
+
const protectedCutoff = maxTag - config2.protectedTags;
|
|
166567
|
+
const eligible = tags.filter((tag) => tag.type === "message" && tag.status === "active" && tag.tagNumber <= protectedCutoff && tag.byteSize >= config2.minChars).sort((a, b) => a.tagNumber - b.tagNumber);
|
|
166568
|
+
if (eligible.length === 0)
|
|
166569
|
+
return result;
|
|
166570
|
+
const tagsNeedingCompression = eligible.filter((tag, index) => {
|
|
166571
|
+
const target = targets.get(tag.tagNumber);
|
|
166572
|
+
if (!target || !target.getContent || !target.setContent)
|
|
166573
|
+
return false;
|
|
166574
|
+
const targetDepth = computeTargetDepth(index, eligible.length);
|
|
166575
|
+
return targetDepth > tag.cavemanDepth;
|
|
166576
|
+
});
|
|
166577
|
+
if (tagsNeedingCompression.length === 0)
|
|
166578
|
+
return result;
|
|
166579
|
+
const originalByTag = getSourceContents(db, sessionId, tagsNeedingCompression.map((t) => t.tagNumber));
|
|
166580
|
+
const positionByTag = new Map;
|
|
166581
|
+
for (let i = 0;i < eligible.length; i += 1) {
|
|
166582
|
+
positionByTag.set(eligible[i].tagNumber, i);
|
|
166583
|
+
}
|
|
166584
|
+
db.transaction(() => {
|
|
166585
|
+
for (const tag of tagsNeedingCompression) {
|
|
166586
|
+
const originalText = originalByTag.get(tag.tagNumber);
|
|
166587
|
+
if (typeof originalText !== "string" || originalText.length === 0)
|
|
166588
|
+
continue;
|
|
166589
|
+
const positionIndex = positionByTag.get(tag.tagNumber) ?? 0;
|
|
166590
|
+
const targetDepth = computeTargetDepth(positionIndex, eligible.length);
|
|
166591
|
+
if (targetDepth <= tag.cavemanDepth)
|
|
166592
|
+
continue;
|
|
166593
|
+
const level = DEPTH_TO_LEVEL[targetDepth];
|
|
166594
|
+
if (!level)
|
|
166595
|
+
continue;
|
|
166596
|
+
const compressed = cavemanCompress(originalText, level);
|
|
166597
|
+
if (compressed.length === 0)
|
|
166598
|
+
continue;
|
|
166599
|
+
const target = targets.get(tag.tagNumber);
|
|
166600
|
+
if (!target)
|
|
166601
|
+
continue;
|
|
166602
|
+
target.setContent(compressed);
|
|
166603
|
+
updateCavemanDepth(db, sessionId, tag.tagNumber, targetDepth);
|
|
166604
|
+
if (targetDepth === DEPTH_LITE)
|
|
166605
|
+
result.compressedToLite += 1;
|
|
166606
|
+
else if (targetDepth === DEPTH_FULL)
|
|
166607
|
+
result.compressedToFull += 1;
|
|
166608
|
+
else if (targetDepth === DEPTH_ULTRA)
|
|
166609
|
+
result.compressedToUltra += 1;
|
|
166610
|
+
}
|
|
166611
|
+
})();
|
|
166612
|
+
const total = result.compressedToLite + result.compressedToFull + result.compressedToUltra;
|
|
166613
|
+
if (total > 0) {
|
|
166614
|
+
sessionLog(sessionId, `caveman cleanup: compressed ${total} text tags (lite=${result.compressedToLite}, full=${result.compressedToFull}, ultra=${result.compressedToUltra})`);
|
|
166615
|
+
}
|
|
166616
|
+
return result;
|
|
166617
|
+
}
|
|
166618
|
+
function replayCavemanCompression(sessionId, db, targets, tags) {
|
|
166619
|
+
const compressedTags = tags.filter((tag) => tag.type === "message" && tag.status === "active" && tag.cavemanDepth > 0 && targets.has(tag.tagNumber));
|
|
166620
|
+
if (compressedTags.length === 0)
|
|
166621
|
+
return 0;
|
|
166622
|
+
const originalByTag = getSourceContents(db, sessionId, compressedTags.map((t) => t.tagNumber));
|
|
166623
|
+
let replayed = 0;
|
|
166624
|
+
for (const tag of compressedTags) {
|
|
166625
|
+
const originalText = originalByTag.get(tag.tagNumber);
|
|
166626
|
+
if (typeof originalText !== "string" || originalText.length === 0)
|
|
166627
|
+
continue;
|
|
166628
|
+
const level = DEPTH_TO_LEVEL[tag.cavemanDepth];
|
|
166629
|
+
if (!level)
|
|
166630
|
+
continue;
|
|
166631
|
+
const compressed = cavemanCompress(originalText, level);
|
|
166632
|
+
if (compressed.length === 0)
|
|
166633
|
+
continue;
|
|
166634
|
+
const target = targets.get(tag.tagNumber);
|
|
166635
|
+
if (!target)
|
|
166636
|
+
continue;
|
|
166637
|
+
if (target.setContent(compressed)) {
|
|
166638
|
+
replayed += 1;
|
|
166639
|
+
}
|
|
166640
|
+
}
|
|
166641
|
+
return replayed;
|
|
166642
|
+
}
|
|
166643
|
+
|
|
166644
|
+
// src/hooks/magic-context/transform.ts
|
|
166521
166645
|
init_compartment_runner();
|
|
166522
166646
|
|
|
166523
166647
|
// src/hooks/magic-context/image-token-estimate.ts
|
|
@@ -167875,7 +167999,8 @@ function extractToolTagMetadata(part) {
|
|
|
167875
167999
|
inputByteSize: estimateInputByteSize(input)
|
|
167876
168000
|
};
|
|
167877
168001
|
}
|
|
167878
|
-
function tagMessages(sessionId, messages, tagger, db) {
|
|
168002
|
+
function tagMessages(sessionId, messages, tagger, db, options = {}) {
|
|
168003
|
+
const skipPrefixInjection = options.skipPrefixInjection === true;
|
|
167879
168004
|
const targets = new Map;
|
|
167880
168005
|
const reasoningByMessage = new Map;
|
|
167881
168006
|
const messageTagNumbers = new Map;
|
|
@@ -167949,7 +168074,9 @@ function tagMessages(sessionId, messages, tagger, db) {
|
|
|
167949
168074
|
}
|
|
167950
168075
|
}
|
|
167951
168076
|
messageTagNumbers.set(message, Math.max(messageTagNumbers.get(message) ?? 0, tagId));
|
|
167952
|
-
|
|
168077
|
+
if (!skipPrefixInjection) {
|
|
168078
|
+
textPart.text = prependTag(tagId, textPart.text);
|
|
168079
|
+
}
|
|
167953
168080
|
targets.set(tagId, {
|
|
167954
168081
|
message,
|
|
167955
168082
|
setContent: (content) => {
|
|
@@ -167976,7 +168103,9 @@ function tagMessages(sessionId, messages, tagger, db) {
|
|
|
167976
168103
|
const { toolName, inputByteSize } = extractToolTagMetadata(toolPart);
|
|
167977
168104
|
const tagId = tagger.assignTag(sessionId, toolPart.callID, "tool", byteSize(toolPart.state.output), db, reasoningBytes, toolName, inputByteSize);
|
|
167978
168105
|
messageTagNumbers.set(message, Math.max(messageTagNumbers.get(message) ?? 0, tagId));
|
|
167979
|
-
|
|
168106
|
+
if (!skipPrefixInjection) {
|
|
168107
|
+
toolPart.state.output = prependTag(tagId, toolPart.state.output);
|
|
168108
|
+
}
|
|
167980
168109
|
toolTagByCallId.set(toolPart.callID, tagId);
|
|
167981
168110
|
if (thinkingParts.length > 0 && !toolThinkingByCallId.has(toolPart.callID)) {
|
|
167982
168111
|
toolThinkingByCallId.set(toolPart.callID, thinkingParts);
|
|
@@ -168922,7 +169051,16 @@ function applyHeuristicCleanup(sessionId, db, targets, messageTagNumbers, config
|
|
|
168922
169051
|
if (droppedTools > 0 || deduplicatedTools > 0 || droppedInjections > 0) {
|
|
168923
169052
|
sessionLog(sessionId, `heuristic cleanup: dropped ${droppedTools} tool tags, deduplicated ${deduplicatedTools} tool calls, dropped ${droppedInjections} system injections`);
|
|
168924
169053
|
}
|
|
168925
|
-
|
|
169054
|
+
let compressedTextTags = 0;
|
|
169055
|
+
if (config2.caveman?.enabled) {
|
|
169056
|
+
const cavemanResult = applyCavemanCleanup(sessionId, db, targets, tags, {
|
|
169057
|
+
enabled: true,
|
|
169058
|
+
minChars: config2.caveman.minChars,
|
|
169059
|
+
protectedTags: config2.protectedTags
|
|
169060
|
+
});
|
|
169061
|
+
compressedTextTags = cavemanResult.compressedToLite + cavemanResult.compressedToFull + cavemanResult.compressedToUltra;
|
|
169062
|
+
}
|
|
169063
|
+
return { droppedTools, deduplicatedTools, droppedInjections, compressedTextTags };
|
|
168926
169064
|
}
|
|
168927
169065
|
function extractToolInfo(part) {
|
|
168928
169066
|
if (part.type === "tool" && typeof part.tool === "string" && DEDUP_SAFE_TOOLS.has(part.tool)) {
|
|
@@ -168994,7 +169132,7 @@ async function runPostTransformPhase(args) {
|
|
|
168994
169132
|
const hasPendingUserOps = pendingOps.length > 0;
|
|
168995
169133
|
const shouldApplyPendingOps = (args.schedulerDecision === "execute" || isExplicitFlush || forceMaterialization) && (!compartmentRunning || emergencyBypassCompartmentGate);
|
|
168996
169134
|
const isCacheBustingPass = isExplicitFlush || shouldApplyPendingOps;
|
|
168997
|
-
const shouldRunHeuristics =
|
|
169135
|
+
const shouldRunHeuristics = (!compartmentRunning || emergencyBypassCompartmentGate) && (isExplicitFlush || forceMaterialization || args.schedulerDecision === "execute" && !alreadyRanThisTurn);
|
|
168998
169136
|
if (shouldRunHeuristics) {
|
|
168999
169137
|
const reason = isExplicitFlush ? "explicit_flush" : forceMaterialization ? `force_materialization (${args.contextUsage.percentage.toFixed(1)}% >= ${args.forceMaterializationPercentage}%)` : `scheduler_execute (pendingOps=${pendingOps.length}, scheduler=${args.schedulerDecision})`;
|
|
169000
169138
|
sessionLog(args.sessionId, `heuristics WILL RUN \u2014 reason=${reason}, context=${args.contextUsage.percentage.toFixed(1)}%, turn=${args.currentTurnId}`);
|
|
@@ -169024,16 +169162,21 @@ async function runPostTransformPhase(args) {
|
|
|
169024
169162
|
}
|
|
169025
169163
|
if (shouldRunHeuristics) {
|
|
169026
169164
|
const t5 = performance.now();
|
|
169165
|
+
const cavemanConfig = args.cavemanTextCompression?.enabled ? {
|
|
169166
|
+
enabled: true,
|
|
169167
|
+
minChars: args.cavemanTextCompression.minChars
|
|
169168
|
+
} : undefined;
|
|
169027
169169
|
const cleanup = applyHeuristicCleanup(args.sessionId, args.db, args.targets, args.messageTagNumbers, {
|
|
169028
169170
|
autoDropToolAge: args.autoDropToolAge,
|
|
169029
169171
|
dropToolStructure: args.dropToolStructure,
|
|
169030
169172
|
protectedTags: args.protectedTags,
|
|
169031
|
-
dropAllTools: forceMaterialization
|
|
169173
|
+
dropAllTools: forceMaterialization,
|
|
169174
|
+
caveman: cavemanConfig
|
|
169032
169175
|
}, args.tags);
|
|
169033
|
-
if (cleanup.droppedTools > 0 || cleanup.deduplicatedTools > 0 || cleanup.droppedInjections > 0) {
|
|
169176
|
+
if (cleanup.droppedTools > 0 || cleanup.deduplicatedTools > 0 || cleanup.droppedInjections > 0 || cleanup.compressedTextTags > 0) {
|
|
169034
169177
|
didMutateFromPendingOperations = true;
|
|
169035
169178
|
}
|
|
169036
|
-
logTransformTiming(args.sessionId, "applyHeuristicCleanup", t5, `droppedTools=${cleanup.droppedTools} deduplicatedTools=${cleanup.deduplicatedTools} droppedInjections=${cleanup.droppedInjections}`);
|
|
169179
|
+
logTransformTiming(args.sessionId, "applyHeuristicCleanup", t5, `droppedTools=${cleanup.droppedTools} deduplicatedTools=${cleanup.deduplicatedTools} droppedInjections=${cleanup.droppedInjections} compressedTextTags=${cleanup.compressedTextTags}`);
|
|
169037
169180
|
if (args.watermark > 0) {
|
|
169038
169181
|
const t6 = performance.now();
|
|
169039
169182
|
truncateErroredTools(args.messages, args.watermark, args.messageTagNumbers);
|
|
@@ -169179,7 +169322,7 @@ async function runPostTransformPhase(args) {
|
|
|
169179
169322
|
} else {
|
|
169180
169323
|
args.nudgePlacements.clear(args.sessionId);
|
|
169181
169324
|
}
|
|
169182
|
-
const stickyNoteNudge = getStickyNoteNudge(args.db, args.sessionId);
|
|
169325
|
+
const stickyNoteNudge = args.fullFeatureMode ? getStickyNoteNudge(args.db, args.sessionId) : null;
|
|
169183
169326
|
if (stickyNoteNudge) {
|
|
169184
169327
|
const reinjected = appendReminderToUserMessageById(args.messages, stickyNoteNudge.messageId, stickyNoteNudge.text);
|
|
169185
169328
|
if (!reinjected) {
|
|
@@ -169191,7 +169334,7 @@ async function runPostTransformPhase(args) {
|
|
|
169191
169334
|
}
|
|
169192
169335
|
}
|
|
169193
169336
|
}
|
|
169194
|
-
const deferredNoteText = peekNoteNudgeText(args.db, args.sessionId, args.currentTurnId, args.projectPath);
|
|
169337
|
+
const deferredNoteText = args.fullFeatureMode ? peekNoteNudgeText(args.db, args.sessionId, args.currentTurnId, args.projectPath) : null;
|
|
169195
169338
|
if (deferredNoteText) {
|
|
169196
169339
|
const noteInstruction = `
|
|
169197
169340
|
|
|
@@ -169476,7 +169619,11 @@ Historian previously failed ${historianFailureState.failureCount} time(s), so ma
|
|
|
169476
169619
|
try {
|
|
169477
169620
|
const t0 = performance.now();
|
|
169478
169621
|
deps.tagger.initFromDb(sessionId, db);
|
|
169479
|
-
const
|
|
169622
|
+
const ctxReduceEnabledEffective = deps.ctxReduceEnabled !== false;
|
|
169623
|
+
const skipPrefixInjection = !ctxReduceEnabledEffective || reducedMode;
|
|
169624
|
+
const result = tagMessages(sessionId, messages, deps.tagger, db, {
|
|
169625
|
+
skipPrefixInjection
|
|
169626
|
+
});
|
|
169480
169627
|
targets = result.targets;
|
|
169481
169628
|
reasoningByMessage = result.reasoningByMessage;
|
|
169482
169629
|
messageTagNumbers = result.messageTagNumbers;
|
|
@@ -169525,6 +169672,14 @@ Historian previously failed ${historianFailureState.failureCount} time(s), so ma
|
|
|
169525
169672
|
}
|
|
169526
169673
|
logTransformTiming(sessionId, "replayReasoningClearing", tReplay);
|
|
169527
169674
|
}
|
|
169675
|
+
if (!deps.ctxReduceEnabled && !reducedMode && deps.cavemanTextCompression?.enabled) {
|
|
169676
|
+
const tCavemanReplay = performance.now();
|
|
169677
|
+
const replayedCaveman = replayCavemanCompression(sessionId, db, targets, tags);
|
|
169678
|
+
if (replayedCaveman > 0) {
|
|
169679
|
+
sessionLog(sessionId, `caveman replay: re-applied ${replayedCaveman} text tags`);
|
|
169680
|
+
}
|
|
169681
|
+
logTransformTiming(sessionId, "replayCavemanCompression", tCavemanReplay);
|
|
169682
|
+
}
|
|
169528
169683
|
const t4 = performance.now();
|
|
169529
169684
|
const strippedClearedReasoning = stripClearedReasoning(messages, skipTypedReasoningCleanup);
|
|
169530
169685
|
logTransformTiming(sessionId, "stripClearedReasoning", t4, `strippedParts=${strippedClearedReasoning}`);
|
|
@@ -169614,7 +169769,8 @@ Historian previously failed ${historianFailureState.failureCount} time(s), so ma
|
|
|
169614
169769
|
hasRecentReduceCall,
|
|
169615
169770
|
skipTypedReasoningCleanup,
|
|
169616
169771
|
projectPath: deps.projectPath,
|
|
169617
|
-
autoSearch: deps.autoSearch
|
|
169772
|
+
autoSearch: deps.autoSearch,
|
|
169773
|
+
cavemanTextCompression: deps.ctxReduceEnabled === false && !reducedMode ? deps.cavemanTextCompression : undefined
|
|
169618
169774
|
});
|
|
169619
169775
|
logTransformTiming(sessionId, "postTransformPhase", tPostProcess);
|
|
169620
169776
|
const msgTokens = getMessageTokensCache(sessionId);
|
|
@@ -170590,13 +170746,21 @@ function createSystemPromptHashHandler(deps) {
|
|
|
170590
170746
|
const sessionId = input.sessionID;
|
|
170591
170747
|
if (!sessionId)
|
|
170592
170748
|
return;
|
|
170749
|
+
let sessionMetaEarly;
|
|
170750
|
+
try {
|
|
170751
|
+
sessionMetaEarly = getOrCreateSessionMeta(deps.db, sessionId);
|
|
170752
|
+
} catch (error48) {
|
|
170753
|
+
sessionLog(sessionId, "system-prompt-hash session meta load failed:", error48);
|
|
170754
|
+
}
|
|
170755
|
+
const isSubagentSession = sessionMetaEarly?.isSubagent === true;
|
|
170756
|
+
const effectiveCtxReduceEnabled = isSubagentSession ? false : deps.ctxReduceEnabled;
|
|
170593
170757
|
const fullPrompt = output.system.join(`
|
|
170594
170758
|
`);
|
|
170595
170759
|
if (fullPrompt.length > 0 && !fullPrompt.includes(MAGIC_CONTEXT_MARKER)) {
|
|
170596
170760
|
const detectedAgent = detectAgentFromSystemPrompt(fullPrompt);
|
|
170597
|
-
const guidance = buildMagicContextSection(detectedAgent, deps.protectedTags,
|
|
170761
|
+
const guidance = buildMagicContextSection(detectedAgent, deps.protectedTags, effectiveCtxReduceEnabled, deps.dreamerEnabled, deps.dropToolStructure, deps.experimentalTemporalAwareness);
|
|
170598
170762
|
output.system.push(guidance);
|
|
170599
|
-
sessionLog(sessionId, `injected ${detectedAgent ?? "generic"} guidance into system prompt`);
|
|
170763
|
+
sessionLog(sessionId, `injected ${detectedAgent ?? "generic"} guidance into system prompt (ctxReduce=${effectiveCtxReduceEnabled}, subagent=${isSubagentSession})`);
|
|
170600
170764
|
}
|
|
170601
170765
|
const isCacheBusting = deps.flushedSessions.has(sessionId);
|
|
170602
170766
|
if (shouldInjectDocs) {
|
|
@@ -170845,6 +171009,7 @@ function createMagicContextHook(deps) {
|
|
|
170845
171009
|
db,
|
|
170846
171010
|
nudgePlacements,
|
|
170847
171011
|
protectedTags: deps.config.protected_tags,
|
|
171012
|
+
ctxReduceEnabled,
|
|
170848
171013
|
autoDropToolAge: deps.config.auto_drop_tool_age ?? 100,
|
|
170849
171014
|
dropToolStructure: deps.config.drop_tool_structure ?? true,
|
|
170850
171015
|
clearReasoningAge: deps.config.clear_reasoning_age ?? 50,
|
|
@@ -170887,6 +171052,10 @@ function createMagicContextHook(deps) {
|
|
|
170887
171052
|
memoryEnabled: deps.config.memory?.enabled !== false,
|
|
170888
171053
|
embeddingEnabled: deps.config.embedding?.provider !== "off",
|
|
170889
171054
|
gitCommitsEnabled: deps.config.experimental?.git_commit_indexing?.enabled === true
|
|
171055
|
+
} : undefined,
|
|
171056
|
+
cavemanTextCompression: ctxReduceEnabled === false && deps.config.experimental?.caveman_text_compression?.enabled === true ? {
|
|
171057
|
+
enabled: true,
|
|
171058
|
+
minChars: deps.config.experimental.caveman_text_compression.min_chars ?? 500
|
|
170890
171059
|
} : undefined
|
|
170891
171060
|
});
|
|
170892
171061
|
const eventHandler = createEventHandler2({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-session-hooks.d.ts","sourceRoot":"","sources":["../../../src/plugin/hooks/create-session-hooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAU7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8CAA8C,CAAC;AACrF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9C,wBAAgB,kBAAkB,CAAC,IAAI,EAAE;IACrC,GAAG,EAAE,aAAa,CAAC;IACnB,YAAY,EAAE,wBAAwB,CAAC;IACvC,gBAAgB,EAAE,gBAAgB,CAAC;CACtC;;;;;;qBAmD4gD,CAAC;;;;;;;;;;;;qBAbz+C,CAAC;mBAAyB,CAAC;iBAChD,CAAX;iBAAuB,CAAC;0BAAc,CAAC;uBAAiB,CAAC;;;;;;
|
|
1
|
+
{"version":3,"file":"create-session-hooks.d.ts","sourceRoot":"","sources":["../../../src/plugin/hooks/create-session-hooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAU7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8CAA8C,CAAC;AACrF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9C,wBAAgB,kBAAkB,CAAC,IAAI,EAAE;IACrC,GAAG,EAAE,aAAa,CAAC;IACnB,YAAY,EAAE,wBAAwB,CAAC;IACvC,gBAAgB,EAAE,gBAAgB,CAAC;CACtC;;;;;;qBAmD4gD,CAAC;;;;;;;;;;;;qBAbz+C,CAAC;mBAAyB,CAAC;iBAChD,CAAX;iBAAuB,CAAC;0BAAc,CAAC;uBAAiB,CAAC;;;;;;0BAYi0nB,CAAC;;;;;;EAD/3nB"}
|
package/package.json
CHANGED