@ashlr/hub 3.8.0 → 3.9.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 (147) hide show
  1. package/CHANGELOG.md +201 -0
  2. package/dist/build-identity.json +2 -2
  3. package/dist/cli/resource-profile.js +95 -21
  4. package/dist/cli/resource-profile.js.map +1 -1
  5. package/dist/core/resources/native-profile.d.ts +56 -0
  6. package/dist/core/resources/native-profile.js +368 -6
  7. package/dist/core/resources/native-profile.js.map +1 -1
  8. package/dist/core/run/model-catalog.js +8 -1
  9. package/dist/core/run/model-catalog.js.map +1 -1
  10. package/dist/core/universe/builtins/preparation/manifest.json +1 -1
  11. package/dist/core/universe/builtins/preparation/preparation-bridge.mjs +9 -2
  12. package/dist/core/universe/builtins/preparation/preparation-verification-fixtures.mjs +8 -1
  13. package/dist/core/verse/adapters/claude.d.ts +49 -2
  14. package/dist/core/verse/adapters/claude.js +317 -56
  15. package/dist/core/verse/adapters/claude.js.map +1 -1
  16. package/dist/core/verse/adapters/codex.d.ts +81 -5
  17. package/dist/core/verse/adapters/codex.js +409 -47
  18. package/dist/core/verse/adapters/codex.js.map +1 -1
  19. package/dist/core/verse/adapters/grok.d.ts +13 -1
  20. package/dist/core/verse/adapters/grok.js +28 -2
  21. package/dist/core/verse/adapters/grok.js.map +1 -1
  22. package/dist/core/verse/adapters/index.d.ts +32 -0
  23. package/dist/core/verse/adapters/index.js +2 -0
  24. package/dist/core/verse/adapters/index.js.map +1 -1
  25. package/dist/core/verse/codex-rollout.d.ts +284 -0
  26. package/dist/core/verse/codex-rollout.js +786 -0
  27. package/dist/core/verse/codex-rollout.js.map +1 -0
  28. package/dist/core/verse/context-fit.d.ts +63 -0
  29. package/dist/core/verse/context-fit.js +355 -0
  30. package/dist/core/verse/context-fit.js.map +1 -0
  31. package/dist/core/verse/context-math.d.ts +215 -0
  32. package/dist/core/verse/context-math.js +365 -0
  33. package/dist/core/verse/context-math.js.map +1 -0
  34. package/dist/core/verse/local-models.d.ts +137 -1
  35. package/dist/core/verse/local-models.js +209 -5
  36. package/dist/core/verse/local-models.js.map +1 -1
  37. package/dist/core/verse/model-windows.d.ts +217 -0
  38. package/dist/core/verse/model-windows.js +616 -0
  39. package/dist/core/verse/model-windows.js.map +1 -0
  40. package/dist/core/verse/preferences.d.ts +123 -0
  41. package/dist/core/verse/preferences.js +403 -0
  42. package/dist/core/verse/preferences.js.map +1 -0
  43. package/dist/core/verse/project-memory.d.ts +112 -0
  44. package/dist/core/verse/project-memory.js +295 -0
  45. package/dist/core/verse/project-memory.js.map +1 -0
  46. package/dist/core/verse/seats.d.ts +106 -4
  47. package/dist/core/verse/seats.js +291 -89
  48. package/dist/core/verse/seats.js.map +1 -1
  49. package/dist/core/verse/session-engine.d.ts +76 -2
  50. package/dist/core/verse/session-engine.js +684 -63
  51. package/dist/core/verse/session-engine.js.map +1 -1
  52. package/dist/core/verse/session-handoff.d.ts +94 -0
  53. package/dist/core/verse/session-handoff.js +551 -0
  54. package/dist/core/verse/session-handoff.js.map +1 -0
  55. package/dist/core/verse/session-search.d.ts +63 -0
  56. package/dist/core/verse/session-search.js +213 -0
  57. package/dist/core/verse/session-search.js.map +1 -0
  58. package/dist/core/verse/session-store.d.ts +16 -2
  59. package/dist/core/verse/session-store.js +80 -6
  60. package/dist/core/verse/session-store.js.map +1 -1
  61. package/dist/core/verse/types.d.ts +333 -1
  62. package/dist/core/verse/types.js +54 -2
  63. package/dist/core/verse/types.js.map +1 -1
  64. package/dist/core/verse/verse-api.d.ts +40 -5
  65. package/dist/core/verse/verse-api.js +724 -25
  66. package/dist/core/verse/verse-api.js.map +1 -1
  67. package/dist/core/web/api.d.ts +14 -4
  68. package/dist/core/web/api.js +26 -11
  69. package/dist/core/web/api.js.map +1 -1
  70. package/dist/core/web/public/next/assets/{App-BsbJFA2j.js → App-XURmiAAp.js} +5 -5
  71. package/dist/core/web/public/next/assets/{App-BsbJFA2j.js.map → App-XURmiAAp.js.map} +1 -1
  72. package/dist/core/web/public/next/assets/{ApprovalsSection-2CCSoBTJ.js → ApprovalsSection-BriUzoZc.js} +2 -2
  73. package/dist/core/web/public/next/assets/{ApprovalsSection-2CCSoBTJ.js.map → ApprovalsSection-BriUzoZc.js.map} +1 -1
  74. package/dist/core/web/public/next/assets/AutonomySection-C4GBsQVc.js +2 -0
  75. package/dist/core/web/public/next/assets/{AutonomySection-yeNNUPur.js.map → AutonomySection-C4GBsQVc.js.map} +1 -1
  76. package/dist/core/web/public/next/assets/ChatSection-BpOBOUvg.css +1 -0
  77. package/dist/core/web/public/next/assets/ChatSection-hlgPBRco.js +84 -0
  78. package/dist/core/web/public/next/assets/ChatSection-hlgPBRco.js.map +1 -0
  79. package/dist/core/web/public/next/assets/ConfirmDialog-BdQYI-Ng.js +2 -0
  80. package/dist/core/web/public/next/assets/ConfirmDialog-BdQYI-Ng.js.map +1 -0
  81. package/dist/core/web/public/next/assets/{Dialog-nK15L1M0.js → Dialog-BxdIfmFH.js} +2 -2
  82. package/dist/core/web/public/next/assets/{Dialog-nK15L1M0.js.map → Dialog-BxdIfmFH.js.map} +1 -1
  83. package/dist/core/web/public/next/assets/{DiffViewer-D369eZe8.js → DiffViewer-DmeRWuc4.js} +2 -2
  84. package/dist/core/web/public/next/assets/{DiffViewer-D369eZe8.js.map → DiffViewer-DmeRWuc4.js.map} +1 -1
  85. package/dist/core/web/public/next/assets/{McpSection-DVgiSYG1.js → McpSection-q34T7Tho.js} +2 -2
  86. package/dist/core/web/public/next/assets/{McpSection-DVgiSYG1.js.map → McpSection-q34T7Tho.js.map} +1 -1
  87. package/dist/core/web/public/next/assets/{MutationTokenDialog-B9I4PAcp.js → MutationTokenDialog-CFAkwOEt.js} +2 -2
  88. package/dist/core/web/public/next/assets/{MutationTokenDialog-B9I4PAcp.js.map → MutationTokenDialog-CFAkwOEt.js.map} +1 -1
  89. package/dist/core/web/public/next/assets/{ResourcePoolConsoleApp-z6tJj3s9.js → ResourcePoolConsoleApp-DHc8GFOY.js} +4 -4
  90. package/dist/core/web/public/next/assets/{ResourcePoolConsoleApp-z6tJj3s9.js.map → ResourcePoolConsoleApp-DHc8GFOY.js.map} +1 -1
  91. package/dist/core/web/public/next/assets/{RouteErrorBoundary-OSajL45F.js → RouteErrorBoundary-ZL9F4qUn.js} +2 -2
  92. package/dist/core/web/public/next/assets/{RouteErrorBoundary-OSajL45F.js.map → RouteErrorBoundary-ZL9F4qUn.js.map} +1 -1
  93. package/dist/core/web/public/next/assets/{Meter-CLcr-4wS.css → Segmented-8cf0Fypn.css} +1 -1
  94. package/dist/core/web/public/next/assets/{Meter-Cmo1pLbk.js → Segmented-DbRjVye3.js} +2 -2
  95. package/dist/core/web/public/next/assets/Segmented-DbRjVye3.js.map +1 -0
  96. package/dist/core/web/public/next/assets/SettingsSection-nJGGGYqv.js +2 -0
  97. package/dist/core/web/public/next/assets/{SettingsSection-B3YH2Npi.js.map → SettingsSection-nJGGGYqv.js.map} +1 -1
  98. package/dist/core/web/public/next/assets/UniverseConsoleApp-6GJydgo4.js +2 -0
  99. package/dist/core/web/public/next/assets/{UniverseConsoleApp-wEKIzl1M.js.map → UniverseConsoleApp-6GJydgo4.js.map} +1 -1
  100. package/dist/core/web/public/next/assets/{UniverseView-CQVpJqqI.js → UniverseView-DLDtNYL8.js} +2 -2
  101. package/dist/core/web/public/next/assets/{UniverseView-CQVpJqqI.js.map → UniverseView-DLDtNYL8.js.map} +1 -1
  102. package/dist/core/web/public/next/assets/UsageSection-Cf9d9iFH.js +2 -0
  103. package/dist/core/web/public/next/assets/UsageSection-Cf9d9iFH.js.map +1 -0
  104. package/dist/core/web/public/next/assets/VerseConsoleApp-DsdKQoTH.css +1 -0
  105. package/dist/core/web/public/next/assets/VerseConsoleApp-y0uOHixd.js +3 -0
  106. package/dist/core/web/public/next/assets/VerseConsoleApp-y0uOHixd.js.map +1 -0
  107. package/dist/core/web/public/next/assets/{charts-BopViIha.js → charts-CVooqJWN.js} +2 -2
  108. package/dist/core/web/public/next/assets/{charts-BopViIha.js.map → charts-CVooqJWN.js.map} +1 -1
  109. package/dist/core/web/public/next/assets/context-model-Bqv8DVuH.js +2 -0
  110. package/dist/core/web/public/next/assets/context-model-Bqv8DVuH.js.map +1 -0
  111. package/dist/core/web/public/next/assets/global-eaY9GyX3.js +2 -0
  112. package/dist/core/web/public/next/assets/global-eaY9GyX3.js.map +1 -0
  113. package/dist/core/web/public/next/assets/{icons-L06pQH6j.js → icons-vex8rclC.js} +2 -2
  114. package/dist/core/web/public/next/assets/{icons-L06pQH6j.js.map → icons-vex8rclC.js.map} +1 -1
  115. package/dist/core/web/public/next/assets/{index-CXgVQHek.js → index-D2Eik-zt.js} +3 -3
  116. package/dist/core/web/public/next/assets/{index-CXgVQHek.js.map → index-D2Eik-zt.js.map} +1 -1
  117. package/dist/core/web/public/next/assets/{queries-D3sSlan1.js → queries-bAYU0VNy.js} +2 -2
  118. package/dist/core/web/public/next/assets/{queries-D3sSlan1.js.map → queries-bAYU0VNy.js.map} +1 -1
  119. package/dist/core/web/public/next/assets/use-guarded-action-C7QrP7Yp.js +2 -0
  120. package/dist/core/web/public/next/assets/{use-guarded-action-BxfJ9E-n.js.map → use-guarded-action-C7QrP7Yp.js.map} +1 -1
  121. package/dist/core/web/public/next/assets/verse-model-TfDk9cky.js +2 -0
  122. package/dist/core/web/public/next/assets/verse-model-TfDk9cky.js.map +1 -0
  123. package/dist/core/web/public/next/assets/{workspace-model-v0a1gl-C.js → workspace-model-CHol5RVp.js} +2 -2
  124. package/dist/core/web/public/next/assets/{workspace-model-v0a1gl-C.js.map → workspace-model-CHol5RVp.js.map} +1 -1
  125. package/dist/core/web/public/next/index.html +1 -1
  126. package/dist/release-dependency-inventory.json +1 -1
  127. package/docs/README.md +1 -0
  128. package/package.json +1 -1
  129. package/dist/core/web/public/next/assets/AutonomySection-yeNNUPur.js +0 -2
  130. package/dist/core/web/public/next/assets/ChatSection-BfnLe5dT.css +0 -1
  131. package/dist/core/web/public/next/assets/ChatSection-DwDDnCZQ.js +0 -80
  132. package/dist/core/web/public/next/assets/ChatSection-DwDDnCZQ.js.map +0 -1
  133. package/dist/core/web/public/next/assets/ConfirmDialog-C363ty_c.js +0 -2
  134. package/dist/core/web/public/next/assets/ConfirmDialog-C363ty_c.js.map +0 -1
  135. package/dist/core/web/public/next/assets/Meter-Cmo1pLbk.js.map +0 -1
  136. package/dist/core/web/public/next/assets/SettingsSection-B3YH2Npi.js +0 -2
  137. package/dist/core/web/public/next/assets/UniverseConsoleApp-wEKIzl1M.js +0 -2
  138. package/dist/core/web/public/next/assets/UsageSection-dToBThXe.js +0 -2
  139. package/dist/core/web/public/next/assets/UsageSection-dToBThXe.js.map +0 -1
  140. package/dist/core/web/public/next/assets/VerseConsoleApp-CMkCizvL.css +0 -1
  141. package/dist/core/web/public/next/assets/VerseConsoleApp-DHU32JCQ.js +0 -3
  142. package/dist/core/web/public/next/assets/VerseConsoleApp-DHU32JCQ.js.map +0 -1
  143. package/dist/core/web/public/next/assets/global-DMWakEhP.js +0 -2
  144. package/dist/core/web/public/next/assets/global-DMWakEhP.js.map +0 -1
  145. package/dist/core/web/public/next/assets/use-guarded-action-BxfJ9E-n.js +0 -2
  146. package/dist/core/web/public/next/assets/verse-model-CvtK6vP6.js +0 -2
  147. package/dist/core/web/public/next/assets/verse-model-CvtK6vP6.js.map +0 -1
