somtum 3.0.0 → 3.1.0

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.
Files changed (51) hide show
  1. package/README.md +101 -840
  2. package/dist/cli/doctor.d.ts.map +1 -1
  3. package/dist/cli/doctor.js +29 -27
  4. package/dist/cli/doctor.js.map +1 -1
  5. package/dist/cli/hook.d.ts.map +1 -1
  6. package/dist/cli/hook.js +1 -1
  7. package/dist/cli/hook.js.map +1 -1
  8. package/dist/cli/index.js +11 -6
  9. package/dist/cli/index.js.map +1 -1
  10. package/dist/cli/init.d.ts.map +1 -1
  11. package/dist/cli/init.js +31 -8
  12. package/dist/cli/init.js.map +1 -1
  13. package/dist/cli/serve.d.ts.map +1 -1
  14. package/dist/cli/serve.js +2 -0
  15. package/dist/cli/serve.js.map +1 -1
  16. package/dist/cli/stats.d.ts +4 -0
  17. package/dist/cli/stats.d.ts.map +1 -1
  18. package/dist/cli/stats.js +71 -43
  19. package/dist/cli/stats.js.map +1 -1
  20. package/dist/core/ledger.d.ts +28 -0
  21. package/dist/core/ledger.d.ts.map +1 -0
  22. package/dist/core/ledger.js +43 -0
  23. package/dist/core/ledger.js.map +1 -0
  24. package/dist/core/retriever/bm25.d.ts +1 -1
  25. package/dist/core/retriever/bm25.d.ts.map +1 -1
  26. package/dist/core/retriever/bm25.js +11 -1
  27. package/dist/core/retriever/bm25.js.map +1 -1
  28. package/dist/core/schema.d.ts +5 -0
  29. package/dist/core/schema.d.ts.map +1 -1
  30. package/dist/core/schema.js +6 -1
  31. package/dist/core/schema.js.map +1 -1
  32. package/dist/core/session_progress.d.ts +10 -0
  33. package/dist/core/session_progress.d.ts.map +1 -0
  34. package/dist/core/session_progress.js +39 -0
  35. package/dist/core/session_progress.js.map +1 -0
  36. package/dist/db/migrations/006_token_ledger.sql +33 -0
  37. package/dist/hooks/post_session.d.ts +1 -0
  38. package/dist/hooks/post_session.d.ts.map +1 -1
  39. package/dist/hooks/post_session.js +79 -39
  40. package/dist/hooks/post_session.js.map +1 -1
  41. package/dist/hooks/pre_prompt.d.ts.map +1 -1
  42. package/dist/hooks/pre_prompt.js +14 -1
  43. package/dist/hooks/pre_prompt.js.map +1 -1
  44. package/dist/hooks/pre_read.d.ts +16 -2
  45. package/dist/hooks/pre_read.d.ts.map +1 -1
  46. package/dist/hooks/pre_read.js +81 -26
  47. package/dist/hooks/pre_read.js.map +1 -1
  48. package/dist/mcp/tools.d.ts.map +1 -1
  49. package/dist/mcp/tools.js +2 -0
  50. package/dist/mcp/tools.js.map +1 -1
  51. package/package.json +5 -3
@@ -1,27 +1,28 @@
1
- import { readFileSync, appendFileSync, writeFileSync, mkdirSync } from 'node:fs';
2
- import { isAbsolute, join, resolve as resolvePath } from 'node:path';
3
1
  import { createHash } from 'node:crypto';
