mirror of
https://github.com/pewdiepie-archdaemon/odysseus.git
synced 2026-10-03 13:32:21 +02:00
Squash Odysseus development history
This commit is contained in:
@@ -5,8 +5,9 @@
|
||||
// singleton via /api/assistant/session and hands it to selectSession() so we
|
||||
// reuse the full existing chat render path.
|
||||
|
||||
import uiModule from './ui.js';
|
||||
import uiModule from './ui.js?v=20260908weekhoverfix1';
|
||||
import { selectSession } from './sessions.js';
|
||||
import { sortModelIds } from './modelSort.js';
|
||||
|
||||
const API = '/api/assistant';
|
||||
|
||||
@@ -119,12 +120,12 @@ function _esc(s) {
|
||||
|
||||
// Tool groups for the tool selector UI
|
||||
const TOOL_GROUPS = {
|
||||
'Email': ['list_emails', 'read_email', 'send_email', 'reply_to_email', 'archive_email', 'delete_email', 'mark_email_read'],
|
||||
'Email': ['list_emails', 'read_email', 'download_attachment', 'send_email', 'reply_to_email', 'archive_email', 'delete_email', 'mark_email_read'],
|
||||
'Calendar & Notes': ['manage_calendar', 'manage_notes', 'manage_tasks'],
|
||||
'Knowledge': ['web_search', 'read_file', 'manage_memory', 'manage_rag', 'search_chats'],
|
||||
'Code': ['bash', 'python', 'write_file'],
|
||||
'Documents': ['create_document', 'edit_document', 'update_document', 'suggest_document'],
|
||||
'AI & Models': ['chat_with_model', 'second_opinion', 'ask_teacher', 'pipeline', 'list_models', 'generate_image'],
|
||||
'AI & Models': ['chat_with_model', 'ask_teacher', 'pipeline', 'list_models', 'generate_image'],
|
||||
'System': ['manage_session', 'manage_endpoints', 'manage_mcp', 'manage_settings', 'manage_skills', 'manage_webhooks', 'manage_tokens', 'manage_documents', 'create_session', 'list_sessions', 'send_to_session', 'ui_control'],
|
||||
};
|
||||
|
||||
@@ -179,7 +180,7 @@ function _renderSettingsBody(body, data, tzList) {
|
||||
<div class="assistant-field">
|
||||
<span style="display:flex;align-items:center;gap:8px;">Personality
|
||||
<select id="assistant-character-pick" style="font-size:11px;padding:1px 6px;border:1px solid var(--border);border-radius:3px;background:var(--bg);color:var(--fg);max-width:180px;">
|
||||
<option value="">-- pick from character --</option>
|
||||
<option value="">-- pick from persona --</option>
|
||||
</select>
|
||||
</span>
|
||||
<textarea id="assistant-personality" rows="6" placeholder="Describe the assistant's personality, tone, and behavior...">${_esc(crew.personality || '')}</textarea>
|
||||
@@ -250,9 +251,8 @@ function _renderSettingsBody(body, data, tzList) {
|
||||
try {
|
||||
const models = await _fetchJSON(`/api/model-endpoints/${ep.id}/models`);
|
||||
let mHTML = '';
|
||||
for (const m of (models.models || models || [])) {
|
||||
const mid = typeof m === 'string' ? m : (m.id || m.name || '');
|
||||
if (!mid) continue;
|
||||
const modelIds = (models.models || models || []).map(m => typeof m === 'string' ? m : (m.id || m.name || '')).filter(Boolean);
|
||||
for (const mid of sortModelIds(modelIds)) {
|
||||
const sel = mid === crew.model ? ' selected' : '';
|
||||
mHTML += `<option value="${_esc(mid)}"${sel}>${_esc(mid.split('/').pop())}</option>`;
|
||||
}
|
||||
@@ -293,7 +293,7 @@ function _renderSettingsBody(body, data, tzList) {
|
||||
allPresets.push(...presetsRaw);
|
||||
}
|
||||
const allTemplates = Array.isArray(templates) ? templates : [];
|
||||
let opts = '<option value="">-- pick from character --</option>';
|
||||
let opts = '<option value="">-- pick from persona --</option>';
|
||||
if (allPresets.length) {
|
||||
opts += '<optgroup label="Presets">';
|
||||
for (const p of allPresets) {
|
||||
@@ -304,7 +304,7 @@ function _renderSettingsBody(body, data, tzList) {
|
||||
opts += '</optgroup>';
|
||||
}
|
||||
if (allTemplates.length) {
|
||||
opts += '<optgroup label="Characters">';
|
||||
opts += '<optgroup label="Personas">';
|
||||
for (const t of allTemplates) {
|
||||
if (!t.system_prompt && !t.personality) continue;
|
||||
const name = t.character_name || t.name || 'Unnamed';
|
||||
|
||||
Reference in New Issue
Block a user