@gotcos/glasses-server 6.36.2 → 6.36.3

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/CHANGELOG.md CHANGED
@@ -2219,6 +2219,23 @@ unsaved capture, and makes batch status stop lying about finished work.
2219
2219
 
2220
2220
  # Changelog
2221
2221
 
2222
+ ## [6.36.3] - 2026-08-17
2223
+
2224
+ ### The seeded query was being crowded out by the steps
2225
+
2226
+ Caught by probing the live stream after shipping 6.36.2, before Miles tested it: a
2227
+ real session seeded 8 events -- 6 tool calls, one prose, one status -- and **no
2228
+ prompt**. The seed took "the last 7 events of any kind", and in a busy run the
2229
+ user's question is twenty or thirty steps back, so the activity you opened the page
2230
+ to watch is exactly what pushed the query off it. The one case the feature exists
2231
+ for was the one case it failed.
2232
+
2233
+ The newest prompt in the read window is now emitted FIRST and unconditionally,
2234
+ outside the step budget. Measured on this Mac's largest transcript (87.2 MB): the
2235
+ last 256 KiB holds 133 records including 3 user turns, so the window reaches a query
2236
+ comfortably. The client pins rather than lists it, so it costs nothing in the
2237
+ scrolling window.
2238
+
2222
2239
  ## [6.36.2] - 2026-08-17
2223
2240
 
2224
2241
  ### The live view stops being a blank slate
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gotcos/glasses-server",
3
- "version": "6.36.2",
3
+ "version": "6.36.3",
4
4
  "description": "COS Glasses \u2014 self-hosted AI heads-up-display server for Even G2 smart glasses, powered by Claude Code, Codex, or Cursor Agent CLI",
5
5
  "type": "module",
6
6
  "bin": {
@@ -264,7 +264,21 @@ agentSessionStreamRouter.get('/agent-sessions/:provider/:sessionId/stream', asyn
264
264
  // Status drafts are dropped from the seed: they describe the state at some past
265
265
  // moment and the opening status above is the CURRENT one. Replaying an old
266
266
  // `done` after it would tell the client the live session had finished.
267
- const steps = drafts.filter(d => d.kind === 'tool' || d.kind === 'prose' || d.kind === 'prompt')
267
+ // THE QUERY IS SEEDED SEPARATELY, AND ALWAYS.
268
+ //
269
+ // Taking "the last 7 events" and hoping the prompt is among them does not work,
270
+ // and a live probe against a real session proved it: 8 seeded events, 6 tools and
271
+ // one prose, and NO prompt -- because in a busy run the user's question is twenty
272
+ // or thirty steps back and gets pushed out of the window by the very activity you
273
+ // opened the page to watch. That is the exact case the query exists for.
274
+ //
275
+ // So the newest prompt in the whole read window is emitted FIRST, unconditionally,
276
+ // and the step budget is spent entirely on steps. The client pins it rather than
277
+ // listing it, so it costs nothing in the scrolling window.
278
+ const lastPrompt = [...drafts].reverse().find(d => d.kind === 'prompt')
279
+ if (lastPrompt) write({ ...lastPrompt, at: Date.now() })
280
+
281
+ const steps = drafts.filter(d => d.kind === 'tool' || d.kind === 'prose')
268
282
  for (const draft of steps.slice(-SEED_EVENTS)) {
269
283
  // NOT tagged as seeded. A replayed step is a step that really happened, and a
270
284
  // second rendering style for it would be a distinction without a use. The one