@gotcos/glasses-server 6.94.0 → 6.94.1
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 +10 -0
- package/README.md +1 -1
- package/package.json +1 -1
- package/server/lib/g2-ops-handoff.ts +11 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
## 6.94.1 - Mac filing waits for a pipeline that can title a Mac recording
|
|
2
|
+
|
|
3
|
+
2026-10-27. Pairs with COS operations `sync_meetings.py` on branch `claude/mac-library-cos` (the `mac_title: 1` capability). Works with COS Control 0.5.351; Control needs no change.
|
|
4
|
+
|
|
5
|
+
- **Why:** after 6.94.0 and COS d51abbff2 went live, every Mac import came back untitled. The pipeline's model prompt said the title was "ONLY for G2 source, null otherwise", and a Mac recording's prompt reads `Source: mac_system_audio`, so the model answered with no title. The pipeline then refused to write the import, so it stayed a staged copy under `personal/` with its review marker. On 2026-10-27 the hourly sync spent two Opus calls an hour on the same two recordings. The model step itself ran: it classified both as quilt.
|
|
6
|
+
- **What:** the server files a Mac recording only when `sync_meetings.py --capabilities` also reports `mac_title: 1` or later. That is the script whose prompt asks a Mac recording for its title. A server paired with the d51abbff2 script no longer spends three model calls per save on an import that cannot be written: the recording stays standalone and is filed later by the hourly sync or `mac_library_backfill.py` once the script is updated.
|
|
7
|
+
- **COS side (same branch):** the prompt asks a Mac recording for its title, and G2 and cloud prompts stay byte for byte the same. The hourly sync's Mac catch-up runs with the explicit save's model allowance (`COS_MEETING_LLM` off does not stop it; `--no-llm` or a missing model does), stages nothing in a run without a model, and counts an attempt only when the model is called. Attempts spent under the old prompt are not held against a recording.
|
|
8
|
+
- **Unchanged:** G2 saves (pinned by `server/routes/g2-filing-golden.test.ts`), the import itself, twins, and the 6.94.0 retry and catch-up budgets.
|
|
9
|
+
- **Publish order:** either order is safe. This server against the d51abbff2 script leaves Mac recordings standalone; the 6.94.0 server against the new script files them as before, now titled.
|
|
10
|
+
|
|
1
11
|
## 6.94.0 - Saved Mac recordings are filed into the COS meeting library
|
|
2
12
|
|
|
3
13
|
2026-10-27. Pairs with COS operations `sync_meetings.py` on branch `claude/mac-library-cos` (the `--mac-import-file` import and `--capabilities`). Works with COS Control 0.5.351; Control needs no change.
|
package/README.md
CHANGED
|
@@ -719,7 +719,7 @@ into `operations/{domain}/meetings/YYYY-MM/` after its standalone summary, throu
|
|
|
719
719
|
`sync_meetings.py --mac-import-file`: the same summary, title and domain step as a
|
|
720
720
|
glasses meeting, titled `... (Mac)`, never matched or blended into a Fireflies or
|
|
721
721
|
Granola meeting. The server checks `sync_meetings.py --capabilities` first (it needs
|
|
722
|
-
`mac_import` and `
|
|
722
|
+
`mac_import`, `mac_twins` 2 and, from 6.94.1, `mac_title` 1); an older script leaves Mac recordings standalone. A Mac
|
|
723
723
|
recording of a meeting the glasses or Fireflies also recorded is filed as a twin:
|
|
724
724
|
searchable, but kept out of LightRAG, task scans and Work (`operations/scripts/mac_twins.py`). Recordings saved before 6.94.0 are filed with
|
|
725
725
|
`operations/scripts/mac_library_backfill.py` (dry run by default, `--apply` to file).
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gotcos/glasses-server",
|
|
3
|
-
"version": "6.94.
|
|
3
|
+
"version": "6.94.1",
|
|
4
4
|
"description": "COS Glasses: self-hosted AI heads-up-display server for Even G2 smart glasses, powered by Claude Code, Codex, Cursor Agent CLI, or local Ollama",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -398,6 +398,13 @@ export type CapabilityProbe = (pythonBin: string, syncScript: string, cwd: strin
|
|
|
398
398
|
const CAPABILITY_PROBE_TIMEOUT_MS = 30_000
|
|
399
399
|
/** sync_meetings.py `mac_twins` version the server needs: 2 = twins of G2 recordings AND cloud scribes. */
|
|
400
400
|
export const MAC_TWINS_REQUIRED = 2
|
|
401
|
+
/**
|
|
402
|
+
* sync_meetings.py `mac_title` version the server needs: 1 = its model prompt asks a Mac recording
|
|
403
|
+
* for a title. The script that first shipped `mac_import` (COS d51abbff2) told the model the title
|
|
404
|
+
* was "ONLY for G2 source, null otherwise", so every Mac import came back untitled and was never
|
|
405
|
+
* written, after three model calls per save (2026-10-27).
|
|
406
|
+
*/
|
|
407
|
+
export const MAC_TITLE_REQUIRED = 1
|
|
401
408
|
const capabilityCache = new Map<string, SyncCapabilities>()
|
|
402
409
|
|
|
403
410
|
function spawnCapabilityProbe(pythonBin: string, syncScript: string, cwd: string): Promise<CapabilityProbeResult> {
|
|
@@ -421,7 +428,7 @@ export function resetSyncCapabilitiesCache(): void {
|
|
|
421
428
|
|
|
422
429
|
/**
|
|
423
430
|
* What the installed sync_meetings.py can do, read from `--capabilities` rather than guessed.
|
|
424
|
-
* Mac filing needs `mac_import: 1` and `
|
|
431
|
+
* Mac filing needs `mac_import: 1`, `mac_twins: 2` or later and `mac_title: 1` or later.
|
|
425
432
|
*
|
|
426
433
|
* Cached per python + script + mtime + size, so an upgraded script is probed again. A script
|
|
427
434
|
* whose text never mentions `--capabilities` is an older one: it would take the sync lock
|
|
@@ -458,7 +465,9 @@ export async function readSyncCapabilities(
|
|
|
458
465
|
// that keeps a Mac copy of an already-recorded meeting out of LightRAG and Work. A script with
|
|
459
466
|
// the import but an older twin rule would file a Mac + Fireflies meeting twice.
|
|
460
467
|
const caps = !!parsed && typeof parsed === 'object' ? parsed as Record<string, unknown> : {}
|
|
461
|
-
const macImport = caps.mac_import === 1
|
|
468
|
+
const macImport = caps.mac_import === 1
|
|
469
|
+
&& typeof caps.mac_twins === 'number' && caps.mac_twins >= MAC_TWINS_REQUIRED
|
|
470
|
+
&& typeof caps.mac_title === 'number' && caps.mac_title >= MAC_TITLE_REQUIRED
|
|
462
471
|
const result = { macImport, reason: macImport ? null : 'sync_script_upgrade_required' }
|
|
463
472
|
capabilityCache.set(key, result)
|
|
464
473
|
return result
|