Skip to content

Coins UI #719

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 31 commits into from
Apr 30, 2025
Merged

Coins UI #719

merged 31 commits into from
Apr 30, 2025

Conversation

MarcMcIntosh
Copy link
Contributor

No description provided.

reymondzzzz and others added 24 commits April 25, 2025 20:56
 Conflicts:
	refact-agent/engine/src/caps.rs
	refact-agent/engine/src/restream.rs
	refact-agent/gui/src/__fixtures__/caps.ts
	refact-agent/gui/src/components/UsageCounter/UsageCounter.tsx
	refact-agent/gui/src/services/refact/caps.ts

 On branch coins-ui

 Changes to be committed:
	modified:   ../engine/Cargo.toml
	deleted:    ../engine/bring_your_own_key/hf.yaml
	deleted:    ../engine/bring_your_own_key/mixed.yaml
	deleted:    ../engine/bring_your_own_key/openai.yaml
	deleted:    ../engine/bring_your_own_key/openrouter.yaml
	deleted:    ../engine/bring_your_own_key/refact_self_hosting.yaml
	modified:   ../engine/python_binding_and_cmdline/refact/cli_main.py
	modified:   ../engine/python_binding_and_cmdline/refact/cli_settings.py
	modified:   ../engine/python_binding_and_cmdline/refact/cli_streaming.py
	modified:   ../engine/src/agentic/compress_trajectory.rs
	modified:   ../engine/src/agentic/generate_commit_message.rs
	modified:   ../engine/src/agentic/generate_follow_up_message.rs
	modified:   ../engine/src/ast/chunk_utils.rs
	modified:   ../engine/src/ast/file_splitter.rs
	modified:   ../engine/src/ast/mod.rs
	modified:   ../engine/src/at_commands/at_search.rs
	modified:   ../engine/src/at_commands/execute_at.rs
	deleted:    ../engine/src/cached_tokenizers.rs
	modified:   ../engine/src/call_validation.rs
	new file:   ../engine/src/caps/caps.rs
	new file:   ../engine/src/caps/mod.rs
	new file:   ../engine/src/caps/providers.rs
	new file:   ../engine/src/caps/self_hosted.rs
	modified:   ../engine/src/custom_error.rs
	modified:   ../engine/src/fetch_embedding.rs
	modified:   ../engine/src/forward_to_hf_endpoint.rs
	modified:   ../engine/src/forward_to_openai_endpoint.rs
	modified:   ../engine/src/global_context.rs
	modified:   ../engine/src/http/routers/v1.rs
	modified:   ../engine/src/http/routers/v1/at_commands.rs
	modified:   ../engine/src/http/routers/v1/at_tools.rs
	modified:   ../engine/src/http/routers/v1/caps.rs
	modified:   ../engine/src/http/routers/v1/chat.rs
	modified:   ../engine/src/http/routers/v1/code_completion.rs
	modified:   ../engine/src/http/routers/v1/customization.rs
	modified:   ../engine/src/http/routers/v1/dashboard.rs
	modified:   ../engine/src/http/routers/v1/links.rs
	new file:   ../engine/src/http/routers/v1/providers.rs
	modified:   ../engine/src/http/routers/v1/subchat.rs
	modified:   ../engine/src/http/routers/v1/vecdb.rs
	modified:   ../engine/src/integrations/config_chat.rs
	modified:   ../engine/src/integrations/docker/integr_isolation.rs
	modified:   ../engine/src/integrations/integr_cmdline.rs
	modified:   ../engine/src/integrations/integr_cmdline_service.rs
	modified:   ../engine/src/integrations/integr_shell.rs
	modified:   ../engine/src/integrations/process_io_utils.rs
	modified:   ../engine/src/integrations/project_summary_chat.rs
	modified:   ../engine/src/integrations/running_integrations.rs
	modified:   ../engine/src/integrations/setting_up_integrations.rs
	modified:   ../engine/src/knowledge.rs
	new file:   ../engine/src/known_models.json
	deleted:    ../engine/src/known_models.rs
	modified:   ../engine/src/lsp.rs
	modified:   ../engine/src/main.rs
	modified:   ../engine/src/postprocessing/pp_context_files.rs
	modified:   ../engine/src/postprocessing/pp_plain_text.rs
	modified:   ../engine/src/restream.rs
	modified:   ../engine/src/scratchpad_abstract.rs
	modified:   ../engine/src/scratchpads/chat_generic.rs
	modified:   ../engine/src/scratchpads/chat_passthrough.rs
	modified:   ../engine/src/scratchpads/chat_utils_limit_history.rs
	modified:   ../engine/src/scratchpads/chat_utils_prompts.rs
	modified:   ../engine/src/scratchpads/code_completion_fim.rs
	modified:   ../engine/src/scratchpads/code_completion_replace.rs
	modified:   ../engine/src/scratchpads/mod.rs
	modified:   ../engine/src/scratchpads/multimodality.rs
	modified:   ../engine/src/scratchpads/passthrough_convert_messages.rs
	modified:   ../engine/src/scratchpads/scratchpad_utils.rs
	modified:   ../engine/src/scratchpads/token_count_cache.rs
	modified:   ../engine/src/subchat.rs
	modified:   ../engine/src/telemetry/basic_transmit.rs
	new file:   ../engine/src/tokens.rs
	modified:   ../engine/src/tools/tool_create_memory_bank.rs
	modified:   ../engine/src/tools/tool_deep_analysis.rs
	modified:   ../engine/src/tools/tools_description.rs
	modified:   ../engine/src/tools/tools_execute.rs
	modified:   ../engine/src/vecdb/vdb_file_splitter.rs
	modified:   ../engine/src/vecdb/vdb_highlev.rs
	modified:   ../engine/src/vecdb/vdb_init.rs
	modified:   ../engine/src/vecdb/vdb_remote.rs
	modified:   ../engine/src/vecdb/vdb_structs.rs
	modified:   ../engine/src/vecdb/vdb_thread.rs
	modified:   ../engine/src/yaml_configs/create_configs.rs
	modified:   ../engine/src/yaml_configs/customization_compiled_in.yaml
	modified:   ../engine/src/yaml_configs/customization_loader.rs
	modified:   ../engine/src/yaml_configs/default_privacy.yaml
	new file:   ../engine/src/yaml_configs/default_providers/anthropic.yaml
	new file:   ../engine/src/yaml_configs/default_providers/custom.yaml
	new file:   ../engine/src/yaml_configs/default_providers/deepseek.yaml
	new file:   ../engine/src/yaml_configs/default_providers/google_gemini.yaml
	new file:   ../engine/src/yaml_configs/default_providers/groq.yaml
	new file:   ../engine/src/yaml_configs/default_providers/lmstudio.yaml
	new file:   ../engine/src/yaml_configs/default_providers/ollama.yaml
	new file:   ../engine/src/yaml_configs/default_providers/openai.yaml
	new file:   ../engine/src/yaml_configs/default_providers/openrouter.yaml
	new file:   ../engine/src/yaml_configs/default_providers/xai.yaml
	modified:   README.md
	modified:   src/__fixtures__/caps.ts
	modified:   src/__fixtures__/context_files.ts
	modified:   src/app/middleware.ts
	modified:   src/app/store.ts
	modified:   src/components/Chat/Chat.tsx
	new file:   src/components/DeletePopover/DeletePopover.module.css
	renamed:    src/components/IntegrationsView/IntegrationDeletePopover.tsx -> src/components/DeletePopover/DeletePopover.tsx
	new file:   src/components/DeletePopover/index.ts
	modified:   src/components/IntegrationsView/DisplayIntegrations/IntegrationCard.module.css
	modified:   src/components/IntegrationsView/DisplayIntegrations/IntegrationCard.tsx
	modified:   src/components/IntegrationsView/IntegrationForm/ErrorState.tsx
	modified:   src/components/IntegrationsView/IntegrationForm/FormAvailabilityAndDelete.tsx
	modified:   src/components/IntegrationsView/IntegrationForm/IntegrationForm.tsx
	modified:   src/components/IntegrationsView/IntegrationsView.tsx
	modified:   src/components/IntegrationsView/hooks/useIntegrations.ts
	new file:   src/components/OnOffSwitch/OnOffSwitch.module.css
	new file:   src/components/OnOffSwitch/OnOffSwitch.tsx
	new file:   src/components/OnOffSwitch/index.ts
	modified:   src/components/Toolbar/Dropdown.tsx
	modified:   src/components/Toolbar/Toolbar.tsx
	modified:   src/components/UsageCounter/UsageCounter.tsx
	modified:   src/events/index.ts
	modified:   src/events/setup.ts
	modified:   src/features/App.tsx
	modified:   src/features/Chat/Chat.test.tsx
	modified:   src/features/Chat/Thread/actions.ts
	modified:   src/features/Chat/Thread/reducer.ts
	modified:   src/features/Chat/Thread/utils.ts
	modified:   src/features/Login/LoginPage.tsx
	modified:   src/features/Pages/pagesSlice.ts
	new file:   src/features/Providers/ProviderCard/ProviderCard.module.css
	new file:   src/features/Providers/ProviderCard/ProviderCard.tsx
	new file:   src/features/Providers/ProviderCard/index.ts
	new file:   src/features/Providers/ProviderCard/useProviderCard.ts
	new file:   src/features/Providers/ProviderForm/FormFields.tsx
	new file:   src/features/Providers/ProviderForm/ProviderForm.module.css
	new file:   src/features/Providers/ProviderForm/ProviderForm.tsx
	new file:   src/features/Providers/ProviderForm/ProviderModelsList/ModelCard.module.css
	new file:   src/features/Providers/ProviderForm/ProviderModelsList/ModelCard.tsx
	new file:   src/features/Providers/ProviderForm/ProviderModelsList/ProviderModelsList.tsx
	new file:   src/features/Providers/ProviderForm/ProviderModelsList/components/AddModelButton.tsx
	new file:   src/features/Providers/ProviderForm/ProviderModelsList/components/CapabilityBadge.tsx
	new file:   src/features/Providers/ProviderForm/ProviderModelsList/components/FormField.tsx
	new file:   src/features/Providers/ProviderForm/ProviderModelsList/components/FormSelect.tsx
	new file:   src/features/Providers/ProviderForm/ProviderModelsList/components/ModelCardPopup.tsx
	new file:   src/features/Providers/ProviderForm/ProviderModelsList/components/index.ts
	new file:   src/features/Providers/ProviderForm/ProviderModelsList/hooks/index.ts
	new file:   src/features/Providers/ProviderForm/ProviderModelsList/hooks/useModelDialogState.ts
	new file:   src/features/Providers/ProviderForm/ProviderModelsList/index.ts
	new file:   src/features/Providers/ProviderForm/ProviderModelsList/utils/extractHumanReadableReasoningType.ts
	new file:   src/features/Providers/ProviderForm/ProviderModelsList/utils/index.ts
	new file:   src/features/Providers/ProviderForm/index.ts
	new file:   src/features/Providers/ProviderForm/useProviderForm.ts
	new file:   src/features/Providers/ProviderForm/utils.ts
	new file:   src/features/Providers/ProviderPreview/ProviderPreview.tsx
	new file:   src/features/Providers/ProviderPreview/index.ts
	new file:   src/features/Providers/ProviderPreview/useProviderPreview.ts
	new file:   src/features/Providers/ProviderUpdateContext.tsx
	new file:   src/features/Providers/Providers.tsx
	new file:   src/features/Providers/ProvidersView/ConfiguredProvidersView.tsx
	new file:   src/features/Providers/ProvidersView/ProvidersView.module.css
	new file:   src/features/Providers/ProvidersView/ProvidersView.tsx
	new file:   src/features/Providers/ProvidersView/index.ts
	new file:   src/features/Providers/ProvidersView/useConfiguredProvidersView.tsx
	new file:   src/features/Providers/constants.ts
	new file:   src/features/Providers/getProviderName.ts
	new file:   src/features/Providers/icons/Anthropic.tsx
	new file:   src/features/Providers/icons/Custom.tsx
	new file:   src/features/Providers/icons/DeepSeek.tsx
	new file:   src/features/Providers/icons/Gemini.tsx
	new file:   src/features/Providers/icons/Groq.tsx
	new file:   src/features/Providers/icons/LMStudio.tsx
	new file:   src/features/Providers/icons/Ollama.tsx
	new file:   src/features/Providers/icons/OpenAI.tsx
	new file:   src/features/Providers/icons/OpenRouter.tsx
	new file:   src/features/Providers/icons/Refact.tsx
	new file:   src/features/Providers/icons/Xai.tsx
	new file:   src/features/Providers/icons/iconsMap.tsx
	new file:   src/features/Providers/index.ts
	new file:   src/features/Providers/useUpdateProvider.ts
	modified:   src/hooks/useCanUseTools.ts
	modified:   src/hooks/useCapsForToolUse.ts
	modified:   src/hooks/useEventBusForIDE.ts
	modified:   src/hooks/useEventBusForWeb.ts
	modified:   src/hooks/useLinksFromLsp.ts
	new file:   src/hooks/useModelsQuery.ts
	new file:   src/hooks/useProvidersQuery.ts
	modified:   src/hooks/useThinking.ts
	modified:   src/services/refact/caps.ts
	modified:   src/services/refact/commands.ts
	modified:   src/services/refact/consts.ts
	modified:   src/services/refact/index.ts
	new file:   src/services/refact/models.ts
	modified:   src/services/refact/path.ts
	new file:   src/services/refact/providers.ts
	new file:   src/utils/hasProperty.ts
	modified:   src/utils/index.ts
 Conflicts:
	refact-agent/engine/src/caps/caps.rs
	refact-agent/engine/src/caps/self_hosted.rs
	refact-agent/gui/src/__fixtures__/caps.ts
	refact-agent/gui/src/components/UsageCounter/UsageCounter.tsx
	refact-agent/gui/src/services/refact/caps.ts

 On branch coins-ui
 Your branch is up to date with 'origin/coins-ui'.
