@gotcos/glasses-server 6.79.2 → 6.80.0

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.
Files changed (66) hide show
  1. package/.env.example +9 -0
  2. package/CHANGELOG.md +19 -0
  3. package/README.md +10 -0
  4. package/managed-runtime-contract.json +1 -0
  5. package/package.json +9 -1
  6. package/server/index.ts +11 -0
  7. package/server/lib/agent-session-search.ts +8 -5
  8. package/server/lib/agent-session-store.ts +45 -4
  9. package/server/lib/archive.ts +2 -1
  10. package/server/lib/attached-provider-adapter.ts +11 -0
  11. package/server/lib/claude-bridge.ts +112 -8
  12. package/server/lib/claude-settings-guard.ts +94 -0
  13. package/server/lib/claude-steer.ts +27 -0
  14. package/server/lib/codex-bridge.ts +205 -32
  15. package/server/lib/codex-engine-sessions.ts +27 -6
  16. package/server/lib/codex-homes.ts +134 -0
  17. package/server/lib/codex-live-queue.ts +14 -0
  18. package/server/lib/codex-profile-home.ts +452 -0
  19. package/server/lib/codex-queue-control.ts +17 -1
  20. package/server/lib/codex-subagent-activity.ts +22 -0
  21. package/server/lib/conversation.ts +92 -15
  22. package/server/lib/direct-bridge.ts +853 -0
  23. package/server/lib/direct-sse.ts +262 -0
  24. package/server/lib/fork-thread.ts +11 -0
  25. package/server/lib/key-answer-fields.ts +49 -0
  26. package/server/lib/key-catalog.ts +301 -0
  27. package/server/lib/key-lanes-pricing.ts +12 -0
  28. package/server/lib/key-lanes-wiring.ts +346 -0
  29. package/server/lib/key-lanes.ts +145 -0
  30. package/server/lib/key-ledger.ts +123 -0
  31. package/server/lib/key-notices.ts +486 -0
  32. package/server/lib/key-profile-rejects.ts +25 -0
  33. package/server/lib/key-profile-routing.ts +173 -0
  34. package/server/lib/key-profiles.ts +182 -0
  35. package/server/lib/key-relay-contract.ts +262 -0
  36. package/server/lib/key-relay-errors.ts +211 -0
  37. package/server/lib/key-relay-meter.ts +303 -0
  38. package/server/lib/key-relay.ts +1018 -0
  39. package/server/lib/key-secrets-guard.ts +52 -0
  40. package/server/lib/key-store.ts +228 -0
  41. package/server/lib/keyed-sessions.ts +154 -0
  42. package/server/lib/lane-b-env.ts +169 -0
  43. package/server/lib/model-router.ts +96 -7
  44. package/server/lib/morning-brief-config.ts +3 -0
  45. package/server/lib/native-head.ts +13 -1
  46. package/server/lib/occupancy-probes.ts +4 -0
  47. package/server/lib/ollama-run-ledger.ts +96 -13
  48. package/server/lib/prompt-edit.ts +2 -0
  49. package/server/lib/query-job-coordinator.ts +2 -1
  50. package/server/lib/query-job-runtime.ts +67 -15
  51. package/server/lib/query-job-store.ts +7 -1
  52. package/server/lib/query-job-types.ts +15 -1
  53. package/server/lib/session-hook-events.ts +28 -0
  54. package/server/lib/session-hook-ledger.ts +10 -0
  55. package/server/lib/thread-occupancy.ts +22 -1
  56. package/server/lib/token-audit.ts +18 -4
  57. package/server/lib/work-handoff-requests.ts +3 -0
  58. package/server/routes/agent-session-bindings.ts +15 -0
  59. package/server/routes/agent-sessions.ts +17 -5
  60. package/server/routes/handoffs.ts +22 -1
  61. package/server/routes/health.ts +5 -0
  62. package/server/routes/key-lanes.ts +442 -0
  63. package/server/routes/openai-compat.ts +28 -3
  64. package/server/routes/query.ts +20 -6
  65. package/shared/key-preference.ts +57 -0
  66. package/shared/model-preference.ts +20 -2
@@ -208,7 +208,23 @@ export function resetRuntimeCursorModelLabels(): void {
208
208
  delete runtimeCursorLabels[CURSOR_COMPOSER_MODEL]
209
209
  }
210
210
 
211
- export function modelLabel(model: ModelPreference): string {
211
+ /**
212
+ * Key lanes K1 (plan 5.2 labels): a caller that renders a key-profile turn passes the profile
213
+ * record, and its label wins. With no profile passed every label below is the 6.79.0 one,
214
+ * including the `'Opus'` default. `isModelPreference` stays closed: a profile is never a slot.
215
+ */
216
+ export interface ModelLabelProfile {
217
+ label: string
218
+ }
219
+
220
+ function profileLabel(profile: ModelLabelProfile | undefined, max: number): string | undefined {
221
+ const label = typeof profile?.label === 'string' ? profile.label.trim() : ''
222
+ return label ? Array.from(label).slice(0, max).join('') : undefined
223
+ }
224
+
225
+ export function modelLabel(model: ModelPreference, profile?: ModelLabelProfile): string {
226
+ const fromProfile = profileLabel(profile, 40)
227
+ if (fromProfile) return fromProfile
212
228
  switch (model) {
213
229
  case 'fable': return 'Fable'
214
230
  case 'sonnet': return 'Sonnet'
@@ -224,7 +240,9 @@ export function modelLabel(model: ModelPreference): string {
224
240
  }
225
241
  }
226
242
 
227
- export function modelShortLabel(model: ModelPreference): string {
243
+ export function modelShortLabel(model: ModelPreference, profile?: ModelLabelProfile): string {
244
+ const fromProfile = profileLabel(profile, 12)
245
+ if (fromProfile) return fromProfile
228
246
  switch (model) {
229
247
  case 'fable': return 'Fable'
230
248
  case 'sonnet': return 'Sonnet'