π File detail
services/compact/timeBasedMCConfig.ts
π§© .tsπ 44 linesπΎ 1,766 bytesπ text
β Back to All Filesπ― Use case
This file lives under βservices/β, which covers long-lived services (LSP, MCP, OAuth, tool execution, memory, compaction, voice, settings sync, β¦). On the API surface it exposes TimeBasedMCConfig and getTimeBasedMCConfig β mainly functions, hooks, or classes. It composes internal code from analytics (relative imports).
Generated from folder role, exports, dependency roots, and inline comments β not hand-reviewed for every path.
π§ Inline summary
import { getFeatureValue_CACHED_MAY_BE_STALE } from '../analytics/growthbook.js' /** * GrowthBook config for time-based microcompact. *
π€ Exports (heuristic)
TimeBasedMCConfiggetTimeBasedMCConfig
π₯οΈ Source preview
import { getFeatureValue_CACHED_MAY_BE_STALE } from '../analytics/growthbook.js'
/**
* GrowthBook config for time-based microcompact.
*
* Triggers content-clearing microcompact when the gap since the last main-loop
* assistant message exceeds a threshold β the server-side prompt cache has
* almost certainly expired, so the full prefix will be rewritten anyway.
* Clearing old tool results before the request shrinks what gets rewritten.
*
* Runs BEFORE the API call (in microcompactMessages, upstream of callModel)
* so the shrunk prompt is what actually gets sent. Running after the first
* miss would only help subsequent turns.
*
* Main thread only β subagents have short lifetimes where gap-based eviction
* doesn't apply.
*/
export type TimeBasedMCConfig = {
/** Master switch. When false, time-based microcompact is a no-op. */
enabled: boolean
/** Trigger when (now β last assistant timestamp) exceeds this many minutes.
* 60 is the safe choice: the server's 1h cache TTL is guaranteed expired
* for all users, so we never force a miss that wouldn't have happened. */
gapThresholdMinutes: number
/** Keep this many most-recent compactable tool results.
* When set, takes priority over any default; older results are cleared. */
keepRecent: number
}
const TIME_BASED_MC_CONFIG_DEFAULTS: TimeBasedMCConfig = {
enabled: false,
gapThresholdMinutes: 60,
keepRecent: 5,
}
export function getTimeBasedMCConfig(): TimeBasedMCConfig {
// Hoist the GB read so exposure fires on every eval path, not just when
// the caller's other conditions (querySource, messages.length) pass.
return getFeatureValue_CACHED_MAY_BE_STALE<TimeBasedMCConfig>(
'tengu_slate_heron',
TIME_BASED_MC_CONFIG_DEFAULTS,
)
}