2
+ import { appendFileSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
3
+ import { isAbsolute, join, resolve as resolvePath } from 'node:path';
4
4
  import { ulid } from 'ulid';
5
5
  import { z } from 'zod';
6
- import { loadConfig, GLOBAL_DIR } from '../config.js';
7
- import { openDb } from '../core/db.js';
8
- import { MemoryStore } from '../core/store.js';
9
- import { generateIndex } from '../core/index_gen.js';
10
- import { extract, estimateTokensSaved, } from '../core/extractor.js';
11
- import { resolveProjectId, projectNameFromCwd } from '../core/project_id.js';
12
- import { countTokens } from '../core/tokens.js';
13
- import { pickBackend, callerFor, NO_BACKEND_MESSAGE } from '../core/llm_backend.js';
14
- import { projectDir } from '../config.js';
15
- import { Bm25Retriever } from '../core/retriever/bm25.js';
16
- import { parseTranscript, renderTurns, extractPromptResponsePairs } from '../core/transcript.js';
17
6
  import { findTranscript } from '../agents/index.js';
18
- import { PromptCache, hashPrompt } from '../core/cache.js';
19
- import { fingerprintFiles } from '../core/fingerprint.js';
7
+ import { GLOBAL_DIR, loadConfig, projectDir } from '../config.js';
8
+ import { hashPrompt, PromptCache } from '../core/cache.js';
9
+ import { openDb } from '../core/db.js';
10
+ import { deduplicateObservations } from '../core/dedup.js';
20
11
  import { ensureEmbedderConfigured } from '../core/embeddings_bootstrap.js';
21
- import { embedMissing } from '../core/reindex.js';
12
+ import { estimateTokensSaved, extract } from '../core/extractor.js';
22
13
  import { FileFingerprintStore, matchesAnyGlob, statFile, summarizeFile, summaryHash, } from '../core/file_summary.js';
23
- import { writeMemoryMarkdown, memoriesDir } from '../core/memory_files.js';
24
- import { deduplicateObservations } from '../core/dedup.js';
14
+ import { fingerprintFiles } from '../core/fingerprint.js';
15
+ import { generateIndex } from '../core/index_gen.js';
16
+ import { TokenLedger } from '../core/ledger.js';
17
+ import { callerFor, NO_BACKEND_MESSAGE, pickBackend } from '../core/llm_backend.js';
18
+ import { memoriesDir, writeMemoryMarkdown } from '../core/memory_files.js';
19
+ import { projectNameFromCwd, resolveProjectId } from '../core/project_id.js';
20
+ import { embedMissing } from '../core/reindex.js';
21
+ import { Bm25Retriever } from '../core/retriever/bm25.js';
22
+ import { SessionProgressStore } from '../core/session_progress.js';
23
+ import { MemoryStore } from '../core/store.js';
24
+ import { countTokens } from '../core/tokens.js';
25
+ import { extractPromptResponsePairs, parseTranscript, renderTurns } from '../core/transcript.js';
25
26
  export const HookPayloadSchema = z
26
27
  .object({
27
28
  session_id: z.string().optional(),
@@ -144,6 +145,7 @@ async function populateFileSummaries(db, turns, opts) {
144
145
  summary: result.value.summary,
145
146
  summary_hash: summaryHash(result.value.summary),
146
147
  });
148
+ opts.ledger.record(opts.projectId, 'file_summary', result.value.tokensSpent, opts.sessionId);
147
149
  generated += 1;
148
150
  }
149
151
  else {
@@ -198,35 +200,61 @@ export async function runPostSession(payload, opts = {}) {
198
200
  const dbPath = opts.dbPath ?? join(dir, 'db.sqlite');
199
201
  const indexPath = opts.indexPath ?? join(dir ?? '.', 'index.md');
200
202
  const db = opts.db ?? openDb({ path: dbPath });
203
+ let callerForSummaries = opts.caller;
201
204
  try {
202
205
  const store = new MemoryStore(db);
203
206
  const resolved = resolveTranscript(parsed);
207
+ const ledger = new TokenLedger(db);
208
+ const progress = new SessionProgressStore(db);
209
+ // Only the turns not yet extracted for this session are sent: a session
210
+ // that compacts and then ends is extracted once, not twice.
211
+ const resumeAt = progress.resumeIndex(sessionId, resolved.turns);
212
+ const pending = resolved.turns.slice(resumeAt);
213
+ const pendingText = resolved.turns.length > 0 ? renderTurns(pending) : resolved.text;
204
214
  // Cap transcript size to stay within model context limits.
205
215
  // At ~4 chars/token, 60k tokens ≈ 240 KB of text. Anything beyond that
206
216
  // risks a context-limit error in Haiku; we take the tail (most recent turns).
207
217
  const MAX_TRANSCRIPT_TOKENS = 60_000;
208
- const rawTranscript = resolved.text;
209
- const transcript = countTokens(rawTranscript) > MAX_TRANSCRIPT_TOKENS
218
+ const transcript = countTokens(pendingText) > MAX_TRANSCRIPT_TOKENS
210
219
  ? (() => {
211
220
  const charBudget = MAX_TRANSCRIPT_TOKENS * 4;
212
- hookLog(`[post_session] WARN: transcript truncated to last ~${charBudget} chars (was ${rawTranscript.length})`);
213
- return rawTranscript.slice(-charBudget);
221
+ hookLog(`[post_session] WARN: transcript truncated to last ~${charBudget} chars (was ${pendingText.length})`);
222
+ return pendingText.slice(-charBudget);
214
223
  })()
215
- : rawTranscript;
224
+ : pendingText;
216
225
  const transcriptTokens = countTokens(transcript);
217
- let caller = opts.caller;
218
- if (!caller) {
219
- const backend = pickBackend(config);
220
- if (!backend)
221
- throw new Error(NO_BACKEND_MESSAGE);
222
- hookLog(`[post_session] extraction backend: ${backend}`);
223
- caller = callerFor(backend, config);
226
+ let extraction = resumeAt > 0 ? 'incremental' : 'full';
227
+ let outcome = {
228
+ observations: [],
229
+ tokensSpent: 0,
230
+ retries: 0,
231
+ };
232
+ if (transcriptTokens === 0 || transcriptTokens < config.extraction.min_new_tokens) {
233
+ // Too little new material to be worth a model call. The cursor is not
234
+ // advanced, so these turns ride along with the next extraction.
235
+ extraction = 'skipped';
236
+ ledger.record(projectId, 'extraction_skipped', transcriptTokens, sessionId);
237
+ }
238
+ else {
239
+ let caller = opts.caller;
240
+ if (!caller) {
241
+ const backend = pickBackend(config);
242
+ if (!backend)
243
+ throw new Error(NO_BACKEND_MESSAGE);
244
+ hookLog(`[post_session] extraction backend: ${backend}`);
245
+ caller = callerFor(backend, config);
246
+ }
247
+ callerForSummaries = caller;
248
+ outcome = await extract(transcript, caller, {
249
+ model: config.extraction.model,
250
+ maxObservations: config.extraction.max_observations_per_session,
251
+ maxRetries: config.extraction.max_retries,
252
+ });
253
+ ledger.record(projectId, 'extraction', outcome.tokensSpent, sessionId);
254
+ const gaveUp = outcome.retries > config.extraction.max_retries;
255
+ if (!gaveUp)
256
+ progress.markExtracted(sessionId, projectId, resolved.turns);
224
257
  }
225
- const outcome = await extract(transcript, caller, {
226
- model: config.extraction.model,
227
- maxObservations: config.extraction.max_observations_per_session,
228
- maxRetries: config.extraction.max_retries,
229
- });
230
258
  const total = outcome.observations.length;
231
259
  // Divide extraction cost across observations so per-observation tokens_spent adds up.
232
260
  const perObsSpend = total > 0 ? Math.floor(outcome.tokensSpent / total) : 0;
@@ -260,7 +288,11 @@ export async function runPostSession(payload, opts = {}) {
260
288
  const dedupResult = deduplicateObservations(db, projectId, insertedIds);
261
289
  const tokensSavedTotal = store.totalTokensSaved(projectId);
262
290
  const cacheEntriesAdded = config.cache.enabled
263
- ? populateCache(db, resolved.turns, { cwd, model: config.extraction.model, cache: config.cache })
291
+ ? populateCache(db, resolved.turns, {
292
+ cwd,
293
+ model: config.extraction.model,
294
+ cache: config.cache,
295
+ })
264
296
  : 0;
265
297
  let embeddingsAdded = 0;
266
298
  if (config.retrieval.embeddings.enabled) {
@@ -286,17 +318,25 @@ export async function runPostSession(payload, opts = {}) {
286
318
  }
287
319
  // Summaries are optional work: run them last, and only while the hook's
288
320
  // time budget lasts, so they can never cost us the index or warm-start.
289
- const summariesGenerated = config.file_gating.enabled
321
+ if (config.file_gating.enabled && !callerForSummaries) {
322
+ const backend = pickBackend(config);
323
+ if (backend)
324
+ callerForSummaries = callerFor(backend, config);
325
+ }
326
+ const summariesGenerated = config.file_gating.enabled && callerForSummaries
290
327
  ? await populateFileSummaries(db, resolved.turns, {
291
328
  cwd,
292
329
  projectId,
330
+ sessionId,
293
331
  config,
294
- caller,
332
+ caller: callerForSummaries,
333
+ ledger,
295
334
  deadline: startedAt + SUMMARY_BUDGET_MS,
296
335
  })
297
336
  : 0;
298
337
  return {
299
338
  projectId,
339
+ extraction,
300
340
  inserted,
301
341
  superseded: dedupResult.superseded,
302
342
  tokensSpent: outcome.tokensSpent,
@@ -357,7 +397,7 @@ export async function main() {
357
397
  const raw = await readToEnd(process.stdin);
358
398
  const payload = HookPayloadSchema.parse(JSON.parse(raw));
359
399
  const result = await runPostSession(payload);
360
- hookLog(`[post_session] ok — inserted=${result.inserted} superseded=${result.superseded} cache=${result.cacheEntriesAdded} summaries=${result.summariesGenerated}`);
400
+ hookLog(`[post_session] ok — extraction=${result.extraction} inserted=${result.inserted} superseded=${result.superseded} cache=${result.cacheEntriesAdded} summaries=${result.summariesGenerated}`);
361
401
  writeFirstSessionFlag(result.projectId, result.inserted);
362
402
  // Hooks communicate via stdout; keep output structured.
363
403
  console.log(JSON.stringify({
@@ -1 +1 @@
1
- {"version":3,"file":"post_session.js","sourceRoot":"","sources":["../../src/hooks/post_session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"post_session.js","sourceRoot":"","sources":["../../src/hooks/post_session.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"pre_prompt.d.ts","sourceRoot":"","sources":["../../src/hooks/pre_prompt.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAU,KAAK,EAAE,EAAE,MAAM,eAAe,CAAC;AAShD,OAAO,KAAK,EAAE,MAAM,EAAc,MAAM,mBAAmB,CAAC;AAG5D,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAW/B,CAAC;AAEL,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE,MAAM,WAAW,gBAAgB;IAC/B,EAAE,CAAC,EAAE,EAAE,CAAC;IACR,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,OAAO,CAAC;IACZ,GAAG,EAAE,OAAO,CAAC;IACb,SAAS,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,QAAQ,GAAG,sBAAsB,GAAG,gBAAgB,CAAC;IAC9D,kBAAkB,CAAC,EAAE;QACnB,aAAa,EAAE,kBAAkB,CAAC;QAClC,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CAAC;CACH;AAmRD,wBAAsB,YAAY,CAChC,OAAO,EAAE,gBAAgB,EACzB,IAAI,GAAE,gBAAqB,GAC1B,OAAO,CAAC,eAAe,CAAC,CAyK1B"}
1
+ {"version":3,"file":"pre_prompt.d.ts","sourceRoot":"","sources":["../../src/hooks/pre_prompt.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAU,KAAK,EAAE,EAAE,MAAM,eAAe,CAAC;AAWhD,OAAO,KAAK,EAAE,MAAM,EAAc,MAAM,mBAAmB,CAAC;AAG5D,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAW/B,CAAC;AAEL,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE,MAAM,WAAW,gBAAgB;IAC/B,EAAE,CAAC,EAAE,EAAE,CAAC;IACR,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,OAAO,CAAC;IACZ,GAAG,EAAE,OAAO,CAAC;IACb,SAAS,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,QAAQ,GAAG,sBAAsB,GAAG,gBAAgB,CAAC;IAC9D,kBAAkB,CAAC,EAAE;QACnB,aAAa,EAAE,kBAAkB,CAAC;QAClC,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CAAC;CACH;AA2RD,wBAAsB,YAAY,CAChC,OAAO,EAAE,gBAAgB,EACzB,IAAI,GAAE,gBAAqB,GAC1B,OAAO,CAAC,eAAe,CAAC,CA2K1B"}
@@ -12,6 +12,8 @@ import { resolveProjectId } from '../core/project_id.js';
12
12
  import { ensureEmbedderConfigured } from '../core/embeddings_bootstrap.js';
13
13
  import { getEmbedder, isEmbedderReady } from '../core/embeddings.js';
14
14
  import { RetrievalStatsStore } from '../core/retrieval_stats.js';
15
+ import { TokenLedger } from '../core/ledger.js';
16
+ import { countTokens } from '../core/tokens.js';
15
17
  export const PrePromptPayloadSchema = z
16
18
  .object({
17
19
  prompt: z.string().optional(),
@@ -31,6 +33,15 @@ function clampContext(text, limit = MAX_INJECTED_CHARS) {
31
33
  return text;
32
34
  return `${text.slice(0, limit)}\n… [truncated]`;
33
35
  }
36
+ function formatAge(ms) {
37
+ const min = Math.max(1, Math.round(ms / 60_000));
38
+ if (min < 60)
39
+ return `${min} min`;
40
+ const h = Math.round(min / 60);
41
+ if (h < 48)
42
+ return `${h} h`;
43
+ return `${Math.round(h / 24)} days`;
44
+ }
34
45
  function embedderWithTimeout(p, label) {
35
46
  const EMBEDDER_TIMEOUT_MS = 2000;
36
47
  return Promise.race([
@@ -325,7 +336,8 @@ export async function runPrePrompt(payload, opts = {}) {
325
336
  const header = matchKind === 'fuzzy' && similarity !== undefined
326
337
  ? `[somtum-cache: fuzzy match sim=${similarity.toFixed(3)}]`
327
338
  : `[somtum-cache]`;
328
- const context = clampContext(`${header} A previous response addressed a matching prompt:\n---\n${cacheHit.response}\n---\nUse it if still applicable; otherwise answer fresh.`);
339
+ const context = clampContext(`${header} A response from ${formatAge(Date.now() - cacheHit.created_at)} ago to a matching prompt — verify it still applies before reusing it:\n---\n${cacheHit.response}\n---`);
340
+ new TokenLedger(db).record(projectId, 'injection', countTokens(context), parsed.session_id ?? null);
329
341
  const out = {
330
342
  ok: true,
331
343
  hit: true,
@@ -370,6 +382,7 @@ export async function runPrePrompt(payload, opts = {}) {
370
382
  const budget = `[somtum] injected ${memResult.injectedCount}/${memResult.totalCount} memories (~${approxTokens} tokens) | ${gating}`;
371
383
  additionalContext = `${budget}\n${combined}`;
372
384
  }
385
+ new TokenLedger(db).record(projectId, 'injection', countTokens(additionalContext), sessionId ?? null);
373
386
  return {
374
387
  ok: true,
375
388
  hit: false,
@@ -1 +1 @@
1
- {"version":3,"file":"pre_prompt.js","sourceRoot":"","sources":["../../src/hooks/pre_prompt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pre_prompt.js","sourceRoot":"","sources":["../../src/hooks/pre_prompt.ts"],"names":[],"mappings":"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"}
@@ -6,33 +6,46 @@ export declare const PreReadPayloadSchema: z.ZodObject<{
6
6
  tool_input: z.ZodOptional<z.ZodObject<{
7
7
  file_path: z.ZodOptional<z.ZodString>;
8
8
  notebook_path: z.ZodOptional<z.ZodString>;
9
+ offset: z.ZodOptional<z.ZodNumber>;
10
+ limit: z.ZodOptional<z.ZodNumber>;
9
11
  }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
10
12
  file_path: z.ZodOptional<z.ZodString>;
11
13
  notebook_path: z.ZodOptional<z.ZodString>;
14
+ offset: z.ZodOptional<z.ZodNumber>;
15
+ limit: z.ZodOptional<z.ZodNumber>;
12
16
  }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
13
17
  file_path: z.ZodOptional<z.ZodString>;
14
18
  notebook_path: z.ZodOptional<z.ZodString>;
19
+ offset: z.ZodOptional<z.ZodNumber>;
20
+ limit: z.ZodOptional<z.ZodNumber>;
15
21
  }, z.ZodTypeAny, "passthrough">>>;
16
22
  cwd: z.ZodOptional<z.ZodString>;
17
23
  project_id: z.ZodOptional<z.ZodString>;
24
+ session_id: z.ZodOptional<z.ZodString>;
18
25
  hook_event_name: z.ZodOptional<z.ZodString>;
19
26
  }, "strip", z.ZodTypeAny, {
20
27
  project_id?: string | undefined;
28
+ session_id?: string | undefined;
21
29
  cwd?: string | undefined;
22
30
  hook_event_name?: string | undefined;
23
31
  tool_name?: string | undefined;
24
32
  tool_input?: z.objectOutputType<{
25
33
  file_path: z.ZodOptional<z.ZodString>;
26
34
  notebook_path: z.ZodOptional<z.ZodString>;
35
+ offset: z.ZodOptional<z.ZodNumber>;
36
+ limit: z.ZodOptional<z.ZodNumber>;
27
37
  }, z.ZodTypeAny, "passthrough"> | undefined;
28
38
  }, {
29
39
  project_id?: string | undefined;
40
+ session_id?: string | undefined;
30
41
  cwd?: string | undefined;
31
42
  hook_event_name?: string | undefined;
32
43
  tool_name?: string | undefined;
33
44
  tool_input?: z.objectInputType<{
34
45
  file_path: z.ZodOptional<z.ZodString>;
35
46
  notebook_path: z.ZodOptional<z.ZodString>;
47
+ offset: z.ZodOptional<z.ZodNumber>;
48
+ limit: z.ZodOptional<z.ZodNumber>;
36
49
  }, z.ZodTypeAny, "passthrough"> | undefined;
37
50
  }>;
38
51
  export type PreReadPayload = z.infer<typeof PreReadPayloadSchema>;
@@ -46,10 +59,11 @@ export interface PreReadOptions {
46
59
  export interface PreReadOutput {
47
60
  ok: boolean;
48
61
  gated: boolean;
49
- reason?: 'gating-disabled' | 'wrong-tool' | 'no-path' | 'file-missing' | 'excluded' | 'below-threshold' | 'no-summary' | 'stale-summary';
62
+ reason?: 'gating-disabled' | 'wrong-tool' | 'no-path' | 'targeted-read' | 'no-session' | 'file-missing' | 'excluded' | 'below-threshold' | 'no-summary' | 'stale-summary' | 'reread';
50
63
  hookSpecificOutput?: {
51
64
  hookEventName: 'PreToolUse';
52
- additionalContext: string;
65
+ permissionDecision: 'deny';
66
+ permissionDecisionReason: string;
53
67
  };
54
68
  }
55
69
  export declare function runPreRead(payload: PreReadPayload, opts?: PreReadOptions): PreReadOutput;
@@ -1 +1 @@
1
- {"version":3,"file":"pre_read.d.ts","sourceRoot":"","sources":["../../src/hooks/pre_read.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAU,KAAK,EAAE,EAAE,MAAM,eAAe,CAAC;AAGhD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAIhD,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAY/B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,MAAM,WAAW,cAAc;IAC7B,EAAE,CAAC,EAAE,EAAE,CAAC;IACR,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAMD,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EACH,iBAAiB,GACjB,YAAY,GACZ,SAAS,GACT,cAAc,GACd,UAAU,GACV,iBAAiB,GACjB,YAAY,GACZ,eAAe,CAAC;IACpB,kBAAkB,CAAC,EAAE;QACnB,aAAa,EAAE,YAAY,CAAC;QAC5B,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CAAC;CACH;AAYD,wBAAgB,UAAU,CAAC,OAAO,EAAE,cAAc,EAAE,IAAI,GAAE,cAAmB,GAAG,aAAa,CAmD5F"}
1
+ {"version":3,"file":"pre_read.d.ts","sourceRoot":"","sources":["../../src/hooks/pre_read.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAU,KAAK,EAAE,EAAE,MAAM,eAAe,CAAC;AAKhD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAGhD,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAe/B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,MAAM,WAAW,cAAc;IAC7B,EAAE,CAAC,EAAE,EAAE,CAAC;IACR,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EACH,iBAAiB,GACjB,YAAY,GACZ,SAAS,GACT,eAAe,GACf,YAAY,GACZ,cAAc,GACd,UAAU,GACV,iBAAiB,GACjB,YAAY,GACZ,eAAe,GACf,QAAQ,CAAC;IACb,kBAAkB,CAAC,EAAE;QACnB,aAAa,EAAE,YAAY,CAAC;QAC5B,kBAAkB,EAAE,MAAM,CAAC;QAC3B,wBAAwB,EAAE,MAAM,CAAC;KAClC,CAAC;CACH;AAoDD,wBAAgB,UAAU,CAAC,OAAO,EAAE,cAAc,EAAE,IAAI,GAAE,cAAmB,GAAG,aAAa,CAkE5F"}
@@ -1,77 +1,132 @@
1
- import { join } from 'node:path';
1
+ import { isAbsolute, join, resolve as resolvePath } from 'node:path';
2
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
3
+ import { createHash } from 'node:crypto';
2
4
  import { z } from 'zod';
3
- import { loadConfig, projectDir } from '../config.js';
5
+ import { loadConfig, projectDir, GLOBAL_DIR } from '../config.js';
4
6
  import { openDb } from '../core/db.js';
5
7
  import { resolveProjectId } from '../core/project_id.js';
6
8
  import { FileFingerprintStore, statFile, matchesAnyGlob } from '../core/file_summary.js';
7
- // Claude Code's PreToolUse payload. We only care about file_path-bearing
8
- // tools (Read, Edit). Anything else passes through.
9
+ import { TokenLedger } from '../core/ledger.js';
10
+ import { countTokens } from '../core/tokens.js';
11
+ // Claude Code's PreToolUse payload. Only whole-file Reads are gated.
9
12
  export const PreReadPayloadSchema = z.object({
10
13
  tool_name: z.string().optional(),
11
14
  tool_input: z
12
15
  .object({
13
16
  file_path: z.string().optional(),
14
17
  notebook_path: z.string().optional(),
18
+ offset: z.number().optional(),
19
+ limit: z.number().optional(),
15
20
  })
16
21
  .passthrough()
17
22
  .optional(),
18
23
  cwd: z.string().optional(),
19
24
  project_id: z.string().optional(),
25
+ session_id: z.string().optional(),
20
26
  hook_event_name: z.string().optional(),
21
27
  });
22
- const GATEABLE_TOOLS = new Set(['Read', 'Edit']);
23
- function buildContextMessage(path, summary, tokens) {
24
- return `[somtum-cache] Cached summary of ${path} (~${tokens} tokens in full):
28
+ function gateStatePath(projectId) {
29
+ const prefix = createHash('sha1').update(projectId).digest('hex').slice(0, 12);
30
+ return join(GLOBAL_DIR, 'session', `gate_${prefix}.json`);
31
+ }
32
+ function readGateState(projectId, sessionId) {
33
+ try {
34
+ const p = gateStatePath(projectId);
35
+ if (existsSync(p)) {
36
+ const s = JSON.parse(readFileSync(p, 'utf8'));
37
+ if (s.session_id === sessionId)
38
+ return s;
39
+ }
40
+ }
41
+ catch {
42
+ /* fall through to a fresh state */
43
+ }
44
+ return { session_id: sessionId, offered: [], reread: [] };
45
+ }
46
+ function writeGateState(projectId, state) {
47
+ try {
48
+ mkdirSync(join(GLOBAL_DIR, 'session'), { recursive: true });
49
+ writeFileSync(gateStatePath(projectId), JSON.stringify(state), 'utf8');
50
+ }
51
+ catch {
52
+ // Non-fatal; worst case the next Read is offered a summary again.
53
+ }
54
+ }
55
+ function buildDenyReason(path, summary, tokens) {
56
+ return `[somtum] Summary of ${path} (~${tokens} tokens in full, unchanged since it was summarized):
25
57
  ---
26
58
  ${summary}
27
59
  ---
28
- This summary is fresh as of the current file content. Use it if it answers the question; otherwise still proceed with the Read.`;
60
+ The full read was skipped to save tokens. If you need the exact contents (to edit the file, or for line-level detail), call Read on this file again and it will go through.`;
29
61
  }
62
+ const pass = (reason) => ({
63
+ ok: true,
64
+ gated: false,
65
+ reason,
66
+ });
30
67
  export function runPreRead(payload, opts = {}) {
31
68
  const parsed = PreReadPayloadSchema.parse(payload);
32
69
  const cwd = opts.cwd ?? parsed.cwd ?? process.cwd();
33
70
  const config = opts.config ?? loadConfig({ cwd });
34
71
  if (!config.file_gating.enabled)
35
- return { ok: true, gated: false, reason: 'gating-disabled' };
36
- if (!parsed.tool_name || !GATEABLE_TOOLS.has(parsed.tool_name)) {
37
- return { ok: true, gated: false, reason: 'wrong-tool' };
38
- }
72
+ return pass('gating-disabled');
73
+ if (parsed.tool_name !== 'Read')
74
+ return pass('wrong-tool');
39
75
  const path = parsed.tool_input?.file_path;
40
76
  if (!path)
41
- return { ok: true, gated: false, reason: 'no-path' };
42
- if (matchesAnyGlob(path, config.file_gating.exclude_globs)) {
43
- return { ok: true, gated: false, reason: 'excluded' };
77
+ return pass('no-path');
78
+ if (parsed.tool_input?.offset !== undefined || parsed.tool_input?.limit !== undefined) {
79
+ return pass('targeted-read');
44
80
  }
81
+ // Without a session id there is no way to let a second Read through.
82
+ const sessionId = parsed.session_id;
83
+ if (!sessionId)
84
+ return pass('no-session');
85
+ if (matchesAnyGlob(path, config.file_gating.exclude_globs))
86
+ return pass('excluded');
45
87
  let stat;
46
88
  try {
47
89
  stat = statFile(path, { cwd });
48
90
  }
49
91
  catch {
50
- return { ok: true, gated: false, reason: 'file-missing' };
92
+ return pass('file-missing');
51
93
  }
52
94
  if (!stat)
53
- return { ok: true, gated: false, reason: 'file-missing' };
54
- if (stat.tokens < config.file_gating.min_file_size_tokens) {
55
- return { ok: true, gated: false, reason: 'below-threshold' };
56
- }
95
+ return pass('file-missing');
96
+ if (stat.tokens < config.file_gating.min_file_size_tokens)
97
+ return pass('below-threshold');
57
98
  const projectId = opts.projectId ?? parsed.project_id ?? resolveProjectId(cwd);
58
99
  const ownsDb = opts.db === undefined;
59
100
  const dbPath = opts.dbPath ?? join(projectDir(projectId), 'db.sqlite');
60
101
  const db = opts.db ?? openDb({ path: dbPath });
61
102
  try {
62
- const store = new FileFingerprintStore(db);
63
- const fp = store.get(projectId, path);
103
+ const fp = new FileFingerprintStore(db).get(projectId, path);
64
104
  if (!fp || !fp.summary)
65
- return { ok: true, gated: false, reason: 'no-summary' };
66
- if (fp.content_hash !== stat.contentHash) {
67
- return { ok: true, gated: false, reason: 'stale-summary' };
105
+ return pass('no-summary');
106
+ if (fp.content_hash !== stat.contentHash)
107
+ return pass('stale-summary');
108
+ const ledger = new TokenLedger(db);
109
+ const key = isAbsolute(path) ? path : resolvePath(cwd, path);
110
+ const state = readGateState(projectId, sessionId);
111
+ if (state.offered.includes(key)) {
112
+ if (!state.reread.includes(key)) {
113
+ state.reread.push(key);
114
+ writeGateState(projectId, state);
115
+ ledger.record(projectId, 'file_gate_reread', stat.tokens, sessionId);
116
+ }
117
+ return pass('reread');
68
118
  }
119
+ state.offered.push(key);
120
+ writeGateState(projectId, state);
121
+ ledger.record(projectId, 'file_gate_denied', stat.tokens, sessionId);
122
+ ledger.record(projectId, 'file_gate_summary', countTokens(fp.summary), sessionId);
69
123
  return {
70
124
  ok: true,
71
125
  gated: true,
72
126
  hookSpecificOutput: {
73
127
  hookEventName: 'PreToolUse',
74
- additionalContext: buildContextMessage(path, fp.summary, stat.tokens),
128
+ permissionDecision: 'deny',
129
+ permissionDecisionReason: buildDenyReason(path, fp.summary, stat.tokens),
75
130
  },
76
131
  };
77
132
  }