openlore 2.0.0 → 2.0.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/README.md +76 -0
- package/dist/cli/commands/decisions.d.ts.map +1 -1
- package/dist/cli/commands/decisions.js +21 -3
- package/dist/cli/commands/decisions.js.map +1 -1
- package/dist/cli/commands/mcp.d.ts.map +1 -1
- package/dist/cli/commands/mcp.js +56 -5
- package/dist/cli/commands/mcp.js.map +1 -1
- package/dist/cli/commands/telemetry.d.ts +11 -0
- package/dist/cli/commands/telemetry.d.ts.map +1 -0
- package/dist/cli/commands/telemetry.js +373 -0
- package/dist/cli/commands/telemetry.js.map +1 -0
- package/dist/cli/index.js +17 -9
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/install/adapters/agents-md.d.ts +8 -0
- package/dist/cli/install/adapters/agents-md.d.ts.map +1 -0
- package/dist/cli/install/adapters/agents-md.js +21 -0
- package/dist/cli/install/adapters/agents-md.js.map +1 -0
- package/dist/cli/install/adapters/claude-code.d.ts +8 -0
- package/dist/cli/install/adapters/claude-code.d.ts.map +1 -0
- package/dist/cli/install/adapters/claude-code.js +184 -0
- package/dist/cli/install/adapters/claude-code.js.map +1 -0
- package/dist/cli/install/adapters/cline.d.ts +6 -0
- package/dist/cli/install/adapters/cline.d.ts.map +1 -0
- package/dist/cli/install/adapters/cline.js +19 -0
- package/dist/cli/install/adapters/cline.js.map +1 -0
- package/dist/cli/install/adapters/continue.d.ts +13 -0
- package/dist/cli/install/adapters/continue.d.ts.map +1 -0
- package/dist/cli/install/adapters/continue.js +119 -0
- package/dist/cli/install/adapters/continue.js.map +1 -0
- package/dist/cli/install/adapters/cursor.d.ts +8 -0
- package/dist/cli/install/adapters/cursor.d.ts.map +1 -0
- package/dist/cli/install/adapters/cursor.js +195 -0
- package/dist/cli/install/adapters/cursor.js.map +1 -0
- package/dist/cli/install/adapters/markdown-block.d.ts +20 -0
- package/dist/cli/install/adapters/markdown-block.d.ts.map +1 -0
- package/dist/cli/install/adapters/markdown-block.js +114 -0
- package/dist/cli/install/adapters/markdown-block.js.map +1 -0
- package/dist/cli/install/adapters/types.d.ts +39 -0
- package/dist/cli/install/adapters/types.d.ts.map +1 -0
- package/dist/cli/install/adapters/types.js +10 -0
- package/dist/cli/install/adapters/types.js.map +1 -0
- package/dist/cli/install/block.d.ts +53 -0
- package/dist/cli/install/block.d.ts.map +1 -0
- package/dist/cli/install/block.js +106 -0
- package/dist/cli/install/block.js.map +1 -0
- package/dist/cli/install/detect.d.ts +23 -0
- package/dist/cli/install/detect.d.ts.map +1 -0
- package/dist/cli/install/detect.js +115 -0
- package/dist/cli/install/detect.js.map +1 -0
- package/dist/cli/install/diff.d.ts +12 -0
- package/dist/cli/install/diff.d.ts.map +1 -0
- package/dist/cli/install/diff.js +51 -0
- package/dist/cli/install/diff.js.map +1 -0
- package/dist/cli/install/index.d.ts +19 -0
- package/dist/cli/install/index.d.ts.map +1 -0
- package/dist/cli/install/index.js +133 -0
- package/dist/cli/install/index.js.map +1 -0
- package/dist/cli/install/json-managed.d.ts +43 -0
- package/dist/cli/install/json-managed.d.ts.map +1 -0
- package/dist/cli/install/json-managed.js +137 -0
- package/dist/cli/install/json-managed.js.map +1 -0
- package/dist/cli/install/templates/agent-instructions.md +12 -0
- package/dist/cli/install/templates/cursor-openlore.mdc +7 -0
- package/dist/cli/preflight/diff.d.ts +42 -0
- package/dist/cli/preflight/diff.d.ts.map +1 -0
- package/dist/cli/preflight/diff.js +162 -0
- package/dist/cli/preflight/diff.js.map +1 -0
- package/dist/cli/preflight/index.d.ts +31 -0
- package/dist/cli/preflight/index.d.ts.map +1 -0
- package/dist/cli/preflight/index.js +126 -0
- package/dist/cli/preflight/index.js.map +1 -0
- package/dist/cli/preflight/report.d.ts +50 -0
- package/dist/cli/preflight/report.d.ts.map +1 -0
- package/dist/cli/preflight/report.js +174 -0
- package/dist/cli/preflight/report.js.map +1 -0
- package/dist/cli/preflight/score.d.ts +43 -0
- package/dist/cli/preflight/score.d.ts.map +1 -0
- package/dist/cli/preflight/score.js +102 -0
- package/dist/cli/preflight/score.js.map +1 -0
- package/dist/core/analyzer/file-walker.d.ts.map +1 -1
- package/dist/core/analyzer/file-walker.js +20 -13
- package/dist/core/analyzer/file-walker.js.map +1 -1
- package/dist/core/analyzer/vector-index.d.ts +2 -0
- package/dist/core/analyzer/vector-index.d.ts.map +1 -1
- package/dist/core/analyzer/vector-index.js +30 -20
- package/dist/core/analyzer/vector-index.js.map +1 -1
- package/dist/core/services/mcp-handlers/decisions.d.ts.map +1 -1
- package/dist/core/services/mcp-handlers/decisions.js +4 -0
- package/dist/core/services/mcp-handlers/decisions.js.map +1 -1
- package/dist/core/services/mcp-handlers/epistemic-lease.d.ts +67 -0
- package/dist/core/services/mcp-handlers/epistemic-lease.d.ts.map +1 -0
- package/dist/core/services/mcp-handlers/epistemic-lease.js +431 -0
- package/dist/core/services/mcp-handlers/epistemic-lease.js.map +1 -0
- package/dist/core/services/mcp-handlers/utils.d.ts +2 -0
- package/dist/core/services/mcp-handlers/utils.d.ts.map +1 -1
- package/dist/core/services/mcp-handlers/utils.js +21 -2
- package/dist/core/services/mcp-handlers/utils.js.map +1 -1
- package/dist/core/services/telemetry.d.ts +16 -0
- package/dist/core/services/telemetry.d.ts.map +1 -0
- package/dist/core/services/telemetry.js +38 -0
- package/dist/core/services/telemetry.js.map +1 -0
- package/examples/ci/openlore-preflight.gitlab.yml +16 -0
- package/examples/ci/openlore-preflight.sh +16 -0
- package/examples/ci/openlore-preflight.yml +30 -0
- package/package.json +4 -2
|
@@ -0,0 +1,431 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Epistemic Lease — session-level architectural confidence decay for MCP agents.
|
|
3
|
+
*
|
|
4
|
+
* Models repository understanding as a temporary, degradable representation rather
|
|
5
|
+
* than permanent truth. Injects freshness signals into every MCP tool response so
|
|
6
|
+
* that agents drifting toward internally cached reasoning ("repo fiction") see
|
|
7
|
+
* confidence decay even when they have stopped calling orient/graph tools.
|
|
8
|
+
*
|
|
9
|
+
* Decay triggers (any one sufficient):
|
|
10
|
+
* - Time: >15min → degraded, >30min → stale
|
|
11
|
+
* - Git hash divergence from orient baseline → immediate stale
|
|
12
|
+
* - Weighted cognitive load: >30 → degraded, >60 → stale
|
|
13
|
+
* - Cross-module trajectory density: ≥0.15 → degraded, ≥0.30 → stale
|
|
14
|
+
* Density = module switches in last 15 calls / window size.
|
|
15
|
+
* Each switch also adds +5 debt; high-density window +15; burst +20.
|
|
16
|
+
*
|
|
17
|
+
* Stale escalates through 3 depths to prevent warning blindness:
|
|
18
|
+
* - Depth 1 (load≥60, age≥30min): procedural — explains what NOT to do
|
|
19
|
+
* - Depth 2 (load≥85, age≥45min): risk-framing — names downstream consequences
|
|
20
|
+
* - Depth 3 (load≥110, age≥60min): imperative — minimal text, hardest to skim
|
|
21
|
+
*
|
|
22
|
+
* Injection:
|
|
23
|
+
* - fresh → no injection (zero overhead)
|
|
24
|
+
* - degraded → 3-line signal appended (low friction)
|
|
25
|
+
* - stale → depth-varying capability-invalidation block prepended
|
|
26
|
+
*/
|
|
27
|
+
import { spawnSync } from 'node:child_process';
|
|
28
|
+
import { join } from 'node:path';
|
|
29
|
+
import { DatabaseSync } from 'node:sqlite';
|
|
30
|
+
import { OPENLORE_DIR, OPENLORE_ANALYSIS_SUBDIR, ARTIFACT_CALL_GRAPH_DB, } from '../../../constants.js';
|
|
31
|
+
import { emit } from '../telemetry.js';
|
|
32
|
+
// ============================================================================
|
|
33
|
+
// TOOL COGNITIVE WEIGHTS
|
|
34
|
+
// Three tiers: lightweight ops (1-2), structural ops (3-5), architectural ops (8).
|
|
35
|
+
// ============================================================================
|
|
36
|
+
const TOOL_WEIGHTS = {
|
|
37
|
+
// Resets tracker — not counted
|
|
38
|
+
orient: 0,
|
|
39
|
+
analyze_codebase: 0,
|
|
40
|
+
// Lightweight: search / read operations
|
|
41
|
+
search_code: 1,
|
|
42
|
+
search_specs: 1,
|
|
43
|
+
search_unified: 1,
|
|
44
|
+
list_spec_domains: 1,
|
|
45
|
+
list_decisions: 1,
|
|
46
|
+
record_decision: 1,
|
|
47
|
+
get_env_vars: 1,
|
|
48
|
+
get_external_packages: 1,
|
|
49
|
+
// Structural: function/file-level reads
|
|
50
|
+
get_spec: 2,
|
|
51
|
+
get_signatures: 2,
|
|
52
|
+
get_function_body: 2,
|
|
53
|
+
get_function_skeleton: 2,
|
|
54
|
+
get_mapping: 2,
|
|
55
|
+
get_test_coverage: 2,
|
|
56
|
+
get_route_inventory: 2,
|
|
57
|
+
get_schema_inventory: 2,
|
|
58
|
+
get_ui_components: 2,
|
|
59
|
+
get_middleware_inventory: 2,
|
|
60
|
+
// Structural-heavy: graph and architecture reads
|
|
61
|
+
get_architecture_overview: 3,
|
|
62
|
+
get_call_graph: 3,
|
|
63
|
+
get_file_dependencies: 3,
|
|
64
|
+
get_critical_hubs: 3,
|
|
65
|
+
get_god_functions: 3,
|
|
66
|
+
get_leaf_functions: 3,
|
|
67
|
+
get_refactor_report: 3,
|
|
68
|
+
get_duplicate_report: 3,
|
|
69
|
+
check_spec_drift: 3,
|
|
70
|
+
detect_changes: 3,
|
|
71
|
+
audit_spec_coverage: 3,
|
|
72
|
+
get_decisions: 3,
|
|
73
|
+
get_minimal_context: 3,
|
|
74
|
+
// Graph traversal / cross-module
|
|
75
|
+
get_subgraph: 5,
|
|
76
|
+
analyze_impact: 5,
|
|
77
|
+
get_cluster: 4,
|
|
78
|
+
generate_change_proposal: 5,
|
|
79
|
+
annotate_story: 5,
|
|
80
|
+
generate_tests: 4,
|
|
81
|
+
get_low_risk_refactor_candidates: 4,
|
|
82
|
+
// Deep architectural tracing
|
|
83
|
+
trace_execution_path: 8,
|
|
84
|
+
};
|
|
85
|
+
// ============================================================================
|
|
86
|
+
// THRESHOLDS
|
|
87
|
+
// ============================================================================
|
|
88
|
+
const DEGRADE_LOAD_THRESHOLD = 30;
|
|
89
|
+
const STALE_LOAD_THRESHOLD = 60;
|
|
90
|
+
const STALE_D2_LOAD_THRESHOLD = 85;
|
|
91
|
+
const STALE_D3_LOAD_THRESHOLD = 110;
|
|
92
|
+
const DEGRADE_AGE_MS = 15 * 60 * 1000;
|
|
93
|
+
const STALE_AGE_MS = 30 * 60 * 1000;
|
|
94
|
+
const STALE_D2_AGE_MS = 45 * 60 * 1000;
|
|
95
|
+
const STALE_D3_AGE_MS = 60 * 60 * 1000;
|
|
96
|
+
const GIT_CHECK_INTERVAL_MS = 30_000;
|
|
97
|
+
// V3.1 cross-module trajectory model
|
|
98
|
+
const CROSS_MODULE_WINDOW_SIZE = 15;
|
|
99
|
+
const CROSS_MODULE_DEGRADE_DENSITY = 0.15;
|
|
100
|
+
const CROSS_MODULE_STALE_DENSITY = 0.30;
|
|
101
|
+
const MODULE_SWITCH_BASE_WEIGHT = 5;
|
|
102
|
+
const HIGH_DENSITY_DEBT_BONUS = 15;
|
|
103
|
+
const BURST_DEBT_SPIKE = 20;
|
|
104
|
+
const DENSITY_BONUS_COOLDOWN_MS = 60_000;
|
|
105
|
+
const SWITCH_DAMPENING_MS = 5_000;
|
|
106
|
+
// V3.2 oscillation model — detects back-and-forth (A→B→A→B) vs exploration
|
|
107
|
+
const BURST_DENSITY_THRESHOLD = 0.60; // density for post-stale burst escalation
|
|
108
|
+
const BURST_TOOL_WEIGHT_THRESHOLD = 8; // tool weight for post-stale burst escalation
|
|
109
|
+
// ============================================================================
|
|
110
|
+
// GIT HASH
|
|
111
|
+
// ============================================================================
|
|
112
|
+
function getGitHash(directory) {
|
|
113
|
+
try {
|
|
114
|
+
const result = spawnSync('git', ['rev-parse', 'HEAD'], {
|
|
115
|
+
cwd: directory,
|
|
116
|
+
encoding: 'utf-8',
|
|
117
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
118
|
+
timeout: 2000,
|
|
119
|
+
});
|
|
120
|
+
return result.stdout?.trim() ?? '';
|
|
121
|
+
}
|
|
122
|
+
catch {
|
|
123
|
+
return '';
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
// ============================================================================
|
|
127
|
+
// MODULE EXTRACTION
|
|
128
|
+
// Extract top-level module segment from a file path, using the source root
|
|
129
|
+
// directories derived from the call-graph db (files actually analyzed, already
|
|
130
|
+
// filtered by config include/exclude patterns).
|
|
131
|
+
//
|
|
132
|
+
// src/core/services/mcp.ts → root "src" → module "core"
|
|
133
|
+
// packages/auth/src/jwt.ts → root "packages" → module "auth"
|
|
134
|
+
//
|
|
135
|
+
// Returns [] when no analysis exists yet — module tracking stays silent rather
|
|
136
|
+
// than tracking arbitrary filesystem dirs as if they were analyzed modules.
|
|
137
|
+
// ============================================================================
|
|
138
|
+
export function getSourceRoots(directory) {
|
|
139
|
+
try {
|
|
140
|
+
const dbPath = join(directory, OPENLORE_DIR, OPENLORE_ANALYSIS_SUBDIR, ARTIFACT_CALL_GRAPH_DB);
|
|
141
|
+
const db = new DatabaseSync(dbPath);
|
|
142
|
+
const rows = db.prepare('SELECT DISTINCT file_path FROM nodes WHERE is_external = 0').all();
|
|
143
|
+
db.close();
|
|
144
|
+
const roots = new Set();
|
|
145
|
+
for (const { file_path } of rows) {
|
|
146
|
+
const first = file_path.split(/[/\\]/)[0];
|
|
147
|
+
if (first)
|
|
148
|
+
roots.add(first);
|
|
149
|
+
}
|
|
150
|
+
return [...roots];
|
|
151
|
+
}
|
|
152
|
+
catch {
|
|
153
|
+
return [];
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
function moduleFromPath(filePath, sourceRoots) {
|
|
157
|
+
const parts = filePath.split(/[/\\]/);
|
|
158
|
+
for (const root of sourceRoots) {
|
|
159
|
+
const idx = parts.indexOf(root);
|
|
160
|
+
if (idx >= 0 && idx + 1 < parts.length) {
|
|
161
|
+
return parts[idx + 1];
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
return null;
|
|
165
|
+
}
|
|
166
|
+
// ============================================================================
|
|
167
|
+
// CROSS-MODULE DENSITY
|
|
168
|
+
// Counts module transitions in the sliding window, skipping null entries.
|
|
169
|
+
// Denominator is total window length so non-file calls dilute density.
|
|
170
|
+
// ============================================================================
|
|
171
|
+
function computeCrossModuleDensity(window) {
|
|
172
|
+
if (window.length < 2)
|
|
173
|
+
return 0;
|
|
174
|
+
let switches = 0;
|
|
175
|
+
let prev = null;
|
|
176
|
+
for (const mod of window) {
|
|
177
|
+
if (mod !== null) {
|
|
178
|
+
if (prev !== null && mod !== prev)
|
|
179
|
+
switches++;
|
|
180
|
+
prev = mod;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
// Fixed denominator = window capacity so early-session (small window) doesn't
|
|
184
|
+
// produce inflated density — density only reaches threshold after real accumulation.
|
|
185
|
+
return switches / CROSS_MODULE_WINDOW_SIZE;
|
|
186
|
+
}
|
|
187
|
+
// ============================================================================
|
|
188
|
+
// OSCILLATION SCORE
|
|
189
|
+
// Bigram repetition ratio: how often the module 2 calls ago reappears.
|
|
190
|
+
// A→B→A→B→A scores 1.0 (pure confusion loop); A→B→C→D→E scores 0.0.
|
|
191
|
+
// Fixed denominator = window entries ≥ 3 so early-session doesn't spike.
|
|
192
|
+
// ============================================================================
|
|
193
|
+
function computeOscillationScore(window) {
|
|
194
|
+
const modules = window.filter((m) => m !== null);
|
|
195
|
+
if (modules.length < 3)
|
|
196
|
+
return 0;
|
|
197
|
+
let repeated = 0;
|
|
198
|
+
let total = 0;
|
|
199
|
+
for (let i = 2; i < modules.length; i++) {
|
|
200
|
+
total++;
|
|
201
|
+
if (modules[i] === modules[i - 2])
|
|
202
|
+
repeated++;
|
|
203
|
+
}
|
|
204
|
+
return total > 0 ? repeated / total : 0;
|
|
205
|
+
}
|
|
206
|
+
// ============================================================================
|
|
207
|
+
// STALE DEPTH
|
|
208
|
+
// Monotonic — depth can only increase, never decrease until orient() reset.
|
|
209
|
+
// ============================================================================
|
|
210
|
+
function computeStaleDepth(load, ageMs) {
|
|
211
|
+
if (load >= STALE_D3_LOAD_THRESHOLD || ageMs >= STALE_D3_AGE_MS)
|
|
212
|
+
return 3;
|
|
213
|
+
if (load >= STALE_D2_LOAD_THRESHOLD || ageMs >= STALE_D2_AGE_MS)
|
|
214
|
+
return 2;
|
|
215
|
+
return 1;
|
|
216
|
+
}
|
|
217
|
+
// ============================================================================
|
|
218
|
+
// TRACKER LIFECYCLE
|
|
219
|
+
// ============================================================================
|
|
220
|
+
export function createTracker(directory) {
|
|
221
|
+
return {
|
|
222
|
+
lastOrientAt: new Date(),
|
|
223
|
+
graphVersionAtOrient: getGitHash(directory),
|
|
224
|
+
cognitiveLoad: 0,
|
|
225
|
+
modulesVisited: new Set(),
|
|
226
|
+
freshnessState: 'fresh',
|
|
227
|
+
staleDepth: 0,
|
|
228
|
+
lastGitCheckAt: Date.now(),
|
|
229
|
+
sourceRoots: getSourceRoots(directory),
|
|
230
|
+
lastModule: null,
|
|
231
|
+
moduleAccessWindow: [],
|
|
232
|
+
lastDensityPenaltyAt: 0,
|
|
233
|
+
lastSwitchAt: 0,
|
|
234
|
+
oscillation: 0,
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
function resetTracker(tracker, directory) {
|
|
238
|
+
tracker.lastOrientAt = new Date();
|
|
239
|
+
tracker.graphVersionAtOrient = getGitHash(directory);
|
|
240
|
+
tracker.cognitiveLoad = 0;
|
|
241
|
+
tracker.modulesVisited = new Set();
|
|
242
|
+
tracker.freshnessState = 'fresh';
|
|
243
|
+
tracker.staleDepth = 0;
|
|
244
|
+
tracker.lastGitCheckAt = Date.now();
|
|
245
|
+
tracker.lastModule = null;
|
|
246
|
+
tracker.moduleAccessWindow = [];
|
|
247
|
+
tracker.lastDensityPenaltyAt = 0;
|
|
248
|
+
tracker.lastSwitchAt = 0;
|
|
249
|
+
tracker.oscillation = 0;
|
|
250
|
+
// sourceRoots not reset — project layout doesn't change during a session
|
|
251
|
+
}
|
|
252
|
+
function transitionToStale(tracker, load, ageMs) {
|
|
253
|
+
tracker.freshnessState = 'stale';
|
|
254
|
+
tracker.staleDepth = computeStaleDepth(load, ageMs);
|
|
255
|
+
}
|
|
256
|
+
export function updateTracker(tracker, toolName, directory, filePath) {
|
|
257
|
+
if (toolName === 'orient') {
|
|
258
|
+
if (tracker.freshnessState !== 'fresh') {
|
|
259
|
+
emit(directory, 'epistemic-lease', {
|
|
260
|
+
event: 'orient_reset',
|
|
261
|
+
from_state: tracker.freshnessState,
|
|
262
|
+
prior_load: tracker.cognitiveLoad,
|
|
263
|
+
prior_depth: tracker.staleDepth,
|
|
264
|
+
tool: 'orient', module: null, cognitive_load: tracker.cognitiveLoad, density: 0,
|
|
265
|
+
oscillation: tracker.oscillation, age_min: Math.floor((Date.now() - tracker.lastOrientAt.getTime()) / 60_000),
|
|
266
|
+
});
|
|
267
|
+
}
|
|
268
|
+
resetTracker(tracker, directory);
|
|
269
|
+
return;
|
|
270
|
+
}
|
|
271
|
+
const now = Date.now();
|
|
272
|
+
const ageMs = now - tracker.lastOrientAt.getTime();
|
|
273
|
+
const weight = TOOL_WEIGHTS[toolName] ?? 1;
|
|
274
|
+
// Update trajectory window on EVERY call (including when stale) so burst
|
|
275
|
+
// detection and oscillation scoring reflect the actual navigation path.
|
|
276
|
+
const mod = filePath ? moduleFromPath(filePath, tracker.sourceRoots) : null;
|
|
277
|
+
tracker.moduleAccessWindow.push(mod);
|
|
278
|
+
if (tracker.moduleAccessWindow.length > CROSS_MODULE_WINDOW_SIZE) {
|
|
279
|
+
tracker.moduleAccessWindow.shift();
|
|
280
|
+
}
|
|
281
|
+
const density = computeCrossModuleDensity(tracker.moduleAccessWindow);
|
|
282
|
+
const oscillation = computeOscillationScore(tracker.moduleAccessWindow);
|
|
283
|
+
tracker.oscillation = oscillation;
|
|
284
|
+
// Already stale — time-based depth escalation only, plus V3.2 burst sensitivity.
|
|
285
|
+
// Load stops accumulating here; burst detection uses tool weight and density instead.
|
|
286
|
+
if (tracker.freshnessState === 'stale') {
|
|
287
|
+
// Post-stale burst: heavy architectural tool or trajectory burst → immediate depth 3
|
|
288
|
+
if (tracker.staleDepth < 3 && (weight >= BURST_TOOL_WEIGHT_THRESHOLD || density >= BURST_DENSITY_THRESHOLD)) {
|
|
289
|
+
emit(directory, 'epistemic-lease', {
|
|
290
|
+
event: 'depth_escalate', from_depth: tracker.staleDepth, to_depth: 3,
|
|
291
|
+
tool: toolName, module: mod, cognitive_load: tracker.cognitiveLoad,
|
|
292
|
+
density, oscillation, age_min: Math.floor(ageMs / 60_000), trigger: 'burst',
|
|
293
|
+
});
|
|
294
|
+
tracker.staleDepth = 3;
|
|
295
|
+
return;
|
|
296
|
+
}
|
|
297
|
+
const newDepth = computeStaleDepth(tracker.cognitiveLoad, ageMs);
|
|
298
|
+
if (newDepth > tracker.staleDepth) {
|
|
299
|
+
emit(directory, 'epistemic-lease', {
|
|
300
|
+
event: 'depth_escalate', from_depth: tracker.staleDepth, to_depth: newDepth,
|
|
301
|
+
tool: toolName, module: mod, cognitive_load: tracker.cognitiveLoad,
|
|
302
|
+
density, oscillation, age_min: Math.floor(ageMs / 60_000),
|
|
303
|
+
});
|
|
304
|
+
tracker.staleDepth = newDepth;
|
|
305
|
+
}
|
|
306
|
+
return;
|
|
307
|
+
}
|
|
308
|
+
// Accumulate cognitive load from tool weight
|
|
309
|
+
tracker.cognitiveLoad += weight;
|
|
310
|
+
if (mod !== null) {
|
|
311
|
+
tracker.modulesVisited.add(mod);
|
|
312
|
+
const isSwitch = tracker.lastModule !== null && mod !== tracker.lastModule;
|
|
313
|
+
// Dampen rapid back-and-forth (same switch pair within SWITCH_DAMPENING_MS)
|
|
314
|
+
if (isSwitch && now - tracker.lastSwitchAt > SWITCH_DAMPENING_MS) {
|
|
315
|
+
tracker.cognitiveLoad += MODULE_SWITCH_BASE_WEIGHT;
|
|
316
|
+
tracker.lastSwitchAt = now;
|
|
317
|
+
}
|
|
318
|
+
tracker.lastModule = mod;
|
|
319
|
+
}
|
|
320
|
+
// Density-based debt bonus (with cooldown to prevent double-counting)
|
|
321
|
+
if (density >= CROSS_MODULE_STALE_DENSITY && now - tracker.lastDensityPenaltyAt > DENSITY_BONUS_COOLDOWN_MS) {
|
|
322
|
+
const isBurst = density >= BURST_DENSITY_THRESHOLD;
|
|
323
|
+
tracker.cognitiveLoad += isBurst ? BURST_DEBT_SPIKE : HIGH_DENSITY_DEBT_BONUS;
|
|
324
|
+
tracker.lastDensityPenaltyAt = now;
|
|
325
|
+
}
|
|
326
|
+
const ageMin = Math.floor(ageMs / 60_000);
|
|
327
|
+
const telCtx = { tool: toolName, module: mod, cognitive_load: tracker.cognitiveLoad, density, oscillation, age_min: ageMin };
|
|
328
|
+
// Rate-limited git hash check (~every 30s) — structural invalidation
|
|
329
|
+
if (now - tracker.lastGitCheckAt > GIT_CHECK_INTERVAL_MS) {
|
|
330
|
+
tracker.lastGitCheckAt = now;
|
|
331
|
+
const currentHash = getGitHash(directory);
|
|
332
|
+
if (currentHash && tracker.graphVersionAtOrient && currentHash !== tracker.graphVersionAtOrient) {
|
|
333
|
+
transitionToStale(tracker, tracker.cognitiveLoad, ageMs);
|
|
334
|
+
emit(directory, 'epistemic-lease', { event: 'stale', trigger: 'git', depth: tracker.staleDepth, ...telCtx });
|
|
335
|
+
return;
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
// State transitions: stale > degraded > fresh (never reverses)
|
|
339
|
+
if (ageMs >= STALE_AGE_MS || tracker.cognitiveLoad >= STALE_LOAD_THRESHOLD || density >= CROSS_MODULE_STALE_DENSITY) {
|
|
340
|
+
const trigger = density >= CROSS_MODULE_STALE_DENSITY ? 'density' : tracker.cognitiveLoad >= STALE_LOAD_THRESHOLD ? 'load' : 'time';
|
|
341
|
+
transitionToStale(tracker, tracker.cognitiveLoad, ageMs);
|
|
342
|
+
emit(directory, 'epistemic-lease', { event: 'stale', trigger, depth: tracker.staleDepth, ...telCtx });
|
|
343
|
+
}
|
|
344
|
+
else if (tracker.freshnessState === 'fresh' && (ageMs >= DEGRADE_AGE_MS ||
|
|
345
|
+
tracker.cognitiveLoad >= DEGRADE_LOAD_THRESHOLD ||
|
|
346
|
+
density >= CROSS_MODULE_DEGRADE_DENSITY)) {
|
|
347
|
+
const trigger = density >= CROSS_MODULE_DEGRADE_DENSITY ? 'density' : tracker.cognitiveLoad >= DEGRADE_LOAD_THRESHOLD ? 'load' : 'time';
|
|
348
|
+
tracker.freshnessState = 'degraded';
|
|
349
|
+
emit(directory, 'epistemic-lease', { event: 'degraded', trigger, ...telCtx });
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
// ============================================================================
|
|
353
|
+
// FRESHNESS SIGNALS
|
|
354
|
+
//
|
|
355
|
+
// Stale depth variants use different rhetorical strategies to resist blindness:
|
|
356
|
+
// Depth 1 — procedural: enumerates what NOT to do, offers orient()
|
|
357
|
+
// Depth 2 — consequential: names downstream risks of ignoring the signal
|
|
358
|
+
// Depth 3 — imperative: minimal text, command form, hardest to skim past
|
|
359
|
+
//
|
|
360
|
+
// Degraded: appended (low friction, visible but not blocking).
|
|
361
|
+
// Stale: prepended (agent sees it before reading any result).
|
|
362
|
+
// ============================================================================
|
|
363
|
+
function staleBlock(ageMin, load, depth) {
|
|
364
|
+
const header = `\n╔══════════════════════════════════════════════════════════╗\n` +
|
|
365
|
+
(depth === 1
|
|
366
|
+
? `║ EPISTEMIC LEASE: STALE ║\n`
|
|
367
|
+
: depth === 2
|
|
368
|
+
? `║ EPISTEMIC LEASE: STALE [ELEVATED] ║\n`
|
|
369
|
+
: `║ EPISTEMIC LEASE: STALE [CRITICAL] ║\n`) +
|
|
370
|
+
`╚══════════════════════════════════════════════════════════╝\n` +
|
|
371
|
+
`Context age: ${ageMin}min | Cognitive load score: ${load}\n\n`;
|
|
372
|
+
const body = depth === 1
|
|
373
|
+
? (`Cached architectural reasoning reliability: LOW\n` +
|
|
374
|
+
`Cross-module dependency assumptions: UNRELIABLE\n` +
|
|
375
|
+
`Internal repository model: NOT AUTHORITATIVE\n\n` +
|
|
376
|
+
`Before continuing:\n` +
|
|
377
|
+
` - Do NOT rely on previous dependency assumptions\n` +
|
|
378
|
+
` - Do NOT infer cross-module relationships from memory\n` +
|
|
379
|
+
` - Do NOT compile delegation prompts from cached architectural model\n` +
|
|
380
|
+
` - Do NOT continue architectural reasoning from internal state\n\n` +
|
|
381
|
+
`Call orient() to restore architectural authority.\n`)
|
|
382
|
+
: depth === 2
|
|
383
|
+
? (`Dependency assumptions: NO LONGER AUTHORITATIVE\n` +
|
|
384
|
+
`Architectural inference from memory: HIGH HALLUCINATION RISK\n` +
|
|
385
|
+
`Delegation prompt compilation: UNSAFE — context unreliable\n\n` +
|
|
386
|
+
`Continuing without orient() risks embedding stale architectural\n` +
|
|
387
|
+
`assumptions into refactor plans, cross-module reasoning, and\n` +
|
|
388
|
+
`delegation context that cannot easily be corrected downstream.\n\n` +
|
|
389
|
+
`orient() required before architectural decisions.\n`)
|
|
390
|
+
: (`Cross-module reasoning reliability: CRITICALLY LOW\n` +
|
|
391
|
+
`Repository model: EXPIRED — do not use for architectural decisions\n\n` +
|
|
392
|
+
`STOP. Call orient() before any architectural reasoning.\n`);
|
|
393
|
+
return header + body + `─────────────────────────────────────────────────────────────\n\n`;
|
|
394
|
+
}
|
|
395
|
+
function degradedSignal(ageMin, modules) {
|
|
396
|
+
return (`\n─────────────────────────────────────────────────────────────\n` +
|
|
397
|
+
`[EPISTEMIC LEASE: DEGRADED | age: ${ageMin}min | modules visited: ${modules}]\n` +
|
|
398
|
+
`Cross-module dependency assumptions: reduced confidence.\n` +
|
|
399
|
+
`Call orient() before architectural decisions or delegation prompt compilation.\n`);
|
|
400
|
+
}
|
|
401
|
+
/**
|
|
402
|
+
* Returns the freshness signal for the current tracker state, or null if fresh.
|
|
403
|
+
* prepend=true → signal should appear before the tool result (stale).
|
|
404
|
+
* prepend=false → signal should appear after the tool result (degraded).
|
|
405
|
+
*
|
|
406
|
+
* Callers that build MCP content arrays should add this as a separate TextContent
|
|
407
|
+
* item rather than string-concatenating into the result body.
|
|
408
|
+
*/
|
|
409
|
+
export function getFreshnessSignal(tracker) {
|
|
410
|
+
if (tracker.freshnessState === 'fresh')
|
|
411
|
+
return null;
|
|
412
|
+
const ageMin = Math.floor((Date.now() - tracker.lastOrientAt.getTime()) / 60_000);
|
|
413
|
+
if (tracker.freshnessState === 'stale') {
|
|
414
|
+
// staleDepth is always ≥1 when freshnessState === 'stale' — invariant enforced by transitionToStale.
|
|
415
|
+
return {
|
|
416
|
+
text: staleBlock(ageMin, tracker.cognitiveLoad, tracker.staleDepth),
|
|
417
|
+
prepend: true,
|
|
418
|
+
};
|
|
419
|
+
}
|
|
420
|
+
return {
|
|
421
|
+
text: degradedSignal(ageMin, tracker.modulesVisited.size),
|
|
422
|
+
prepend: false,
|
|
423
|
+
};
|
|
424
|
+
}
|
|
425
|
+
export function injectFreshness(text, tracker) {
|
|
426
|
+
const signal = getFreshnessSignal(tracker);
|
|
427
|
+
if (!signal)
|
|
428
|
+
return text;
|
|
429
|
+
return signal.prepend ? signal.text + text : text + signal.text;
|
|
430
|
+
}
|
|
431
|
+
//# sourceMappingURL=epistemic-lease.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"epistemic-lease.js","sourceRoot":"","sources":["../../../../src/core/services/mcp-handlers/epistemic-lease.ts"],"names":[],"mappings":"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"}
|
|
@@ -35,6 +35,8 @@ export declare function sanitizeMcpError(err: unknown, format?: 'string' | 'json
|
|
|
35
35
|
* `../` sequences.
|
|
36
36
|
*/
|
|
37
37
|
export declare function safeJoin(absDir: string, filePath: string): string;
|
|
38
|
+
/** Test-only: clear in-memory context cache to force cold path. */
|
|
39
|
+
export declare function _resetContextCacheForTesting(): void;
|
|
38
40
|
export declare function readCachedContext(directory: string, timeout?: number): Promise<CachedContext | null>;
|
|
39
41
|
/** Compute a SHA-256 fingerprint of all source file mtimes+sizes under rootDir. */
|
|
40
42
|
export declare function computeProjectFingerprint(rootDir: string): Promise<string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/core/services/mcp-handlers/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAG7C,+FAA+F;AAC/F,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG;IAAE,SAAS,CAAC,EAAE,SAAS,CAAA;CAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/core/services/mcp-handlers/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,7 @@ import { extname, join, relative, resolve, sep } from 'node:path';
|
|
|
7
7
|
import { EdgeStore } from '../edge-store.js';
|
|
8
8
|
import { ANALYSIS_STALE_THRESHOLD_MS, ARTIFACT_FINGERPRINT, ARTIFACT_LLM_CONTEXT, OPENLORE_ANALYSIS_SUBDIR, OPENLORE_DIR } from '../../../constants.js';
|
|
9
9
|
import { logger } from '../../../utils/logger.js';
|
|
10
|
+
import { emit } from '../telemetry.js';
|
|
10
11
|
/**
|
|
11
12
|
* Resolve and validate a user-supplied directory path.
|
|
12
13
|
*
|
|
@@ -91,19 +92,37 @@ export function safeJoin(absDir, filePath) {
|
|
|
91
92
|
}
|
|
92
93
|
return resolved;
|
|
93
94
|
}
|
|
95
|
+
/** One entry per project directory. Invalidated by llm-context.json mtime change. */
|
|
96
|
+
const _contextCache = new Map();
|
|
97
|
+
/** Test-only: clear in-memory context cache to force cold path. */
|
|
98
|
+
export function _resetContextCacheForTesting() {
|
|
99
|
+
for (const entry of _contextCache.values())
|
|
100
|
+
entry.ctx.edgeStore?.close();
|
|
101
|
+
_contextCache.clear();
|
|
102
|
+
}
|
|
94
103
|
export async function readCachedContext(directory, timeout) {
|
|
95
104
|
const analysisDir = join(directory, OPENLORE_DIR, OPENLORE_ANALYSIS_SUBDIR);
|
|
105
|
+
const filePath = join(analysisDir, ARTIFACT_LLM_CONTEXT);
|
|
96
106
|
async function load() {
|
|
97
107
|
try {
|
|
98
|
-
const
|
|
108
|
+
const mtime = (await stat(filePath)).mtimeMs;
|
|
109
|
+
const cached = _contextCache.get(directory);
|
|
110
|
+
if (cached && cached.mtime === mtime) {
|
|
111
|
+
emit(directory, 'cache', { event: 'cache_read', hit: true });
|
|
112
|
+
return cached.ctx;
|
|
113
|
+
}
|
|
114
|
+
// Cache miss — read 3.7MB JSON and open EdgeStore connection
|
|
115
|
+
const raw = await readFile(filePath, 'utf-8');
|
|
99
116
|
const ctx = JSON.parse(raw);
|
|
100
|
-
// Attach EdgeStore when call-graph.db is present (incremental edge updates)
|
|
101
117
|
if (EdgeStore.exists(analysisDir)) {
|
|
102
118
|
ctx.edgeStore = EdgeStore.open(EdgeStore.dbPath(analysisDir));
|
|
103
119
|
}
|
|
120
|
+
_contextCache.set(directory, { ctx, mtime });
|
|
121
|
+
emit(directory, 'cache', { event: 'cache_read', hit: true });
|
|
104
122
|
return ctx;
|
|
105
123
|
}
|
|
106
124
|
catch {
|
|
125
|
+
emit(directory, 'cache', { event: 'cache_read', hit: false });
|
|
107
126
|
return null;
|
|
108
127
|
}
|
|
109
128
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/core/services/mcp-handlers/utils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/core/services/mcp-handlers/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Opt-in telemetry writer for openlore.
|
|
3
|
+
*
|
|
4
|
+
* Gate: OPENLORE_TELEMETRY=1 (disabled by default).
|
|
5
|
+
* Writes append-only JSONL to .openlore/telemetry/<domain>.jsonl.
|
|
6
|
+
* Never throws — telemetry must not crash the hot path.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Emit a telemetry event to .openlore/telemetry/<domain>.jsonl.
|
|
10
|
+
*
|
|
11
|
+
* @param directory - project root (must be absolute)
|
|
12
|
+
* @param domain - log file name without extension (e.g. 'mcp', 'cache', 'epistemic-lease')
|
|
13
|
+
* @param payload - arbitrary fields merged with the timestamp
|
|
14
|
+
*/
|
|
15
|
+
export declare function emit(directory: string, domain: string, payload: Record<string, unknown>): void;
|
|
16
|
+
//# sourceMappingURL=telemetry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../../../src/core/services/telemetry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AASH;;;;;;GAMG;AACH,wBAAgB,IAAI,CAClB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,IAAI,CAWN"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Opt-in telemetry writer for openlore.
|
|
3
|
+
*
|
|
4
|
+
* Gate: OPENLORE_TELEMETRY=1 (disabled by default).
|
|
5
|
+
* Writes append-only JSONL to .openlore/telemetry/<domain>.jsonl.
|
|
6
|
+
* Never throws — telemetry must not crash the hot path.
|
|
7
|
+
*/
|
|
8
|
+
import { appendFileSync, mkdirSync } from 'node:fs';
|
|
9
|
+
import { join } from 'node:path';
|
|
10
|
+
import { OPENLORE_DIR } from '../../constants.js';
|
|
11
|
+
const TELEMETRY_SUBDIR = 'telemetry';
|
|
12
|
+
const _createdDirs = new Set();
|
|
13
|
+
/**
|
|
14
|
+
* Emit a telemetry event to .openlore/telemetry/<domain>.jsonl.
|
|
15
|
+
*
|
|
16
|
+
* @param directory - project root (must be absolute)
|
|
17
|
+
* @param domain - log file name without extension (e.g. 'mcp', 'cache', 'epistemic-lease')
|
|
18
|
+
* @param payload - arbitrary fields merged with the timestamp
|
|
19
|
+
*/
|
|
20
|
+
export function emit(directory, domain, payload) {
|
|
21
|
+
if (!process.env['OPENLORE_TELEMETRY'])
|
|
22
|
+
return;
|
|
23
|
+
if (!directory)
|
|
24
|
+
return;
|
|
25
|
+
try {
|
|
26
|
+
const dir = join(directory, OPENLORE_DIR, TELEMETRY_SUBDIR);
|
|
27
|
+
if (!_createdDirs.has(dir)) {
|
|
28
|
+
mkdirSync(dir, { recursive: true });
|
|
29
|
+
_createdDirs.add(dir);
|
|
30
|
+
}
|
|
31
|
+
const line = JSON.stringify({ ts: new Date().toISOString(), ...payload }) + '\n';
|
|
32
|
+
appendFileSync(join(dir, `${domain}.jsonl`), line, 'utf-8');
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
// never crash the hot path
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=telemetry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../../src/core/services/telemetry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,gBAAgB,GAAG,WAAW,CAAC;AACrC,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;AAEvC;;;;;;GAMG;AACH,MAAM,UAAU,IAAI,CAClB,SAAiB,EACjB,MAAc,EACd,OAAgC;IAEhC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;QAAE,OAAO;IAC/C,IAAI,CAAC,SAAS;QAAE,OAAO;IACvB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE,YAAY,EAAE,gBAAgB,CAAC,CAAC;QAC5D,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAAC,CAAC;QAC3F,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC;QACjF,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC;IAAC,MAAM,CAAC;QACP,2BAA2B;IAC7B,CAAC;AACH,CAAC"}
|