@@ -0,0 +1,213 @@
1
+ /**
2
+ * Keyword search over past Verse sessions — zero spend, no index, no model.
3
+ *
4
+ * The corpus is the durable event log the session store already keeps
5
+ * (`<id>.events.jsonl`). Only what the OPERATOR and the AGENT said is searched
6
+ * (`user-message`, `assistant-message`): tool inputs and outputs are huge,
7
+ * noisy and full of file contents that would drown every real hit, and
8
+ * `text-delta` / `thinking` duplicate or pre-empt the final message.
9
+ *
10
+ * MATCHING: every term must occur in ONE message (terms are AND-ed,
11
+ * case-insensitive; a "double-quoted phrase" is one term). A hit is a message,
12
+ * so the snippet shown is the place the operator actually remembers.
13
+ *
14
+ * SCORING (deterministic given `now`):
15
+ * term score = Σ over terms of (1 + ln(occurrences)) — repetition helps, with
16
+ * diminishing returns, so one message that says "migration" 40
17
+ * times does not bury every other
18
+ * title bonus = +1 when every term also appears in the session title
19
+ * kind weight = user messages ×1.1 (the operator's own words are what they
20
+ * search for), assistant ×1.0
21
+ * recency = × (0.35 + 0.65 · 0.5^(ageDays / 14)) — a two-week half-life
22
+ * that never drives an old exact match to zero
23
+ *
24
+ * BOUNDS — this runs synchronously on the API thread, so it is bounded twice:
25
+ * the newest ≤ VERSE_SEARCH_MAX_SESSIONS sessions (by updatedAt) and at most
26
+ * VERSE_SEARCH_MAX_SCAN_CHARS of message text in total. Either bound tripping
27
+ * sets `truncated`, so the UI can say "searched the most recent N" instead of
28
+ * implying the whole history was covered. At most VERSE_SEARCH_MAX_HITS_PER_SESSION
29
+ * hits come from one session so a single long chat cannot fill the list.
30
+ *
31
+ * Snippets are whitespace-collapsed, ≤ 240 chars, and `scrubSecrets`'d.
32
+ */
33
+ import { scrubSecrets } from '../util/scrub.js';
34
+ import { VerseServiceError } from './preferences.js';
35
+ export const VERSE_SEARCH_MAX_SESSIONS = 200;
36
+ /** ~20 MB of message text (UTF-16 code units, which is what is actually scanned). */
37
+ export const VERSE_SEARCH_MAX_SCAN_CHARS = 20 * 1024 * 1024;
38
+ export const VERSE_SEARCH_DEFAULT_LIMIT = 20;
39
+ export const VERSE_SEARCH_MAX_LIMIT = 50;
40
+ export const VERSE_SEARCH_MAX_QUERY_CHARS = 200;
41
+ export const VERSE_SEARCH_MAX_TERMS = 8;
42
+ export const VERSE_SEARCH_MAX_HITS_PER_SESSION = 3;
43
+ export const VERSE_SEARCH_SNIPPET_CHARS = 240;
44
+ /** Recency half-life. */
45
+ const HALF_LIFE_DAYS = 14;
46
+ const DAY_MS = 24 * 60 * 60 * 1000;
47
+ /**
48
+ * Split a query into lower-cased terms. `"exact phrase"` stays one term;
49
+ * everything else splits on whitespace. Duplicates collapse. Throws
50
+ * VERSE_INVALID for an empty or oversized query.
51
+ */
52
+ export function parseSearchQuery(query) {
53
+ if (typeof query !== 'string')
54
+ throw new VerseServiceError('VERSE_INVALID', 'q must be a string');
55
+ const trimmed = query.trim();
56
+ if (trimmed.length === 0)
57
+ throw new VerseServiceError('VERSE_INVALID', 'q is required');
58
+ if (trimmed.length > VERSE_SEARCH_MAX_QUERY_CHARS) {
59
+ throw new VerseServiceError('VERSE_INVALID', `q must be at most ${VERSE_SEARCH_MAX_QUERY_CHARS} characters`);
60
+ }
61
+ const terms = [];
62
+ const re = /"([^"]*)"|(\S+)/g;
63
+ let match;
64
+ while ((match = re.exec(trimmed)) !== null) {
65
+ const raw = (match[1] ?? match[2] ?? '').replace(/\s+/g, ' ').trim().toLowerCase();
66
+ // A lone quote character is punctuation, not a term.
67
+ const term = raw.replace(/^"+|"+$/g, '');
68
+ if (term.length === 0 || terms.includes(term))
69
+ continue;
70
+ terms.push(term);
71
+ }
72
+ if (terms.length === 0)
73
+ throw new VerseServiceError('VERSE_INVALID', 'q has no searchable terms');
74
+ if (terms.length > VERSE_SEARCH_MAX_TERMS) {
75
+ throw new VerseServiceError('VERSE_INVALID', `q may contain at most ${VERSE_SEARCH_MAX_TERMS} terms`);
76
+ }
77
+ return terms;
78
+ }
79
+ function clampLimit(limit) {
80
+ if (limit === undefined || !Number.isFinite(limit))
81
+ return VERSE_SEARCH_DEFAULT_LIMIT;
82
+ return Math.min(VERSE_SEARCH_MAX_LIMIT, Math.max(1, Math.floor(limit)));
83
+ }
84
+ function countOccurrences(haystack, needle) {
85
+ let count = 0;
86
+ let from = 0;
87
+ for (;;) {
88
+ const at = haystack.indexOf(needle, from);
89
+ if (at === -1)
90
+ return count;
91
+ count += 1;
92
+ from = at + needle.length;
93
+ }
94
+ }
95
+ /**
96
+ * ≤ VERSE_SEARCH_SNIPPET_CHARS of whitespace-collapsed, secret-scrubbed text
97
+ * around the first match. Scrubbed BEFORE windowing so a redaction can never
98
+ * push the snippet over its cap or leave half a token at a window edge.
99
+ */
100
+ export function buildSnippet(text, firstTerm) {
101
+ const collapsed = scrubSecrets(text.replace(/\s+/g, ' ').trim());
102
+ const max = VERSE_SEARCH_SNIPPET_CHARS;
103
+ if (collapsed.length <= max)
104
+ return collapsed;
105
+ const ellipsis = '…';
106
+ // Reserve room for an ellipsis at both ends, then place the match about a
107
+ // third of the way in: enough lead-in to read it in context.
108
+ const room = max - 2 * ellipsis.length;
109
+ const at = Math.max(0, collapsed.toLowerCase().indexOf(firstTerm));
110
+ let start = Math.max(0, at - Math.floor(room / 3));
111
+ const end = Math.min(collapsed.length, start + room);
112
+ start = Math.max(0, end - room);
113
+ return `${start > 0 ? ellipsis : ''}${collapsed.slice(start, end)}${end < collapsed.length ? ellipsis : ''}`;
114
+ }
115
+ function recencyWeight(at, nowMs) {
116
+ const t = Date.parse(at);
117
+ if (!Number.isFinite(t))
118
+ return 0.35;
119
+ const ageDays = Math.max(0, (nowMs - t) / DAY_MS);
120
+ return 0.35 + 0.65 * Math.pow(0.5, ageDays / HALF_LIFE_DAYS);
121
+ }
122
+ function sessionRecency(session) {
123
+ const t = Date.parse(session.updatedAt);
124
+ return Number.isFinite(t) ? t : 0;
125
+ }
126
+ export function searchSessions(input) {
127
+ const terms = parseSearchQuery(input.query);
128
+ const limit = clampLimit(input.limit);
129
+ const nowMs = (input.now ?? (() => new Date()))().getTime();
130
+ // Newest first; ties broken by id so the scan order is deterministic.
131
+ const ordered = [...input.sessions].sort((a, b) => sessionRecency(b) - sessionRecency(a) || (a.id < b.id ? -1 : a.id > b.id ? 1 : 0));
132
+ let truncated = ordered.length > VERSE_SEARCH_MAX_SESSIONS;
133
+ const candidates = ordered.slice(0, VERSE_SEARCH_MAX_SESSIONS);
134
+ const hits = [];
135
+ let scannedSessions = 0;
136
+ let scannedChars = 0;
137
+ for (const session of candidates) {
138
+ if (scannedChars >= VERSE_SEARCH_MAX_SCAN_CHARS) {
139
+ truncated = true;
140
+ break;
141
+ }
142
+ scannedSessions += 1;
143
+ let events;
144
+ try {
145
+ events = input.readEvents(session.id);
146
+ }
147
+ catch {
148
+ continue; // One unreadable log must not fail the whole search.
149
+ }
150
+ const titleLower = session.title.toLowerCase();
151
+ const titleBonus = terms.every((term) => titleLower.includes(term)) ? 1 : 0;
152
+ const sessionHits = [];
153
+ for (const event of events) {
154
+ if (event.type !== 'user-message' && event.type !== 'assistant-message')
155
+ continue;
156
+ const text = typeof event.text === 'string' ? event.text : '';
157
+ if (text.length === 0)
158
+ continue;
159
+ if (scannedChars >= VERSE_SEARCH_MAX_SCAN_CHARS) {
160
+ truncated = true;
161
+ break;
162
+ }
163
+ scannedChars += text.length;
164
+ const lower = text.toLowerCase();
165
+ let termScore = 0;
166
+ let all = true;
167
+ for (const term of terms) {
168
+ const n = countOccurrences(lower, term);
169
+ if (n === 0) {
170
+ all = false;
171
+ break;
172
+ }
173
+ termScore += 1 + Math.log(n);
174
+ }
175
+ if (!all)
176
+ continue;
177
+ const kind = event.type === 'user-message' ? 'user' : 'assistant';
178
+ const score = (termScore + titleBonus) * (kind === 'user' ? 1.1 : 1) * recencyWeight(event.at, nowMs);
179
+ sessionHits.push({
180
+ sessionId: session.id,
181
+ title: session.title,
182
+ projectPath: session.projectPath,
183
+ engine: session.engine,
184
+ seq: event.seq,
185
+ at: event.at,
186
+ kind,
187
+ snippet: buildSnippet(text, terms[0]),
188
+ score: Math.round(score * 1000) / 1000,
189
+ });
190
+ }
191
+ sessionHits.sort(compareHits);
192
+ hits.push(...sessionHits.slice(0, VERSE_SEARCH_MAX_HITS_PER_SESSION));
193
+ }
194
+ hits.sort(compareHits);
195
+ return {
196
+ query: input.query.trim(),
197
+ hits: hits.slice(0, limit),
198
+ scannedSessions,
199
+ truncated,
200
+ };
201
+ }
202
+ /** Best first; then newest; then a stable order so equal scores never shuffle. */
203
+ function compareHits(a, b) {
204
+ if (b.score !== a.score)
205
+ return b.score - a.score;
206
+ const at = Date.parse(b.at) - Date.parse(a.at);
207
+ if (Number.isFinite(at) && at !== 0)
208
+ return at;
209
+ if (a.sessionId !== b.sessionId)
210
+ return a.sessionId < b.sessionId ? -1 : 1;
211
+ return b.seq - a.seq;
212
+ }
213
+ //# sourceMappingURL=session-search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-search.js","sourceRoot":"","sources":["../../../src/core/verse/session-search.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAGrD,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAG,CAAC;AAC7C,qFAAqF;AACrF,MAAM,CAAC,MAAM,2BAA2B,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAC5D,MAAM,CAAC,MAAM,0BAA0B,GAAG,EAAE,CAAC;AAC7C,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,CAAC;AACzC,MAAM,CAAC,MAAM,4BAA4B,GAAG,GAAG,CAAC;AAChD,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC;AACxC,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAAC,CAAC;AACnD,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAG,CAAC;AAC9C,yBAAyB;AACzB,MAAM,cAAc,GAAG,EAAE,CAAC;AAC1B,MAAM,MAAM,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAWnC;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,MAAM,IAAI,iBAAiB,CAAC,eAAe,EAAE,oBAAoB,CAAC,CAAC;IAClG,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,iBAAiB,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;IACxF,IAAI,OAAO,CAAC,MAAM,GAAG,4BAA4B,EAAE,CAAC;QAClD,MAAM,IAAI,iBAAiB,CAAC,eAAe,EAAE,qBAAqB,4BAA4B,aAAa,CAAC,CAAC;IAC/G,CAAC;IACD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,EAAE,GAAG,kBAAkB,CAAC;IAC9B,IAAI,KAA6B,CAAC;IAClC,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC3C,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACnF,qDAAqD;QACrD,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QACzC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,SAAS;QACxD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,iBAAiB,CAAC,eAAe,EAAE,2BAA2B,CAAC,CAAC;IAClG,IAAI,KAAK,CAAC,MAAM,GAAG,sBAAsB,EAAE,CAAC;QAC1C,MAAM,IAAI,iBAAiB,CAAC,eAAe,EAAE,yBAAyB,sBAAsB,QAAQ,CAAC,CAAC;IACxG,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,UAAU,CAAC,KAAyB;IAC3C,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,0BAA0B,CAAC;IACtF,OAAO,IAAI,CAAC,GAAG,CAAC,sBAAsB,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED,SAAS,gBAAgB,CAAC,QAAgB,EAAE,MAAc;IACxD,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,SAAS,CAAC;QACR,MAAM,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC1C,IAAI,EAAE,KAAK,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QAC5B,KAAK,IAAI,CAAC,CAAC;QACX,IAAI,GAAG,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC;IAC5B,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,SAAiB;IAC1D,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACjE,MAAM,GAAG,GAAG,0BAA0B,CAAC;IACvC,IAAI,SAAS,CAAC,MAAM,IAAI,GAAG;QAAE,OAAO,SAAS,CAAC;IAC9C,MAAM,QAAQ,GAAG,GAAG,CAAC;IACrB,0EAA0E;IAC1E,6DAA6D;IAC7D,MAAM,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC;IACvC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IACnE,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;IACnD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,GAAG,IAAI,CAAC,CAAC;IACrD,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,CAAC;IAChC,OAAO,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAC/G,CAAC;AAED,SAAS,aAAa,CAAC,EAAU,EAAE,KAAa;IAC9C,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACzB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACrC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;IAClD,OAAO,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,GAAG,cAAc,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,cAAc,CAAC,OAAqB;IAC3C,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACxC,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAuB;IACpD,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;IAE5D,sEAAsE;IACtE,MAAM,OAAO,GAAG,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CACtC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAC5F,CAAC;IACF,IAAI,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,yBAAyB,CAAC;IAC3D,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,yBAAyB,CAAC,CAAC;IAE/D,MAAM,IAAI,GAAqB,EAAE,CAAC;IAClC,IAAI,eAAe,GAAG,CAAC,CAAC;IACxB,IAAI,YAAY,GAAG,CAAC,CAAC;IAErB,KAAK,MAAM,OAAO,IAAI,UAAU,EAAE,CAAC;QACjC,IAAI,YAAY,IAAI,2BAA2B,EAAE,CAAC;YAChD,SAAS,GAAG,IAAI,CAAC;YACjB,MAAM;QACR,CAAC;QACD,eAAe,IAAI,CAAC,CAAC;QACrB,IAAI,MAAoB,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACxC,CAAC;QAAC,MAAM,CAAC;YACP,SAAS,CAAC,qDAAqD;QACjE,CAAC;QACD,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QAC/C,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5E,MAAM,WAAW,GAAqB,EAAE,CAAC;QAEzC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAmB;gBAAE,SAAS;YAClF,MAAM,IAAI,GAAG,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9D,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAS;YAChC,IAAI,YAAY,IAAI,2BAA2B,EAAE,CAAC;gBAChD,SAAS,GAAG,IAAI,CAAC;gBACjB,MAAM;YACR,CAAC;YACD,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC;YAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YACjC,IAAI,SAAS,GAAG,CAAC,CAAC;YAClB,IAAI,GAAG,GAAG,IAAI,CAAC;YACf,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,CAAC,GAAG,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;gBACxC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;oBAAC,GAAG,GAAG,KAAK,CAAC;oBAAC,MAAM;gBAAC,CAAC;gBACpC,SAAS,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC/B,CAAC;YACD,IAAI,CAAC,GAAG;gBAAE,SAAS;YACnB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC;YAClE,MAAM,KAAK,GAAG,CAAC,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YACtG,WAAW,CAAC,IAAI,CAAC;gBACf,SAAS,EAAE,OAAO,CAAC,EAAE;gBACrB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,GAAG,EAAE,KAAK,CAAC,GAAG;gBACd,EAAE,EAAE,KAAK,CAAC,EAAE;gBACZ,IAAI;gBACJ,OAAO,EAAE,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;gBACrC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,IAAI;aACvC,CAAC,CAAC;QACL,CAAC;QAED,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,iCAAiC,CAAC,CAAC,CAAC;IACxE,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACvB,OAAO;QACL,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE;QACzB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC;QAC1B,eAAe;QACf,SAAS;KACV,CAAC;AACJ,CAAC;AAED,kFAAkF;AAClF,SAAS,WAAW,CAAC,CAAiB,EAAE,CAAiB;IACvD,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK;QAAE,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;IAClD,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC/C,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAC/C,IAAI,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,SAAS;QAAE,OAAO,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3E,OAAO,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC;AACvB,CAAC"}
@@ -15,7 +15,20 @@
15
15
  * macOS ACL assurance shells out on every call — too heavy for a store that
