@gotcos/glasses-server 6.73.0 → 6.73.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 CHANGED
@@ -1,3 +1,9 @@
1
+ ## 6.73.1 — GPT tier selection correction
2
+
3
+ - Resolve GPT Max/Frontier to the newest provider-described frontier model and GPT Balanced to the newest workhorse/balanced model. A newer workhorse version no longer displaces a frontier model: GPT-6-Astra serves Max, GPT-6.1-Sol serves Balanced in the current catalog.
4
+ - Keep version-based selection when the provider does not describe both tiers; preserve saved tier preferences, explicit model overrides, discovery refresh, and last-known-good fallback.
5
+ - Server catalog and execution share the corrected selection. Existing companion builds can receive the correction without an EHPK update. No transcription settings or experimental flags change.
6
+
1
7
  ## [6.73.0] - 2026-10-13 - Prompts and dictation follow the speech-to-text settings
2
8
 
3
9
  Paired clients: none required. Every phone, including the public 618, already accepts the new dictation text (it never checks a model on dictation). COS Control and the phone can read the new `dictation` block in `GET /api/stt-settings` to replace "Dictation is unchanged" in their copy.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gotcos/glasses-server",
3
- "version": "6.73.0",
3
+ "version": "6.73.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": {
@@ -50,7 +50,7 @@ export interface CodexModelCatalog {
50
50
  source: CodexCatalogSource
51
51
  refreshedAt: string
52
52
  autoUpdates: true
53
- selectionPolicy: 'newest-generation-top-two'
53
+ selectionPolicy: 'capability-tiers-then-newest-generation'
54
54
  options: CodexModelOption[]
55
55
  refreshError?: string
56
56
  }
@@ -93,13 +93,24 @@ function isCapabilityCandidate(model: CodexCatalogModel): boolean {
93
93
  return !/(?:fast and affordable|cost-efficient|small,? fast|ultra-fast)/i.test(model.description)
94
94
  }
95
95
 
96
- /** Select two full-size models from the newest visible GPT generation. */
96
+ /** Prefer the provider's frontier/workhorse tiers; use generation order when
97
+ * the catalog does not describe both tiers. A newer workhorse (6.1 Sol) must
98
+ * not replace the frontier (6 Astra) merely because its version is higher.
99
+ */
97
100
  export function selectTopCodexModels(models: CodexCatalogModel[]): CodexCatalogModel[] {
98
101
  const visible = models.filter(model => !model.hidden && versionParts(model.id))
99
102
  if (visible.length === 0) return []
100
103
 
101
104
  const capable = visible.filter(isCapabilityCandidate)
102
105
  const pool = capable.length > 0 ? capable : visible
106
+ const byNewest = (candidates: CodexCatalogModel[]): CodexCatalogModel | undefined =>
107
+ candidates.slice().sort((a, b) => compareVersionsDesc(versionParts(a.id) ?? [], versionParts(b.id) ?? []))[0]
108
+ const frontier = byNewest(pool.filter(model => /\bfrontier\b/i.test(model.description)))
109
+ const balanced = byNewest(pool.filter(model =>
110
+ !/\bfrontier\b/i.test(model.description) && /\b(workhorse|balanced)\b/i.test(model.description),
111
+ ))
112
+ if (frontier && balanced) return [frontier, balanced]
113
+
103
114
  const versions = pool
104
115
  .map(model => versionParts(model.id))
105
116
  .filter((parts): parts is number[] => !!parts)
@@ -144,7 +155,7 @@ export function buildCodexModelCatalog(
144
155
  source,
145
156
  refreshedAt,
146
157
  autoUpdates: true,
147
- selectionPolicy: 'newest-generation-top-two',
158
+ selectionPolicy: 'capability-tiers-then-newest-generation',
148
159
  options,
149
160
  }
150
161
  }
@@ -163,7 +174,7 @@ function cliDefaultCatalog(refreshError?: string): CodexModelCatalog {
163
174
  source: 'cli-default',
164
175
  refreshedAt: new Date().toISOString(),
165
176
  autoUpdates: true,
166
- selectionPolicy: 'newest-generation-top-two',
177
+ selectionPolicy: 'capability-tiers-then-newest-generation',
167
178
  options: [
168
179
  { ...common, preference: CODEX_FRONTIER_MODEL, displayName: 'GPT Frontier (auto)' },
169
180
  { ...common, preference: CODEX_BALANCED_MODEL, displayName: 'GPT Balanced (auto)', isDefault: false },