Commit graph

54 commits

Author SHA1 Message Date
Alessandro
282f13982b fix agent profile switching logic
Keep profile catalog reads lightweight by detecting sparse editor overrides without building removal plans for every agent.

Use the chat snapshot refresh as the single switch trigger and share concurrent same-context catalog requests while preserving newest-context-wins behavior.
2026-08-12 14:34:15 +02:00
Alessandro
9dab4f2460 Hide the utility agent from profile selectors
Centralize omission of the internal default profile in the shared presentation catalog and keep status reporting intact for existing chats. Align Settings, model-switcher, Connector, Telegram, and selector contracts with focused regressions.
2026-08-12 14:34:15 +02:00
Alessandro
b5ab1d5b8f Stabilize Agent Editor client workflows
Rebase new-agent drafts when scope changes, recompute Review paths, preserve authored creation metadata, and align client validation with backend prompt requirements.

Guard pending removals and stale manager transitions from discarding edits, let only the newest profile-catalog request own selector state, and hide stale rows during refresh.

Finish the themed, responsive Easy and Advanced presentation and exercise the real Alpine stores with controlled state and request-order regressions.
2026-08-12 14:34:15 +02:00
Alessandro
9e5fd188e2 Finish scoped Agent Editor profile workflows
Add per-scope availability, duplication, active-profile status, and inline project selection while keeping the profile switcher synchronized with runtime state.

Reconcile unavailable profiles at explicit disable, deletion, project-transition, and context-creation boundaries; polish validation, prompt layout, deletion, and completion states; and extend focused backend and WebUI coverage.
2026-08-12 14:34:15 +02:00
Alessandro
457e92584f Polish Agent Editor workflows
Refine the Easy and Advanced surfaces with direct prompt editing, visible tool controls, compact transfer lists, per-row profile actions, and clearer review and removal states.

Reuse the shared compact model preset selector, improve responsive layouts and copy, and extend focused WebUI contracts for the polished behavior.
2026-08-12 14:34:15 +02:00
Alessandro
cf7fd3d566 Integrate Agent Editor into the WebUI
Add the Easy and Advanced editor modal, its single Alpine store, profile-switcher entry points and avatars, and the fresh-chat handoff after a successful save.

Restore focus across the shared modal stack and lock down the current interaction contracts as a stable baseline for the dedicated visual-polish phase.
2026-08-12 14:34:15 +02:00
frdel
93d1131ce1 Unify WebUI icons and fix message collapsing
Introduce the x-icon custom element and migrate first-party WebUI and bundled plugin markup while retaining legacy Material icon compatibility. Defer icon-font readiness until the splash-installed document is parsed so Firefox does not leave icons transparent. Centralize chat message collapse handling, avoid false Show More controls on short user messages, and align grouped-message pagination styling. Update DOX and add regression coverage for the icon and collapse behavior.
2026-07-31 13:32:41 +00:00
frdel
15a2b553be Unify global model presets
Make model presets a single global collection and treat presets as reusable setups (main, utility, embedding). Persisted scope configs now store only a preset name (Default is always present and immutable); project-scoped preset definitions were removed and attempts to edit/reset project presets are rejected. Add embedding-model support throughout: include embedding slot in presets, surface embedding in the switcher and override APIs, and notify extensions when the effective embedding model changes. Implement rename/retire propagation to update plugin configs, saved chats, and live AgentContext objects when preset names change or presets are removed. Update CLI/integration commands to use an "inherit" action for returning to the scoped preset and to report the effective scoped-or-chat preset. Add startup migration/bootstrap to initialize presets from remote or bundled fallback and numerous docs/UI text updates to reflect the new preset model. Extra: refactor config resolution helpers and add safety checks (validation, atomic writes) when saving presets.
2026-07-17 12:16:10 +02:00
Alessandro
48cba46181 Fix model preset reset flow
Add a confirmed Reset to default action to the preset editor and refresh its draft after resets from either entry point.

Resolve the toast helper at action time so resetting model settings cannot abort before removing the preset override. Rename the generic reset action for clarity and add regression coverage.
2026-07-13 14:46:11 +02:00
Alessandro
948409c244 Clear provider-specific kwargs on provider change
Reset additional parameters together with the custom API base when a model provider changes, preventing stale provider-specific options from leaking into the new provider.

Update the model-config contract and README, and extend the focused frontend regression check.
2026-07-10 19:12:02 +02:00
Alessandro
877d063d3c Polish OAuth model selection
Simplify provider cards and model-slot copy, align model pickers with the main model configuration UI, and infer a sole connected OAuth provider only when it does not silently replace a different saved provider.\n\nAdd focused static coverage for the updated picker and provider-default behavior.
2026-07-10 17:29:10 +02:00
Alessandro
db7b90823e Move preset editor behavior into Alpine store
Create local preset drafts and handle add, remove, and save actions through modelConfig.createPresetEditor so the HTML remains declarative.

Document the project-wide Alpine expression boundary and keep the plugin contract specific to preset editor ownership.
2026-07-10 14:19:23 +02:00
Alessandro
529dc8c465 Keep model presets bound after deletion
Give each preset editor row a stable UI-only key so Alpine does not reuse nested model state after a middle row is removed.

Add a regression guard and document the row identity invariant in the model-config plugin contract.
2026-07-10 14:18:49 +02:00
Alessandro
04ecaac0cd Add deferred first-send model gate
Move missing-model setup out of the welcome screen and into an in-thread gate that preserves the pending prompt, survives refresh, and auto-dispatches after a usable model is configured.

Reuse existing onboarding, OAuth account settings, and advanced model configuration surfaces instead of duplicating provider forms. Connected OAuth accounts can now populate Main and Utility defaults when no chat model is configured.

Update model readiness checks, focused static regressions, and DOX contracts for the new deferred setup flow.
2026-07-02 17:29:40 +02:00
Alessandro
3fae1f49e7 Expose context window size in model settings
Move the ctx_length control for main and utility model slots above the Advanced disclosure while keeping embeddings excluded. Add a static regression guard so primary context controls stay visible outside Advanced.
2026-06-23 20:07:59 +02:00
Alessandro
d6e8f06ec0 Clear stale preset kwargs on model switches
Treat model-slot kwargs as provider-specific preset fields: applying a preset now replaces explicit kwargs and clears inherited kwargs when the preset omits them, while preserving durable tuning like context windows and rate limits.

Mirror the behavior in the WebUI preset merge helper and add regressions for Codex-like presets so unsupported parameters such as temperature cannot leak into Responses API providers.
2026-06-11 19:13:47 +02:00
Alessandro
b152030a95 Move model config snapshot sync into store
Keep model config markup focused on setup and let the store own settings-object lifecycle hooks. This initializes UI-only kwargs fields after scope loads while preserving dirty tracking for reset/default changes.
2026-06-02 00:29:07 +02:00
Alessandro
ff601d08d0 Fix model config snapshot sync 2026-06-02 00:22:34 +02:00
Louis Giliberto
45a223dae0 FIX: Fix per-subagent model configs 2026-05-30 20:12:50 -07:00
Alessandro
e0337410e7 Preserve model preset inherited settings
Deep-merge model preset slots with the active configuration so custom context windows, rate limits, and nested kwargs survive preset switches.

Treat legacy utility preset defaults as implicit values, allow omitted utility and embedding slots to inherit configured models, and document the partial-preset behavior.
2026-05-18 02:45:08 +02:00
Alessandro
7b61ceb241 Reflect connector model overrides in Web UI
Render custom per-chat model overrides in the model switcher instead of hiding them behind a generic Custom label.

Mark model override updates dirty so an already-open Web UI refreshes after CLI or Web UI changes, without exposing API key values in labels.

Add focused regression coverage for switcher rendering hooks and state-sync notifications.
2026-05-12 16:04:02 +02:00
Alessandro
ba0d90c380 Improve model config provider controls
Reset the custom API base URL whenever the provider dropdown changes so stale endpoints do not carry across provider tests. Move the chat Supports Vision toggle out of Advanced Settings while keeping dependent vision settings, such as Max embeds, inside Advanced.
2026-05-12 03:52:18 +02:00
Alessandro
f6bc52201d Redesign first-run onboarding
Introduce a guided Cloud versus Local first-run modal with provider selection, account connection, model picking, and a ready state.\n\nAdd the reusable discovery auto-modal trigger, chat-created startup checks, onboarding-owned provider presentation metadata and assets, OAuth affordances, local provider guidance, and model-search hardening.\n\nKeep runtime provider data centralized while preserving onboarding-specific copy, logos, and docs links in the onboarding plugin.

Update onboarding.html

Update onboarding.html
2026-05-09 07:46:36 +02:00
Alessandro
aea1718f9f Revert "Show active models for Default LLM"
This reverts commit 7c59ac9e57.
2026-05-02 14:12:25 +02:00
Alessandro
7c59ac9e57 Show active models for Default LLM
Expose sanitized active main and utility model metadata through the model override endpoint, then render those names in the chat model switcher even when no preset override is active. Keep the inline model names hidden on narrow screens and cover the behavior with a regression check.

Refresh model names after settings save

Refresh the active chat model switcher after _model_config settings are saved so changes to main and utility models appear immediately. Extend the model switcher regression check to cover the save-refresh hook.
2026-04-28 16:14:53 +02:00
Alessandro
56a42b97d7 Make agent profiles context scoped
Persist the active agent profile with each chat context and add a context-scoped endpoint for switching profiles without mutating global settings. Update the WebUI selector and docs to treat settings as the default for new chats, and expose the switch through the A0 connector plugin.
2026-04-26 22:27:35 +02:00
Alessandro
9cfba12b36 skills: add structured flow for agent profile creation
Update the a0-create-agent skill to draft a temporary AgentProfileBlueprint JSON before writing the actual agent.yaml and prompt files.

- document built-in profile patterns and common prompt override levers
- add structured intake questions for scope, behavior, workflow, and output format
- define a temporary agent_zero.agent_profile_blueprint.v1 planning object
- keep agent.yaml as the required profile definition file
- call out root /prompts overrides for response contracts and advanced behavior
- update the profile-creator starter prompt to request the blueprint flow
2026-04-22 14:26:10 +02:00
Alessandro
539d809789 feat: add agent profile switcher to chat composer
Surface the active Agent Profile beside the model preset switcher and let users switch profiles through the existing settings flow.

- add agent profile metadata to state snapshots
- list available profiles in the chat composer profile dropdown
- persist profile changes via settings_get/settings_set
- add a Create new Agent Profile action that opens a guided a0-create-agent chat
- rename the agent-profile creation skill/docs from a0-new-agent to a0-create-agent
- clean up fetchApi imports for related WebUI modules
2026-04-22 14:25:18 +02:00
Alessandro
cc05ece827 ui: show model API keys in main model settings form
Move API key input fields out of the collapsed Advanced Settings section in model field UI so keys are always visible when configuring chat/utility/embedding models. Keep existing API key behaviors (visibility toggle, reveal-on-show, dirty-state tracking, and persistence flow) unchanged while removing the extra click required to access keys.
2026-04-21 06:10:40 +02:00
Nicolas Leão
b531e5ee42 simplify preset editing screen 2026-03-31 14:08:04 -03:00
frdel
3df7065685 Squashed commit of the following:
Some checks are pending
Build And Publish Docker Images / plan (push) Waiting to run
Build And Publish Docker Images / build (push) Blocked by required conditions
commit e48ee68bf6
Author: keyboardstaff <keyboardstaff@gmail.com>
Date:   Sun Mar 29 06:27:50 2026 -0700

    fix(_model_config): restore utility preset provider fallback and empty option

commit c16134e624
Author: keyboardstaff <keyboardstaff@gmail.com>
Date:   Sun Mar 29 00:28:49 2026 -0700

    fix(_model_config): prevent Settings Save from clobbering API keys saved via Configure Models

commit 9ff4133d7d
Author: keyboardstaff <keyboardstaff@gmail.com>
Date:   Sat Mar 28 10:11:57 2026 -0700

    refactor(_model_config): extract reusable model-field component, split store into mixins, unify API key lifecycle

commit 14de2ab442
Merge: 69e17748 eef6d6d0
Author: Wabifocus <keyboardstaff@gmail.com>
Date:   Sat Mar 28 19:41:43 2026 -0700

    Merge pull request #48 from agent0ai/development

    Development