16
16
  * is written on every turn of a live chat.
17
17
  */
18
- import { type VerseEvent, type VerseSession } from './types.js';
18
+ import { type VerseEvent, type VerseSession, type VerseWindowSource } from './types.js';
19
+ /**
20
+ * An event before `seq`/`at` are stamped. Distributive, so each member of the
21
+ * union keeps its own fields (plain `Omit` on a union collapses it to the
22
+ * common keys and rejects `{ type: 'user-message', text }`).
23
+ */
24
+ type Unstamped<T> = T extends unknown ? Omit<T, 'seq' | 'at'> : never;
25
+ export type VerseUnstampedEvent = Unstamped<VerseEvent>;
26
+ /**
27
+ * The one list of window sources a record may carry. Exported so a writer can
28
+ * refuse an unknown source BEFORE saving it: a record with one fails `isSession`
29
+ * on the next read and would silently vanish from the store.
30
+ */
31
+ export declare function isVerseWindowSource(value: unknown): value is VerseWindowSource;
19
32
  export declare function isValidSessionId(id: string): boolean;
20
33
  export interface VerseSessionStore {
21
34
  readonly root: string;
@@ -27,7 +40,7 @@ export interface VerseSessionStore {
27
40
  /** Atomic write of the session record; updates the index. */
28
41
  save(session: VerseSession): void;
29
42
  /** Stamp seq/at and append one event line. Returns the stored event. */
30
- appendEvent(id: string, event: Omit<VerseEvent, 'seq' | 'at'>, at: string): VerseEvent;
43
+ appendEvent(id: string, event: VerseUnstampedEvent, at: string): VerseEvent;
31
44
  /** Events with `seq > fromSeq`, capped to the newest VERSE_MAX_EVENTS_PER_SESSION. */
32
45
  readEvents(id: string, fromSeq?: number): VerseEvent[];
33
46
  /** Highest seq appended so far (0 when none). */
@@ -39,3 +52,4 @@ export interface VerseSessionStore {
39
52
  remove(id: string): void;
40
53
  }
41
54
  export declare function createVerseSessionStore(root: string): VerseSessionStore;
55
+ export {};
@@ -18,13 +18,25 @@
18
18
  import { appendFileSync, closeSync, constants as fsConstants, existsSync, fchmodSync, fsyncSync, mkdirSync, openSync, readdirSync, readFileSync, renameSync, rmSync, statSync, writeSync, } from 'node:fs';
19
19
  import { randomBytes } from 'node:crypto';
20
20
  import { join } from 'node:path';
21
- import { VERSE_MAX_EVENTS_PER_SESSION, } from './types.js';
21
+ import { VERSE_CONTEXT_MODES, VERSE_MAX_EVENTS_PER_SESSION, } from './types.js';
22
22
  const SESSION_ID_RE = /^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$/;
23
23
  const SESSION_SUFFIX = '.json';
24
24
  const EVENTS_SUFFIX = '.events.jsonl';
25
25
  const LAUNCH_SUFFIX = '.launch.json';
26
26
  const VERSE_STATUSES = new Set(['idle', 'running', 'error']);
27
27
  const VERSE_ENGINES = new Set(['claude', 'codex', 'grok', 'local']);
28
+ const VERSE_CONTEXT_MODE_SET = new Set(VERSE_CONTEXT_MODES);
29
+ /** Mirrors `VerseWindowSource` in types.ts — the store is the gate that keeps a hand-edited record honest. */
30
+ const VERSE_WINDOW_SOURCES = new Set(['runtime', 'provider-catalog', 'cli-catalog', 'documented', 'fallback']);
31
+ /**
32
+ * The one list of window sources a record may carry. Exported so a writer can
33
+ * refuse an unknown source BEFORE saving it: a record with one fails `isSession`
34
+ * on the next read and would silently vanish from the store.
35
+ */
36
+ export function isVerseWindowSource(value) {
37
+ return typeof value === 'string' && VERSE_WINDOW_SOURCES.has(value);
38
+ }
39
+ const VERSE_COMPACTION_TRIGGERS = new Set(['auto', 'manual']);
28
40
  export function isValidSessionId(id) {
29
41
  return SESSION_ID_RE.test(id);
30
42
  }
@@ -55,6 +67,41 @@ function isOptionalStringArray(value) {
55
67
  function isStringArrayValue(value) {
56
68
  return Array.isArray(value) && value.every((item) => typeof item === 'string');
57
69
  }
70
+ function isOptionalBoolean(value) {
71
+ return value === undefined || typeof value === 'boolean';
72
+ }
73
+ function isNullableNumber(value) {
74
+ return value === null || isFiniteNumber(value);
75
+ }
76
+ function isOptionalNullableNumber(value) {
77
+ return value === undefined || isNullableNumber(value);
78
+ }
79
+ /**
80
+ * V3.9 usage fields. Each is optional (absent on every record written before
81
+ * context orchestration) but, when PRESENT, must be exactly the documented
82
+ * shape: a record claiming `contextWindowSource: 'guess'` or a string
83
+ * `autoCompactAt` is corrupt, and a corrupt record is skipped rather than
84
+ * drawn with numbers nobody can vouch for.
85
+ */
86
+ function isV39UsageValid(usage) {
87
+ const source = usage['contextWindowSource'];
88
+ return (source === undefined || (typeof source === 'string' && VERSE_WINDOW_SOURCES.has(source)))
89
+ && isOptionalNullableNumber(usage['autoCompactAt'])
90
+ && isOptionalBoolean(usage['contextTokensExact']);
91
+ }
92
+ /** V3.9 session fields — same absent-or-exact rule as the usage fields above. */
93
+ function isV39SessionValid(value) {
94
+ const mode = value['contextMode'];
95
+ const count = value['compactionCount'];
96
+ const handoff = value['handoffFrom'];
97
+ return (mode === undefined || (typeof mode === 'string' && VERSE_CONTEXT_MODE_SET.has(mode)))
98
+ && (count === undefined || (isFiniteNumber(count) && count >= 0 && Number.isInteger(count)))
99
+ && (handoff === undefined
100
+ || (isObject(handoff)
101
+ && typeof handoff['sessionId'] === 'string' && handoff['sessionId'].length > 0
102
+ && typeof handoff['title'] === 'string'))
103
+ && isOptionalBoolean(value['memoryEnabled']);
104
+ }
58
105
  function isSession(value) {
59
106
  if (!isObject(value))
60
107
  return false;
@@ -81,13 +128,40 @@ function isSession(value) {
81
128
  && isFiniteNumber(usage['cacheCreationTokens'])
82
129
  && isFiniteNumber(usage['contextTokens'])
83
130
  && (usage['contextWindow'] === null || isFiniteNumber(usage['contextWindow']))
84
- && (value['lastError'] === null || typeof value['lastError'] === 'string');
131
+ && isV39UsageValid(usage)
132
+ && (value['lastError'] === null || typeof value['lastError'] === 'string')
133
+ && isV39SessionValid(value);
85
134
  }
135
+ /**
136
+ * Event shape check. The historical types stay LENIENT (seq/at/type only):
137
+ * tightening them now would silently drop lines from logs written by every
138
+ * earlier release. The two V3.9 types are checked in full, because their
139
+ * numbers feed the meter and the compaction count directly — a malformed line
140
+ * is dropped like any other garbage line rather than drawn.
141
+ */
86
142
  function isEvent(value) {
87
- return isObject(value)
88
- && isFiniteNumber(value['seq'])
89
- && typeof value['at'] === 'string'
90
- && typeof value['type'] === 'string';
143
+ if (!isObject(value)
144
+ || !isFiniteNumber(value['seq'])
145
+ || typeof value['at'] !== 'string'
146
+ || typeof value['type'] !== 'string')
147
+ return false;
148
+ const turnId = value['turnId'];
149
+ switch (value['type']) {
150
+ case 'compaction':
151
+ return (turnId === null || typeof turnId === 'string')
152
+ && typeof value['trigger'] === 'string' && VERSE_COMPACTION_TRIGGERS.has(value['trigger'])
153
+ && isNullableNumber(value['preTokens'])
154
+ && isNullableNumber(value['postTokens'])
155
+ && isNullableNumber(value['durationMs']);
156
+ case 'context':
157
+ return (turnId === null || typeof turnId === 'string')
158
+ && isFiniteNumber(value['contextTokens']) && value['contextTokens'] >= 0
159
+ && isNullableNumber(value['contextWindow'])
160
+ && typeof value['exact'] === 'boolean'
161
+ && isOptionalNullableNumber(value['autoCompactAt']);
162
+ default:
163
+ return true;
164
+ }
91
165
  }
92
166
  function ensurePrivateDir(path) {
93
167
  mkdirSync(path, { recursive: true, mode: 0o700 });
@@ -1 +1 @@
1
- {"version":3,"file":"session-store.js","sourceRoot":"","sources":["../../../src/core/verse/session-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-store.js","sourceRoot":"","sources":["../../../src/core/verse/session-store.ts"],"names":[],"mappings":"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"}