@gotcos/glasses-server 6.16.2 → 6.16.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
@@ -1,3 +1,18 @@
1
+ ## 6.16.3
2
+
3
+ - **Cursor Agent mode on durable jobs.** Glasses Settings → Agent now reaches
4
+ the CLI (`--force` / no `--mode ask`). Public 6.16.1–6.16.2 accepted Cursor
5
+ models but dropped `cursorExecutionMode` before query-job execution, so every
6
+ turn stayed Ask and Shell was Rejected. Parse + forward `agent`|`ask`; omit
7
+ still defaults to ask for old clients.
8
+
9
+ ## 6.16.2
10
+
11
+ - **COS operations meetings library.** G2 Review Meetings can list markdown from
12
+ a configurable COS `operations/` tree via `COS_OPERATIONS_DIR` /
13
+ `COS_MEETINGS_ROOT`, with fallback to `COS_SCRIPTS_DIR/..`, then standalone
14
+ recordings. Opt-in per install — no hardcoded COS layout.
15
+
1
16
  ## 6.16.1
2
17
 
3
18
  - **Cursor Agent models (Composer 2.5 / Grok 4.5).** Managed installs now ship
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gotcos/glasses-server",
3
- "version": "6.16.2",
3
+ "version": "6.16.3",
4
4
  "description": "COS Glasses — 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": {
@@ -238,6 +238,8 @@ const runner: QueryJobRunner = async ({ jobId, turnId, request, signal, callback
238
238
  {
239
239
  abortSignal: signal,
240
240
  effort: validEffort,
241
+ // Companion sends agent|ask; omit/unknown → ask (safe default for old clients).
242
+ cursorExecutionMode: request.cursorExecutionMode === 'agent' ? 'agent' : 'ask',
241
243
  clientJobId: request.clientJobId,
242
244
  generation: request.generation,
243
245
  sessionLockHeld: true,
@@ -455,6 +455,7 @@ export class QueryJobStore {
455
455
  sessionId: request.sessionId,
456
456
  ...(request.model ? { requestedModel: request.model } : {}),
457
457
  ...(request.effort ? { effort: request.effort } : {}),
458
+ ...(request.cursorExecutionMode ? { cursorExecutionMode: request.cursorExecutionMode } : {}),
458
459
  ...(request.messageEra ? { messageEra: request.messageEra } : {}),
459
460
  ...(request.globalMsgNum ? { globalMsgNum: request.globalMsgNum } : {}),
460
461
  ...(request.handoffCode ? { handoffCode: request.handoffCode } : {}),
@@ -61,6 +61,8 @@ export interface QueryJobRequest {
61
61
  sessionId: string
62
62
  model?: string
63
63
  effort?: string
64
+ /** Cursor ask|agent. Omitted means ask on the server (old clients). */
65
+ cursorExecutionMode?: string
64
66
  messageEra?: string
65
67
  globalMsgNum?: number
66
68
  reference?: QueryJobPromptReference
@@ -119,6 +121,7 @@ export interface QueryJobSnapshot extends QueryJobProviderLinkage {
119
121
  sessionId: string
120
122
  requestedModel?: string
121
123
  effort?: string
124
+ cursorExecutionMode?: string
122
125
  messageEra?: string
123
126
  globalMsgNum?: number
124
127
  handoffCode?: string
@@ -239,6 +242,10 @@ export function parseQueryJobRequest(raw: unknown): QueryJobRequest {
239
242
 
240
243
  const model = optionalString(input.model, 'model', 64)
241
244
  const effort = optionalString(input.effort, 'effort', 32)
245
+ const cursorExecutionModeRaw = optionalString(input.cursorExecutionMode, 'cursor_execution_mode', 16)
246
+ const cursorExecutionMode = cursorExecutionModeRaw === 'agent' || cursorExecutionModeRaw === 'ask'
247
+ ? cursorExecutionModeRaw
248
+ : undefined
242
249
  const messageEra = optionalString(input.messageEra, 'message_era', 80)
243
250
  const handoffCode = optionalString(input.handoffCode, 'handoff_code', 128)
244
251
  const clientQueueItemId = optionalString(input.clientQueueItemId, 'client_queue_item_id', 120)
@@ -277,6 +284,7 @@ export function parseQueryJobRequest(raw: unknown): QueryJobRequest {
277
284
  sessionId,
278
285
  ...(model ? { model } : {}),
279
286
  ...(effort ? { effort } : {}),
287
+ ...(cursorExecutionMode ? { cursorExecutionMode } : {}),
280
288
  ...(messageEra ? { messageEra } : {}),
281
289
  ...(globalMsgNum ? { globalMsgNum } : {}),
282
290
  ...(reference ? { reference } : {}),