@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/bun/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>;
|
package/dist/bun/config.d.ts.map
CHANGED
|
@@ -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/bun/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":"AAAA,OAAO,KAAK,EAAyB,oBAAoB,EAAqE,MAAM,SAAS,CAAC;AAQ9I,KAAK,gBAAgB,GAAG,oBAAoB,CAAC;AAyD7C;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,QAGlE;AAED,2CAA2C;AAC3C,wBAAgB,eAAe,IAAI;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAEjE;AAWD;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAC5B,aAAa,EAAE,MAAM,EACrB,gBAAgB,EAAE,MAAM,EACxB,gBAAgB,EAAE,MAAM,EACxB,SAAS,SAAO,GACf,OAAO,CAeT;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAI9C;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,SAAS,CAAC,EAAE,MAAM,GACjB,IAAI,CAeN;AA4BD,KAAK,oBAAoB,GAAG;IAC1B,4DAA4D;IAC5D,IAAI,EAAE,YAAY,EAAE,CAAC;IACrB,+DAA+D;IAC/D,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B,CAAC;AAqIF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,YAAY,CAC1B,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,GAAG,GAAE,MAAmB,EACxB,WAAW,GAAE,OAAe,GAC3B;IAAE,SAAS,EAAE,KAAK,CAAA;CAAE,GAAG;IAAE,SAAS,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAY5D;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAK/D;AAOD,wBAAgB,cAAc,CAAC,MAAM,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,QASzE;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,QAEhD;AAED,sFAAsF;AACtF,wBAAgB,gBAAgB,CAC9B,iBAAiB,EAAE,MAAM,EACzB,qBAAqB,EAAE,MAAM,GAC5B,MAAM,CAIR;AAED;;;wCAGwC;AACxC,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,QAK9D;AAED;8DAC8D;AAC9D,wBAAgB,YAAY,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAMvD;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAIxD;AAWD,wBAAgB,SAAS,CACvB,WAAW,EAAE,MAAM,EACnB,SAAS,CAAC,EAAE,MAAM,EAClB,YAAY,CAAC,EAAE,MAAM,QA2BtB;AAED,wBAAgB,WAAW,IAAI,MAAM,CAEpC;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED,0EAA0E;AAC1E,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAElE;AAED,+EAA+E;AAC/E,wBAAgB,YAAY,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,WAAW,CAK5D;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,WAAW,EAAE,SAAS,CAAC,EAAE,MAAM,QAWtE;AAGD,wBAAgB,gBAAgB,CAAC,SAAS,CAAC,EAAE,MAAM,QAalD;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG;IACtD,cAAc,EAAE,OAAO,CAAC;IACxB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,aAAa,EAAE,OAAO,CAAC;IACvB,eAAe,EAAE,OAAO,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,oBAAoB,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAClD,gBAAgB,EAAE,MAAM,CAAC;CAC1B,GAAG,IAAI,CAYP;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED;6DAC6D;AAC7D,eAAO,MAAM,uBAAuB,IAAI,CAAC;AAEzC;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,MAAM,CAIrF;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAExE;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAYzD;AAED,KAAK,YAAY,GAAG;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAuHF,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAwB5E;AAyBD,kEAAkE;AAClE,KAAK,SAAS,GAAG;IACf,IAAI,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,mDAAmD;IACnD,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3B,CAAC;AAgCF;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,GAAG,OAAO,CAuB7E;AAsBD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,gBAAgB,EAAE,EAC5B,cAAc,EAAE,MAAM,GACrB,gBAAgB,EAAE,CA+FpB;AAiTD,wBAAgB,gBAAgB,CAAC,SAAS,CAAC,EAAE,MAAM,QAOlD;AAGD,wBAAgB,yBAAyB,CAAC,SAAS,CAAC,EAAE,MAAM,QAO3D;AAgCD,wBAAgB,mBAAmB,CAAC,SAAS,CAAC,EAAE,MAAM,QAOrD;AAuHD,MAAM,MAAM,WAAW,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAqB5C,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,KAAK,EAAE,WAAW,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IAEpB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAIlB,UAAU,EAAE,OAAO,CAAC;IACpB;;oEAEgE;IAChE,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAMF,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAIlE;AA2XD,wBAAgB,SAAS,CAAC,KAAK,EAAE;IAC/B,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,eAAe,CAwClB;AAGD,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,GAAG,MAAM,CAErE"}
|
package/dist/bun/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/bun/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/bun/index.js
CHANGED
|
@@ -26612,19 +26612,11 @@ var LoreConfig = external_exports.object({
|
|
|
26612
26612
|
* cost-aware formula from targetCacheReadCostPerTurn. 0 = disabled
|
|
26613
26613
|
* (no cap, use full context). Default: undefined (use cost-aware auto). */
|
|
26614
26614
|
maxLayer0Tokens: external_exports.number().min(0).optional(),
|
|
26615
|
-
/**
|
|
26616
|
-
|
|
26617
|
-
|
|
26618
|
-
* For opus-4-6 ($6.25/M write): $1.00 → 160K cap.
|
|
26619
|
-
* For sonnet-4 ($3.75/M write): $1.00 → 267K (effectively uncapped at 200K).
|
|
26620
|
-
* The cap is further adjusted dynamically per session based on observed
|
|
26621
|
-
* bust rate (EMA) and break frequency. Default: 1.00. Set to 0 to disable. */
|
|
26622
|
-
targetBustCost: external_exports.number().min(0).default(1),
|
|
26623
|
-
/** Direct override for the total-context token cap at layer 1+. When set,
|
|
26624
|
-
* bypasses the cost-aware formula from targetBustCost. 0 = disabled.
|
|
26625
|
-
* Default: undefined (use cost-aware auto). */
|
|
26615
|
+
/** @deprecated Ignored. Tier-based bust-vs-continue replaces static cap. */
|
|
26616
|
+
targetBustCost: external_exports.number().min(0).default(1).optional(),
|
|
26617
|
+
/** @deprecated Ignored. Tier-based bust-vs-continue replaces static cap. */
|
|
26626
26618
|
maxContextTokens: external_exports.number().min(0).optional()
|
|
26627
|
-
}).default({ distilled: 0.25, raw: 0.4, output: 0.25, ltm: 0.05, targetCacheReadCostPerTurn: 0.1
|
|
26619
|
+
}).default({ distilled: 0.25, raw: 0.4, output: 0.25, ltm: 0.05, targetCacheReadCostPerTurn: 0.1 }),
|
|
26628
26620
|
/**
|
|
26629
26621
|
* Cold-cache idle-resume handling.
|
|
26630
26622
|
*
|
|
@@ -29936,70 +29928,41 @@ function estimateMessage(msg) {
|
|
|
29936
29928
|
}
|
|
29937
29929
|
var contextLimit = 2e5;
|
|
29938
29930
|
var outputReserved = 32e3;
|
|
29939
|
-
var
|
|
29940
|
-
var
|
|
29941
|
-
var
|
|
29942
|
-
|
|
29943
|
-
|
|
29944
|
-
|
|
29945
|
-
return Math.max(MIN_CONTEXT_FLOOR, Math.floor(targetBustCost / cacheWriteCostPerToken));
|
|
29946
|
-
}
|
|
29947
|
-
function setMaxContextTokens(tokens) {
|
|
29948
|
-
maxContextTokensCeiling = Math.max(0, Math.floor(tokens));
|
|
29931
|
+
var TIER_BOUNDARIES = [2e5, 5e5];
|
|
29932
|
+
var cacheWriteCostPerToken = 0;
|
|
29933
|
+
var cacheReadCostPerToken = 0;
|
|
29934
|
+
function setCachePricing(writeCost, readCost) {
|
|
29935
|
+
cacheWriteCostPerToken = Math.max(0, writeCost);
|
|
29936
|
+
cacheReadCostPerToken = Math.max(0, readCost);
|
|
29949
29937
|
}
|
|
29950
|
-
function
|
|
29951
|
-
return
|
|
29938
|
+
function getCachePricing() {
|
|
29939
|
+
return { write: cacheWriteCostPerToken, read: cacheReadCostPerToken };
|
|
29952
29940
|
}
|
|
29953
|
-
|
|
29941
|
+
var maxLayer0Tokens = 0;
|
|
29942
|
+
var MIN_LAYER0_FLOOR = 4e4;
|
|
29943
|
+
function shouldCompress(currentTokens, compressedTokens, consecutiveBusts, threshold = 0.85) {
|
|
29944
|
+
if (consecutiveBusts >= 5) return false;
|
|
29945
|
+
if (cacheWriteCostPerToken <= 0 || cacheReadCostPerToken <= 0) return false;
|
|
29946
|
+
const bustCost = compressedTokens * cacheWriteCostPerToken;
|
|
29947
|
+
const continueCost = currentTokens * cacheReadCostPerToken;
|
|
29948
|
+
return bustCost < threshold * continueCost;
|
|
29949
|
+
}
|
|
29950
|
+
function getTier(tokens) {
|
|
29951
|
+
if (tokens <= TIER_BOUNDARIES[0]) return 0;
|
|
29952
|
+
if (tokens <= TIER_BOUNDARIES[1]) return 1;
|
|
29953
|
+
return 2;
|
|
29954
|
+
}
|
|
29955
|
+
function recordCacheUsage(cacheWrite, cacheRead, inputTokens, sessionID) {
|
|
29954
29956
|
if (!sessionID) return;
|
|
29955
29957
|
const state = getSessionState(sessionID);
|
|
29956
|
-
|
|
29957
|
-
|
|
29958
|
-
if (
|
|
29959
|
-
state.
|
|
29960
|
-
|
|
29961
|
-
|
|
29962
|
-
);
|
|
29958
|
+
const total = inputTokens > 0 ? inputTokens : cacheWrite + cacheRead;
|
|
29959
|
+
if (total > 0) {
|
|
29960
|
+
if (cacheWrite / total > 0.5) {
|
|
29961
|
+
state.consecutiveBusts++;
|
|
29962
|
+
} else {
|
|
29963
|
+
state.consecutiveBusts = 0;
|
|
29963
29964
|
}
|
|
29964
|
-
return;
|
|
29965
|
-
}
|
|
29966
|
-
if (lastLayer !== void 0) {
|
|
29967
|
-
state.consecutiveLayer4 = 0;
|
|
29968
29965
|
}
|
|
29969
|
-
const total = cacheWrite + cacheRead;
|
|
29970
|
-
if (total === 0) return;
|
|
29971
|
-
const bustRatio = cacheWrite / total;
|
|
29972
|
-
state.bustRateEMA = state.bustRateEMA < 0 ? bustRatio : state.bustRateEMA * 0.7 + bustRatio * 0.3;
|
|
29973
|
-
const now = Date.now();
|
|
29974
|
-
if (bustRatio > 0.5) {
|
|
29975
|
-
if (state.lastBustAt > 0) {
|
|
29976
|
-
const interval = now - state.lastBustAt;
|
|
29977
|
-
state.interBustIntervalEMA = state.interBustIntervalEMA < 0 ? interval : state.interBustIntervalEMA * 0.7 + interval * 0.3;
|
|
29978
|
-
}
|
|
29979
|
-
state.lastBustAt = now;
|
|
29980
|
-
}
|
|
29981
|
-
adaptContextCap(state);
|
|
29982
|
-
}
|
|
29983
|
-
function adaptContextCap(state) {
|
|
29984
|
-
if (maxContextTokensCeiling <= 0) return;
|
|
29985
|
-
const cap = state.dynamicContextCap > 0 ? state.dynamicContextCap : maxContextTokensCeiling;
|
|
29986
|
-
let newCap = cap;
|
|
29987
|
-
if (state.bustRateEMA > 0.8) {
|
|
29988
|
-
newCap = Math.floor(cap * 0.9);
|
|
29989
|
-
} else if (state.bustRateEMA < 0.3) {
|
|
29990
|
-
newCap = Math.floor(cap * 1.05);
|
|
29991
|
-
}
|
|
29992
|
-
if (state.interBustIntervalEMA > 0) {
|
|
29993
|
-
if (state.interBustIntervalEMA < 2 * 6e4) {
|
|
29994
|
-
newCap = Math.floor(newCap * 0.95);
|
|
29995
|
-
} else if (state.interBustIntervalEMA > 10 * 6e4) {
|
|
29996
|
-
newCap = Math.floor(newCap * 1.03);
|
|
29997
|
-
}
|
|
29998
|
-
}
|
|
29999
|
-
state.dynamicContextCap = Math.max(
|
|
30000
|
-
MIN_CONTEXT_FLOOR,
|
|
30001
|
-
Math.min(maxContextTokensCeiling, newCap)
|
|
30002
|
-
);
|
|
30003
29966
|
}
|
|
30004
29967
|
var FIRST_TURN_OVERHEAD = 15e3;
|
|
30005
29968
|
var calibratedOverhead = null;
|
|
@@ -30020,11 +29983,7 @@ function makeSessionState() {
|
|
|
30020
29983
|
cameOutOfIdle: false,
|
|
30021
29984
|
postIdleCompact: false,
|
|
30022
29985
|
consecutiveHighLayer: 0,
|
|
30023
|
-
|
|
30024
|
-
bustRateEMA: -1,
|
|
30025
|
-
interBustIntervalEMA: -1,
|
|
30026
|
-
lastBustAt: 0,
|
|
30027
|
-
dynamicContextCap: 0,
|
|
29986
|
+
consecutiveBusts: 0,
|
|
30028
29987
|
distillationSnapshot: null
|
|
30029
29988
|
};
|
|
30030
29989
|
}
|
|
@@ -30036,13 +29995,10 @@ function getSessionState(sessionID) {
|
|
|
30036
29995
|
state.forceMinLayer = loadForceMinLayer(sessionID);
|
|
30037
29996
|
const persisted = loadSessionTracking(sessionID);
|
|
30038
29997
|
if (persisted && persisted.lastTurnAt > 0) {
|
|
30039
|
-
state.dynamicContextCap = persisted.dynamicContextCap;
|
|
30040
|
-
state.bustRateEMA = persisted.bustRateEMA;
|
|
30041
|
-
state.interBustIntervalEMA = persisted.interBustIntervalEMA;
|
|
30042
29998
|
state.lastLayer = persisted.lastLayer;
|
|
30043
29999
|
state.lastKnownInput = persisted.lastKnownInput;
|
|
30044
30000
|
state.lastTurnAt = persisted.lastTurnAt;
|
|
30045
|
-
state.
|
|
30001
|
+
state.consecutiveBusts = persisted.dynamicContextCap;
|
|
30046
30002
|
}
|
|
30047
30003
|
sessionStates.set(sessionID, state);
|
|
30048
30004
|
}
|
|
@@ -30078,9 +30034,9 @@ function setModelLimits(limits) {
|
|
|
30078
30034
|
function setMaxLayer0Tokens(tokens) {
|
|
30079
30035
|
maxLayer0Tokens = Math.max(0, Math.floor(tokens));
|
|
30080
30036
|
}
|
|
30081
|
-
function computeLayer0Cap(targetCostPerTurn,
|
|
30082
|
-
if (targetCostPerTurn <= 0 ||
|
|
30083
|
-
const rawCap = Math.floor(targetCostPerTurn /
|
|
30037
|
+
function computeLayer0Cap(targetCostPerTurn, cacheReadCostPerToken2) {
|
|
30038
|
+
if (targetCostPerTurn <= 0 || cacheReadCostPerToken2 <= 0) return 0;
|
|
30039
|
+
const rawCap = Math.floor(targetCostPerTurn / cacheReadCostPerToken2);
|
|
30084
30040
|
return Math.max(rawCap, MIN_LAYER0_FLOOR);
|
|
30085
30041
|
}
|
|
30086
30042
|
function setLtmTokens(tokens, sessionID) {
|
|
@@ -30149,11 +30105,16 @@ function inspectSessionState(sessionID) {
|
|
|
30149
30105
|
postIdleCompact: state.postIdleCompact,
|
|
30150
30106
|
lastTurnAt: state.lastTurnAt,
|
|
30151
30107
|
distillationSnapshot: state.distillationSnapshot,
|
|
30152
|
-
|
|
30153
|
-
dynamicContextCap: state.dynamicContextCap,
|
|
30154
|
-
consecutiveLayer4: state.consecutiveLayer4
|
|
30108
|
+
consecutiveBusts: state.consecutiveBusts
|
|
30155
30109
|
};
|
|
30156
30110
|
}
|
|
30111
|
+
function getConsecutiveBusts(sessionID) {
|
|
30112
|
+
return sessionStates.get(sessionID)?.consecutiveBusts ?? 0;
|
|
30113
|
+
}
|
|
30114
|
+
var BUST_PRESSURE_THRESHOLD = 3;
|
|
30115
|
+
function effectiveMetaThreshold(busts, configThreshold) {
|
|
30116
|
+
return busts >= BUST_PRESSURE_THRESHOLD ? Math.max(3, Math.floor(configThreshold / 4)) : configThreshold;
|
|
30117
|
+
}
|
|
30157
30118
|
function setLastTurnAtForTest(sessionID, ms) {
|
|
30158
30119
|
getSessionState(sessionID).lastTurnAt = ms;
|
|
30159
30120
|
}
|
|
@@ -30161,13 +30122,12 @@ function saveGradientState(sessionID) {
|
|
|
30161
30122
|
const state = sessionStates.get(sessionID);
|
|
30162
30123
|
if (!state) return;
|
|
30163
30124
|
saveSessionTracking(sessionID, {
|
|
30164
|
-
dynamicContextCap: state.dynamicContextCap,
|
|
30165
|
-
bustRateEMA: state.bustRateEMA,
|
|
30166
|
-
interBustIntervalEMA: state.interBustIntervalEMA,
|
|
30167
30125
|
lastLayer: state.lastLayer,
|
|
30168
30126
|
lastKnownInput: state.lastKnownInput,
|
|
30169
30127
|
lastTurnAt: state.lastTurnAt,
|
|
30170
|
-
|
|
30128
|
+
// Repurpose the dead dynamicContextCap column (v24, always 0 now)
|
|
30129
|
+
// to persist consecutiveBusts — avoids a new DB migration.
|
|
30130
|
+
dynamicContextCap: state.consecutiveBusts
|
|
30171
30131
|
});
|
|
30172
30132
|
}
|
|
30173
30133
|
function loadDistillations(projectPath2, sessionID) {
|
|
@@ -30612,8 +30572,7 @@ function transformInner(input) {
|
|
|
30612
30572
|
0,
|
|
30613
30573
|
contextLimit - outputReserved - overhead - sessLtmTokens
|
|
30614
30574
|
);
|
|
30615
|
-
const
|
|
30616
|
-
const usable = effectiveCap > 0 && usableRaw > effectiveCap ? effectiveCap : usableRaw;
|
|
30575
|
+
const usable = usableRaw;
|
|
30617
30576
|
const distilledBudget = Math.floor(usable * cfg.budget.distilled);
|
|
30618
30577
|
let rawBudget = Math.floor(usable * cfg.budget.raw);
|
|
30619
30578
|
let effectiveMinLayer = sessState.forceMinLayer;
|
|
@@ -30634,8 +30593,7 @@ function transformInner(input) {
|
|
|
30634
30593
|
if (postIdleCompact) {
|
|
30635
30594
|
sessState.postIdleCompact = false;
|
|
30636
30595
|
effectiveMinLayer = Math.max(effectiveMinLayer, 1);
|
|
30637
|
-
|
|
30638
|
-
rawBudget = Math.floor(usable * postIdleRawFraction);
|
|
30596
|
+
rawBudget = Math.floor(usable * 0.2);
|
|
30639
30597
|
info(
|
|
30640
30598
|
`post-idle compact: session=${sid} rawBudget=${rawBudget} (${Math.floor(usable * cfg.budget.raw)}\u2192${rawBudget})`
|
|
30641
30599
|
);
|
|
@@ -30666,9 +30624,32 @@ function transformInner(input) {
|
|
|
30666
30624
|
usable,
|
|
30667
30625
|
distilledBudget,
|
|
30668
30626
|
rawBudget,
|
|
30669
|
-
refreshLtm: false
|
|
30627
|
+
refreshLtm: false,
|
|
30628
|
+
unsustainable: sid ? getSessionState(sid).consecutiveBusts >= 5 : false
|
|
30670
30629
|
};
|
|
30671
30630
|
}
|
|
30631
|
+
if (effectiveMinLayer === 0 && layer0Input > layer0Ceiling && layer0Input <= maxInput && sid) {
|
|
30632
|
+
const busts = getSessionState(sid).consecutiveBusts;
|
|
30633
|
+
const compressedEstimate = distilledBudget + rawBudget;
|
|
30634
|
+
if (!shouldCompress(Math.round(layer0Input), compressedEstimate, busts)) {
|
|
30635
|
+
const messageTokens = calibrated ? expectedInput - (sessLtmTokens - sessState.lastKnownLtm) : expectedInput - overhead - sessLtmTokens;
|
|
30636
|
+
info(
|
|
30637
|
+
`tier gate: session=${sid} skipping compression \u2014 bustCost not justified (input=${Math.round(layer0Input)} compressed=${compressedEstimate} busts=${busts})`
|
|
30638
|
+
);
|
|
30639
|
+
return {
|
|
30640
|
+
messages: input.messages,
|
|
30641
|
+
layer: 0,
|
|
30642
|
+
distilledTokens: 0,
|
|
30643
|
+
rawTokens: Math.max(0, messageTokens),
|
|
30644
|
+
totalTokens: Math.max(0, messageTokens),
|
|
30645
|
+
usable,
|
|
30646
|
+
distilledBudget,
|
|
30647
|
+
rawBudget,
|
|
30648
|
+
refreshLtm: false,
|
|
30649
|
+
unsustainable: busts >= 5
|
|
30650
|
+
};
|
|
30651
|
+
}
|
|
30652
|
+
}
|
|
30672
30653
|
const turnStart = currentTurnStart(input.messages);
|
|
30673
30654
|
const dedupMessages = deduplicateToolOutputs(input.messages, turnStart);
|
|
30674
30655
|
const distillations = sid ? loadDistillationsCached(input.projectPath, sid, input.messages, sessState) : [];
|
|
@@ -30716,7 +30697,15 @@ function transformInner(input) {
|
|
|
30716
30697
|
if (sid && (s > 0 || cached2.tokens === 0)) {
|
|
30717
30698
|
urgentDistillationMap.set(sid, true);
|
|
30718
30699
|
}
|
|
30719
|
-
return {
|
|
30700
|
+
return {
|
|
30701
|
+
...result,
|
|
30702
|
+
layer: stageLayer,
|
|
30703
|
+
usable,
|
|
30704
|
+
distilledBudget,
|
|
30705
|
+
rawBudget,
|
|
30706
|
+
refreshLtm: false,
|
|
30707
|
+
unsustainable: sid ? getSessionState(sid).consecutiveBusts >= 5 : false
|
|
30708
|
+
};
|
|
30720
30709
|
}
|
|
30721
30710
|
}
|
|
30722
30711
|
sessState.rawWindowCache = null;
|
|
@@ -30752,6 +30741,7 @@ function transformInner(input) {
|
|
|
30752
30741
|
}
|
|
30753
30742
|
const nuclearRaw = [...olderMessages, ...currentTurn];
|
|
30754
30743
|
const nuclearRawTokens = olderTokens + currentTurnTokens;
|
|
30744
|
+
const unsustainable = sid ? getSessionState(sid).consecutiveBusts >= 5 : false;
|
|
30755
30745
|
return {
|
|
30756
30746
|
messages: [...nuclearPrefix, ...nuclearRaw],
|
|
30757
30747
|
layer: 4,
|
|
@@ -30761,7 +30751,8 @@ function transformInner(input) {
|
|
|
30761
30751
|
usable,
|
|
30762
30752
|
distilledBudget,
|
|
30763
30753
|
rawBudget,
|
|
30764
|
-
refreshLtm: true
|
|
30754
|
+
refreshLtm: true,
|
|
30755
|
+
unsustainable
|
|
30765
30756
|
};
|
|
30766
30757
|
}
|
|
30767
30758
|
function transform2(input) {
|
|
@@ -30786,7 +30777,7 @@ function transform2(input) {
|
|
|
30786
30777
|
state.consecutiveHighLayer = 0;
|
|
30787
30778
|
}
|
|
30788
30779
|
info(
|
|
30789
|
-
`gradient: session=${sid} layer=${result.layer} tokens=${result.totalTokens} (distilled=${result.distilledTokens} raw=${result.rawTokens}) usable=${result.usable}
|
|
30780
|
+
`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"}`
|
|
30790
30781
|
);
|
|
30791
30782
|
}
|
|
30792
30783
|
return result;
|
|
@@ -31336,7 +31327,11 @@ async function runInner(input) {
|
|
|
31336
31327
|
}
|
|
31337
31328
|
}
|
|
31338
31329
|
}
|
|
31339
|
-
|
|
31330
|
+
const effectiveMetaThreshold2 = Math.max(
|
|
31331
|
+
2,
|
|
31332
|
+
input.metaThresholdOverride ?? cfg.distillation.metaThreshold
|
|
31333
|
+
);
|
|
31334
|
+
if (!input.skipMeta && gen0Count(input.projectPath, input.sessionID) >= effectiveMetaThreshold2) {
|
|
31340
31335
|
await metaDistillInner({
|
|
31341
31336
|
llm: input.llm,
|
|
31342
31337
|
projectPath: input.projectPath,
|
|
@@ -33899,6 +33894,7 @@ function resolveWorkerModel(_providerID, configWorkerModel, configModel, costAwa
|
|
|
33899
33894
|
return configModel;
|
|
33900
33895
|
}
|
|
33901
33896
|
export {
|
|
33897
|
+
BUST_PRESSURE_THRESHOLD,
|
|
33902
33898
|
COMPACT_SUMMARY_TEMPLATE,
|
|
33903
33899
|
CONSOLIDATION_SYSTEM,
|
|
33904
33900
|
CURATOR_SYSTEM,
|
|
@@ -33914,7 +33910,6 @@ export {
|
|
|
33914
33910
|
clearGitRemoteCache,
|
|
33915
33911
|
clearLoreFileCache,
|
|
33916
33912
|
close,
|
|
33917
|
-
computeContextCap,
|
|
33918
33913
|
computeLayer0Cap,
|
|
33919
33914
|
config2 as config,
|
|
33920
33915
|
consolidationUser,
|
|
@@ -33928,6 +33923,7 @@ export {
|
|
|
33928
33923
|
dbPath,
|
|
33929
33924
|
distillation_exports as distillation,
|
|
33930
33925
|
distillationUser,
|
|
33926
|
+
effectiveMetaThreshold,
|
|
33931
33927
|
embedding_exports as embedding,
|
|
33932
33928
|
embedding_vendor_exports as embeddingVendor,
|
|
33933
33929
|
enableHostedMode,
|
|
@@ -33942,6 +33938,8 @@ export {
|
|
|
33942
33938
|
ftsQuery,
|
|
33943
33939
|
ftsQueryOr,
|
|
33944
33940
|
ftsQueryRelaxed,
|
|
33941
|
+
getCachePricing,
|
|
33942
|
+
getConsecutiveBusts,
|
|
33945
33943
|
getGitRemote,
|
|
33946
33944
|
getInstanceId,
|
|
33947
33945
|
getKV,
|
|
@@ -33952,8 +33950,8 @@ export {
|
|
|
33952
33950
|
getLastTurnAt,
|
|
33953
33951
|
getLtmBudget,
|
|
33954
33952
|
getLtmTokens,
|
|
33955
|
-
getMaxContextTokens,
|
|
33956
33953
|
getMeta,
|
|
33954
|
+
getTier,
|
|
33957
33955
|
h,
|
|
33958
33956
|
importFromFile,
|
|
33959
33957
|
importLoreFile,
|
|
@@ -33990,6 +33988,7 @@ export {
|
|
|
33990
33988
|
projectPath,
|
|
33991
33989
|
recallById,
|
|
33992
33990
|
reciprocalRankFusion,
|
|
33991
|
+
recordCacheUsage,
|
|
33993
33992
|
recursiveUser,
|
|
33994
33993
|
renderMarkdown,
|
|
33995
33994
|
resolveProjectByRemoteOrPath,
|
|
@@ -34002,15 +34001,16 @@ export {
|
|
|
34002
34001
|
saveSessionTracking,
|
|
34003
34002
|
searchRecall,
|
|
34004
34003
|
serialize,
|
|
34004
|
+
setCachePricing,
|
|
34005
34005
|
setForceMinLayer,
|
|
34006
34006
|
setKV,
|
|
34007
34007
|
setLastImportAt,
|
|
34008
34008
|
setLastTurnAtForTest,
|
|
34009
34009
|
setLtmTokens,
|
|
34010
|
-
setMaxContextTokens,
|
|
34011
34010
|
setMaxLayer0Tokens,
|
|
34012
34011
|
setMeta,
|
|
34013
34012
|
setModelLimits,
|
|
34013
|
+
shouldCompress,
|
|
34014
34014
|
shouldImport,
|
|
34015
34015
|
shouldImportLoreFile,
|
|
34016
34016
|
strong2 as strong,
|
|
@@ -34020,7 +34020,6 @@ export {
|
|
|
34020
34020
|
transform2 as transform,
|
|
34021
34021
|
ul,
|
|
34022
34022
|
unescapeMarkdown,
|
|
34023
|
-
updateBustRate,
|
|
34024
34023
|
worker_model_exports as workerModel,
|
|
34025
34024
|
workerSessionIDs
|
|
34026
34025
|
};
|