diff --git a/apps/x/apps/renderer/src/hooks/useAnalyticsIdentity.ts b/apps/x/apps/renderer/src/hooks/useAnalyticsIdentity.ts index 20fd6281..272014f8 100644 --- a/apps/x/apps/renderer/src/hooks/useAnalyticsIdentity.ts +++ b/apps/x/apps/renderer/src/hooks/useAnalyticsIdentity.ts @@ -30,13 +30,13 @@ export function useAnalyticsIdentity() { // Count notes for total_notes property try { - const entries = await window.ipc.invoke('workspace:readdir', { path: '/' }) + const entries = await window.ipc.invoke('workspace:readdir', { path: '' }) let totalNotes = 0 if (entries) { for (const entry of entries) { if (entry.kind === 'dir') { try { - const sub = await window.ipc.invoke('workspace:readdir', { path: `/${entry.name}` }) + const sub = await window.ipc.invoke('workspace:readdir', { path: `${entry.name}` }) totalNotes += sub?.length ?? 0 } catch { // skip inaccessible dirs diff --git a/apps/x/packages/core/src/models/models-dev.ts b/apps/x/packages/core/src/models/models-dev.ts index 6fecb694..4a86c1b2 100644 --- a/apps/x/packages/core/src/models/models-dev.ts +++ b/apps/x/packages/core/src/models/models-dev.ts @@ -6,12 +6,66 @@ import { WorkDir } from "../config/config.js"; const CACHE_PATH = path.join(WorkDir, "config", "models.dev.json"); const CACHE_TTL_MS = 24 * 60 * 60 * 1000; +/* + "claude-opus-4-6": { + "id": "claude-opus-4-6", + "name": "Claude Opus 4.6", + "family": "claude-opus", + "attachment": true, + "reasoning": true, + "tool_call": true, + "temperature": true, + "knowledge": "2025-05", + "release_date": "2026-02-05", + "last_updated": "2026-03-13", + "modalities": { + "input": [ + "text", + "image", + "pdf" + ], + "output": [ + "text" + ] + }, + "open_weights": false, + "cost": { + "input": 5, + "output": 25, + "cache_read": 0.5, + "cache_write": 6.25 + }, + "limit": { + "context": 1000000, + "output": 128000 + }, + "experimental": { + "modes": { + "fast": { + "cost": { + "input": 30, + "output": 150, + "cache_read": 3, + "cache_write": 37.5 + }, + "provider": { + "body": { + "speed": "fast" + }, + "headers": { + "anthropic-beta": "fast-mode-2026-02-01" + } + } + } + } + } + } +*/ const ModelsDevModel = z.object({ id: z.string().optional(), name: z.string().optional(), release_date: z.string().optional(), tool_call: z.boolean().optional(), - experimental: z.boolean().optional(), status: z.enum(["alpha", "beta", "deprecated"]).optional(), }).passthrough(); @@ -125,7 +179,6 @@ function pickProvider( } function isStableModel(model: z.infer): boolean { - if (model.experimental) return false; if (model.status && ["alpha", "beta", "deprecated"].includes(model.status)) return false; return true; } @@ -141,7 +194,6 @@ function normalizeModels(models: Record>) name: model.name, release_date: model.release_date, tool_call: model.tool_call, - experimental: model.experimental, status: model.status, })) .filter((model) => isStableModel(model) && supportsToolCall(model))