@alashchev17
Copy link
Contributor

image
Hover card might be centered better, as long as the size of the coins counter text

Coins spent is indicating 0, but in the reality those are much more than 0
image

Copy link
Contributor

@alashchev17 alashchev17 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Left a comment

Comment on lines +10 to +51
export function calculateTotalCostOfMessages(messages: ChatMessages) {
const assistantMessages = messages.filter(hasUsageAndPrice);
if (assistantMessages.length === 0) return null;

return assistantMessages.reduce<{
cache_creation: number;
cache_read: number;
prompt: number;
generated: number;
}>(
(acc, message) => {
const creation = calculateCost(
message.metering_cache_creation_tokens_n ?? 0,
message.pp1000t_cache_creation,
);

const read = calculateCost(
message.metering_cache_read_tokens_n ?? 0,
message.pp1000t_cache_read,
);

// TODO: units don't match up
const prompt = calculateCost(
message.metering_prompt_tokens_n ?? 0,
message.pp1000t_prompt ?? 0,
);

const generated = calculateCost(
message.metering_generated_tokens_n ?? 0,
message.pp1000t_generated ?? 0,
);

return {
cache_creation: acc.cache_creation + creation,
cache_read: acc.cache_read + read,
prompt: acc.prompt + prompt,
generated: acc.generated + generated,
};
},
{ cache_creation: 0, cache_read: 0, prompt: 0, generated: 0 },
);
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

could be great to have a test for this function to prevent regressions in the future

alashchev17
alashchev17 previously approved these changes Apr 30, 2025
@MarcMcIntosh MarcMcIntosh merged commit 725ac6c into dev Apr 30, 2025
9 checks passed
@MarcMcIntosh MarcMcIntosh deleted the coins-ui branch April 30, 2025 13:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants