@gotcos/glasses-server 6.36.7 → 6.36.8
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 +16 -0
- package/package.json +1 -1
- package/server/lib/thread-turn-queue.ts +13 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
## Unreleased
|
|
2
2
|
|
|
3
|
+
## 6.36.8
|
|
4
|
+
- **The queue now covers the refusal that actually fires.** Device diagnostics, once the
|
|
5
|
+
path was finally instrumented, recorded `native_target_busy` on every Continue that
|
|
6
|
+
reached the server — never `native_thread_working`, which is what 6.36.7 was built
|
|
7
|
+
around. Selecting Continue SUCCEEDS and mints a binding; if the dictation is not
|
|
8
|
+
completed the binding lingers to its TTL, and every Continue inside that window
|
|
9
|
+
refuses. Twelve such bindings had stacked up on one thread over an evening.
|
|
10
|
+
- `native_target_busy` and `native_turn_in_progress` are now queueable. Both are
|
|
11
|
+
transient by construction — a clock clears them — and both are COS's OWN bookkeeping
|
|
12
|
+
rather than a foreign process holding the thread. Delivery still re-runs the full
|
|
13
|
+
gate, so nothing about the safety model changes.
|
|
14
|
+
- `native_target_fenced` is deliberately NOT queueable: "may or may not have been
|
|
15
|
+
delivered" cannot be resolved by waiting, and queueing it risks a duplicate turn in a
|
|
16
|
+
real conversation.
|
|
17
|
+
|
|
18
|
+
|
|
3
19
|
## 6.36.7
|
|
4
20
|
- **A turn spoken at a busy thread is now queued instead of refused.** Miles: "if
|
|
5
21
|
there's a session that's still running, that would just put it into the queue the same
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gotcos/glasses-server",
|
|
3
|
-
"version": "6.36.
|
|
3
|
+
"version": "6.36.8",
|
|
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": {
|
|
@@ -120,6 +120,19 @@ export const MAX_DELIVERY_ATTEMPTS = 5
|
|
|
120
120
|
*/
|
|
121
121
|
const QUEUEABLE_REFUSALS: ReadonlySet<string> = new Set([
|
|
122
122
|
'native_thread_working',
|
|
123
|
+
// COS'S OWN LEFTOVER BINDING, and the reason this feature did not work for a day.
|
|
124
|
+
// Proven from device diagnostics 2026-08-17: every Continue that reached the server
|
|
125
|
+
// was refused `native_target_busy` ("already attached to another COS chat"), never
|
|
126
|
+
// `native_thread_working`. Selecting Continue SUCCEEDS and mints a binding; if the
|
|
127
|
+
// dictation is not completed the binding lingers to its TTL, and every Continue in
|
|
128
|
+
// that window refuses. Twelve such bindings had stacked up on one thread.
|
|
129
|
+
//
|
|
130
|
+
// It belongs here because it is transient BY CONSTRUCTION -- the binding expires on
|
|
131
|
+
// a clock -- and because it is COS's own bookkeeping, not a foreign process holding
|
|
132
|
+
// the thread. Queueing waits it out, and delivery re-runs the whole gate as always.
|
|
133
|
+
'native_target_busy',
|
|
134
|
+
// Same shape: a COS turn is mid-flight on this thread and will finish.
|
|
135
|
+
'native_turn_in_progress',
|
|
123
136
|
'live_desktop_process',
|
|
124
137
|
'thread_busy',
|
|
125
138
|
'binding_conflict',
|