diff --git a/apps/desktop/codex-link-control.schema.json b/apps/desktop/codex-link-control.schema.json index 342d4d6..c9963f5 100644 --- a/apps/desktop/codex-link-control.schema.json +++ b/apps/desktop/codex-link-control.schema.json @@ -172,7 +172,8 @@ "count_method": { "enum": [ "exact_tokenizer", - "verified_upper_bound" + "verified_upper_bound", + "provider_estimate" ] } } @@ -955,7 +956,8 @@ "count_method": { "enum": [ "exact_tokenizer", - "verified_upper_bound" + "verified_upper_bound", + "provider_estimate" ] }, "serialization_revision": { diff --git a/apps/desktop/codex-link-control.types.ts b/apps/desktop/codex-link-control.types.ts index 4640651..5ef2492 100644 --- a/apps/desktop/codex-link-control.types.ts +++ b/apps/desktop/codex-link-control.types.ts @@ -1,8 +1,8 @@ // Generated by scripts/generate-codex-link-control.py. Do not edit. -export const CODEX_LINK_CONTROL_SCHEMA_HASH = "sha256:f969be5410af06a168f2934ed1025061b06482901a7421f0034e5e4e86aca238" +export const CODEX_LINK_CONTROL_SCHEMA_HASH = "sha256:4c46b591ccd508670835f6dacd7f61c30793e98181d63089512b7d812d1b85b8" export type CodexLinkCatalogSync = { "contract_version": "codex-link/1"; "kind": "catalog_sync"; "request_id": string; "operation_id": string } export type CodexLinkContextCompactView = { "contract_version": "codex-link/1"; "kind": "context_compact_view"; "request_id": string; "operation_id": string; "view_handle": string; "expected_checkpoint_revision": number } -export type CodexLinkContextView = { "view_handle": string; "can_compact": boolean; "label": string; "checkpoint_revision": number; "current_model_label": string; "limiting_target_id": (string | null); "target_budgets": (Array | null); "active_summary_count": number; "summary_tokens": (number | null); "summary_token_measurement": ({ "target_id": string; "tokenizer_id": string; "tokenizer_revision": string; "count_method": "exact_tokenizer" | "verified_upper_bound" } | null); "last_operation_id": (string | null); "last_operation_state": ("accepted" | "running" | "completed" | "failed" | "indeterminate" | null); "last_operation_error": (CodexLinkError | null); "compact_attempts": Array<{ "attempt_id": string; "member_label": string; "state": "prepared" | "running" | "completed" | "failed" | "indeterminate"; "usage": CodexLinkUsage }> } +export type CodexLinkContextView = { "view_handle": string; "can_compact": boolean; "label": string; "checkpoint_revision": number; "current_model_label": string; "limiting_target_id": (string | null); "target_budgets": (Array | null); "active_summary_count": number; "summary_tokens": (number | null); "summary_token_measurement": ({ "target_id": string; "tokenizer_id": string; "tokenizer_revision": string; "count_method": "exact_tokenizer" | "verified_upper_bound" | "provider_estimate" } | null); "last_operation_id": (string | null); "last_operation_state": ("accepted" | "running" | "completed" | "failed" | "indeterminate" | null); "last_operation_error": (CodexLinkError | null); "compact_attempts": Array<{ "attempt_id": string; "member_label": string; "state": "prepared" | "running" | "completed" | "failed" | "indeterminate"; "usage": CodexLinkUsage }> } export type CodexLinkContextViewsGet = { "contract_version": "codex-link/1"; "kind": "context_views_get"; "request_id": string; "operation_id": string } export type CodexLinkContextViewsResult = { "contract_version": "codex-link/1"; "kind": "context_views_result"; "request_id": string; "operation_id": string; "settings_revision": number; "views": Array } export type CodexLinkControlAccepted = { "contract_version": "codex-link/1"; "kind": "control_accepted"; "request_id": string; "operation_id": string; "settings_revision": number; "operation_state": "accepted" | "running" | "completed" | "failed" | "indeterminate"; "error": (CodexLinkError | null) } @@ -18,5 +18,5 @@ export type CodexLinkSettingsUpdate = { "contract_version": "codex-link/1"; "kin export type CodexLinkStatusGet = { "contract_version": "codex-link/1"; "kind": "status_get"; "request_id": string; "operation_id": string } export type CodexLinkStatusResult = { "contract_version": "codex-link/1"; "kind": "status_result"; "request_id": string; "operation_id": string; "status": CodexLinkStatusSnapshot } export type CodexLinkStatusSnapshot = { "settings_revision": number; "runtime_mode": "native" | "managed" | "unknown"; "native_available": boolean; "external_admission": "open" | "closed" | "draining" | "recovery_required"; "needs_restart": boolean; "catalog_state": "unknown" | "fresh" | "stale" | "unauthorized" | "empty"; "active_turns": number; "uncertain_operations": number; "last_operation_id": (string | null); "error": (CodexLinkError | null) } -export type CodexLinkTargetBudget = { "target_id": string; "canonical_leaf_id": string; "limits_source": "provider_contract" | "provider_api" | "verified_adapter" | "verified_measurement"; "limits_revision": string; "tokenizer_id": string; "tokenizer_revision": string; "count_method": "exact_tokenizer" | "verified_upper_bound"; "serialization_revision": string; "input_tokens": number; "context_window_tokens": number; "output_cap_tokens": number; "safety_margin_tokens": number; "max_input_tokens": (number | null); "max_output_tokens": number; "request_bytes": number; "max_request_bytes": number; "output_cap_enforcement": CodexLinkOutputCapEnforcement } +export type CodexLinkTargetBudget = { "target_id": string; "canonical_leaf_id": string; "limits_source": "provider_contract" | "provider_api" | "verified_adapter" | "verified_measurement"; "limits_revision": string; "tokenizer_id": string; "tokenizer_revision": string; "count_method": "exact_tokenizer" | "verified_upper_bound" | "provider_estimate"; "serialization_revision": string; "input_tokens": number; "context_window_tokens": number; "output_cap_tokens": number; "safety_margin_tokens": number; "max_input_tokens": (number | null); "max_output_tokens": number; "request_bytes": number; "max_request_bytes": number; "output_cap_enforcement": CodexLinkOutputCapEnforcement } export type CodexLinkUsage = { "input_tokens": (number | null); "output_tokens": (number | null); "measurement": "measured" | "estimated" | "unknown"; "cost_microunits": (number | null); "currency": ("USD" | null); "cost_source": (string | null) } diff --git a/apps/desktop/src/app/settings/codex-link-settings.tsx b/apps/desktop/src/app/settings/codex-link-settings.tsx index 66d41fb..209bcdf 100644 --- a/apps/desktop/src/app/settings/codex-link-settings.tsx +++ b/apps/desktop/src/app/settings/codex-link-settings.tsx @@ -415,13 +415,19 @@ export function CodexLinkSettings() {

{view.current_model_label}

{copy.current}
-
{number(target?.input_tokens ?? null)}
+
+ {number(target?.input_tokens ?? null)} + {target?.count_method === 'provider_estimate' ? ` · ${copy.estimated}` : ''} + {target?.count_method === 'verified_upper_bound' ? ` · ${copy.upperBound}` : ''} +
{copy.limit}
{number(limit)}
{copy.summaries}
{view.active_summary_count} · {number(view.summary_tokens)}{' '} {view.summary_tokens !== null ? copy.tokens : ''} + {view.summary_token_measurement?.count_method === 'provider_estimate' ? ` · ${copy.estimated}` : ''} + {view.summary_token_measurement?.count_method === 'verified_upper_bound' ? ` · ${copy.upperBound}` : ''}
{view.last_operation_state && ( diff --git a/apps/desktop/src/i18n/codex-link.ts b/apps/desktop/src/i18n/codex-link.ts index 9f5e9f1..8703355 100644 --- a/apps/desktop/src/i18n/codex-link.ts +++ b/apps/desktop/src/i18n/codex-link.ts @@ -32,6 +32,8 @@ const en = { tokens: 'tokens', unmeasured: 'Not measured yet', current: 'Current input', + estimated: 'Estimate', + upperBound: 'Verified upper bound', limit: 'Effective threshold', restart: 'The next Codex launch will use the new runtime. Existing chats keep their current process.', activation: { @@ -90,6 +92,8 @@ const tr: typeof en = { tokens: 'token', unmeasured: 'Henüz ölçülmedi', current: 'Mevcut giriş', + estimated: 'Tahmin', + upperBound: 'Doğrulanmış üst sınır', limit: 'Etkin eşik', restart: 'Yeni runtime sonraki Codex açılışında kullanılacak. Açık sohbetler mevcut süreçleriyle devam eder.', activation: {