@loreai/core 0.11.0 → 0.12.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/bun/db.d.ts.map +1 -1
- package/dist/bun/distillation.d.ts +26 -0
- package/dist/bun/distillation.d.ts.map +1 -1
- package/dist/bun/gradient.d.ts.map +1 -1
- package/dist/bun/index.js +132 -27
- package/dist/bun/index.js.map +3 -3
- package/dist/bun/recall.d.ts.map +1 -1
- package/dist/bun/temporal.d.ts +15 -0
- package/dist/bun/temporal.d.ts.map +1 -1
- package/dist/node/db.d.ts.map +1 -1
- package/dist/node/distillation.d.ts +26 -0
- package/dist/node/distillation.d.ts.map +1 -1
- package/dist/node/gradient.d.ts.map +1 -1
- package/dist/node/index.js +132 -27
- package/dist/node/index.js.map +3 -3
- package/dist/node/recall.d.ts.map +1 -1
- package/dist/node/temporal.d.ts +15 -0
- package/dist/node/temporal.d.ts.map +1 -1
- package/dist/types/db.d.ts.map +1 -1
- package/dist/types/distillation.d.ts +26 -0
- package/dist/types/distillation.d.ts.map +1 -1
- package/dist/types/gradient.d.ts.map +1 -1
- package/dist/types/recall.d.ts.map +1 -1
- package/dist/types/temporal.d.ts +15 -0
- package/dist/types/temporal.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/db.ts +76 -8
- package/src/distillation.ts +125 -19
- package/src/gradient.ts +43 -9
- package/src/recall.ts +18 -0
- package/src/temporal.ts +39 -0
package/dist/bun/recall.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recall.d.ts","sourceRoot":"","sources":["../../src/recall.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAczC,KAAK,YAAY,GAAG;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,YAAY,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjE,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,CAAC;AAEtE,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,sDAAsD;IACtD,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,gDAAgD;IAChD,WAAW,EAAE,MAAM,CAAC;IACpB,gEAAgE;IAChE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sEAAsE;IACtE,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,mFAAmF;IACnF,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,6EAA6E;IAC7E,YAAY,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;CACrC,CAAC;AAEF,2EAA2E;AAC3E,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC;AA+JlC,wFAAwF;AACxF,wBAAsB,SAAS,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,
|
|
1
|
+
{"version":3,"file":"recall.d.ts","sourceRoot":"","sources":["../../src/recall.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAczC,KAAK,YAAY,GAAG;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,YAAY,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjE,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,CAAC;AAEtE,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,sDAAsD;IACtD,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,gDAAgD;IAChD,WAAW,EAAE,MAAM,CAAC;IACpB,gEAAgE;IAChE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sEAAsE;IACtE,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,mFAAmF;IACnF,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,6EAA6E;IAC7E,YAAY,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;CACrC,CAAC;AAEF,2EAA2E;AAC3E,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC;AA+JlC,wFAAwF;AACxF,wBAAsB,SAAS,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CAuOzE;AAED,sEAAsE;AACtE,eAAO,MAAM,uBAAuB,wiBAC8f,CAAC;AAEniB,mEAAmE;AACnE,eAAO,MAAM,yBAAyB;;;CAIrC,CAAC"}
|
package/dist/bun/temporal.d.ts
CHANGED
|
@@ -68,6 +68,21 @@ export declare function searchScored(input: {
|
|
|
68
68
|
sessionID?: string;
|
|
69
69
|
limit?: number;
|
|
70
70
|
}): ScoredTemporalMessage[];
|
|
71
|
+
/**
|
|
72
|
+
* Normalized variance of relative-existence weights over message timestamps.
|
|
73
|
+
*
|
|
74
|
+
* Measures temporal attention imbalance: 0 means timestamps are evenly
|
|
75
|
+
* distributed (uniform attention), 1 means a single distant timestamp
|
|
76
|
+
* dominates (attention stuck in the past). Useful as a lightweight
|
|
77
|
+
* signal for distillation segmentation, recall time-biasing, and
|
|
78
|
+
* idle-resume awareness.
|
|
79
|
+
*
|
|
80
|
+
* Only meaningful for n ≥ 2. Returns 0 for 0 or 1 timestamps.
|
|
81
|
+
*
|
|
82
|
+
* Based on the "Temporal Clustering via Relative Existence" heuristic
|
|
83
|
+
* from D7x7z49/llm-context-idea.
|
|
84
|
+
*/
|
|
85
|
+
export declare function temporalCnorm(timestamps: number[], now?: number): number;
|
|
71
86
|
export declare function count(projectPath: string, sessionID?: string): number;
|
|
72
87
|
export declare function undistilledCount(projectPath: string, sessionID?: string): number;
|
|
73
88
|
export type PruneResult = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"temporal.d.ts","sourceRoot":"","sources":["../../src/temporal.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAQrD;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,gBAAgB,WAAS,CAAC;AAEvC;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,CAarD;AAiBD,wBAAgB,KAAK,CAAC,KAAK,EAAE;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,WAAW,CAAC;IAClB,KAAK,EAAE,QAAQ,EAAE,CAAC;CACnB,QAqCA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,wBAAgB,WAAW,CACzB,WAAW,EAAE,MAAM,EACnB,SAAS,CAAC,EAAE,MAAM,GACjB,eAAe,EAAE,CASnB;AAED,wBAAgB,SAAS,CACvB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB,eAAe,EAAE,CAOnB;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,QAQ1C;AA2BD,wBAAgB,MAAM,CAAC,KAAK,EAAE;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,eAAe,EAAE,CA0CpB;AAED,MAAM,MAAM,qBAAqB,GAAG,eAAe,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvE;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,qBAAqB,EAAE,CAgC1B;AAED,wBAAgB,KAAK,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAWrE;AAED,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,MAAM,EACnB,SAAS,CAAC,EAAE,MAAM,GACjB,MAAM,CAWR;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,kFAAkF;IAClF,UAAU,EAAE,MAAM,CAAC;IACnB,8FAA8F;IAC9F,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;CACtB,GAAG,WAAW,CA0Ed"}
|
|
1
|
+
{"version":3,"file":"temporal.d.ts","sourceRoot":"","sources":["../../src/temporal.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAQrD;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,gBAAgB,WAAS,CAAC;AAEvC;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,CAarD;AAiBD,wBAAgB,KAAK,CAAC,KAAK,EAAE;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,WAAW,CAAC;IAClB,KAAK,EAAE,QAAQ,EAAE,CAAC;CACnB,QAqCA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,wBAAgB,WAAW,CACzB,WAAW,EAAE,MAAM,EACnB,SAAS,CAAC,EAAE,MAAM,GACjB,eAAe,EAAE,CASnB;AAED,wBAAgB,SAAS,CACvB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB,eAAe,EAAE,CAOnB;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,QAQ1C;AA2BD,wBAAgB,MAAM,CAAC,KAAK,EAAE;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,eAAe,EAAE,CA0CpB;AAED,MAAM,MAAM,qBAAqB,GAAG,eAAe,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvE;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,qBAAqB,EAAE,CAgC1B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAC3B,UAAU,EAAE,MAAM,EAAE,EACpB,GAAG,GAAE,MAAmB,GACvB,MAAM,CAoBR;AAED,wBAAgB,KAAK,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAWrE;AAED,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,MAAM,EACnB,SAAS,CAAC,EAAE,MAAM,GACjB,MAAM,CAWR;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,kFAAkF;IAClF,UAAU,EAAE,MAAM,CAAC;IACnB,8FAA8F;IAC9F,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;CACtB,GAAG,WAAW,CA0Ed"}
|
package/dist/node/db.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/db.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAyVtC,wBAAgB,EAAE,IAAI,QAAQ,
|
|
1
|
+
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/db.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAyVtC,wBAAgB,EAAE,IAAI,QAAQ,CAkC7B;AAmGD,wBAAgB,KAAK,SAKpB;AAGD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAYjE;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAK1D;AAED,2DAA2D;AAC3D,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAKrD;AAED;;;GAGG;AACH,wBAAgB,UAAU,IAAI,OAAO,CAKpC;AAMD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAK3D;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAYxE"}
|
|
@@ -3,6 +3,32 @@ import { workerSessionIDs } from "./worker";
|
|
|
3
3
|
import type { LLMClient } from "./types";
|
|
4
4
|
export { workerSessionIDs };
|
|
5
5
|
type TemporalMessage = temporal.TemporalMessage;
|
|
6
|
+
/**
|
|
7
|
+
* Compression health ratio: k / √N.
|
|
8
|
+
*
|
|
9
|
+
* k = distilled token count, N = source token count.
|
|
10
|
+
* Values < 1.0 signal likely lossy compression (below the square-root
|
|
11
|
+
* boundary). Values > 1.0 signal relatively faithful compression.
|
|
12
|
+
*
|
|
13
|
+
* Based on the "LLM Context Square Root Theory" heuristic from
|
|
14
|
+
* D7x7z49/llm-context-idea. The specific threshold is unvalidated —
|
|
15
|
+
* use as a diagnostic signal, not a hard gate.
|
|
16
|
+
*/
|
|
17
|
+
export declare function compressionRatio(distilledTokens: number, sourceTokens: number): number;
|
|
18
|
+
/**
|
|
19
|
+
* Segment detection: group related messages into distillation-sized chunks.
|
|
20
|
+
*
|
|
21
|
+
* When the message count exceeds `maxSegment`, prefers splitting at the
|
|
22
|
+
* largest inter-message time gap (if it's ≥ 3× the median gap) to respect
|
|
23
|
+
* natural conversation boundaries. Falls back to count-based splitting at
|
|
24
|
+
* `maxSegment` when timestamps are uniform.
|
|
25
|
+
*
|
|
26
|
+
* Trailing segments with < 3 messages are merged into the previous segment
|
|
27
|
+
* to avoid tiny distillation inputs with too little context.
|
|
28
|
+
*
|
|
29
|
+
* Exported for testing; `run()` is the production caller.
|
|
30
|
+
*/
|
|
31
|
+
export declare function detectSegments(messages: TemporalMessage[], maxSegment: number): TemporalMessage[][];
|
|
6
32
|
/**
|
|
7
33
|
* Truncate tool outputs within a `TemporalMessage.content` string (produced
|
|
8
34
|
* by `temporal.partsToText`). Plain text and `[reasoning]` chunks pass
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"distillation.d.ts","sourceRoot":"","sources":["../../src/distillation.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AAWvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAGzC,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAE5B,KAAK,eAAe,GAAG,QAAQ,CAAC,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"distillation.d.ts","sourceRoot":"","sources":["../../src/distillation.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AAWvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAGzC,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAE5B,KAAK,eAAe,GAAG,QAAQ,CAAC,eAAe,CAAC;AAEhD;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAC9B,eAAe,EAAE,MAAM,EACvB,YAAY,EAAE,MAAM,GACnB,MAAM,CAGR;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,eAAe,EAAE,EAC3B,UAAU,EAAE,MAAM,GACjB,eAAe,EAAE,EAAE,CAGrB;AAwGD;;;;;;;;;;;;GAYG;AACH,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACf,MAAM,CAwBR;AAgBD;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,eAAe,EAAE,EAC3B,kBAAkB,CAAC,EAAE,MAAM,GAC1B,MAAM,CAUR;AAED,KAAK,kBAAkB,GAAG;IACxB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAwBF;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB,MAAM,GAAG,SAAS,CAEpB;AAwBD,+EAA+E;AAC/E,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAQpD;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAC5B,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,eAAe,UAAQ,GACtB,YAAY,EAAE,CAqBhB;AA0ID,wBAAsB,GAAG,CAAC,KAAK,EAAE;IAC/B,GAAG,EAAE,SAAS,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAChD,qEAAqE;IACrE,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CA4DjD;AAmED;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAAC,KAAK,EAAE;IACvC,GAAG,EAAE,SAAS,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CACjD,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CA+ErC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gradient.d.ts","sourceRoot":"","sources":["../../src/gradient.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"gradient.d.ts","sourceRoot":"","sources":["../../src/gradient.ts"],"names":[],"mappings":"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"}
|
package/dist/node/index.js
CHANGED
|
@@ -131,6 +131,7 @@ __export(temporal_exports, {
|
|
|
131
131
|
search: () => search2,
|
|
132
132
|
searchScored: () => searchScored,
|
|
133
133
|
store: () => store,
|
|
134
|
+
temporalCnorm: () => temporalCnorm,
|
|
134
135
|
undistilled: () => undistilled,
|
|
135
136
|
undistilledCount: () => undistilledCount
|
|
136
137
|
});
|
|
@@ -510,12 +511,13 @@ function db() {
|
|
|
510
511
|
mkdirSync(dir, { recursive: true });
|
|
511
512
|
path = join(dir, "lore.db");
|
|
512
513
|
}
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
migrate(
|
|
514
|
+
const database = new Database(path);
|
|
515
|
+
database.exec("PRAGMA journal_mode = WAL");
|
|
516
|
+
database.exec("PRAGMA foreign_keys = ON");
|
|
517
|
+
database.exec("PRAGMA busy_timeout = 5000");
|
|
518
|
+
database.exec("PRAGMA auto_vacuum = INCREMENTAL");
|
|
519
|
+
migrate(database);
|
|
520
|
+
instance = database;
|
|
519
521
|
return instance;
|
|
520
522
|
}
|
|
521
523
|
var VACUUM_MIGRATION_INDEX = 2;
|
|
@@ -524,16 +526,47 @@ function migrate(database) {
|
|
|
524
526
|
"SELECT name FROM sqlite_master WHERE type='table' AND name='schema_version'"
|
|
525
527
|
).get();
|
|
526
528
|
const current2 = row ? database.query("SELECT version FROM schema_version").get()?.version ?? 0 : 0;
|
|
527
|
-
if (current2 >= MIGRATIONS.length)
|
|
529
|
+
if (current2 >= MIGRATIONS.length) {
|
|
530
|
+
recoverMissingObjects(database);
|
|
531
|
+
return;
|
|
532
|
+
}
|
|
528
533
|
for (let i = current2; i < MIGRATIONS.length; i++) {
|
|
529
534
|
if (i === VACUUM_MIGRATION_INDEX) {
|
|
530
535
|
database.exec("PRAGMA auto_vacuum = INCREMENTAL");
|
|
531
536
|
database.exec("VACUUM");
|
|
532
537
|
} else {
|
|
533
|
-
|
|
538
|
+
try {
|
|
539
|
+
database.exec(MIGRATIONS[i]);
|
|
540
|
+
} catch (e) {
|
|
541
|
+
if (e instanceof Error && /duplicate column name/i.test(e.message)) {
|
|
542
|
+
const stripped = stripAppliedAlters(MIGRATIONS[i], database);
|
|
543
|
+
if (stripped.trim()) database.exec(stripped);
|
|
544
|
+
} else {
|
|
545
|
+
throw e;
|
|
546
|
+
}
|
|
547
|
+
}
|
|
534
548
|
}
|
|
535
549
|
}
|
|
536
550
|
database.exec(`UPDATE schema_version SET version = ${MIGRATIONS.length}`);
|
|
551
|
+
recoverMissingObjects(database);
|
|
552
|
+
}
|
|
553
|
+
function stripAppliedAlters(migration, database) {
|
|
554
|
+
return migration.replace(
|
|
555
|
+
/ALTER\s+TABLE\s+(\w+)\s+ADD\s+COLUMN\s+(\w+)\b[^;]*;/gi,
|
|
556
|
+
(match, table, column) => {
|
|
557
|
+
const cols = database.query(`PRAGMA table_info(${table})`).all();
|
|
558
|
+
if (cols.some((c) => c.name === column)) return "";
|
|
559
|
+
return match;
|
|
560
|
+
}
|
|
561
|
+
);
|
|
562
|
+
}
|
|
563
|
+
function recoverMissingObjects(database) {
|
|
564
|
+
database.exec(`
|
|
565
|
+
CREATE TABLE IF NOT EXISTS kv_meta (
|
|
566
|
+
key TEXT PRIMARY KEY,
|
|
567
|
+
value TEXT NOT NULL
|
|
568
|
+
);
|
|
569
|
+
`);
|
|
537
570
|
}
|
|
538
571
|
function close() {
|
|
539
572
|
if (instance) {
|
|
@@ -11439,6 +11472,18 @@ function searchScored(input) {
|
|
|
11439
11472
|
return [];
|
|
11440
11473
|
}
|
|
11441
11474
|
}
|
|
11475
|
+
function temporalCnorm(timestamps, now = Date.now()) {
|
|
11476
|
+
const n = timestamps.length;
|
|
11477
|
+
if (n < 2) return 0;
|
|
11478
|
+
const durations = timestamps.map((t2) => now - t2);
|
|
11479
|
+
const totalDuration = durations.reduce((a, b) => a + b, 0);
|
|
11480
|
+
if (totalDuration <= 0) return 0;
|
|
11481
|
+
const weights = durations.map((d) => d / totalDuration);
|
|
11482
|
+
const uniform = 1 / n;
|
|
11483
|
+
const variance = weights.reduce((sum, w) => sum + (w - uniform) ** 2, 0) / n;
|
|
11484
|
+
const maxVariance = (n - 1) / (n * n);
|
|
11485
|
+
return maxVariance === 0 ? 0 : variance / maxVariance;
|
|
11486
|
+
}
|
|
11442
11487
|
function count(projectPath, sessionID) {
|
|
11443
11488
|
const pid = ensureProject(projectPath);
|
|
11444
11489
|
const query = sessionID ? "SELECT COUNT(*) as count FROM temporal_messages WHERE project_id = ? AND session_id = ?" : "SELECT COUNT(*) as count FROM temporal_messages WHERE project_id = ?";
|
|
@@ -26756,6 +26801,8 @@ function check2(projectPath) {
|
|
|
26756
26801
|
// src/distillation.ts
|
|
26757
26802
|
var distillation_exports = {};
|
|
26758
26803
|
__export(distillation_exports, {
|
|
26804
|
+
compressionRatio: () => compressionRatio,
|
|
26805
|
+
detectSegments: () => detectSegments,
|
|
26759
26806
|
latestMetaObservations: () => latestMetaObservations,
|
|
26760
26807
|
loadForSession: () => loadForSession,
|
|
26761
26808
|
messagesToText: () => messagesToText,
|
|
@@ -27536,15 +27583,29 @@ function transform2(input) {
|
|
|
27536
27583
|
return result;
|
|
27537
27584
|
}
|
|
27538
27585
|
function currentTurnStart(messages) {
|
|
27539
|
-
|
|
27586
|
+
if (messages.length === 0) return 0;
|
|
27587
|
+
let boundary = messages.length;
|
|
27540
27588
|
for (let i = messages.length - 1; i >= 0; i--) {
|
|
27541
27589
|
if (messages[i].info.role === "user") {
|
|
27542
|
-
|
|
27590
|
+
boundary = i;
|
|
27543
27591
|
break;
|
|
27544
27592
|
}
|
|
27545
27593
|
}
|
|
27546
|
-
if (
|
|
27547
|
-
|
|
27594
|
+
if (boundary === messages.length) return 0;
|
|
27595
|
+
for (let i = boundary - 1; i >= 0; i--) {
|
|
27596
|
+
const msg = messages[i];
|
|
27597
|
+
const hasToolParts = msg.parts.some(isToolPart);
|
|
27598
|
+
if (hasToolParts) {
|
|
27599
|
+
boundary = i;
|
|
27600
|
+
continue;
|
|
27601
|
+
}
|
|
27602
|
+
if (msg.info.role === "user") {
|
|
27603
|
+
boundary = i;
|
|
27604
|
+
continue;
|
|
27605
|
+
}
|
|
27606
|
+
break;
|
|
27607
|
+
}
|
|
27608
|
+
return boundary;
|
|
27548
27609
|
}
|
|
27549
27610
|
function tryFit(input) {
|
|
27550
27611
|
if (input.prefixTokens > input.distilledBudget && input.prefix.length > 0)
|
|
@@ -27599,25 +27660,50 @@ function isWorkerSession(sessionID) {
|
|
|
27599
27660
|
}
|
|
27600
27661
|
|
|
27601
27662
|
// src/distillation.ts
|
|
27663
|
+
function compressionRatio(distilledTokens, sourceTokens) {
|
|
27664
|
+
if (sourceTokens <= 0) return 0;
|
|
27665
|
+
return distilledTokens / Math.sqrt(sourceTokens);
|
|
27666
|
+
}
|
|
27602
27667
|
function detectSegments(messages, maxSegment) {
|
|
27603
27668
|
if (messages.length <= maxSegment) return [messages];
|
|
27604
|
-
|
|
27605
|
-
|
|
27606
|
-
|
|
27607
|
-
|
|
27608
|
-
|
|
27609
|
-
|
|
27610
|
-
|
|
27611
|
-
|
|
27612
|
-
|
|
27613
|
-
|
|
27614
|
-
|
|
27615
|
-
|
|
27616
|
-
|
|
27617
|
-
|
|
27669
|
+
return splitSegments(messages, maxSegment);
|
|
27670
|
+
}
|
|
27671
|
+
var MIN_SEGMENT = 3;
|
|
27672
|
+
var GAP_THRESHOLD_MULTIPLIER = 3;
|
|
27673
|
+
function splitSegments(messages, maxSegment) {
|
|
27674
|
+
if (messages.length <= maxSegment) return [messages];
|
|
27675
|
+
const splitIdx = findSplitIndex(messages, maxSegment);
|
|
27676
|
+
const left = messages.slice(0, splitIdx);
|
|
27677
|
+
const right = messages.slice(splitIdx);
|
|
27678
|
+
const result = splitSegments(left, maxSegment);
|
|
27679
|
+
if (right.length < MIN_SEGMENT) {
|
|
27680
|
+
result[result.length - 1].push(...right);
|
|
27681
|
+
} else {
|
|
27682
|
+
result.push(...splitSegments(right, maxSegment));
|
|
27683
|
+
}
|
|
27684
|
+
return result;
|
|
27685
|
+
}
|
|
27686
|
+
function findSplitIndex(messages, maxSegment) {
|
|
27687
|
+
const gaps = [];
|
|
27688
|
+
for (let i = 1; i < messages.length; i++) {
|
|
27689
|
+
gaps.push({
|
|
27690
|
+
index: i,
|
|
27691
|
+
gap: messages[i].created_at - messages[i - 1].created_at
|
|
27692
|
+
});
|
|
27693
|
+
}
|
|
27694
|
+
if (gaps.length === 0) return maxSegment;
|
|
27695
|
+
const sortedGaps = gaps.map((g) => g.gap).sort((a, b) => a - b);
|
|
27696
|
+
const medianGap = sortedGaps[Math.floor(sortedGaps.length / 2)];
|
|
27697
|
+
let bestGap = { index: -1, gap: 0 };
|
|
27698
|
+
for (const g of gaps) {
|
|
27699
|
+
if (g.gap > bestGap.gap && g.index >= MIN_SEGMENT && messages.length - g.index >= MIN_SEGMENT) {
|
|
27700
|
+
bestGap = g;
|
|
27618
27701
|
}
|
|
27619
27702
|
}
|
|
27620
|
-
|
|
27703
|
+
if (bestGap.index > 0 && bestGap.gap >= medianGap * GAP_THRESHOLD_MULTIPLIER) {
|
|
27704
|
+
return bestGap.index;
|
|
27705
|
+
}
|
|
27706
|
+
return maxSegment;
|
|
27621
27707
|
}
|
|
27622
27708
|
function formatTime(ms) {
|
|
27623
27709
|
const d = new Date(ms);
|
|
@@ -27855,6 +27941,13 @@ async function distillSegment(input) {
|
|
|
27855
27941
|
generation: 0
|
|
27856
27942
|
});
|
|
27857
27943
|
markDistilled(input.messages.map((m) => m.id));
|
|
27944
|
+
const distilledTokens = Math.ceil(result.observations.length / 3);
|
|
27945
|
+
const sourceTokens = input.messages.reduce((sum, m) => sum + m.tokens, 0);
|
|
27946
|
+
const rComp = compressionRatio(distilledTokens, sourceTokens);
|
|
27947
|
+
const cNorm = temporalCnorm(input.messages.map((m) => m.created_at));
|
|
27948
|
+
info(
|
|
27949
|
+
`distill segment: ${input.messages.length} msgs, ${sourceTokens}\u2192${distilledTokens} tokens, R=${rComp.toFixed(2)}, C_norm=${cNorm.toFixed(3)}`
|
|
27950
|
+
);
|
|
27858
27951
|
if (isAvailable()) {
|
|
27859
27952
|
embedDistillation(distillId, result.observations);
|
|
27860
27953
|
}
|
|
@@ -28219,6 +28312,18 @@ async function runRecall(input) {
|
|
|
28219
28312
|
key: (r) => `t:${r.item.id}`
|
|
28220
28313
|
}
|
|
28221
28314
|
);
|
|
28315
|
+
if (temporalResults.length > 0) {
|
|
28316
|
+
const recencySorted = [...temporalResults].sort(
|
|
28317
|
+
(a, b) => b.created_at - a.created_at
|
|
28318
|
+
);
|
|
28319
|
+
allRrfLists.push({
|
|
28320
|
+
items: recencySorted.map((item) => ({
|
|
28321
|
+
source: "temporal",
|
|
28322
|
+
item
|
|
28323
|
+
})),
|
|
28324
|
+
key: (r) => `t:${r.item.id}`
|
|
28325
|
+
});
|
|
28326
|
+
}
|
|
28222
28327
|
}
|
|
28223
28328
|
if (isAvailable() && scope !== "session") {
|
|
28224
28329
|
try {
|