2026-03-30 17:19:33 +02:00
TerminallyLazy
a2547f12a1 Add model config presets and ignore agent artifacts
- Add model switcher component for chat input with progress display
- Enhance model config store with active preset/model retrieval
- Show agent progress as ghost text in chat input placeholder
- Add agent artifact patterns to .gitignore
2026-03-28 11:10:52 -04:00
frdel
c7a983638e Add force refresh support and state management improvements to plugin installer and model config
- Add force parameter to plugin index fetch with cache-busting headers and timestamp
- Add openIndexView and reloadIndex methods to pluginInstallStore for explicit refresh
- Add request sequence tracking to prevent race conditions in concurrent index loads
- Move models summary state from component to store with loading/caching support
- Add refreshModelsSummary, ensureModelsSummaryLoaded, and modal
2026-03-26 17:24:32 +01:00
frdel
4d23425072 Move Per-Chat Override section to bottom of model configuration UI 2026-03-25 20:58:06 +01:00
frdel
75b8085b65 Add unzip to Docker base packages, refactor API key handling, improve self-update system
- Add unzip package to Docker base installation
- Remove deprecated missing API key banner extension
- Refactor API key management: clear drafts on init, track dirty state, allow empty string saves
- Add version filtering to self-update: enforce minimum v0.9.9, validate tag format
- Improve self-update UI: convert howto to Bootstrap collapse, fix branch selector reactivity, group tag suggestions
- Fix settings
2026-03-24 17:17:19 +01:00
frdel
e680256b29 Refactor API key handling and update system improvements
- Refactor API key management: move from global env-only to per-model config with dotenv fallback
- Add API key placeholder masking and reveal functionality in WebUI
- Consolidate API key validation logic into `has_provider_api_key()` helper
- Improve update system: add branch filtering for tags, simplify backup naming
- Add branch detection to version info and default to current branch for updates
- Extract configure model settings link to constant
2026-03-24 14:41:46 +01:00
frdel
89d4b8913f refactor: consolidate module loading utilities and add plugin lifecycle improvements
- Move load_classes_from_file and load_classes_from_folder from extract_tools to new modules helper
- Update all imports across api, extension, files, and plugins to use helpers.modules
- Add namespace purging to refresh_plugin_modules for selective plugin reload on Python changes
- Implement embed trimming in history based on model config max_embeds and vision support
- Add pre_update hook documentation to plugin
2026-03-23 21:13:25 +01:00
frdel
971e93ee96 refactor: remove browser_http_headers config and add safe_call utility for plugin hooks
- Remove browser_http_headers from model config (config, migration, UI, helpers)
- Add safe_call function to extract_tools.py to safely invoke functions with filtered args/kwargs
- Update call_plugin_hook to use safe_call for better parameter handling
- Add _apply_defaults_from_env to apply environment variable defaults to plugin configs
- Delete additional plugin asset folders when deleting plugins
- Remove
2026-03-20 12:43:25 +01:00
frdel
31ddee713c refactor: move allow_chat_override to top-level config and improve datetime parsing
- Move allow_chat_override from chat_model to top-level configuration
- Update all references to use new config path
- Set default to true in default_config.yaml, false in migration
- Fix datetime parsing to handle timezone-less ISO strings by appending 'Z'
- Remove inline style from tune icon in config.html
2026-03-19 21:17:48 +01:00
Jan Tomášek
dbb4b51d9a
Merge pull request #1290 from keyboardstaff/models-config-improve 2026-03-19 18:15:54 +01:00
keyboardstaff
789a87c890 fix: missing pluginListStore import 2026-03-19 09:45:45 -07:00
frdel
227f2738bb generated logos for builtin plugins 2026-03-19 17:35:03 +01:00
Wabifocus
6b57044026
Merge branch 'development' into models-config-improve 2026-03-19 09:14:02 -07:00
frdel
a7bfc7798b fix: OpenRouter header format, pipx install, code exec output truncation, and model config UI improvements
- Change X-OpenRouter-Categories from YAML list to comma-separated string
- Add pipx to base Python installation
- Truncate long lines in code execution output to 500 chars (250 from each end) before prompt detection
- Reorder model config UI sections and simplify plugin config button handler
- Remove border/padding from model summary grid and adjust mobile responsive styles
2026-03-19 16:28:33 +01:00
keyboardstaff
da7e33549c feat: Preset reset on Default, expanded fields & cross-modal nav
- Reset presets to system defaults when "Default" is clicked in Configure Models (resetGlobalPresets() + backend reset action)
- Expand preset fields to full config parity: ctx_length, ctx_history/ctx_input, vision, rate limits, kwargs, browser_http_headers
- Extract _normalizePresets() helper inside store to eliminate duplication
- Hide "Edit Presets" link when Per-Chat Override is disabled
- Add Settings + API Keys navigation buttons to Model Presets page
- Add dynamic import guard for plugin-settings-store.js in cross-modal navigation buttons
- Rename model switcher label from "Default" to "Default LLM"
2026-03-19 08:16:49 -07:00
keyboardstaff
4494d30fe5 refactor: Remove cross-chat override sync 2026-03-19 02:00:20 -07:00
keyboardstaff
e3e92c436a Add summary subheader and fix mobile overflow 2026-03-18 07:18:54 -07:00
keyboardstaff
3b86ebb837 feat: Standalone preset storage, override permission hardening & bug fixes
- Extract presets into global presets.yaml; move editor to plugin main screen
- Add project-wide override sync and three-layer permission checks
- Fix embedding change detection, new-chat inheritance, and preset name leak bugs
- Clean up dead imports/params and fix description text
2026-03-18 06:49:54 -07:00
keyboardstaff
1b0c57a3e8 Refactor model search & reorganize model_providers.yaml 2026-03-17 05:48:43 -07:00
keyboardstaff
5acdd4d302 Model Switcher UI improvements: highlight color, notification removal, preset display & validation 2026-03-16 23:38:28 -07:00