@loreai/core 0.20.0 → 0.20.2
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/config.d.ts +1 -1
- package/dist/bun/config.d.ts.map +1 -1
- package/dist/bun/distillation.d.ts +4 -0
- package/dist/bun/distillation.d.ts.map +1 -1
- package/dist/bun/gradient.d.ts +58 -16
- package/dist/bun/gradient.d.ts.map +1 -1
- package/dist/bun/index.d.ts +1 -1
- package/dist/bun/index.d.ts.map +1 -1
- package/dist/bun/index.js +101 -102
- package/dist/bun/index.js.map +3 -3
- package/dist/node/config.d.ts +1 -1
- package/dist/node/config.d.ts.map +1 -1
- package/dist/node/distillation.d.ts +4 -0
- package/dist/node/distillation.d.ts.map +1 -1
- package/dist/node/gradient.d.ts +58 -16
- package/dist/node/gradient.d.ts.map +1 -1
- package/dist/node/index.d.ts +1 -1
- package/dist/node/index.d.ts.map +1 -1
- package/dist/node/index.js +101 -102
- package/dist/node/index.js.map +3 -3
- package/dist/types/config.d.ts +1 -1
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/distillation.d.ts +4 -0
- package/dist/types/distillation.d.ts.map +1 -1
- package/dist/types/gradient.d.ts +58 -16
- package/dist/types/gradient.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/config.ts +4 -12
- package/src/distillation.ts +12 -1
- package/src/gradient.ts +205 -190
- package/src/index.ts +8 -4
package/dist/node/config.d.ts
CHANGED
|
@@ -15,7 +15,7 @@ export declare const LoreConfig: z.ZodObject<{
|
|
|
15
15
|
ltm: z.ZodDefault<z.ZodNumber>;
|
|
16
16
|
targetCacheReadCostPerTurn: z.ZodDefault<z.ZodNumber>;
|
|
17
17
|
maxLayer0Tokens: z.ZodOptional<z.ZodNumber>;
|
|
18
|
-
targetBustCost: z.ZodDefault<z.ZodNumber
|
|
18
|
+
targetBustCost: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
|
|
19
19
|
maxContextTokens: z.ZodOptional<z.ZodNumber>;
|
|
20
20
|
}, z.core.$strip>>;
|
|
21
21
|
idleResumeMinutes: z.ZodDefault<z.ZodNumber>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAsOrB,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAIpD,wBAAgB,MAAM,IAAI,UAAU,CAEnC;AAED,wBAAsB,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAajE"}
|
|
@@ -151,6 +151,10 @@ export declare function run(input: {
|
|
|
151
151
|
skipMeta?: boolean;
|
|
152
152
|
urgent?: boolean;
|
|
153
153
|
callType?: "batch" | "direct";
|
|
154
|
+
/** Override the meta-distillation gen-0 threshold. When set, meta-distillation
|
|
155
|
+
* triggers at this count instead of `cfg.distillation.metaThreshold`.
|
|
156
|
+
* Used by the urgent-distillation path to consolidate earlier under bust pressure. */
|
|
157
|
+
metaThresholdOverride?: number;
|
|
154
158
|
}): Promise<{
|
|
155
159
|
rounds: number;
|
|
156
160
|
distilled: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"distillation.d.ts","sourceRoot":"","sources":["../../src/distillation.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"distillation.d.ts","sourceRoot":"","sources":["../../src/distillation.ts"],"names":[],"mappings":"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"}
|
package/dist/node/gradient.d.ts
CHANGED
|
@@ -1,23 +1,44 @@
|
|
|
1
1
|
import type { LoreMessageWithParts } from "./types";
|
|
2
2
|
type MessageWithParts = LoreMessageWithParts;
|
|
3
|
-
/**
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
3
|
+
/**
|
|
4
|
+
* Set cache pricing for the current model. Called by the host adapter after
|
|
5
|
+
* looking up model cost data. Required for tier-based bust-vs-continue
|
|
6
|
+
* decisions. When not set (both 0), tier decisions fall back to conservative
|
|
7
|
+
* defaults: always compress at tier boundaries.
|
|
8
|
+
*/
|
|
9
|
+
export declare function setCachePricing(writeCost: number, readCost: number): void;
|
|
10
|
+
/** Returns current pricing (for tests). */
|
|
11
|
+
export declare function getCachePricing(): {
|
|
12
|
+
write: number;
|
|
13
|
+
read: number;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Decide whether compression is economical at a tier boundary.
|
|
17
|
+
*
|
|
18
|
+
* @param currentTokens - expected input tokens if we stay at the current layer
|
|
19
|
+
* @param compressedTokens - expected tokens after compression
|
|
20
|
+
* @param consecutiveBusts - how many turns in a row we've busted the cache
|
|
21
|
+
* @param threshold - bust cost must be < threshold × continue cost to compress (default 0.85)
|
|
22
|
+
* @returns true if compression is worth it
|
|
23
|
+
*/
|
|
24
|
+
export declare function shouldCompress(currentTokens: number, compressedTokens: number, consecutiveBusts: number, threshold?: number): boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Determine which tier the given token count falls into.
|
|
27
|
+
* Returns 0, 1, or 2 corresponding to the tier index.
|
|
28
|
+
*/
|
|
29
|
+
export declare function getTier(tokens: number): number;
|
|
30
|
+
/**
|
|
31
|
+
* Record cache usage from an API response. Tracks consecutive busts for
|
|
32
|
+
* the rolling bust detection used by shouldCompress().
|
|
33
|
+
*
|
|
34
|
+
* A "bust" is when cache_write > 50% of total input tokens.
|
|
15
35
|
*
|
|
16
36
|
* @param cacheWrite - cache_creation_input_tokens from the API response
|
|
17
37
|
* @param cacheRead - cache_read_input_tokens from the API response
|
|
38
|
+
* @param inputTokens - total input_tokens from the API response (includes uncached)
|
|
18
39
|
* @param sessionID - session that produced this response
|
|
19
40
|
*/
|
|
20
|
-
export declare function
|
|
41
|
+
export declare function recordCacheUsage(cacheWrite: number, cacheRead: number, inputTokens: number, sessionID?: string): void;
|
|
21
42
|
type DistillationSnapshot = {
|
|
22
43
|
/** Cached distillation rows from the most recent DB read */
|
|
23
44
|
rows: Distillation[];
|
|
@@ -141,10 +162,27 @@ export declare function inspectSessionState(sessionID: string): {
|
|
|
141
162
|
postIdleCompact: boolean;
|
|
142
163
|
lastTurnAt: number;
|
|
143
164
|
distillationSnapshot: DistillationSnapshot | null;
|
|
144
|
-
|
|
145
|
-
dynamicContextCap: number;
|
|
146
|
-
consecutiveLayer4: number;
|
|
165
|
+
consecutiveBusts: number;
|
|
147
166
|
} | null;
|
|
167
|
+
/**
|
|
168
|
+
* Return the consecutive-bust counter for a session (read-only).
|
|
169
|
+
* Returns 0 if the session has no in-memory state — callers treat this
|
|
170
|
+
* as "no bust pressure" which is the safe default.
|
|
171
|
+
*
|
|
172
|
+
* Uses Map.get() instead of getSessionState() to avoid creating phantom
|
|
173
|
+
* SessionState entries with zeroed calibration fields, which would cause
|
|
174
|
+
* the next transform() call to treat the session as uncalibrated.
|
|
175
|
+
*/
|
|
176
|
+
export declare function getConsecutiveBusts(sessionID: string): number;
|
|
177
|
+
/** Bust-pressure threshold for meta-distillation: consecutive busts ≥ this
|
|
178
|
+
* value trigger earlier consolidation of gen-0 segments. */
|
|
179
|
+
export declare const BUST_PRESSURE_THRESHOLD = 3;
|
|
180
|
+
/**
|
|
181
|
+
* Compute the effective meta-distillation threshold under bust pressure.
|
|
182
|
+
* When busts ≥ BUST_PRESSURE_THRESHOLD, lowers the threshold to 1/4 of the
|
|
183
|
+
* configured value (min 3) to consolidate the distilled prefix earlier.
|
|
184
|
+
*/
|
|
185
|
+
export declare function effectiveMetaThreshold(busts: number, configThreshold: number): number;
|
|
148
186
|
/**
|
|
149
187
|
* For testing only — set the session's lastTurnAt field. Used to simulate
|
|
150
188
|
* idle gaps without sleeping. Creates the session state if not present so
|
|
@@ -218,6 +256,10 @@ export type TransformResult = {
|
|
|
218
256
|
distilledBudget: number;
|
|
219
257
|
rawBudget: number;
|
|
220
258
|
refreshLtm: boolean;
|
|
259
|
+
/** When set, the conversation is growing unsustainably — 5+ consecutive
|
|
260
|
+
* cache busts detected. The pipeline should inject a warning message
|
|
261
|
+
* advising the user to compact or start a new conversation. */
|
|
262
|
+
unsustainable?: boolean;
|
|
221
263
|
};
|
|
222
264
|
export declare function needsUrgentDistillation(sessionID: string): boolean;
|
|
223
265
|
export declare function transform(input: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gradient.d.ts","sourceRoot":"","sources":["../../src/gradient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAyB,oBAAoB,EAAqE,MAAM,SAAS,CAAC;AAQ9I,KAAK,gBAAgB,GAAG,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"gradient.d.ts","sourceRoot":"","sources":["../../src/gradient.ts"],"names":[],"mappings":"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"}
|
package/dist/node/index.d.ts
CHANGED
|
@@ -18,7 +18,7 @@ export { load, config, type LoreConfig } from "./config";
|
|
|
18
18
|
export { db, dbPath, ensureProject, getLastImportAt, setLastImportAt, isFirstRun, projectId, projectName, projectPath, resolveProjectByRemoteOrPath, mergeProjectInternal, loadForceMinLayer, saveForceMinLayer, saveSessionCosts, loadSessionCosts, loadAllSessionCosts, type SessionCostSnapshot, saveSessionTracking, loadSessionTracking, loadHeaderSessionIndex, type SessionTrackingState, type LoadedSessionTracking, getKV, setKV, getMeta, setMeta, getInstanceId, close, } from "./db";
|
|
19
19
|
export { normalizeRemoteUrl, getGitRemote, clearGitRemoteCache } from "./git";
|
|
20
20
|
export { enableHostedMode, isHostedMode } from "./hosted";
|
|
21
|
-
export { transform, setModelLimits, setMaxLayer0Tokens, computeLayer0Cap,
|
|
21
|
+
export { transform, setModelLimits, setMaxLayer0Tokens, computeLayer0Cap, setCachePricing, getCachePricing, shouldCompress, getTier, recordCacheUsage, needsUrgentDistillation, calibrate, setLtmTokens, getLtmTokens, getLtmBudget, setForceMinLayer, getLastTransformedCount, getLastTransformEstimate, getLastLayer, toolStripAnnotation, onIdleResume, getLastTurnAt, consumeCameOutOfIdle, saveGradientState, setLastTurnAtForTest, inspectSessionState, getConsecutiveBusts, BUST_PRESSURE_THRESHOLD, effectiveMetaThreshold, } from "./gradient";
|
|
22
22
|
export { formatKnowledge, formatDistillations, DISTILLATION_SYSTEM, distillationUser, RECURSIVE_SYSTEM, recursiveUser, CURATOR_SYSTEM, curatorUser, CONSOLIDATION_SYSTEM, consolidationUser, QUERY_EXPANSION_SYSTEM, COMPACT_SUMMARY_TEMPLATE, buildCompactPrompt, } from "./prompt";
|
|
23
23
|
export { shouldImport, importFromFile, exportToFile, exportLoreFile, importLoreFile, shouldImportLoreFile, loreFileExists, clearLoreFileCache, LORE_FILE, } from "./agents-file";
|
|
24
24
|
export { workerSessionIDs, isWorkerSession } from "./worker";
|
package/dist/node/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,GAAG,MAAM,OAAO,CAAC;AAC7B,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,YAAY,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,eAAe,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,SAAS,MAAM,cAAc,CAAC;AAC1C,OAAO,KAAK,cAAc,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,iBAAiB,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,GAAG,MAAM,OAAO,CAAC;AAC7B,OAAO,KAAK,kBAAkB,MAAM,UAAU,CAAC;AAE/C,OAAO,EACL,SAAS,EACT,YAAY,EACZ,UAAU,EACV,uBAAuB,EACvB,yBAAyB,EACzB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,KAAK,YAAY,EACjB,KAAK,kBAAkB,GACxB,MAAM,UAAU,CAAC;AAElB,YAAY,EACV,WAAW,EACX,eAAe,EACf,oBAAoB,EACpB,QAAQ,EACR,YAAY,EACZ,iBAAiB,EACjB,YAAY,EACZ,eAAe,EACf,aAAa,EACb,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,EACtB,kBAAkB,EAClB,oBAAoB,EACpB,SAAS,GACV,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAElE,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,UAAU,EAAE,MAAM,UAAU,CAAC;AACzD,OAAO,EACL,EAAE,EACF,MAAM,EACN,aAAa,EACb,eAAe,EACf,eAAe,EACf,UAAU,EACV,SAAS,EACT,WAAW,EACX,WAAW,EACX,4BAA4B,EAC5B,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,KAAK,mBAAmB,EACxB,mBAAmB,EACnB,mBAAmB,EACnB,sBAAsB,EACtB,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,EACL,KAAK,EACL,OAAO,EACP,OAAO,EACP,aAAa,EACb,KAAK,GACN,MAAM,MAAM,CAAC;AACd,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,OAAO,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC1D,OAAO,EACL,SAAS,EACT,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/node/index.js
CHANGED
|
@@ -26629,19 +26629,11 @@ var LoreConfig = external_exports.object({
|
|
|
26629
26629
|
* cost-aware formula from targetCacheReadCostPerTurn. 0 = disabled
|
|
26630
26630
|
* (no cap, use full context). Default: undefined (use cost-aware auto). */
|
|
26631
26631
|
maxLayer0Tokens: external_exports.number().min(0).optional(),
|
|
26632
|
-
/**
|
|
26633
|
-
|
|
26634
|
-
|
|
26635
|
-
* For opus-4-6 ($6.25/M write): $1.00 → 160K cap.
|
|
26636
|
-
* For sonnet-4 ($3.75/M write): $1.00 → 267K (effectively uncapped at 200K).
|
|
26637
|
-
* The cap is further adjusted dynamically per session based on observed
|
|
26638
|
-
* bust rate (EMA) and break frequency. Default: 1.00. Set to 0 to disable. */
|
|
26639
|
-
targetBustCost: external_exports.number().min(0).default(1),
|
|
26640
|
-
/** Direct override for the total-context token cap at layer 1+. When set,
|
|
26641
|
-
* bypasses the cost-aware formula from targetBustCost. 0 = disabled.
|
|
26642
|
-
* Default: undefined (use cost-aware auto). */
|
|
26632
|
+
/** @deprecated Ignored. Tier-based bust-vs-continue replaces static cap. */
|
|
26633
|
+
targetBustCost: external_exports.number().min(0).default(1).optional(),
|
|
26634
|
+
/** @deprecated Ignored. Tier-based bust-vs-continue replaces static cap. */
|
|
26643
26635
|
maxContextTokens: external_exports.number().min(0).optional()
|
|
26644
|
-
}).default({ distilled: 0.25, raw: 0.4, output: 0.25, ltm: 0.05, targetCacheReadCostPerTurn: 0.1
|
|
26636
|
+
}).default({ distilled: 0.25, raw: 0.4, output: 0.25, ltm: 0.05, targetCacheReadCostPerTurn: 0.1 }),
|
|
26645
26637
|
/**
|
|
26646
26638
|
* Cold-cache idle-resume handling.
|
|
26647
26639
|
*
|
|
@@ -29953,70 +29945,41 @@ function estimateMessage(msg) {
|
|
|
29953
29945
|
}
|
|
29954
29946
|
var contextLimit = 2e5;
|
|
29955
29947
|
var outputReserved = 32e3;
|
|
29956
|
-
var
|
|
29957
|
-
var
|
|
29958
|
-
var
|
|
29959
|
-
|
|
29960
|
-
|
|
29961
|
-
|
|
29962
|
-
return Math.max(MIN_CONTEXT_FLOOR, Math.floor(targetBustCost / cacheWriteCostPerToken));
|
|
29963
|
-
}
|
|
29964
|
-
function setMaxContextTokens(tokens) {
|
|
29965
|
-
maxContextTokensCeiling = Math.max(0, Math.floor(tokens));
|
|
29948
|
+
var TIER_BOUNDARIES = [2e5, 5e5];
|
|
29949
|
+
var cacheWriteCostPerToken = 0;
|
|
29950
|
+
var cacheReadCostPerToken = 0;
|
|
29951
|
+
function setCachePricing(writeCost, readCost) {
|
|
29952
|
+
cacheWriteCostPerToken = Math.max(0, writeCost);
|
|
29953
|
+
cacheReadCostPerToken = Math.max(0, readCost);
|
|
29966
29954
|
}
|
|
29967
|
-
function
|
|
29968
|
-
return
|
|
29955
|
+
function getCachePricing() {
|
|
29956
|
+
return { write: cacheWriteCostPerToken, read: cacheReadCostPerToken };
|
|
29969
29957
|
}
|
|
29970
|
-
|
|
29958
|
+
var maxLayer0Tokens = 0;
|
|
29959
|
+
var MIN_LAYER0_FLOOR = 4e4;
|
|
29960
|
+
function shouldCompress(currentTokens, compressedTokens, consecutiveBusts, threshold = 0.85) {
|
|
29961
|
+
if (consecutiveBusts >= 5) return false;
|
|
29962
|
+
if (cacheWriteCostPerToken <= 0 || cacheReadCostPerToken <= 0) return false;
|
|
29963
|
+
const bustCost = compressedTokens * cacheWriteCostPerToken;
|
|
29964
|
+
const continueCost = currentTokens * cacheReadCostPerToken;
|
|
29965
|
+
return bustCost < threshold * continueCost;
|
|
29966
|
+
}
|
|
29967
|
+
function getTier(tokens) {
|
|
29968
|
+
if (tokens <= TIER_BOUNDARIES[0]) return 0;
|
|
29969
|
+
if (tokens <= TIER_BOUNDARIES[1]) return 1;
|
|
29970
|
+
return 2;
|
|
29971
|
+
}
|
|
29972
|
+
function recordCacheUsage(cacheWrite, cacheRead, inputTokens, sessionID) {
|
|
29971
29973
|
if (!sessionID) return;
|
|
29972
29974
|
const state = getSessionState(sessionID);
|
|
29973
|
-
|
|
29974
|
-
|
|
29975
|
-
if (
|
|
29976
|
-
state.
|
|
29977
|
-
|
|
29978
|
-
|
|
29979
|
-
);
|
|
29975
|
+
const total = inputTokens > 0 ? inputTokens : cacheWrite + cacheRead;
|
|
29976
|
+
if (total > 0) {
|
|
29977
|
+
if (cacheWrite / total > 0.5) {
|
|
29978
|
+
state.consecutiveBusts++;
|
|
29979
|
+
} else {
|
|
29980
|
+
state.consecutiveBusts = 0;
|
|
29980
29981
|
}
|
|
29981
|
-
return;
|
|
29982
|
-
}
|
|
29983
|
-
if (lastLayer !== void 0) {
|
|
29984
|
-
state.consecutiveLayer4 = 0;
|
|
29985
29982
|
}
|
|
29986
|
-
const total = cacheWrite + cacheRead;
|
|
29987
|
-
if (total === 0) return;
|
|
29988
|
-
const bustRatio = cacheWrite / total;
|
|
29989
|
-
state.bustRateEMA = state.bustRateEMA < 0 ? bustRatio : state.bustRateEMA * 0.7 + bustRatio * 0.3;
|
|
29990
|
-
const now = Date.now();
|
|
29991
|
-
if (bustRatio > 0.5) {
|
|
29992
|
-
if (state.lastBustAt > 0) {
|
|
29993
|
-
const interval = now - state.lastBustAt;
|
|
29994
|
-
state.interBustIntervalEMA = state.interBustIntervalEMA < 0 ? interval : state.interBustIntervalEMA * 0.7 + interval * 0.3;
|
|
29995
|
-
}
|
|
29996
|
-
state.lastBustAt = now;
|
|
29997
|
-
}
|
|
29998
|
-
adaptContextCap(state);
|
|
29999
|
-
}
|
|
30000
|
-
function adaptContextCap(state) {
|
|
30001
|
-
if (maxContextTokensCeiling <= 0) return;
|
|
30002
|
-
const cap = state.dynamicContextCap > 0 ? state.dynamicContextCap : maxContextTokensCeiling;
|
|
30003
|
-
let newCap = cap;
|
|
30004
|
-
if (state.bustRateEMA > 0.8) {
|
|
30005
|
-
newCap = Math.floor(cap * 0.9);
|
|
30006
|
-
} else if (state.bustRateEMA < 0.3) {
|
|
30007
|
-
newCap = Math.floor(cap * 1.05);
|
|
30008
|
-
}
|
|
30009
|
-
if (state.interBustIntervalEMA > 0) {
|
|
30010
|
-
if (state.interBustIntervalEMA < 2 * 6e4) {
|
|
30011
|
-
newCap = Math.floor(newCap * 0.95);
|
|
30012
|
-
} else if (state.interBustIntervalEMA > 10 * 6e4) {
|
|
30013
|
-
newCap = Math.floor(newCap * 1.03);
|
|
30014
|
-
}
|
|
30015
|
-
}
|
|
30016
|
-
state.dynamicContextCap = Math.max(
|
|
30017
|
-
MIN_CONTEXT_FLOOR,
|
|
30018
|
-
Math.min(maxContextTokensCeiling, newCap)
|
|
30019
|
-
);
|
|
30020
29983
|
}
|
|
30021
29984
|
var FIRST_TURN_OVERHEAD = 15e3;
|
|
30022
29985
|
var calibratedOverhead = null;
|
|
@@ -30037,11 +30000,7 @@ function makeSessionState() {
|
|
|
30037
30000
|
cameOutOfIdle: false,
|
|
30038
30001
|
postIdleCompact: false,
|
|
30039
30002
|
consecutiveHighLayer: 0,
|
|
30040
|
-
|
|
30041
|
-
bustRateEMA: -1,
|
|
30042
|
-
interBustIntervalEMA: -1,
|
|
30043
|
-
lastBustAt: 0,
|
|
30044
|
-
dynamicContextCap: 0,
|
|
30003
|
+
consecutiveBusts: 0,
|
|
30045
30004
|
distillationSnapshot: null
|
|
30046
30005
|
};
|
|
30047
30006
|
}
|
|
@@ -30053,13 +30012,10 @@ function getSessionState(sessionID) {
|
|
|
30053
30012
|
state.forceMinLayer = loadForceMinLayer(sessionID);
|
|
30054
30013
|
const persisted = loadSessionTracking(sessionID);
|
|
30055
30014
|
if (persisted && persisted.lastTurnAt > 0) {
|
|
30056
|
-
state.dynamicContextCap = persisted.dynamicContextCap;
|
|
30057
|
-
state.bustRateEMA = persisted.bustRateEMA;
|
|
30058
|
-
state.interBustIntervalEMA = persisted.interBustIntervalEMA;
|
|
30059
30015
|
state.lastLayer = persisted.lastLayer;
|
|
30060
30016
|
state.lastKnownInput = persisted.lastKnownInput;
|
|
30061
30017
|
state.lastTurnAt = persisted.lastTurnAt;
|
|
30062
|
-
state.
|
|
30018
|
+
state.consecutiveBusts = persisted.dynamicContextCap;
|
|
30063
30019
|
}
|
|
30064
30020
|
sessionStates.set(sessionID, state);
|
|
30065
30021
|
}
|
|
@@ -30095,9 +30051,9 @@ function setModelLimits(limits) {
|
|
|
30095
30051
|
function setMaxLayer0Tokens(tokens) {
|
|
30096
30052
|
maxLayer0Tokens = Math.max(0, Math.floor(tokens));
|
|
30097
30053
|
}
|
|
30098
|
-
function computeLayer0Cap(targetCostPerTurn,
|
|
30099
|
-
if (targetCostPerTurn <= 0 ||
|
|
30100
|
-
const rawCap = Math.floor(targetCostPerTurn /
|
|
30054
|
+
function computeLayer0Cap(targetCostPerTurn, cacheReadCostPerToken2) {
|
|
30055
|
+
if (targetCostPerTurn <= 0 || cacheReadCostPerToken2 <= 0) return 0;
|
|
30056
|
+
const rawCap = Math.floor(targetCostPerTurn / cacheReadCostPerToken2);
|
|
30101
30057
|
return Math.max(rawCap, MIN_LAYER0_FLOOR);
|
|
30102
30058
|
}
|
|
30103
30059
|
function setLtmTokens(tokens, sessionID) {
|
|
@@ -30166,11 +30122,16 @@ function inspectSessionState(sessionID) {
|
|
|
30166
30122
|
postIdleCompact: state.postIdleCompact,
|
|
30167
30123
|
lastTurnAt: state.lastTurnAt,
|
|
30168
30124
|
distillationSnapshot: state.distillationSnapshot,
|
|
30169
|
-
|
|
30170
|
-
dynamicContextCap: state.dynamicContextCap,
|
|
30171
|
-
consecutiveLayer4: state.consecutiveLayer4
|
|
30125
|
+
consecutiveBusts: state.consecutiveBusts
|
|
30172
30126
|
};
|
|
30173
30127
|
}
|
|
30128
|
+
function getConsecutiveBusts(sessionID) {
|
|
30129
|
+
return sessionStates.get(sessionID)?.consecutiveBusts ?? 0;
|
|
30130
|
+
}
|
|
30131
|
+
var BUST_PRESSURE_THRESHOLD = 3;
|
|
30132
|
+
function effectiveMetaThreshold(busts, configThreshold) {
|
|
30133
|
+
return busts >= BUST_PRESSURE_THRESHOLD ? Math.max(3, Math.floor(configThreshold / 4)) : configThreshold;
|
|
30134
|
+
}
|
|
30174
30135
|
function setLastTurnAtForTest(sessionID, ms) {
|
|
30175
30136
|
getSessionState(sessionID).lastTurnAt = ms;
|
|
30176
30137
|
}
|
|
@@ -30178,13 +30139,12 @@ function saveGradientState(sessionID) {
|
|
|
30178
30139
|
const state = sessionStates.get(sessionID);
|
|
30179
30140
|
if (!state) return;
|
|
30180
30141
|
saveSessionTracking(sessionID, {
|
|
30181
|
-
dynamicContextCap: state.dynamicContextCap,
|
|
30182
|
-
bustRateEMA: state.bustRateEMA,
|
|
30183
|
-
interBustIntervalEMA: state.interBustIntervalEMA,
|
|
30184
30142
|
lastLayer: state.lastLayer,
|
|
30185
30143
|
lastKnownInput: state.lastKnownInput,
|
|
30186
30144
|
lastTurnAt: state.lastTurnAt,
|
|
30187
|
-
|
|
30145
|
+
// Repurpose the dead dynamicContextCap column (v24, always 0 now)
|
|
30146
|
+
// to persist consecutiveBusts — avoids a new DB migration.
|
|
30147
|
+
dynamicContextCap: state.consecutiveBusts
|
|
30188
30148
|
});
|
|
30189
30149
|
}
|
|
30190
30150
|
function loadDistillations(projectPath2, sessionID) {
|
|
@@ -30629,8 +30589,7 @@ function transformInner(input) {
|
|
|
30629
30589
|
0,
|
|
30630
30590
|
contextLimit - outputReserved - overhead - sessLtmTokens
|
|
30631
30591
|
);
|
|
30632
|
-
const
|
|
30633
|
-
const usable = effectiveCap > 0 && usableRaw > effectiveCap ? effectiveCap : usableRaw;
|
|
30592
|
+
const usable = usableRaw;
|
|
30634
30593
|
const distilledBudget = Math.floor(usable * cfg.budget.distilled);
|
|
30635
30594
|
let rawBudget = Math.floor(usable * cfg.budget.raw);
|
|
30636
30595
|
let effectiveMinLayer = sessState.forceMinLayer;
|
|
@@ -30651,8 +30610,7 @@ function transformInner(input) {
|
|
|
30651
30610
|
if (postIdleCompact) {
|
|
30652
30611
|
sessState.postIdleCompact = false;
|
|
30653
30612
|
effectiveMinLayer = Math.max(effectiveMinLayer, 1);
|
|
30654
|
-
|
|
30655
|
-
rawBudget = Math.floor(usable * postIdleRawFraction);
|
|
30613
|
+
rawBudget = Math.floor(usable * 0.2);
|
|
30656
30614
|
info(
|
|
30657
30615
|
`post-idle compact: session=${sid} rawBudget=${rawBudget} (${Math.floor(usable * cfg.budget.raw)}\u2192${rawBudget})`
|
|
30658
30616
|
);
|
|
@@ -30683,9 +30641,32 @@ function transformInner(input) {
|
|
|
30683
30641
|
usable,
|
|
30684
30642
|
distilledBudget,
|
|
30685
30643
|
rawBudget,
|
|
30686
|
-
refreshLtm: false
|
|
30644
|
+
refreshLtm: false,
|
|
30645
|
+
unsustainable: sid ? getSessionState(sid).consecutiveBusts >= 5 : false
|
|
30687
30646
|
};
|
|
30688
30647
|
}
|
|
30648
|
+
if (effectiveMinLayer === 0 && layer0Input > layer0Ceiling && layer0Input <= maxInput && sid) {
|
|
30649
|
+
const busts = getSessionState(sid).consecutiveBusts;
|
|
30650
|
+
const compressedEstimate = distilledBudget + rawBudget;
|
|
30651
|
+
if (!shouldCompress(Math.round(layer0Input), compressedEstimate, busts)) {
|
|
30652
|
+
const messageTokens = calibrated ? expectedInput - (sessLtmTokens - sessState.lastKnownLtm) : expectedInput - overhead - sessLtmTokens;
|
|
30653
|
+
info(
|
|
30654
|
+
`tier gate: session=${sid} skipping compression \u2014 bustCost not justified (input=${Math.round(layer0Input)} compressed=${compressedEstimate} busts=${busts})`
|
|
30655
|
+
);
|
|
30656
|
+
return {
|
|
30657
|
+
messages: input.messages,
|
|
30658
|
+
layer: 0,
|
|
30659
|
+
distilledTokens: 0,
|
|
30660
|
+
rawTokens: Math.max(0, messageTokens),
|
|
30661
|
+
totalTokens: Math.max(0, messageTokens),
|
|
30662
|
+
usable,
|
|
30663
|
+
distilledBudget,
|
|
30664
|
+
rawBudget,
|
|
30665
|
+
refreshLtm: false,
|
|
30666
|
+
unsustainable: busts >= 5
|
|
30667
|
+
};
|
|
30668
|
+
}
|
|
30669
|
+
}
|
|
30689
30670
|
const turnStart = currentTurnStart(input.messages);
|
|
30690
30671
|
const dedupMessages = deduplicateToolOutputs(input.messages, turnStart);
|
|
30691
30672
|
const distillations = sid ? loadDistillationsCached(input.projectPath, sid, input.messages, sessState) : [];
|
|
@@ -30733,7 +30714,15 @@ function transformInner(input) {
|
|
|
30733
30714
|
if (sid && (s > 0 || cached2.tokens === 0)) {
|
|
30734
30715
|
urgentDistillationMap.set(sid, true);
|
|
30735
30716
|
}
|
|
30736
|
-
return {
|
|
30717
|
+
return {
|
|
30718
|
+
...result,
|
|
30719
|
+
layer: stageLayer,
|
|
30720
|
+
usable,
|
|
30721
|
+
distilledBudget,
|
|
30722
|
+
rawBudget,
|
|
30723
|
+
refreshLtm: false,
|
|
30724
|
+
unsustainable: sid ? getSessionState(sid).consecutiveBusts >= 5 : false
|
|
30725
|
+
};
|
|
30737
30726
|
}
|
|
30738
30727
|
}
|
|
30739
30728
|
sessState.rawWindowCache = null;
|
|
@@ -30769,6 +30758,7 @@ function transformInner(input) {
|
|
|
30769
30758
|
}
|
|
30770
30759
|
const nuclearRaw = [...olderMessages, ...currentTurn];
|
|
30771
30760
|
const nuclearRawTokens = olderTokens + currentTurnTokens;
|
|
30761
|
+
const unsustainable = sid ? getSessionState(sid).consecutiveBusts >= 5 : false;
|
|
30772
30762
|
return {
|
|
30773
30763
|
messages: [...nuclearPrefix, ...nuclearRaw],
|
|
30774
30764
|
layer: 4,
|
|
@@ -30778,7 +30768,8 @@ function transformInner(input) {
|
|
|
30778
30768
|
usable,
|
|
30779
30769
|
distilledBudget,
|
|
30780
30770
|
rawBudget,
|
|
30781
|
-
refreshLtm: true
|
|
30771
|
+
refreshLtm: true,
|
|
30772
|
+
unsustainable
|
|
30782
30773
|
};
|
|
30783
30774
|
}
|
|
30784
30775
|
function transform2(input) {
|
|
@@ -30803,7 +30794,7 @@ function transform2(input) {
|
|
|
30803
30794
|
state.consecutiveHighLayer = 0;
|
|
30804
30795
|
}
|
|
30805
30796
|
info(
|
|
30806
|
-
`gradient: session=${sid} layer=${result.layer} tokens=${result.totalTokens} (distilled=${result.distilledTokens} raw=${result.rawTokens}) usable=${result.usable}
|
|
30797
|
+
`gradient: session=${sid} layer=${result.layer} tokens=${result.totalTokens} (distilled=${result.distilledTokens} raw=${result.rawTokens}) usable=${result.usable} tier=${getTier(result.totalTokens)} l0cap=${maxLayer0Tokens || "off"}`
|
|
30807
30798
|
);
|
|
30808
30799
|
}
|
|
30809
30800
|
return result;
|
|
@@ -31353,7 +31344,11 @@ async function runInner(input) {
|
|
|
31353
31344
|
}
|
|
31354
31345
|
}
|
|
31355
31346
|
}
|
|
31356
|
-
|
|
31347
|
+
const effectiveMetaThreshold2 = Math.max(
|
|
31348
|
+
2,
|
|
31349
|
+
input.metaThresholdOverride ?? cfg.distillation.metaThreshold
|
|
31350
|
+
);
|
|
31351
|
+
if (!input.skipMeta && gen0Count(input.projectPath, input.sessionID) >= effectiveMetaThreshold2) {
|
|
31357
31352
|
await metaDistillInner({
|
|
31358
31353
|
llm: input.llm,
|
|
31359
31354
|
projectPath: input.projectPath,
|
|
@@ -33916,6 +33911,7 @@ function resolveWorkerModel(_providerID, configWorkerModel, configModel, costAwa
|
|
|
33916
33911
|
return configModel;
|
|
33917
33912
|
}
|
|
33918
33913
|
export {
|
|
33914
|
+
BUST_PRESSURE_THRESHOLD,
|
|
33919
33915
|
COMPACT_SUMMARY_TEMPLATE,
|
|
33920
33916
|
CONSOLIDATION_SYSTEM,
|
|
33921
33917
|
CURATOR_SYSTEM,
|
|
@@ -33931,7 +33927,6 @@ export {
|
|
|
33931
33927
|
clearGitRemoteCache,
|
|
33932
33928
|
clearLoreFileCache,
|
|
33933
33929
|
close,
|
|
33934
|
-
computeContextCap,
|
|
33935
33930
|
computeLayer0Cap,
|
|
33936
33931
|
config2 as config,
|
|
33937
33932
|
consolidationUser,
|
|
@@ -33945,6 +33940,7 @@ export {
|
|
|
33945
33940
|
dbPath,
|
|
33946
33941
|
distillation_exports as distillation,
|
|
33947
33942
|
distillationUser,
|
|
33943
|
+
effectiveMetaThreshold,
|
|
33948
33944
|
embedding_exports as embedding,
|
|
33949
33945
|
embedding_vendor_exports as embeddingVendor,
|
|
33950
33946
|
enableHostedMode,
|
|
@@ -33959,6 +33955,8 @@ export {
|
|
|
33959
33955
|
ftsQuery,
|
|
33960
33956
|
ftsQueryOr,
|
|
33961
33957
|
ftsQueryRelaxed,
|
|
33958
|
+
getCachePricing,
|
|
33959
|
+
getConsecutiveBusts,
|
|
33962
33960
|
getGitRemote,
|
|
33963
33961
|
getInstanceId,
|
|
33964
33962
|
getKV,
|
|
@@ -33969,8 +33967,8 @@ export {
|
|
|
33969
33967
|
getLastTurnAt,
|
|
33970
33968
|
getLtmBudget,
|
|
33971
33969
|
getLtmTokens,
|
|
33972
|
-
getMaxContextTokens,
|
|
33973
33970
|
getMeta,
|
|
33971
|
+
getTier,
|
|
33974
33972
|
h,
|
|
33975
33973
|
importFromFile,
|
|
33976
33974
|
importLoreFile,
|
|
@@ -34007,6 +34005,7 @@ export {
|
|
|
34007
34005
|
projectPath,
|
|
34008
34006
|
recallById,
|
|
34009
34007
|
reciprocalRankFusion,
|
|
34008
|
+
recordCacheUsage,
|
|
34010
34009
|
recursiveUser,
|
|
34011
34010
|
renderMarkdown,
|
|
34012
34011
|
resolveProjectByRemoteOrPath,
|
|
@@ -34019,15 +34018,16 @@ export {
|
|
|
34019
34018
|
saveSessionTracking,
|
|
34020
34019
|
searchRecall,
|
|
34021
34020
|
serialize,
|
|
34021
|
+
setCachePricing,
|
|
34022
34022
|
setForceMinLayer,
|
|
34023
34023
|
setKV,
|
|
34024
34024
|
setLastImportAt,
|
|
34025
34025
|
setLastTurnAtForTest,
|
|
34026
34026
|
setLtmTokens,
|
|
34027
|
-
setMaxContextTokens,
|
|
34028
34027
|
setMaxLayer0Tokens,
|
|
34029
34028
|
setMeta,
|
|
34030
34029
|
setModelLimits,
|
|
34030
|
+
shouldCompress,
|
|
34031
34031
|
shouldImport,
|
|
34032
34032
|
shouldImportLoreFile,
|
|
34033
34033
|
strong2 as strong,
|
|
@@ -34037,7 +34037,6 @@ export {
|
|
|
34037
34037
|
transform2 as transform,
|
|
34038
34038
|
ul,
|
|
34039
34039
|
unescapeMarkdown,
|
|
34040
|
-
updateBustRate,
|
|
34041
34040
|
worker_model_exports as workerModel,
|
|
34042
34041
|
workerSessionIDs
|
|
34043
34042
|
};
|