@dzhechkov/harness-core 0.3.92 → 0.3.94
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/__tests__/golden-baseline.test.d.ts +2 -0
- package/dist/__tests__/golden-baseline.test.d.ts.map +1 -0
- package/dist/__tests__/golden-baseline.test.js +60 -0
- package/dist/__tests__/golden-baseline.test.js.map +1 -0
- package/dist/agentdb-index.d.ts +9 -0
- package/dist/agentdb-index.d.ts.map +1 -1
- package/dist/agentdb-index.js +44 -1
- package/dist/agentdb-index.js.map +1 -1
- package/dist/feature-adr-routing.d.ts +69 -0
- package/dist/feature-adr-routing.d.ts.map +1 -1
- package/dist/feature-adr-routing.js +79 -9
- package/dist/feature-adr-routing.js.map +1 -1
- package/dist/index.d.ts +11 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -4
- package/dist/index.js.map +1 -1
- package/dist/learning-backend.d.ts +85 -0
- package/dist/learning-backend.d.ts.map +1 -0
- package/dist/learning-backend.js +133 -0
- package/dist/learning-backend.js.map +1 -0
- package/dist/patterns.d.ts +43 -0
- package/dist/patterns.d.ts.map +1 -1
- package/dist/patterns.js +0 -0
- package/dist/patterns.js.map +1 -1
- package/dist/recommend.d.ts.map +1 -1
- package/dist/recommend.js +17 -3
- package/dist/recommend.js.map +1 -1
- package/dist/statusline.d.ts +3 -0
- package/dist/statusline.d.ts.map +1 -1
- package/dist/statusline.js +2 -0
- package/dist/statusline.js.map +1 -1
- package/dist/usage.d.ts +70 -0
- package/dist/usage.d.ts.map +1 -0
- package/dist/usage.js +255 -0
- package/dist/usage.js.map +1 -0
- package/dist/vector-tier.d.ts +15 -0
- package/dist/vector-tier.d.ts.map +1 -1
- package/dist/vector-tier.js +101 -19
- package/dist/vector-tier.js.map +1 -1
- package/package.json +4 -4
- package/src/__tests__/golden-baseline.test.ts +67 -0
- package/src/agentdb-index.ts +52 -1
- package/src/feature-adr-routing.ts +131 -8
- package/src/index.ts +14 -4
- package/src/learning-backend.ts +202 -0
- package/src/patterns.ts +0 -0
- package/src/recommend.ts +19 -5
- package/src/statusline.ts +5 -0
- package/src/usage.ts +289 -0
- package/src/vector-tier.ts +116 -16
package/dist/statusline.js
CHANGED
|
@@ -143,6 +143,7 @@ export function readFeatureAdrState(projectRoot, now = Date.now()) {
|
|
|
143
143
|
pool: num(parsed.pool),
|
|
144
144
|
recalled: num(parsed.recalled),
|
|
145
145
|
stored: num(parsed.stored),
|
|
146
|
+
...(num(parsed.reinforced) > 0 ? { reinforced: num(parsed.reinforced) } : {}),
|
|
146
147
|
ts: parsed.ts,
|
|
147
148
|
...(typeof parsed.mode === 'string' && parsed.mode.length > 0 ? { mode: parsed.mode } : {}),
|
|
148
149
|
};
|
|
@@ -175,6 +176,7 @@ export function writeFeatureAdrState(projectRoot, input, now = Date.now()) {
|
|
|
175
176
|
pool,
|
|
176
177
|
recalled: Number.isFinite(input.recalled) ? input.recalled : 0,
|
|
177
178
|
stored: Number.isFinite(input.stored) ? input.stored : 0,
|
|
179
|
+
...(input.reinforced !== undefined && Number.isFinite(input.reinforced) ? { reinforced: input.reinforced } : {}),
|
|
178
180
|
ts: new Date(now).toISOString(),
|
|
179
181
|
...(input.mode !== undefined && input.mode.length > 0 ? { mode: input.mode } : {}),
|
|
180
182
|
};
|
package/dist/statusline.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"statusline.js","sourceRoot":"","sources":["../src/statusline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACvF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"statusline.js","sourceRoot":"","sources":["../src/statusline.ts"],"names":[],"mappings":"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"}
|
package/dist/usage.d.ts
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `dz usage` data source — a READONLY, never-throw, best-effort estimate of Claude SESSION
|
|
3
|
+
* (active 5h-block) and WEEKLY (rolling 7d) token usage, aggregated from the local Claude Code
|
|
4
|
+
* transcript files under `~/.claude/projects/<munged>/<session>.jsonl`.
|
|
5
|
+
*
|
|
6
|
+
* ## Honest-uncertainty contract (LOAD-BEARING — NFR-4)
|
|
7
|
+
*
|
|
8
|
+
* These percentages are **ESTIMATES** derived by aggregating local transcript token counts against
|
|
9
|
+
* a USER-CONFIGURED limit. There is **no official usage API** being consulted — this is a fuel
|
|
10
|
+
* gauge built from the flow meter, not a tank sensor. Therefore:
|
|
11
|
+
*
|
|
12
|
+
* - Every payload carries `estimated: true` so a consumer can NEVER mistake it for ground truth.
|
|
13
|
+
* - When a limit is **unconfigured** (`.dz/config.json` has no `memory.usage.sessionTokenLimit` /
|
|
14
|
+
* `weeklyTokenLimit`), the corresponding `pct` is `null` — **unknown, never 0, never a guess**.
|
|
15
|
+
* - **Calibration protocol (observed-exhaustion):** when a real limit-hit occurs at an estimated
|
|
16
|
+
* `X%`, scale the configured limit by `X/100` so the next estimate lines up with reality. The
|
|
17
|
+
* 4 token fields are summed with equal weight; the relative weighting (cache-read tokens
|
|
18
|
+
* dominate real transcripts) is absorbed into the calibrated limit value.
|
|
19
|
+
*
|
|
20
|
+
* ## Statusline discipline (NFR-1)
|
|
21
|
+
*
|
|
22
|
+
* Modeled on {@link ./statusline.ts} and {@link ./vector-tier.ts}'s `readVectorEngineMode`:
|
|
23
|
+
* - **never-throw** — any error (missing `~/.claude/projects`, corrupt jsonl line, missing/corrupt
|
|
24
|
+
* config, garbled usage object) collapses to a value with `null` pcts, never an exception.
|
|
25
|
+
* - **readonly** — zero writes/appends/mkdir/unlink anywhere (the optional aggregate cache in
|
|
26
|
+
* arch §2.2(6) is DEFERRED — v1 ships with zero writes so READONLY is trivially true).
|
|
27
|
+
* - **<100ms steady-state** via an `mtime` prefilter: a file whose `mtime` is older than the weekly
|
|
28
|
+
* window cannot contribute and is skipped WITHOUT opening it; only files touched inside the
|
|
29
|
+
* session window are line-parsed for the active block.
|
|
30
|
+
* - **injectable clock** — `computeUsage(root, now?)` takes an optional `now` (ms epoch) so all
|
|
31
|
+
* window math is deterministic under test.
|
|
32
|
+
*
|
|
33
|
+
* @packageDocumentation
|
|
34
|
+
*/
|
|
35
|
+
/** Optional, plan-dependent calibration limits from `.dz/config.json`. Absent ⇒ pct is `null`. */
|
|
36
|
+
export interface UsageLimits {
|
|
37
|
+
readonly sessionTokenLimit?: number;
|
|
38
|
+
readonly weeklyTokenLimit?: number;
|
|
39
|
+
}
|
|
40
|
+
/** A never-throw usage estimate. `estimated` is ALWAYS `true` (honest-uncertainty marker). */
|
|
41
|
+
export interface UsageEstimate {
|
|
42
|
+
/** Active 5h-block token total (all projects). `0` when there is no active block. */
|
|
43
|
+
readonly sessionTokens: number;
|
|
44
|
+
/** Rolling 7d token total (all projects). */
|
|
45
|
+
readonly weeklyTokens: number;
|
|
46
|
+
/** `null` ⇔ `sessionTokenLimit` unconfigured (unknown — never 0). */
|
|
47
|
+
readonly sessionPct: number | null;
|
|
48
|
+
/** `null` ⇔ `weeklyTokenLimit` unconfigured (unknown — never 0). */
|
|
49
|
+
readonly weeklyPct: number | null;
|
|
50
|
+
/** ISO — active block start + 5h; `null` when there is no active block. */
|
|
51
|
+
readonly sessionResetsAt: string | null;
|
|
52
|
+
/** ISO — oldest in-window sample ts + 7d (estimate); `null` when the weekly window is empty. */
|
|
53
|
+
readonly weeklyResetsAt: string | null;
|
|
54
|
+
/** ALWAYS `true` — these are estimates from local aggregation, not an official API. */
|
|
55
|
+
readonly estimated: true;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Read `memory.usage.{sessionTokenLimit,weeklyTokenLimit}` from `<projectRoot>/.dz/config.json`.
|
|
59
|
+
* NEVER throws — absent/corrupt/partial config ⇒ `{}` (⇒ pct `null`). Mirrors the
|
|
60
|
+
* `readVectorEngineMode` never-throw shape exactly. `projectRoot` is the ONLY thing that scopes to
|
|
61
|
+
* a project; the MEASUREMENT below is account-wide (FR-1.6).
|
|
62
|
+
*/
|
|
63
|
+
export declare function readUsageLimits(projectRoot: string): UsageLimits;
|
|
64
|
+
/**
|
|
65
|
+
* Estimate SESSION + WEEKLY token usage from the local Claude transcript store. NEVER throws;
|
|
66
|
+
* READONLY; `<100ms` steady-state via the `mtime` prefilter. `projectRoot` scopes ONLY the config
|
|
67
|
+
* (limits) read — measurement is account-wide (all projects). `now` is injectable for tests.
|
|
68
|
+
*/
|
|
69
|
+
export declare function computeUsage(projectRoot: string, now?: number): UsageEstimate;
|
|
70
|
+
//# sourceMappingURL=usage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../src/usage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAaH,kGAAkG;AAClG,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CACpC;AAED,8FAA8F;AAC9F,MAAM,WAAW,aAAa;IAC5B,qFAAqF;IACrF,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,6CAA6C;IAC7C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,qEAAqE;IACrE,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,oEAAoE;IACpE,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,2EAA2E;IAC3E,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,gGAAgG;IAChG,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,uFAAuF;IACvF,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;CAC1B;AAaD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW,CAgBhE;AAsID;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,aAAa,CA8C7E"}
|
package/dist/usage.js
ADDED
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `dz usage` data source — a READONLY, never-throw, best-effort estimate of Claude SESSION
|
|
3
|
+
* (active 5h-block) and WEEKLY (rolling 7d) token usage, aggregated from the local Claude Code
|
|
4
|
+
* transcript files under `~/.claude/projects/<munged>/<session>.jsonl`.
|
|
5
|
+
*
|
|
6
|
+
* ## Honest-uncertainty contract (LOAD-BEARING — NFR-4)
|
|
7
|
+
*
|
|
8
|
+
* These percentages are **ESTIMATES** derived by aggregating local transcript token counts against
|
|
9
|
+
* a USER-CONFIGURED limit. There is **no official usage API** being consulted — this is a fuel
|
|
10
|
+
* gauge built from the flow meter, not a tank sensor. Therefore:
|
|
11
|
+
*
|
|
12
|
+
* - Every payload carries `estimated: true` so a consumer can NEVER mistake it for ground truth.
|
|
13
|
+
* - When a limit is **unconfigured** (`.dz/config.json` has no `memory.usage.sessionTokenLimit` /
|
|
14
|
+
* `weeklyTokenLimit`), the corresponding `pct` is `null` — **unknown, never 0, never a guess**.
|
|
15
|
+
* - **Calibration protocol (observed-exhaustion):** when a real limit-hit occurs at an estimated
|
|
16
|
+
* `X%`, scale the configured limit by `X/100` so the next estimate lines up with reality. The
|
|
17
|
+
* 4 token fields are summed with equal weight; the relative weighting (cache-read tokens
|
|
18
|
+
* dominate real transcripts) is absorbed into the calibrated limit value.
|
|
19
|
+
*
|
|
20
|
+
* ## Statusline discipline (NFR-1)
|
|
21
|
+
*
|
|
22
|
+
* Modeled on {@link ./statusline.ts} and {@link ./vector-tier.ts}'s `readVectorEngineMode`:
|
|
23
|
+
* - **never-throw** — any error (missing `~/.claude/projects`, corrupt jsonl line, missing/corrupt
|
|
24
|
+
* config, garbled usage object) collapses to a value with `null` pcts, never an exception.
|
|
25
|
+
* - **readonly** — zero writes/appends/mkdir/unlink anywhere (the optional aggregate cache in
|
|
26
|
+
* arch §2.2(6) is DEFERRED — v1 ships with zero writes so READONLY is trivially true).
|
|
27
|
+
* - **<100ms steady-state** via an `mtime` prefilter: a file whose `mtime` is older than the weekly
|
|
28
|
+
* window cannot contribute and is skipped WITHOUT opening it; only files touched inside the
|
|
29
|
+
* session window are line-parsed for the active block.
|
|
30
|
+
* - **injectable clock** — `computeUsage(root, now?)` takes an optional `now` (ms epoch) so all
|
|
31
|
+
* window math is deterministic under test.
|
|
32
|
+
*
|
|
33
|
+
* @packageDocumentation
|
|
34
|
+
*/
|
|
35
|
+
import { existsSync, readFileSync, readdirSync, statSync } from 'node:fs';
|
|
36
|
+
import { homedir } from 'node:os';
|
|
37
|
+
import { join } from 'node:path';
|
|
38
|
+
const HOUR_MS = 60 * 60 * 1000;
|
|
39
|
+
const SESSION_BLOCK_MS = 5 * HOUR_MS; // ccusage 5h-block
|
|
40
|
+
const WEEK_MS = 7 * 24 * HOUR_MS; // rolling 7-day weekly window
|
|
41
|
+
// mtime prefilter slack (+1h) — guards against clock skew between the writer and this reader
|
|
42
|
+
// (a file with a slightly-stale mtime that is actually in-window must not be dropped).
|
|
43
|
+
const MTIME_SLACK_MS = HOUR_MS;
|
|
44
|
+
/**
|
|
45
|
+
* The `~/.claude/projects` root (the account-wide transcript store). Overridable via
|
|
46
|
+
* `DZ_CLAUDE_PROJECTS_ROOT` — used by tests to point at a temp tree (and by any user who relocates
|
|
47
|
+
* the Claude home). Never throws.
|
|
48
|
+
*/
|
|
49
|
+
function claudeProjectsRoot() {
|
|
50
|
+
const override = process.env['DZ_CLAUDE_PROJECTS_ROOT'];
|
|
51
|
+
if (typeof override === 'string' && override.length > 0)
|
|
52
|
+
return override;
|
|
53
|
+
return join(homedir(), '.claude', 'projects');
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Read `memory.usage.{sessionTokenLimit,weeklyTokenLimit}` from `<projectRoot>/.dz/config.json`.
|
|
57
|
+
* NEVER throws — absent/corrupt/partial config ⇒ `{}` (⇒ pct `null`). Mirrors the
|
|
58
|
+
* `readVectorEngineMode` never-throw shape exactly. `projectRoot` is the ONLY thing that scopes to
|
|
59
|
+
* a project; the MEASUREMENT below is account-wide (FR-1.6).
|
|
60
|
+
*/
|
|
61
|
+
export function readUsageLimits(projectRoot) {
|
|
62
|
+
try {
|
|
63
|
+
const cfg = JSON.parse(readFileSync(join(projectRoot, '.dz', 'config.json'), 'utf-8'));
|
|
64
|
+
const u = cfg.memory?.usage;
|
|
65
|
+
if (!u || typeof u !== 'object')
|
|
66
|
+
return {};
|
|
67
|
+
const out = {};
|
|
68
|
+
const s = u.sessionTokenLimit;
|
|
69
|
+
const w = u.weeklyTokenLimit;
|
|
70
|
+
if (typeof s === 'number' && isFinite(s) && s > 0)
|
|
71
|
+
out.sessionTokenLimit = s;
|
|
72
|
+
if (typeof w === 'number' && isFinite(w) && w > 0)
|
|
73
|
+
out.weeklyTokenLimit = w;
|
|
74
|
+
return out;
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
return {};
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* List every `*.jsonl` under `~/.claude/projects/<dir>/`, best-effort. Never throws — an
|
|
82
|
+
* unreadable dir/file is skipped. Returns absolute paths + their `mtimeMs` (the prefilter lever).
|
|
83
|
+
*/
|
|
84
|
+
function listTranscriptFiles(root) {
|
|
85
|
+
const out = [];
|
|
86
|
+
let dirs;
|
|
87
|
+
try {
|
|
88
|
+
if (!existsSync(root))
|
|
89
|
+
return out;
|
|
90
|
+
dirs = readdirSync(root);
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
return out;
|
|
94
|
+
}
|
|
95
|
+
for (const d of dirs) {
|
|
96
|
+
const projDir = join(root, d);
|
|
97
|
+
let files;
|
|
98
|
+
try {
|
|
99
|
+
const st = statSync(projDir);
|
|
100
|
+
if (!st.isDirectory())
|
|
101
|
+
continue;
|
|
102
|
+
files = readdirSync(projDir);
|
|
103
|
+
}
|
|
104
|
+
catch {
|
|
105
|
+
continue;
|
|
106
|
+
}
|
|
107
|
+
for (const f of files) {
|
|
108
|
+
if (!f.endsWith('.jsonl'))
|
|
109
|
+
continue;
|
|
110
|
+
const p = join(projDir, f);
|
|
111
|
+
try {
|
|
112
|
+
out.push({ path: p, mtimeMs: statSync(p).mtimeMs });
|
|
113
|
+
}
|
|
114
|
+
catch {
|
|
115
|
+
// skip a file we can't stat
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
return out;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Extract usage samples from one transcript file. Never throws — a corrupt line is skipped
|
|
123
|
+
* (statusline discipline). A cheap `"usage"` substring pre-filter avoids `JSON.parse` on lines
|
|
124
|
+
* that cannot carry a token count. `weeklyCutoff` drops samples older than the rolling window.
|
|
125
|
+
*/
|
|
126
|
+
function extractSamples(path, weeklyCutoff, into, seen) {
|
|
127
|
+
let raw;
|
|
128
|
+
try {
|
|
129
|
+
raw = readFileSync(path, 'utf-8');
|
|
130
|
+
}
|
|
131
|
+
catch {
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
const lines = raw.split('\n');
|
|
135
|
+
for (const line of lines) {
|
|
136
|
+
if (line.length === 0)
|
|
137
|
+
continue;
|
|
138
|
+
if (line.indexOf('usage') === -1)
|
|
139
|
+
continue; // cheap pre-filter before the parse
|
|
140
|
+
let rec;
|
|
141
|
+
try {
|
|
142
|
+
rec = JSON.parse(line);
|
|
143
|
+
}
|
|
144
|
+
catch {
|
|
145
|
+
continue; // corrupt line — skip, never throw
|
|
146
|
+
}
|
|
147
|
+
const usage = rec.message?.usage;
|
|
148
|
+
if (!usage || typeof usage !== 'object')
|
|
149
|
+
continue;
|
|
150
|
+
const tsRaw = rec.timestamp;
|
|
151
|
+
if (typeof tsRaw !== 'string' && typeof tsRaw !== 'number')
|
|
152
|
+
continue;
|
|
153
|
+
const ts = typeof tsRaw === 'number' ? tsRaw : Date.parse(tsRaw);
|
|
154
|
+
if (!isFinite(ts))
|
|
155
|
+
continue;
|
|
156
|
+
if (ts < weeklyCutoff)
|
|
157
|
+
continue; // outside the weekly window — cannot contribute
|
|
158
|
+
const n = (v) => (typeof v === 'number' && isFinite(v) && v > 0 ? v : 0);
|
|
159
|
+
const tokens = n(usage.input_tokens) +
|
|
160
|
+
n(usage.cache_creation_input_tokens) +
|
|
161
|
+
n(usage.cache_read_input_tokens) +
|
|
162
|
+
n(usage.output_tokens);
|
|
163
|
+
if (tokens <= 0)
|
|
164
|
+
continue;
|
|
165
|
+
// Dedup: streamed assistant messages repeat their usage object across chunks.
|
|
166
|
+
const id = typeof rec.message?.id === 'string' ? rec.message.id : '';
|
|
167
|
+
const reqId = typeof rec.requestId === 'string' ? rec.requestId : '';
|
|
168
|
+
const key = id + ':' + reqId;
|
|
169
|
+
if (id !== '' || reqId !== '') {
|
|
170
|
+
if (seen.has(key))
|
|
171
|
+
continue;
|
|
172
|
+
seen.add(key);
|
|
173
|
+
}
|
|
174
|
+
into.push({ ts, tokens, key });
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Compute the SESSION active-block total using ccusage 5h-block semantics: walk samples in ts
|
|
179
|
+
* order; a block starts at the first sample after the previous block ends, FLOORED to the hour;
|
|
180
|
+
* `end = start + 5h`. The ACTIVE block is the one whose `[start, end)` contains `now`. No active
|
|
181
|
+
* block ⇒ `{ tokens: 0, resetsAt: null }`.
|
|
182
|
+
*/
|
|
183
|
+
function activeBlock(samplesAsc, now) {
|
|
184
|
+
let blockStart = -1;
|
|
185
|
+
let blockEnd = -1;
|
|
186
|
+
let tokens = 0;
|
|
187
|
+
let activeStart = -1;
|
|
188
|
+
let activeTokens = 0;
|
|
189
|
+
for (const s of samplesAsc) {
|
|
190
|
+
if (blockStart === -1 || s.ts >= blockEnd) {
|
|
191
|
+
// close the previous block, open a new one floored to the hour
|
|
192
|
+
blockStart = Math.floor(s.ts / HOUR_MS) * HOUR_MS;
|
|
193
|
+
blockEnd = blockStart + SESSION_BLOCK_MS;
|
|
194
|
+
tokens = 0;
|
|
195
|
+
}
|
|
196
|
+
tokens += s.tokens;
|
|
197
|
+
if (now >= blockStart && now < blockEnd) {
|
|
198
|
+
activeStart = blockStart;
|
|
199
|
+
activeTokens = tokens;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
if (activeStart === -1)
|
|
203
|
+
return { tokens: 0, resetsAt: null };
|
|
204
|
+
return { tokens: activeTokens, resetsAt: new Date(activeStart + SESSION_BLOCK_MS).toISOString() };
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Estimate SESSION + WEEKLY token usage from the local Claude transcript store. NEVER throws;
|
|
208
|
+
* READONLY; `<100ms` steady-state via the `mtime` prefilter. `projectRoot` scopes ONLY the config
|
|
209
|
+
* (limits) read — measurement is account-wide (all projects). `now` is injectable for tests.
|
|
210
|
+
*/
|
|
211
|
+
export function computeUsage(projectRoot, now) {
|
|
212
|
+
const nowMs = typeof now === 'number' && isFinite(now) ? now : Date.now();
|
|
213
|
+
const limits = readUsageLimits(projectRoot);
|
|
214
|
+
const weeklyCutoff = nowMs - WEEK_MS - MTIME_SLACK_MS;
|
|
215
|
+
const samples = [];
|
|
216
|
+
const seen = new Set();
|
|
217
|
+
try {
|
|
218
|
+
const files = listTranscriptFiles(claudeProjectsRoot());
|
|
219
|
+
for (const f of files) {
|
|
220
|
+
// mtime prefilter: a file last written before the weekly cutoff cannot hold in-window
|
|
221
|
+
// samples — skip it WITHOUT opening it (the <100ms lever).
|
|
222
|
+
if (f.mtimeMs < weeklyCutoff)
|
|
223
|
+
continue;
|
|
224
|
+
extractSamples(f.path, weeklyCutoff, samples, seen);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
catch {
|
|
228
|
+
// total scan failure ⇒ fall through with empty samples (nulls), never throw
|
|
229
|
+
}
|
|
230
|
+
// Weekly total: every sample inside the exact 7d window (the +slack was only a prefilter guard).
|
|
231
|
+
const weeklyHardCutoff = nowMs - WEEK_MS;
|
|
232
|
+
let weeklyTokens = 0;
|
|
233
|
+
let oldestInWindow = -1;
|
|
234
|
+
for (const s of samples) {
|
|
235
|
+
if (s.ts < weeklyHardCutoff)
|
|
236
|
+
continue;
|
|
237
|
+
weeklyTokens += s.tokens;
|
|
238
|
+
if (oldestInWindow === -1 || s.ts < oldestInWindow)
|
|
239
|
+
oldestInWindow = s.ts;
|
|
240
|
+
}
|
|
241
|
+
const asc = samples.slice().sort((a, b) => a.ts - b.ts);
|
|
242
|
+
const block = activeBlock(asc, nowMs);
|
|
243
|
+
const pct = (tokens, limit) => typeof limit === 'number' && limit > 0 ? Math.round((100 * tokens) / limit) : null;
|
|
244
|
+
const weeklyResetsAt = oldestInWindow === -1 ? null : new Date(oldestInWindow + WEEK_MS).toISOString();
|
|
245
|
+
return {
|
|
246
|
+
sessionTokens: block.tokens,
|
|
247
|
+
weeklyTokens,
|
|
248
|
+
sessionPct: pct(block.tokens, limits.sessionTokenLimit),
|
|
249
|
+
weeklyPct: pct(weeklyTokens, limits.weeklyTokenLimit),
|
|
250
|
+
sessionResetsAt: block.resetsAt,
|
|
251
|
+
weeklyResetsAt,
|
|
252
|
+
estimated: true,
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
//# sourceMappingURL=usage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usage.js","sourceRoot":"","sources":["../src/usage.ts"],"names":[],"mappings":"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"}
|
package/dist/vector-tier.d.ts
CHANGED
|
@@ -49,6 +49,8 @@ export interface VectorEntry {
|
|
|
49
49
|
readonly taskType: string;
|
|
50
50
|
readonly tags?: readonly string[] | undefined;
|
|
51
51
|
readonly metadata?: Record<string, unknown> | undefined;
|
|
52
|
+
readonly uses?: number | undefined;
|
|
53
|
+
readonly avgReward?: number | undefined;
|
|
52
54
|
}
|
|
53
55
|
/** One semantic search hit — a POINTER into the lexical store, never a pattern by itself. */
|
|
54
56
|
export interface VectorHit {
|
|
@@ -146,6 +148,7 @@ export interface VectorTierStatus {
|
|
|
146
148
|
export declare const DEFAULT_VECTOR_TIMEOUT_MS = 10000;
|
|
147
149
|
/** Default cosine cutoff for near-duplicate clustering (`--threshold` / config overrides). */
|
|
148
150
|
export declare const DEFAULT_HARMONIZE_THRESHOLD = 0.92;
|
|
151
|
+
export declare const REINFORCE_RRF_CAP: number;
|
|
149
152
|
/** One record in the harmonize pool — a lexical-store record mapped to its dzId + reward + ts. */
|
|
150
153
|
export interface HarmonizeItem {
|
|
151
154
|
readonly dzId: string;
|
|
@@ -230,6 +233,14 @@ export interface ReindexVectorReport {
|
|
|
230
233
|
readonly backupPath?: string;
|
|
231
234
|
readonly error?: string;
|
|
232
235
|
}
|
|
236
|
+
export type TeachGuardResult = {
|
|
237
|
+
readonly action: 'teach';
|
|
238
|
+
readonly reason?: string;
|
|
239
|
+
} | {
|
|
240
|
+
readonly action: 'reinforce';
|
|
241
|
+
readonly dzId: string;
|
|
242
|
+
readonly cosine: number;
|
|
243
|
+
};
|
|
233
244
|
/**
|
|
234
245
|
* Bound `promise` to `ms` wall-clock milliseconds. On timeout, resolve with `onTimeout()`
|
|
235
246
|
* instead — the underlying operation keeps running detached (its eventual write is later
|
|
@@ -325,6 +336,10 @@ export declare function recallHybrid(projectRoot: string, query: string, opts?:
|
|
|
325
336
|
readonly limit?: number | undefined;
|
|
326
337
|
readonly mode?: HybridRecallMode | undefined;
|
|
327
338
|
}): Promise<HybridRecall>;
|
|
339
|
+
export declare function teachGuard(projectRoot: string, text: string, opts?: VectorServiceOptions & {
|
|
340
|
+
readonly reward?: number | undefined;
|
|
341
|
+
readonly threshold?: number | undefined;
|
|
342
|
+
}): Promise<TeachGuardResult>;
|
|
328
343
|
/** Field observability: engine availability + mirrored-vs-lexical counts + queue size. */
|
|
329
344
|
export declare function vectorTierStatus(projectRoot: string, opts?: VectorServiceOptions): Promise<VectorTierStatus>;
|
|
330
345
|
export declare function reindexVectorStore(projectRoot: string, opts?: VectorServiceOptions): Promise<ReindexVectorReport>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vector-tier.d.ts","sourceRoot":"","sources":["../src/vector-tier.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAQH,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEpE,OAAO,
|
|
1
|
+
{"version":3,"file":"vector-tier.d.ts","sourceRoot":"","sources":["../src/vector-tier.ts"],"names":[],"mappings":"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"}
|