+ );
+}
diff --git a/app/src/components/intelligence/__tests__/IntelligenceTabs.test.tsx b/app/src/components/intelligence/__tests__/IntelligenceTabs.test.tsx
index 8f0f0f76a..73ce45215 100644
--- a/app/src/components/intelligence/__tests__/IntelligenceTabs.test.tsx
+++ b/app/src/components/intelligence/__tests__/IntelligenceTabs.test.tsx
@@ -4,7 +4,6 @@ import { describe, expect, it, vi } from 'vitest';
import { renderWithProviders } from '../../../test/test-utils';
import type { ActionableItem, TimeGroup } from '../../../types/intelligence';
-import IntelligenceDreamsTab from '../IntelligenceDreamsTab';
import IntelligenceMemoryTab from '../IntelligenceMemoryTab';
vi.mock('../ActionableCard', () => ({
@@ -59,14 +58,6 @@ function renderMemoryTab(
}
describe('Intelligence tab panels', () => {
- it('renders the dreams placeholder copy', () => {
- renderWithProviders();
-
- expect(screen.getByRole('heading', { name: 'Dreams' })).toBeInTheDocument();
- expect(screen.getByText(/generate a dream|AI-generated reflections/i)).toBeInTheDocument();
- expect(screen.getByText('Coming soon')).toBeInTheDocument();
- });
-
it('wires search and source filters', () => {
const props = renderMemoryTab();
diff --git a/app/src/components/intelligence/__tests__/IntelligenceTasksTab.test.tsx b/app/src/components/intelligence/__tests__/IntelligenceTasksTab.test.tsx
index 50123f227..700d0a4a0 100644
--- a/app/src/components/intelligence/__tests__/IntelligenceTasksTab.test.tsx
+++ b/app/src/components/intelligence/__tests__/IntelligenceTasksTab.test.tsx
@@ -2,19 +2,25 @@
* Vitest for IntelligenceTasksTab.
*
* Covers:
- * - Loading state while listTurnStates is in-flight.
+ * - Loading state while the boards are in-flight.
* - Error state when listTurnStates rejects.
- * - Empty state when no boards have any cards.
- * - Board aggregation: persisted boards from turn-state list are shown.
- * - Live boards from Redux take priority and render a "live" badge.
- * - Thread title resolution: threads with a title use it; unknown threads
- * fall back to a shortened thread id.
+ * - The personal board ({@link USER_TASKS_THREAD_ID}) is always shown, with
+ * an empty-state CTA when it has no cards, and is editable (move/delete)
+ * and refreshable from the create composer.
+ * - Agent board aggregation: persisted boards from the turn-state list are
+ * shown read-only; live boards from Redux take priority + a "live" badge.
+ * - Thread title resolution for agent boards.
*/
-import { screen, waitFor } from '@testing-library/react';
+import { fireEvent, screen, waitFor } from '@testing-library/react';
import { beforeEach, describe, expect, test, vi } from 'vitest';
const hoisted = vi.hoisted(() => ({
listTurnStates: vi.fn(),
+ todosList: vi.fn(),
+ todosAdd: vi.fn(),
+ todosEdit: vi.fn(),
+ todosUpdateStatus: vi.fn(),
+ todosRemove: vi.fn(),
selectorResult: {
chatRuntime: { taskBoardByThread: {} as Record },
thread: { threads: [] as unknown[] },
@@ -25,21 +31,77 @@ vi.mock('../../../services/api/threadApi', () => ({
threadApi: { listTurnStates: hoisted.listTurnStates },
}));
+vi.mock('../../../services/api/todosApi', () => ({
+ USER_TASKS_THREAD_ID: 'user-tasks',
+ todosApi: {
+ list: hoisted.todosList,
+ add: hoisted.todosAdd,
+ edit: hoisted.todosEdit,
+ updateStatus: hoisted.todosUpdateStatus,
+ remove: hoisted.todosRemove,
+ },
+}));
+
vi.mock('../../../store/hooks', () => ({
useAppSelector: (selector: (state: typeof hoisted.selectorResult) => unknown) =>
selector(hoisted.selectorResult),
useAppDispatch: () => vi.fn(),
}));
-// TaskKanbanBoard is exercised by its own test; stub it to a simple
-// table so we can assert on title/card-count without rendering the
-// full kanban grid.
+// Stub the composer so we can drive its `onCreated` callback without
+// exercising its internals.
+vi.mock('../UserTaskComposer', () => ({
+ UserTaskComposer: ({ onCreated }: { onCreated: (threadId: string, board: unknown) => void }) => (
+
+
+
+ ),
+}));
+
+// Stub the kanban to a simple list that still surfaces the write callbacks
+// the personal board wires up, so we can assert the todos RPC is called.
vi.mock('../../../pages/conversations/components/TaskKanbanBoard', () => ({
- TaskKanbanBoard: ({ board }: { board: { cards: { title: string }[] } }) => (
+ TaskKanbanBoard: ({
+ board,
+ onMove,
+ onDeleteCard,
+ }: {
+ board: { cards: { id: string; title: string; status: string }[] };
+ onMove?: (card: unknown, status: string) => void;
+ onDeleteCard?: (card: unknown) => void;
+ }) => (
+ );
+}
+
+const inputClass =
+ 'w-full rounded-md border border-stone-200 bg-white px-2 py-1.5 text-sm text-stone-900 dark:border-neutral-700 dark:bg-neutral-950 dark:text-neutral-50';
+
+function Field({ label, hint, children }: { label: string; hint?: string; children: ReactNode }) {
+ return (
+
+ );
+}
+
+export default AgentsPanel;
diff --git a/app/src/lib/i18n/chunks/ar-1.ts b/app/src/lib/i18n/chunks/ar-1.ts
index 9c1a9a250..9474534ba 100644
--- a/app/src/lib/i18n/chunks/ar-1.ts
+++ b/app/src/lib/i18n/chunks/ar-1.ts
@@ -175,6 +175,9 @@ const ar1: TranslationMap = {
'memory.noResults': 'لم يتم العثور على ذكريات',
'memory.empty': 'لا توجد ذكريات بعد. تُنشأ الذكريات تلقائيًا أثناء تفاعلك.',
'memory.tab.memory': 'الذاكرة',
+ 'memory.tab.tasks': 'Agent Tasks',
+ 'memory.tab.tasksDescription':
+ 'Create and track tasks — your own to-dos plus the boards your agents build across conversations.',
'memory.tab.subconscious': 'اللاوعي',
'memory.tab.dreams': 'الأحلام',
'memory.tab.calls': 'المكالمات',
diff --git a/app/src/lib/i18n/chunks/ar-2.ts b/app/src/lib/i18n/chunks/ar-2.ts
index ded118e07..ca2e76717 100644
--- a/app/src/lib/i18n/chunks/ar-2.ts
+++ b/app/src/lib/i18n/chunks/ar-2.ts
@@ -420,6 +420,42 @@ const ar2: TranslationMap = {
'تكوين إعدادات فرز الذكاء الاصطناعي لمشغلات التكامل Composio',
'mic.deviceSelector': 'جهاز الميكروفون',
'mic.tapToSendCountdown': 'انقر للإرسال ({seconds} ث)',
+ 'settings.agents.title': 'Agents',
+ 'settings.agents.subtitle':
+ 'Manage the agents available for delegation — built-in defaults and your own custom agents.',
+ 'settings.agents.menuDesc': 'Manage built-in and custom agents',
+ 'settings.agents.newAgent': 'New agent',
+ 'settings.agents.loadError': "Couldn't load agents",
+ 'settings.agents.empty': 'No agents yet',
+ 'settings.agents.sourceDefault': 'Built-in',
+ 'settings.agents.sourceCustom': 'Custom',
+ 'settings.agents.enable': 'Enable agent',
+ 'settings.agents.disable': 'Disable agent',
+ 'settings.agents.edit': 'Edit',
+ 'settings.agents.delete': 'Delete',
+ 'settings.agents.reset': 'Reset to default',
+ 'settings.agents.modelLabel': 'Model',
+ 'settings.agents.toolsLabel': 'Tools',
+ 'settings.agents.toolsAll': 'All tools',
+ 'settings.agents.toolsCount': '{count} tools',
+ 'settings.agents.actionFailed': "Couldn't update the agent",
+ 'settings.agents.orchestratorLocked': 'The orchestrator is always enabled.',
+ 'settings.agents.editor.createTitle': 'New agent',
+ 'settings.agents.editor.editTitle': 'Edit agent',
+ 'settings.agents.editor.id': 'ID',
+ 'settings.agents.editor.idHint': 'Lowercase letters, numbers, _ and - only.',
+ 'settings.agents.editor.name': 'Name',
+ 'settings.agents.editor.description': 'Description',
+ 'settings.agents.editor.model': 'Model (optional)',
+ 'settings.agents.editor.modelPlaceholder': 'e.g. inherit, hint:fast, or a model id',
+ 'settings.agents.editor.systemPrompt': 'System prompt (optional)',
+ 'settings.agents.editor.tools': 'Allowed tools',
+ 'settings.agents.editor.toolsHint': 'One tool name per line. Use * for all tools.',
+ 'settings.agents.editor.defaultsNote':
+ 'Editing a built-in agent saves an override you can reset later.',
+ 'settings.agents.editor.save': 'Save',
+ 'settings.agents.editor.create': 'Create agent',
+ 'settings.agents.editor.saving': 'Saving…',
};
export default ar2;
diff --git a/app/src/lib/i18n/chunks/ar-4.ts b/app/src/lib/i18n/chunks/ar-4.ts
index f059656bc..b1089b748 100644
--- a/app/src/lib/i18n/chunks/ar-4.ts
+++ b/app/src/lib/i18n/chunks/ar-4.ts
@@ -151,6 +151,23 @@ const ar4: TranslationMap = {
'intelligence.tasks.live': 'مباشر',
'intelligence.tasks.loadingBoards': 'جارٍ تحميل لوحات المهام…',
'intelligence.tasks.threadPrefix': 'المحادثة {thread}',
+ 'intelligence.tasks.subtitle': 'Your tasks and agent task boards across the workspace.',
+ 'intelligence.tasks.newTask': 'New task',
+ 'intelligence.tasks.personalBoardTitle': 'Agent Tasks',
+ 'intelligence.tasks.personalEmpty': 'No personal tasks yet',
+ 'intelligence.tasks.composer.title': 'New task',
+ 'intelligence.tasks.composer.titleLabel': 'Title',
+ 'intelligence.tasks.composer.titlePlaceholder': 'What needs to be done?',
+ 'intelligence.tasks.composer.statusLabel': 'Status',
+ 'intelligence.tasks.composer.attachLabel': 'Attach to conversation',
+ 'intelligence.tasks.composer.attachNone': 'Personal (no conversation)',
+ 'intelligence.tasks.composer.objectiveLabel': 'Objective',
+ 'intelligence.tasks.composer.objectivePlaceholder': 'Optional — the desired outcome',
+ 'intelligence.tasks.composer.notesLabel': 'Notes',
+ 'intelligence.tasks.composer.notesPlaceholder': 'Optional notes',
+ 'intelligence.tasks.composer.create': 'Create task',
+ 'intelligence.tasks.composer.creating': 'Creating…',
+ 'intelligence.tasks.composer.createFailed': "Couldn't create the task",
'notifications.card.dismiss': 'إغلاق الإشعار',
'notifications.card.importanceTitle': 'الأهمية: {pct}%',
'notifications.center.empty': 'لا توجد إشعارات بعد',
@@ -449,6 +466,7 @@ const ar4: TranslationMap = {
'conversations.taskKanban.field.status': 'Status',
'conversations.taskKanban.field.title': 'Title',
'conversations.taskKanban.saveChanges': 'Save changes',
+ 'conversations.taskKanban.deleteCard': 'Delete',
'conversations.taskKanban.updateFailed': 'Could not update task; changes were not saved.',
};
diff --git a/app/src/lib/i18n/chunks/ar-5.ts b/app/src/lib/i18n/chunks/ar-5.ts
index 2b8139c06..22d5974f3 100644
--- a/app/src/lib/i18n/chunks/ar-5.ts
+++ b/app/src/lib/i18n/chunks/ar-5.ts
@@ -552,6 +552,8 @@ const ar5: TranslationMap = {
'skills.uninstall.confirmTitle': 'إلغاء تثبيت {name}؟',
'conversations.taskKanban.blocked': 'محظور',
'conversations.taskKanban.done': 'مكتمل',
+ 'conversations.taskKanban.pending': 'Pending',
+ 'conversations.taskKanban.working': 'Working',
'conversations.taskKanban.awaitingApproval': 'Awaiting approval',
'conversations.taskKanban.ready': 'Ready',
'conversations.taskKanban.rejected': 'Rejected',
diff --git a/app/src/lib/i18n/chunks/bn-1.ts b/app/src/lib/i18n/chunks/bn-1.ts
index 46d51ef3b..3395f87a7 100644
--- a/app/src/lib/i18n/chunks/bn-1.ts
+++ b/app/src/lib/i18n/chunks/bn-1.ts
@@ -177,6 +177,9 @@ const bn1: TranslationMap = {
'memory.empty':
'এখনো কোনো মেমোরি নেই। আপনি যত ইন্টারঅ্যাক্ট করবেন, মেমোরি স্বয়ংক্রিয়ভাবে তৈরি হবে।',
'memory.tab.memory': 'মেমোরি',
+ 'memory.tab.tasks': 'Agent Tasks',
+ 'memory.tab.tasksDescription':
+ 'Create and track tasks — your own to-dos plus the boards your agents build across conversations.',
'memory.tab.subconscious': 'সাবকনশাস',
'memory.tab.dreams': 'স্বপ্ন',
'memory.tab.calls': 'কল',
diff --git a/app/src/lib/i18n/chunks/bn-2.ts b/app/src/lib/i18n/chunks/bn-2.ts
index 6f52cc3ae..f84044c26 100644
--- a/app/src/lib/i18n/chunks/bn-2.ts
+++ b/app/src/lib/i18n/chunks/bn-2.ts
@@ -433,6 +433,42 @@ const bn2: TranslationMap = {
'Composio ইন্টিগ্রেশন ট্রিগারের জন্য AI ট্রাইজ সেটিংস কনফিগার করুন',
'mic.deviceSelector': 'মাইক্রোফোন ডিভাইস',
'mic.tapToSendCountdown': 'পাঠাতে ট্যাপ করুন ({seconds}স)',
+ 'settings.agents.title': 'Agents',
+ 'settings.agents.subtitle':
+ 'Manage the agents available for delegation — built-in defaults and your own custom agents.',
+ 'settings.agents.menuDesc': 'Manage built-in and custom agents',
+ 'settings.agents.newAgent': 'New agent',
+ 'settings.agents.loadError': "Couldn't load agents",
+ 'settings.agents.empty': 'No agents yet',
+ 'settings.agents.sourceDefault': 'Built-in',
+ 'settings.agents.sourceCustom': 'Custom',
+ 'settings.agents.enable': 'Enable agent',
+ 'settings.agents.disable': 'Disable agent',
+ 'settings.agents.edit': 'Edit',
+ 'settings.agents.delete': 'Delete',
+ 'settings.agents.reset': 'Reset to default',
+ 'settings.agents.modelLabel': 'Model',
+ 'settings.agents.toolsLabel': 'Tools',
+ 'settings.agents.toolsAll': 'All tools',
+ 'settings.agents.toolsCount': '{count} tools',
+ 'settings.agents.actionFailed': "Couldn't update the agent",
+ 'settings.agents.orchestratorLocked': 'The orchestrator is always enabled.',
+ 'settings.agents.editor.createTitle': 'New agent',
+ 'settings.agents.editor.editTitle': 'Edit agent',
+ 'settings.agents.editor.id': 'ID',
+ 'settings.agents.editor.idHint': 'Lowercase letters, numbers, _ and - only.',
+ 'settings.agents.editor.name': 'Name',
+ 'settings.agents.editor.description': 'Description',
+ 'settings.agents.editor.model': 'Model (optional)',
+ 'settings.agents.editor.modelPlaceholder': 'e.g. inherit, hint:fast, or a model id',
+ 'settings.agents.editor.systemPrompt': 'System prompt (optional)',
+ 'settings.agents.editor.tools': 'Allowed tools',
+ 'settings.agents.editor.toolsHint': 'One tool name per line. Use * for all tools.',
+ 'settings.agents.editor.defaultsNote':
+ 'Editing a built-in agent saves an override you can reset later.',
+ 'settings.agents.editor.save': 'Save',
+ 'settings.agents.editor.create': 'Create agent',
+ 'settings.agents.editor.saving': 'Saving…',
};
export default bn2;
diff --git a/app/src/lib/i18n/chunks/bn-4.ts b/app/src/lib/i18n/chunks/bn-4.ts
index 6d2556179..4c7bfbdd9 100644
--- a/app/src/lib/i18n/chunks/bn-4.ts
+++ b/app/src/lib/i18n/chunks/bn-4.ts
@@ -152,6 +152,23 @@ const bn4: TranslationMap = {
'intelligence.tasks.live': 'লাইভ',
'intelligence.tasks.loadingBoards': 'টাস্ক বোর্ড লোড হচ্ছে…',
'intelligence.tasks.threadPrefix': 'থ্রেড {thread}',
+ 'intelligence.tasks.subtitle': 'Your tasks and agent task boards across the workspace.',
+ 'intelligence.tasks.newTask': 'New task',
+ 'intelligence.tasks.personalBoardTitle': 'Agent Tasks',
+ 'intelligence.tasks.personalEmpty': 'No personal tasks yet',
+ 'intelligence.tasks.composer.title': 'New task',
+ 'intelligence.tasks.composer.titleLabel': 'Title',
+ 'intelligence.tasks.composer.titlePlaceholder': 'What needs to be done?',
+ 'intelligence.tasks.composer.statusLabel': 'Status',
+ 'intelligence.tasks.composer.attachLabel': 'Attach to conversation',
+ 'intelligence.tasks.composer.attachNone': 'Personal (no conversation)',
+ 'intelligence.tasks.composer.objectiveLabel': 'Objective',
+ 'intelligence.tasks.composer.objectivePlaceholder': 'Optional — the desired outcome',
+ 'intelligence.tasks.composer.notesLabel': 'Notes',
+ 'intelligence.tasks.composer.notesPlaceholder': 'Optional notes',
+ 'intelligence.tasks.composer.create': 'Create task',
+ 'intelligence.tasks.composer.creating': 'Creating…',
+ 'intelligence.tasks.composer.createFailed': "Couldn't create the task",
'notifications.card.dismiss': 'বিজ্ঞপ্তি বাদ দিন',
'notifications.card.importanceTitle': 'গুরুত্ব: {pct}%',
'notifications.center.empty': 'এখনো কোনো বিজ্ঞপ্তি নেই',
@@ -452,6 +469,7 @@ const bn4: TranslationMap = {
'conversations.taskKanban.field.status': 'Status',
'conversations.taskKanban.field.title': 'Title',
'conversations.taskKanban.saveChanges': 'Save changes',
+ 'conversations.taskKanban.deleteCard': 'Delete',
'conversations.taskKanban.updateFailed': 'Could not update task; changes were not saved.',
};
diff --git a/app/src/lib/i18n/chunks/bn-5.ts b/app/src/lib/i18n/chunks/bn-5.ts
index 7fc7113f7..0706043da 100644
--- a/app/src/lib/i18n/chunks/bn-5.ts
+++ b/app/src/lib/i18n/chunks/bn-5.ts
@@ -559,6 +559,8 @@ const bn5: TranslationMap = {
'skills.uninstall.confirmTitle': '{name} আনইনস্টল করবেন?',
'conversations.taskKanban.blocked': 'ব্লকড',
'conversations.taskKanban.done': 'সম্পন্ন',
+ 'conversations.taskKanban.pending': 'Pending',
+ 'conversations.taskKanban.working': 'Working',
'conversations.taskKanban.awaitingApproval': 'Awaiting approval',
'conversations.taskKanban.ready': 'Ready',
'conversations.taskKanban.rejected': 'Rejected',
diff --git a/app/src/lib/i18n/chunks/de-1.ts b/app/src/lib/i18n/chunks/de-1.ts
index 5324ed3f3..f6fd0d87f 100644
--- a/app/src/lib/i18n/chunks/de-1.ts
+++ b/app/src/lib/i18n/chunks/de-1.ts
@@ -216,6 +216,9 @@ const de1: TranslationMap = {
'memory.empty':
'Noch keine Erinnerungen. Erinnerungen werden automatisch erstellt, während du interagierst.',
'memory.tab.memory': 'Erinnerung',
+ 'memory.tab.tasks': 'Agent Tasks',
+ 'memory.tab.tasksDescription':
+ 'Create and track tasks — your own to-dos plus the boards your agents build across conversations.',
'memory.tab.subconscious': 'Unterbewusstsein',
'memory.tab.dreams': 'Träume',
'memory.tab.calls': 'Anrufe',
diff --git a/app/src/lib/i18n/chunks/de-2.ts b/app/src/lib/i18n/chunks/de-2.ts
index 9b6e31482..25cba040f 100644
--- a/app/src/lib/i18n/chunks/de-2.ts
+++ b/app/src/lib/i18n/chunks/de-2.ts
@@ -444,6 +444,42 @@ const de2: TranslationMap = {
'Konfiguriere KI-Triage-Einstellungen für Composio-Integrationsauslöser',
'mic.deviceSelector': 'Mikrofongerät',
'mic.tapToSendCountdown': 'Zum Senden tippen ({seconds}s)',
+ 'settings.agents.title': 'Agents',
+ 'settings.agents.subtitle':
+ 'Manage the agents available for delegation — built-in defaults and your own custom agents.',
+ 'settings.agents.menuDesc': 'Manage built-in and custom agents',
+ 'settings.agents.newAgent': 'New agent',
+ 'settings.agents.loadError': "Couldn't load agents",
+ 'settings.agents.empty': 'No agents yet',
+ 'settings.agents.sourceDefault': 'Built-in',
+ 'settings.agents.sourceCustom': 'Custom',
+ 'settings.agents.enable': 'Enable agent',
+ 'settings.agents.disable': 'Disable agent',
+ 'settings.agents.edit': 'Edit',
+ 'settings.agents.delete': 'Delete',
+ 'settings.agents.reset': 'Reset to default',
+ 'settings.agents.modelLabel': 'Model',
+ 'settings.agents.toolsLabel': 'Tools',
+ 'settings.agents.toolsAll': 'All tools',
+ 'settings.agents.toolsCount': '{count} tools',
+ 'settings.agents.actionFailed': "Couldn't update the agent",
+ 'settings.agents.orchestratorLocked': 'The orchestrator is always enabled.',
+ 'settings.agents.editor.createTitle': 'New agent',
+ 'settings.agents.editor.editTitle': 'Edit agent',
+ 'settings.agents.editor.id': 'ID',
+ 'settings.agents.editor.idHint': 'Lowercase letters, numbers, _ and - only.',
+ 'settings.agents.editor.name': 'Name',
+ 'settings.agents.editor.description': 'Description',
+ 'settings.agents.editor.model': 'Model (optional)',
+ 'settings.agents.editor.modelPlaceholder': 'e.g. inherit, hint:fast, or a model id',
+ 'settings.agents.editor.systemPrompt': 'System prompt (optional)',
+ 'settings.agents.editor.tools': 'Allowed tools',
+ 'settings.agents.editor.toolsHint': 'One tool name per line. Use * for all tools.',
+ 'settings.agents.editor.defaultsNote':
+ 'Editing a built-in agent saves an override you can reset later.',
+ 'settings.agents.editor.save': 'Save',
+ 'settings.agents.editor.create': 'Create agent',
+ 'settings.agents.editor.saving': 'Saving…',
};
export default de2;
diff --git a/app/src/lib/i18n/chunks/de-4.ts b/app/src/lib/i18n/chunks/de-4.ts
index ecbe96ab0..10cafa813 100644
--- a/app/src/lib/i18n/chunks/de-4.ts
+++ b/app/src/lib/i18n/chunks/de-4.ts
@@ -152,6 +152,23 @@ const de4: TranslationMap = {
'intelligence.tasks.live': 'leben',
'intelligence.tasks.loadingBoards': 'Taskboards werden geladen…',
'intelligence.tasks.threadPrefix': 'Thread {thread}',
+ 'intelligence.tasks.subtitle': 'Your tasks and agent task boards across the workspace.',
+ 'intelligence.tasks.newTask': 'New task',
+ 'intelligence.tasks.personalBoardTitle': 'Agent Tasks',
+ 'intelligence.tasks.personalEmpty': 'No personal tasks yet',
+ 'intelligence.tasks.composer.title': 'New task',
+ 'intelligence.tasks.composer.titleLabel': 'Title',
+ 'intelligence.tasks.composer.titlePlaceholder': 'What needs to be done?',
+ 'intelligence.tasks.composer.statusLabel': 'Status',
+ 'intelligence.tasks.composer.attachLabel': 'Attach to conversation',
+ 'intelligence.tasks.composer.attachNone': 'Personal (no conversation)',
+ 'intelligence.tasks.composer.objectiveLabel': 'Objective',
+ 'intelligence.tasks.composer.objectivePlaceholder': 'Optional — the desired outcome',
+ 'intelligence.tasks.composer.notesLabel': 'Notes',
+ 'intelligence.tasks.composer.notesPlaceholder': 'Optional notes',
+ 'intelligence.tasks.composer.create': 'Create task',
+ 'intelligence.tasks.composer.creating': 'Creating…',
+ 'intelligence.tasks.composer.createFailed': "Couldn't create the task",
'notifications.card.dismiss': 'Benachrichtigung verwerfen',
'notifications.card.importanceTitle': 'Wichtigkeit: {pct}%',
'notifications.center.empty': 'Noch keine Benachrichtigungen',
@@ -458,6 +475,7 @@ const de4: TranslationMap = {
'conversations.taskKanban.field.status': 'Status',
'conversations.taskKanban.field.title': 'Title',
'conversations.taskKanban.saveChanges': 'Save changes',
+ 'conversations.taskKanban.deleteCard': 'Delete',
'conversations.taskKanban.updateFailed': 'Could not update task; changes were not saved.',
};
diff --git a/app/src/lib/i18n/chunks/de-5.ts b/app/src/lib/i18n/chunks/de-5.ts
index 6e3a48d74..6f815afe3 100644
--- a/app/src/lib/i18n/chunks/de-5.ts
+++ b/app/src/lib/i18n/chunks/de-5.ts
@@ -582,6 +582,8 @@ const de5: TranslationMap = {
'skills.uninstall.confirmTitle': '{name} deinstallieren?',
'conversations.taskKanban.blocked': 'Blockiert',
'conversations.taskKanban.done': 'Fertig',
+ 'conversations.taskKanban.pending': 'Pending',
+ 'conversations.taskKanban.working': 'Working',
'conversations.taskKanban.awaitingApproval': 'Awaiting approval',
'conversations.taskKanban.ready': 'Ready',
'conversations.taskKanban.rejected': 'Rejected',
diff --git a/app/src/lib/i18n/chunks/en-1.ts b/app/src/lib/i18n/chunks/en-1.ts
index b5484232a..f0421e4fa 100644
--- a/app/src/lib/i18n/chunks/en-1.ts
+++ b/app/src/lib/i18n/chunks/en-1.ts
@@ -484,6 +484,9 @@ const en1: TranslationMap = {
'memory.noResults': 'No memories found',
'memory.empty': 'No memories yet. Memories are created automatically as you interact.',
'memory.tab.memory': 'Memory',
+ 'memory.tab.tasks': 'Agent Tasks',
+ 'memory.tab.tasksDescription':
+ 'Create and track tasks — your own to-dos plus the boards your agents build across conversations.',
'memory.tab.subconscious': 'Subconscious',
'memory.tab.dreams': 'Dreams',
'memory.tab.calls': 'Calls',
diff --git a/app/src/lib/i18n/chunks/en-2.ts b/app/src/lib/i18n/chunks/en-2.ts
index 934997367..c29bc014d 100644
--- a/app/src/lib/i18n/chunks/en-2.ts
+++ b/app/src/lib/i18n/chunks/en-2.ts
@@ -429,6 +429,42 @@ const en2: TranslationMap = {
'devOptions.menuComposioTriggers': 'Integration Triggers',
'devOptions.menuComposioTriggersDesc':
'Configure AI triage settings for Composio integration triggers',
+ 'settings.agents.title': 'Agents',
+ 'settings.agents.subtitle':
+ 'Manage the agents available for delegation — built-in defaults and your own custom agents.',
+ 'settings.agents.menuDesc': 'Manage built-in and custom agents',
+ 'settings.agents.newAgent': 'New agent',
+ 'settings.agents.loadError': "Couldn't load agents",
+ 'settings.agents.empty': 'No agents yet',
+ 'settings.agents.sourceDefault': 'Built-in',
+ 'settings.agents.sourceCustom': 'Custom',
+ 'settings.agents.enable': 'Enable agent',
+ 'settings.agents.disable': 'Disable agent',
+ 'settings.agents.edit': 'Edit',
+ 'settings.agents.delete': 'Delete',
+ 'settings.agents.reset': 'Reset to default',
+ 'settings.agents.modelLabel': 'Model',
+ 'settings.agents.toolsLabel': 'Tools',
+ 'settings.agents.toolsAll': 'All tools',
+ 'settings.agents.toolsCount': '{count} tools',
+ 'settings.agents.actionFailed': "Couldn't update the agent",
+ 'settings.agents.orchestratorLocked': 'The orchestrator is always enabled.',
+ 'settings.agents.editor.createTitle': 'New agent',
+ 'settings.agents.editor.editTitle': 'Edit agent',
+ 'settings.agents.editor.id': 'ID',
+ 'settings.agents.editor.idHint': 'Lowercase letters, numbers, _ and - only.',
+ 'settings.agents.editor.name': 'Name',
+ 'settings.agents.editor.description': 'Description',
+ 'settings.agents.editor.model': 'Model (optional)',
+ 'settings.agents.editor.modelPlaceholder': 'e.g. inherit, hint:fast, or a model id',
+ 'settings.agents.editor.systemPrompt': 'System prompt (optional)',
+ 'settings.agents.editor.tools': 'Allowed tools',
+ 'settings.agents.editor.toolsHint': 'One tool name per line. Use * for all tools.',
+ 'settings.agents.editor.defaultsNote':
+ 'Editing a built-in agent saves an override you can reset later.',
+ 'settings.agents.editor.save': 'Save',
+ 'settings.agents.editor.create': 'Create agent',
+ 'settings.agents.editor.saving': 'Saving…',
};
export default en2;
diff --git a/app/src/lib/i18n/chunks/en-4.ts b/app/src/lib/i18n/chunks/en-4.ts
index dcfbbf702..78f578c96 100644
--- a/app/src/lib/i18n/chunks/en-4.ts
+++ b/app/src/lib/i18n/chunks/en-4.ts
@@ -97,6 +97,7 @@ const en4: TranslationMap = {
'conversations.taskKanban.field.status': 'Status',
'conversations.taskKanban.field.title': 'Title',
'conversations.taskKanban.saveChanges': 'Save changes',
+ 'conversations.taskKanban.deleteCard': 'Delete',
'conversations.taskKanban.updateFailed': 'Could not update task; changes were not saved.',
'conversations.toolTimeline.turn': 'turn',
'conversations.toolTimeline.workerThread': 'worker thread',
@@ -182,6 +183,23 @@ const en4: TranslationMap = {
'intelligence.tasks.live': 'live',
'intelligence.tasks.loadingBoards': 'Loading task boards…',
'intelligence.tasks.threadPrefix': 'Thread {thread}',
+ 'intelligence.tasks.subtitle': 'Your tasks and agent task boards across the workspace.',
+ 'intelligence.tasks.newTask': 'New task',
+ 'intelligence.tasks.personalBoardTitle': 'Agent Tasks',
+ 'intelligence.tasks.personalEmpty': 'No personal tasks yet',
+ 'intelligence.tasks.composer.title': 'New task',
+ 'intelligence.tasks.composer.titleLabel': 'Title',
+ 'intelligence.tasks.composer.titlePlaceholder': 'What needs to be done?',
+ 'intelligence.tasks.composer.statusLabel': 'Status',
+ 'intelligence.tasks.composer.attachLabel': 'Attach to conversation',
+ 'intelligence.tasks.composer.attachNone': 'Personal (no conversation)',
+ 'intelligence.tasks.composer.objectiveLabel': 'Objective',
+ 'intelligence.tasks.composer.objectivePlaceholder': 'Optional — the desired outcome',
+ 'intelligence.tasks.composer.notesLabel': 'Notes',
+ 'intelligence.tasks.composer.notesPlaceholder': 'Optional notes',
+ 'intelligence.tasks.composer.create': 'Create task',
+ 'intelligence.tasks.composer.creating': 'Creating…',
+ 'intelligence.tasks.composer.createFailed': "Couldn't create the task",
'notifications.card.dismiss': 'Dismiss notification',
'notifications.card.importanceTitle': 'Importance: {pct}%',
'notifications.center.empty': 'No notifications yet',
diff --git a/app/src/lib/i18n/chunks/en-5.ts b/app/src/lib/i18n/chunks/en-5.ts
index a5d8d37cd..80fc5e42b 100644
--- a/app/src/lib/i18n/chunks/en-5.ts
+++ b/app/src/lib/i18n/chunks/en-5.ts
@@ -604,6 +604,8 @@ const en5: TranslationMap = {
'skills.uninstall.confirmTitle': 'Uninstall {name}?',
'conversations.taskKanban.blocked': 'Blocked',
'conversations.taskKanban.done': 'Done',
+ 'conversations.taskKanban.pending': 'Pending',
+ 'conversations.taskKanban.working': 'Working',
'conversations.taskKanban.awaitingApproval': 'Awaiting approval',
'conversations.taskKanban.ready': 'Ready',
'conversations.taskKanban.rejected': 'Rejected',
diff --git a/app/src/lib/i18n/chunks/es-1.ts b/app/src/lib/i18n/chunks/es-1.ts
index f77af1d96..5a93a235c 100644
--- a/app/src/lib/i18n/chunks/es-1.ts
+++ b/app/src/lib/i18n/chunks/es-1.ts
@@ -183,6 +183,9 @@ const es1: TranslationMap = {
'memory.noResults': 'No se encontraron recuerdos',
'memory.empty': 'Sin recuerdos aún. Los recuerdos se crean automáticamente mientras interactúas.',
'memory.tab.memory': 'Memoria',
+ 'memory.tab.tasks': 'Agent Tasks',
+ 'memory.tab.tasksDescription':
+ 'Create and track tasks — your own to-dos plus the boards your agents build across conversations.',
'memory.tab.subconscious': 'Subconsciente',
'memory.tab.dreams': 'Sueños',
'memory.tab.calls': 'Llamadas',
diff --git a/app/src/lib/i18n/chunks/es-2.ts b/app/src/lib/i18n/chunks/es-2.ts
index 0f4f4753d..f14e2555a 100644
--- a/app/src/lib/i18n/chunks/es-2.ts
+++ b/app/src/lib/i18n/chunks/es-2.ts
@@ -443,6 +443,42 @@ const es2: TranslationMap = {
'Configurar los ajustes de clasificación de IA para los activadores de integración Composio',
'mic.deviceSelector': 'Dispositivo de micrófono',
'mic.tapToSendCountdown': 'Toca para enviar ({seconds}s)',
+ 'settings.agents.title': 'Agents',
+ 'settings.agents.subtitle':
+ 'Manage the agents available for delegation — built-in defaults and your own custom agents.',
+ 'settings.agents.menuDesc': 'Manage built-in and custom agents',
+ 'settings.agents.newAgent': 'New agent',
+ 'settings.agents.loadError': "Couldn't load agents",
+ 'settings.agents.empty': 'No agents yet',
+ 'settings.agents.sourceDefault': 'Built-in',
+ 'settings.agents.sourceCustom': 'Custom',
+ 'settings.agents.enable': 'Enable agent',
+ 'settings.agents.disable': 'Disable agent',
+ 'settings.agents.edit': 'Edit',
+ 'settings.agents.delete': 'Delete',
+ 'settings.agents.reset': 'Reset to default',
+ 'settings.agents.modelLabel': 'Model',
+ 'settings.agents.toolsLabel': 'Tools',
+ 'settings.agents.toolsAll': 'All tools',
+ 'settings.agents.toolsCount': '{count} tools',
+ 'settings.agents.actionFailed': "Couldn't update the agent",
+ 'settings.agents.orchestratorLocked': 'The orchestrator is always enabled.',
+ 'settings.agents.editor.createTitle': 'New agent',
+ 'settings.agents.editor.editTitle': 'Edit agent',
+ 'settings.agents.editor.id': 'ID',
+ 'settings.agents.editor.idHint': 'Lowercase letters, numbers, _ and - only.',
+ 'settings.agents.editor.name': 'Name',
+ 'settings.agents.editor.description': 'Description',
+ 'settings.agents.editor.model': 'Model (optional)',
+ 'settings.agents.editor.modelPlaceholder': 'e.g. inherit, hint:fast, or a model id',
+ 'settings.agents.editor.systemPrompt': 'System prompt (optional)',
+ 'settings.agents.editor.tools': 'Allowed tools',
+ 'settings.agents.editor.toolsHint': 'One tool name per line. Use * for all tools.',
+ 'settings.agents.editor.defaultsNote':
+ 'Editing a built-in agent saves an override you can reset later.',
+ 'settings.agents.editor.save': 'Save',
+ 'settings.agents.editor.create': 'Create agent',
+ 'settings.agents.editor.saving': 'Saving…',
};
export default es2;
diff --git a/app/src/lib/i18n/chunks/es-4.ts b/app/src/lib/i18n/chunks/es-4.ts
index 26012f2a2..f8c7a376c 100644
--- a/app/src/lib/i18n/chunks/es-4.ts
+++ b/app/src/lib/i18n/chunks/es-4.ts
@@ -152,6 +152,23 @@ const es4: TranslationMap = {
'intelligence.tasks.live': 'en vivo',
'intelligence.tasks.loadingBoards': 'Cargando tableros de tareas…',
'intelligence.tasks.threadPrefix': 'Hilo {thread}',
+ 'intelligence.tasks.subtitle': 'Your tasks and agent task boards across the workspace.',
+ 'intelligence.tasks.newTask': 'New task',
+ 'intelligence.tasks.personalBoardTitle': 'Agent Tasks',
+ 'intelligence.tasks.personalEmpty': 'No personal tasks yet',
+ 'intelligence.tasks.composer.title': 'New task',
+ 'intelligence.tasks.composer.titleLabel': 'Title',
+ 'intelligence.tasks.composer.titlePlaceholder': 'What needs to be done?',
+ 'intelligence.tasks.composer.statusLabel': 'Status',
+ 'intelligence.tasks.composer.attachLabel': 'Attach to conversation',
+ 'intelligence.tasks.composer.attachNone': 'Personal (no conversation)',
+ 'intelligence.tasks.composer.objectiveLabel': 'Objective',
+ 'intelligence.tasks.composer.objectivePlaceholder': 'Optional — the desired outcome',
+ 'intelligence.tasks.composer.notesLabel': 'Notes',
+ 'intelligence.tasks.composer.notesPlaceholder': 'Optional notes',
+ 'intelligence.tasks.composer.create': 'Create task',
+ 'intelligence.tasks.composer.creating': 'Creating…',
+ 'intelligence.tasks.composer.createFailed': "Couldn't create the task",
'notifications.card.dismiss': 'Descartar notificación',
'notifications.card.importanceTitle': 'Importancia: {pct}%',
'notifications.center.empty': 'Sin notificaciones aún',
@@ -456,6 +473,7 @@ const es4: TranslationMap = {
'conversations.taskKanban.field.status': 'Status',
'conversations.taskKanban.field.title': 'Title',
'conversations.taskKanban.saveChanges': 'Save changes',
+ 'conversations.taskKanban.deleteCard': 'Delete',
'conversations.taskKanban.updateFailed': 'Could not update task; changes were not saved.',
};
diff --git a/app/src/lib/i18n/chunks/es-5.ts b/app/src/lib/i18n/chunks/es-5.ts
index cb9005551..b06442b78 100644
--- a/app/src/lib/i18n/chunks/es-5.ts
+++ b/app/src/lib/i18n/chunks/es-5.ts
@@ -564,6 +564,8 @@ const es5: TranslationMap = {
'skills.uninstall.confirmTitle': '¿Desinstalar {name}?',
'conversations.taskKanban.blocked': 'Bloqueado',
'conversations.taskKanban.done': 'Completado',
+ 'conversations.taskKanban.pending': 'Pending',
+ 'conversations.taskKanban.working': 'Working',
'conversations.taskKanban.awaitingApproval': 'Awaiting approval',
'conversations.taskKanban.ready': 'Ready',
'conversations.taskKanban.rejected': 'Rejected',
diff --git a/app/src/lib/i18n/chunks/fr-1.ts b/app/src/lib/i18n/chunks/fr-1.ts
index b1c9b5f07..807234858 100644
--- a/app/src/lib/i18n/chunks/fr-1.ts
+++ b/app/src/lib/i18n/chunks/fr-1.ts
@@ -183,6 +183,9 @@ const fr1: TranslationMap = {
'memory.empty':
"Aucun souvenir pour l'instant. Les souvenirs sont créés automatiquement au fil de tes interactions.",
'memory.tab.memory': 'Mémoire',
+ 'memory.tab.tasks': 'Agent Tasks',
+ 'memory.tab.tasksDescription':
+ 'Create and track tasks — your own to-dos plus the boards your agents build across conversations.',
'memory.tab.subconscious': 'Subconscient',
'memory.tab.dreams': 'Rêves',
'memory.tab.calls': 'Appels',
diff --git a/app/src/lib/i18n/chunks/fr-2.ts b/app/src/lib/i18n/chunks/fr-2.ts
index 30705bf87..004769079 100644
--- a/app/src/lib/i18n/chunks/fr-2.ts
+++ b/app/src/lib/i18n/chunks/fr-2.ts
@@ -445,6 +445,42 @@ const fr2: TranslationMap = {
"Configurez les paramètres de triage IA pour les déclencheurs d'intégration Composio",
'mic.deviceSelector': 'Dispositif de microphone',
'mic.tapToSendCountdown': 'Appuie pour envoyer ({seconds}s)',
+ 'settings.agents.title': 'Agents',
+ 'settings.agents.subtitle':
+ 'Manage the agents available for delegation — built-in defaults and your own custom agents.',
+ 'settings.agents.menuDesc': 'Manage built-in and custom agents',
+ 'settings.agents.newAgent': 'New agent',
+ 'settings.agents.loadError': "Couldn't load agents",
+ 'settings.agents.empty': 'No agents yet',
+ 'settings.agents.sourceDefault': 'Built-in',
+ 'settings.agents.sourceCustom': 'Custom',
+ 'settings.agents.enable': 'Enable agent',
+ 'settings.agents.disable': 'Disable agent',
+ 'settings.agents.edit': 'Edit',
+ 'settings.agents.delete': 'Delete',
+ 'settings.agents.reset': 'Reset to default',
+ 'settings.agents.modelLabel': 'Model',
+ 'settings.agents.toolsLabel': 'Tools',
+ 'settings.agents.toolsAll': 'All tools',
+ 'settings.agents.toolsCount': '{count} tools',
+ 'settings.agents.actionFailed': "Couldn't update the agent",
+ 'settings.agents.orchestratorLocked': 'The orchestrator is always enabled.',
+ 'settings.agents.editor.createTitle': 'New agent',
+ 'settings.agents.editor.editTitle': 'Edit agent',
+ 'settings.agents.editor.id': 'ID',
+ 'settings.agents.editor.idHint': 'Lowercase letters, numbers, _ and - only.',
+ 'settings.agents.editor.name': 'Name',
+ 'settings.agents.editor.description': 'Description',
+ 'settings.agents.editor.model': 'Model (optional)',
+ 'settings.agents.editor.modelPlaceholder': 'e.g. inherit, hint:fast, or a model id',
+ 'settings.agents.editor.systemPrompt': 'System prompt (optional)',
+ 'settings.agents.editor.tools': 'Allowed tools',
+ 'settings.agents.editor.toolsHint': 'One tool name per line. Use * for all tools.',
+ 'settings.agents.editor.defaultsNote':
+ 'Editing a built-in agent saves an override you can reset later.',
+ 'settings.agents.editor.save': 'Save',
+ 'settings.agents.editor.create': 'Create agent',
+ 'settings.agents.editor.saving': 'Saving…',
};
export default fr2;
diff --git a/app/src/lib/i18n/chunks/fr-4.ts b/app/src/lib/i18n/chunks/fr-4.ts
index 5cb4e645f..a137ef59b 100644
--- a/app/src/lib/i18n/chunks/fr-4.ts
+++ b/app/src/lib/i18n/chunks/fr-4.ts
@@ -152,6 +152,23 @@ const fr4: TranslationMap = {
'intelligence.tasks.live': 'en direct',
'intelligence.tasks.loadingBoards': 'Chargement des tableaux de tâches…',
'intelligence.tasks.threadPrefix': 'Fil {thread}',
+ 'intelligence.tasks.subtitle': 'Your tasks and agent task boards across the workspace.',
+ 'intelligence.tasks.newTask': 'New task',
+ 'intelligence.tasks.personalBoardTitle': 'Agent Tasks',
+ 'intelligence.tasks.personalEmpty': 'No personal tasks yet',
+ 'intelligence.tasks.composer.title': 'New task',
+ 'intelligence.tasks.composer.titleLabel': 'Title',
+ 'intelligence.tasks.composer.titlePlaceholder': 'What needs to be done?',
+ 'intelligence.tasks.composer.statusLabel': 'Status',
+ 'intelligence.tasks.composer.attachLabel': 'Attach to conversation',
+ 'intelligence.tasks.composer.attachNone': 'Personal (no conversation)',
+ 'intelligence.tasks.composer.objectiveLabel': 'Objective',
+ 'intelligence.tasks.composer.objectivePlaceholder': 'Optional — the desired outcome',
+ 'intelligence.tasks.composer.notesLabel': 'Notes',
+ 'intelligence.tasks.composer.notesPlaceholder': 'Optional notes',
+ 'intelligence.tasks.composer.create': 'Create task',
+ 'intelligence.tasks.composer.creating': 'Creating…',
+ 'intelligence.tasks.composer.createFailed': "Couldn't create the task",
'notifications.card.dismiss': 'Ignorer la notification',
'notifications.card.importanceTitle': 'Importance : {pct} %',
'notifications.center.empty': "Aucune notification pour l'instant",
@@ -455,6 +472,7 @@ const fr4: TranslationMap = {
'conversations.taskKanban.field.status': 'Status',
'conversations.taskKanban.field.title': 'Title',
'conversations.taskKanban.saveChanges': 'Save changes',
+ 'conversations.taskKanban.deleteCard': 'Delete',
'conversations.taskKanban.updateFailed': 'Could not update task; changes were not saved.',
};
diff --git a/app/src/lib/i18n/chunks/fr-5.ts b/app/src/lib/i18n/chunks/fr-5.ts
index 2e4ceea4b..76b8c3fea 100644
--- a/app/src/lib/i18n/chunks/fr-5.ts
+++ b/app/src/lib/i18n/chunks/fr-5.ts
@@ -568,6 +568,8 @@ const fr5: TranslationMap = {
'skills.uninstall.confirmTitle': 'Désinstaller {name} ?',
'conversations.taskKanban.blocked': 'Bloqué',
'conversations.taskKanban.done': 'Terminé',
+ 'conversations.taskKanban.pending': 'Pending',
+ 'conversations.taskKanban.working': 'Working',
'conversations.taskKanban.awaitingApproval': 'Awaiting approval',
'conversations.taskKanban.ready': 'Ready',
'conversations.taskKanban.rejected': 'Rejected',
diff --git a/app/src/lib/i18n/chunks/hi-1.ts b/app/src/lib/i18n/chunks/hi-1.ts
index b713e4beb..3394cdeb2 100644
--- a/app/src/lib/i18n/chunks/hi-1.ts
+++ b/app/src/lib/i18n/chunks/hi-1.ts
@@ -175,6 +175,9 @@ const hi1: TranslationMap = {
'memory.noResults': 'कोई मेमोरी नहीं मिली',
'memory.empty': 'अभी कोई मेमोरी नहीं है। बातचीत के दौरान मेमोरी अपने आप बनती है।',
'memory.tab.memory': 'मेमोरी',
+ 'memory.tab.tasks': 'Agent Tasks',
+ 'memory.tab.tasksDescription':
+ 'Create and track tasks — your own to-dos plus the boards your agents build across conversations.',
'memory.tab.subconscious': 'सबकॉन्शस',
'memory.tab.dreams': 'ड्रीम्स',
'memory.tab.calls': 'कॉल्स',
diff --git a/app/src/lib/i18n/chunks/hi-2.ts b/app/src/lib/i18n/chunks/hi-2.ts
index 0f3a05533..50fe6a601 100644
--- a/app/src/lib/i18n/chunks/hi-2.ts
+++ b/app/src/lib/i18n/chunks/hi-2.ts
@@ -431,6 +431,42 @@ const hi2: TranslationMap = {
'Composio एकीकरण ट्रिगर के लिए AI ट्राइएज सेटिंग्स कॉन्फ़िगर करें',
'mic.deviceSelector': 'माइक्रोफोन डिवाइस',
'mic.tapToSendCountdown': 'भेजने के लिए टैप करें ({seconds}स)',
+ 'settings.agents.title': 'Agents',
+ 'settings.agents.subtitle':
+ 'Manage the agents available for delegation — built-in defaults and your own custom agents.',
+ 'settings.agents.menuDesc': 'Manage built-in and custom agents',
+ 'settings.agents.newAgent': 'New agent',
+ 'settings.agents.loadError': "Couldn't load agents",
+ 'settings.agents.empty': 'No agents yet',
+ 'settings.agents.sourceDefault': 'Built-in',
+ 'settings.agents.sourceCustom': 'Custom',
+ 'settings.agents.enable': 'Enable agent',
+ 'settings.agents.disable': 'Disable agent',
+ 'settings.agents.edit': 'Edit',
+ 'settings.agents.delete': 'Delete',
+ 'settings.agents.reset': 'Reset to default',
+ 'settings.agents.modelLabel': 'Model',
+ 'settings.agents.toolsLabel': 'Tools',
+ 'settings.agents.toolsAll': 'All tools',
+ 'settings.agents.toolsCount': '{count} tools',
+ 'settings.agents.actionFailed': "Couldn't update the agent",
+ 'settings.agents.orchestratorLocked': 'The orchestrator is always enabled.',
+ 'settings.agents.editor.createTitle': 'New agent',
+ 'settings.agents.editor.editTitle': 'Edit agent',
+ 'settings.agents.editor.id': 'ID',
+ 'settings.agents.editor.idHint': 'Lowercase letters, numbers, _ and - only.',
+ 'settings.agents.editor.name': 'Name',
+ 'settings.agents.editor.description': 'Description',
+ 'settings.agents.editor.model': 'Model (optional)',
+ 'settings.agents.editor.modelPlaceholder': 'e.g. inherit, hint:fast, or a model id',
+ 'settings.agents.editor.systemPrompt': 'System prompt (optional)',
+ 'settings.agents.editor.tools': 'Allowed tools',
+ 'settings.agents.editor.toolsHint': 'One tool name per line. Use * for all tools.',
+ 'settings.agents.editor.defaultsNote':
+ 'Editing a built-in agent saves an override you can reset later.',
+ 'settings.agents.editor.save': 'Save',
+ 'settings.agents.editor.create': 'Create agent',
+ 'settings.agents.editor.saving': 'Saving…',
};
export default hi2;
diff --git a/app/src/lib/i18n/chunks/hi-4.ts b/app/src/lib/i18n/chunks/hi-4.ts
index e308c6e09..bdaa911d7 100644
--- a/app/src/lib/i18n/chunks/hi-4.ts
+++ b/app/src/lib/i18n/chunks/hi-4.ts
@@ -152,6 +152,23 @@ const hi4: TranslationMap = {
'intelligence.tasks.live': 'लाइव',
'intelligence.tasks.loadingBoards': 'टास्क बोर्ड लोड हो रहे हैं…',
'intelligence.tasks.threadPrefix': 'थ्रेड {thread}',
+ 'intelligence.tasks.subtitle': 'Your tasks and agent task boards across the workspace.',
+ 'intelligence.tasks.newTask': 'New task',
+ 'intelligence.tasks.personalBoardTitle': 'Agent Tasks',
+ 'intelligence.tasks.personalEmpty': 'No personal tasks yet',
+ 'intelligence.tasks.composer.title': 'New task',
+ 'intelligence.tasks.composer.titleLabel': 'Title',
+ 'intelligence.tasks.composer.titlePlaceholder': 'What needs to be done?',
+ 'intelligence.tasks.composer.statusLabel': 'Status',
+ 'intelligence.tasks.composer.attachLabel': 'Attach to conversation',
+ 'intelligence.tasks.composer.attachNone': 'Personal (no conversation)',
+ 'intelligence.tasks.composer.objectiveLabel': 'Objective',
+ 'intelligence.tasks.composer.objectivePlaceholder': 'Optional — the desired outcome',
+ 'intelligence.tasks.composer.notesLabel': 'Notes',
+ 'intelligence.tasks.composer.notesPlaceholder': 'Optional notes',
+ 'intelligence.tasks.composer.create': 'Create task',
+ 'intelligence.tasks.composer.creating': 'Creating…',
+ 'intelligence.tasks.composer.createFailed': "Couldn't create the task",
'notifications.card.dismiss': 'नोटिफिकेशन हटाएं',
'notifications.card.importanceTitle': 'महत्व: {pct}%',
'notifications.center.empty': 'अभी कोई नोटिफिकेशन नहीं',
@@ -453,6 +470,7 @@ const hi4: TranslationMap = {
'conversations.taskKanban.field.status': 'Status',
'conversations.taskKanban.field.title': 'Title',
'conversations.taskKanban.saveChanges': 'Save changes',
+ 'conversations.taskKanban.deleteCard': 'Delete',
'conversations.taskKanban.updateFailed': 'Could not update task; changes were not saved.',
};
diff --git a/app/src/lib/i18n/chunks/hi-5.ts b/app/src/lib/i18n/chunks/hi-5.ts
index e8dad3dd3..39f837f28 100644
--- a/app/src/lib/i18n/chunks/hi-5.ts
+++ b/app/src/lib/i18n/chunks/hi-5.ts
@@ -561,6 +561,8 @@ const hi5: TranslationMap = {
'skills.uninstall.confirmTitle': '{name} अनइंस्टॉल करें?',
'conversations.taskKanban.blocked': 'अवरुद्ध',
'conversations.taskKanban.done': 'पूर्ण',
+ 'conversations.taskKanban.pending': 'Pending',
+ 'conversations.taskKanban.working': 'Working',
'conversations.taskKanban.awaitingApproval': 'Awaiting approval',
'conversations.taskKanban.ready': 'Ready',
'conversations.taskKanban.rejected': 'Rejected',
diff --git a/app/src/lib/i18n/chunks/id-1.ts b/app/src/lib/i18n/chunks/id-1.ts
index 337b1cf84..f384fad0b 100644
--- a/app/src/lib/i18n/chunks/id-1.ts
+++ b/app/src/lib/i18n/chunks/id-1.ts
@@ -176,6 +176,9 @@ const id1: TranslationMap = {
'memory.noResults': 'Memori tidak ditemukan',
'memory.empty': 'Belum ada memori. Memori dibuat otomatis saat Anda berinteraksi.',
'memory.tab.memory': 'Memori',
+ 'memory.tab.tasks': 'Agent Tasks',
+ 'memory.tab.tasksDescription':
+ 'Create and track tasks — your own to-dos plus the boards your agents build across conversations.',
'memory.tab.subconscious': 'Bawah sadar',
'memory.tab.dreams': 'Mimpi',
'memory.tab.calls': 'Panggilan',
diff --git a/app/src/lib/i18n/chunks/id-2.ts b/app/src/lib/i18n/chunks/id-2.ts
index fb0a93a5d..1262c61ff 100644
--- a/app/src/lib/i18n/chunks/id-2.ts
+++ b/app/src/lib/i18n/chunks/id-2.ts
@@ -431,6 +431,42 @@ const id2: TranslationMap = {
'Konfigurasikan pengaturan triase AI untuk pemicu integrasi Composio',
'mic.deviceSelector': 'Perangkat mikrofon',
'mic.tapToSendCountdown': 'Ketuk untuk mengirim ({seconds}d)',
+ 'settings.agents.title': 'Agents',
+ 'settings.agents.subtitle':
+ 'Manage the agents available for delegation — built-in defaults and your own custom agents.',
+ 'settings.agents.menuDesc': 'Manage built-in and custom agents',
+ 'settings.agents.newAgent': 'New agent',
+ 'settings.agents.loadError': "Couldn't load agents",
+ 'settings.agents.empty': 'No agents yet',
+ 'settings.agents.sourceDefault': 'Built-in',
+ 'settings.agents.sourceCustom': 'Custom',
+ 'settings.agents.enable': 'Enable agent',
+ 'settings.agents.disable': 'Disable agent',
+ 'settings.agents.edit': 'Edit',
+ 'settings.agents.delete': 'Delete',
+ 'settings.agents.reset': 'Reset to default',
+ 'settings.agents.modelLabel': 'Model',
+ 'settings.agents.toolsLabel': 'Tools',
+ 'settings.agents.toolsAll': 'All tools',
+ 'settings.agents.toolsCount': '{count} tools',
+ 'settings.agents.actionFailed': "Couldn't update the agent",
+ 'settings.agents.orchestratorLocked': 'The orchestrator is always enabled.',
+ 'settings.agents.editor.createTitle': 'New agent',
+ 'settings.agents.editor.editTitle': 'Edit agent',
+ 'settings.agents.editor.id': 'ID',
+ 'settings.agents.editor.idHint': 'Lowercase letters, numbers, _ and - only.',
+ 'settings.agents.editor.name': 'Name',
+ 'settings.agents.editor.description': 'Description',
+ 'settings.agents.editor.model': 'Model (optional)',
+ 'settings.agents.editor.modelPlaceholder': 'e.g. inherit, hint:fast, or a model id',
+ 'settings.agents.editor.systemPrompt': 'System prompt (optional)',
+ 'settings.agents.editor.tools': 'Allowed tools',
+ 'settings.agents.editor.toolsHint': 'One tool name per line. Use * for all tools.',
+ 'settings.agents.editor.defaultsNote':
+ 'Editing a built-in agent saves an override you can reset later.',
+ 'settings.agents.editor.save': 'Save',
+ 'settings.agents.editor.create': 'Create agent',
+ 'settings.agents.editor.saving': 'Saving…',
};
export default id2;
diff --git a/app/src/lib/i18n/chunks/id-4.ts b/app/src/lib/i18n/chunks/id-4.ts
index 56b783859..fa7fcf723 100644
--- a/app/src/lib/i18n/chunks/id-4.ts
+++ b/app/src/lib/i18n/chunks/id-4.ts
@@ -152,6 +152,23 @@ const id4: TranslationMap = {
'intelligence.tasks.live': 'langsung',
'intelligence.tasks.loadingBoards': 'Memuat papan tugas...',
'intelligence.tasks.threadPrefix': 'Utas {thread}',
+ 'intelligence.tasks.subtitle': 'Your tasks and agent task boards across the workspace.',
+ 'intelligence.tasks.newTask': 'New task',
+ 'intelligence.tasks.personalBoardTitle': 'Agent Tasks',
+ 'intelligence.tasks.personalEmpty': 'No personal tasks yet',
+ 'intelligence.tasks.composer.title': 'New task',
+ 'intelligence.tasks.composer.titleLabel': 'Title',
+ 'intelligence.tasks.composer.titlePlaceholder': 'What needs to be done?',
+ 'intelligence.tasks.composer.statusLabel': 'Status',
+ 'intelligence.tasks.composer.attachLabel': 'Attach to conversation',
+ 'intelligence.tasks.composer.attachNone': 'Personal (no conversation)',
+ 'intelligence.tasks.composer.objectiveLabel': 'Objective',
+ 'intelligence.tasks.composer.objectivePlaceholder': 'Optional — the desired outcome',
+ 'intelligence.tasks.composer.notesLabel': 'Notes',
+ 'intelligence.tasks.composer.notesPlaceholder': 'Optional notes',
+ 'intelligence.tasks.composer.create': 'Create task',
+ 'intelligence.tasks.composer.creating': 'Creating…',
+ 'intelligence.tasks.composer.createFailed': "Couldn't create the task",
'notifications.card.dismiss': 'Abaikan notifikasi',
'notifications.card.importanceTitle': 'Tingkat penting: {pct}%',
'notifications.center.empty': 'Belum ada notifikasi',
@@ -454,6 +471,7 @@ const id4: TranslationMap = {
'conversations.taskKanban.field.status': 'Status',
'conversations.taskKanban.field.title': 'Title',
'conversations.taskKanban.saveChanges': 'Save changes',
+ 'conversations.taskKanban.deleteCard': 'Delete',
'conversations.taskKanban.updateFailed': 'Could not update task; changes were not saved.',
};
diff --git a/app/src/lib/i18n/chunks/id-5.ts b/app/src/lib/i18n/chunks/id-5.ts
index 89d9a6287..64c145f5b 100644
--- a/app/src/lib/i18n/chunks/id-5.ts
+++ b/app/src/lib/i18n/chunks/id-5.ts
@@ -561,6 +561,8 @@ const id5: TranslationMap = {
'skills.uninstall.confirmTitle': 'Copot {name}?',
'conversations.taskKanban.blocked': 'Terhambat',
'conversations.taskKanban.done': 'Selesai',
+ 'conversations.taskKanban.pending': 'Pending',
+ 'conversations.taskKanban.working': 'Working',
'conversations.taskKanban.awaitingApproval': 'Awaiting approval',
'conversations.taskKanban.ready': 'Ready',
'conversations.taskKanban.rejected': 'Rejected',
diff --git a/app/src/lib/i18n/chunks/it-1.ts b/app/src/lib/i18n/chunks/it-1.ts
index a1b23d352..4e4aa6ce1 100644
--- a/app/src/lib/i18n/chunks/it-1.ts
+++ b/app/src/lib/i18n/chunks/it-1.ts
@@ -181,6 +181,9 @@ const it1: TranslationMap = {
'memory.empty':
'Nessuna memoria ancora. Le memorie vengono create automaticamente mentre interagisci.',
'memory.tab.memory': 'Memoria',
+ 'memory.tab.tasks': 'Agent Tasks',
+ 'memory.tab.tasksDescription':
+ 'Create and track tasks — your own to-dos plus the boards your agents build across conversations.',
'memory.tab.subconscious': 'Subconscio',
'memory.tab.dreams': 'Sogni',
'memory.tab.calls': 'Chiamate',
diff --git a/app/src/lib/i18n/chunks/it-2.ts b/app/src/lib/i18n/chunks/it-2.ts
index 170f49ed1..b77b5fb78 100644
--- a/app/src/lib/i18n/chunks/it-2.ts
+++ b/app/src/lib/i18n/chunks/it-2.ts
@@ -438,6 +438,42 @@ const it2: TranslationMap = {
'Configura le impostazioni di triage AI per i trigger di integrazione Composio',
'mic.deviceSelector': 'Dispositivo microfono',
'mic.tapToSendCountdown': 'Tocca per inviare ({seconds}s)',
+ 'settings.agents.title': 'Agents',
+ 'settings.agents.subtitle':
+ 'Manage the agents available for delegation — built-in defaults and your own custom agents.',
+ 'settings.agents.menuDesc': 'Manage built-in and custom agents',
+ 'settings.agents.newAgent': 'New agent',
+ 'settings.agents.loadError': "Couldn't load agents",
+ 'settings.agents.empty': 'No agents yet',
+ 'settings.agents.sourceDefault': 'Built-in',
+ 'settings.agents.sourceCustom': 'Custom',
+ 'settings.agents.enable': 'Enable agent',
+ 'settings.agents.disable': 'Disable agent',
+ 'settings.agents.edit': 'Edit',
+ 'settings.agents.delete': 'Delete',
+ 'settings.agents.reset': 'Reset to default',
+ 'settings.agents.modelLabel': 'Model',
+ 'settings.agents.toolsLabel': 'Tools',
+ 'settings.agents.toolsAll': 'All tools',
+ 'settings.agents.toolsCount': '{count} tools',
+ 'settings.agents.actionFailed': "Couldn't update the agent",
+ 'settings.agents.orchestratorLocked': 'The orchestrator is always enabled.',
+ 'settings.agents.editor.createTitle': 'New agent',
+ 'settings.agents.editor.editTitle': 'Edit agent',
+ 'settings.agents.editor.id': 'ID',
+ 'settings.agents.editor.idHint': 'Lowercase letters, numbers, _ and - only.',
+ 'settings.agents.editor.name': 'Name',
+ 'settings.agents.editor.description': 'Description',
+ 'settings.agents.editor.model': 'Model (optional)',
+ 'settings.agents.editor.modelPlaceholder': 'e.g. inherit, hint:fast, or a model id',
+ 'settings.agents.editor.systemPrompt': 'System prompt (optional)',
+ 'settings.agents.editor.tools': 'Allowed tools',
+ 'settings.agents.editor.toolsHint': 'One tool name per line. Use * for all tools.',
+ 'settings.agents.editor.defaultsNote':
+ 'Editing a built-in agent saves an override you can reset later.',
+ 'settings.agents.editor.save': 'Save',
+ 'settings.agents.editor.create': 'Create agent',
+ 'settings.agents.editor.saving': 'Saving…',
};
export default it2;
diff --git a/app/src/lib/i18n/chunks/it-4.ts b/app/src/lib/i18n/chunks/it-4.ts
index 200c0bd1b..252407043 100644
--- a/app/src/lib/i18n/chunks/it-4.ts
+++ b/app/src/lib/i18n/chunks/it-4.ts
@@ -152,6 +152,23 @@ const it4: TranslationMap = {
'intelligence.tasks.live': 'live',
'intelligence.tasks.loadingBoards': 'Caricamento board attività…',
'intelligence.tasks.threadPrefix': 'Discussione {thread}',
+ 'intelligence.tasks.subtitle': 'Your tasks and agent task boards across the workspace.',
+ 'intelligence.tasks.newTask': 'New task',
+ 'intelligence.tasks.personalBoardTitle': 'Agent Tasks',
+ 'intelligence.tasks.personalEmpty': 'No personal tasks yet',
+ 'intelligence.tasks.composer.title': 'New task',
+ 'intelligence.tasks.composer.titleLabel': 'Title',
+ 'intelligence.tasks.composer.titlePlaceholder': 'What needs to be done?',
+ 'intelligence.tasks.composer.statusLabel': 'Status',
+ 'intelligence.tasks.composer.attachLabel': 'Attach to conversation',
+ 'intelligence.tasks.composer.attachNone': 'Personal (no conversation)',
+ 'intelligence.tasks.composer.objectiveLabel': 'Objective',
+ 'intelligence.tasks.composer.objectivePlaceholder': 'Optional — the desired outcome',
+ 'intelligence.tasks.composer.notesLabel': 'Notes',
+ 'intelligence.tasks.composer.notesPlaceholder': 'Optional notes',
+ 'intelligence.tasks.composer.create': 'Create task',
+ 'intelligence.tasks.composer.creating': 'Creating…',
+ 'intelligence.tasks.composer.createFailed': "Couldn't create the task",
'notifications.card.dismiss': 'Ignora notifica',
'notifications.card.importanceTitle': 'Importanza: {pct}%',
'notifications.center.empty': 'Nessuna notifica',
@@ -457,6 +474,7 @@ const it4: TranslationMap = {
'conversations.taskKanban.field.status': 'Status',
'conversations.taskKanban.field.title': 'Title',
'conversations.taskKanban.saveChanges': 'Save changes',
+ 'conversations.taskKanban.deleteCard': 'Delete',
'conversations.taskKanban.updateFailed': 'Could not update task; changes were not saved.',
};
diff --git a/app/src/lib/i18n/chunks/it-5.ts b/app/src/lib/i18n/chunks/it-5.ts
index 308866e62..6d0a35a72 100644
--- a/app/src/lib/i18n/chunks/it-5.ts
+++ b/app/src/lib/i18n/chunks/it-5.ts
@@ -565,6 +565,8 @@ const it5: TranslationMap = {
'skills.uninstall.confirmTitle': 'Disinstallare {name}?',
'conversations.taskKanban.blocked': 'Bloccato',
'conversations.taskKanban.done': 'Fatto',
+ 'conversations.taskKanban.pending': 'Pending',
+ 'conversations.taskKanban.working': 'Working',
'conversations.taskKanban.awaitingApproval': 'Awaiting approval',
'conversations.taskKanban.ready': 'Ready',
'conversations.taskKanban.rejected': 'Rejected',
diff --git a/app/src/lib/i18n/chunks/ko-1.ts b/app/src/lib/i18n/chunks/ko-1.ts
index c0533f418..48f50f677 100644
--- a/app/src/lib/i18n/chunks/ko-1.ts
+++ b/app/src/lib/i18n/chunks/ko-1.ts
@@ -175,6 +175,9 @@ const ko1: TranslationMap = {
'memory.noResults': '메모리를 찾을 수 없습니다',
'memory.empty': '아직 메모리가 없습니다. 메모리는 상호작용하면서 자동으로 생성됩니다.',
'memory.tab.memory': '메모리',
+ 'memory.tab.tasks': 'Agent Tasks',
+ 'memory.tab.tasksDescription':
+ 'Create and track tasks — your own to-dos plus the boards your agents build across conversations.',
'memory.tab.subconscious': '잠재의식',
'memory.tab.dreams': '꿈',
'memory.tab.calls': '통화',
diff --git a/app/src/lib/i18n/chunks/ko-2.ts b/app/src/lib/i18n/chunks/ko-2.ts
index f156ae9de..549205082 100644
--- a/app/src/lib/i18n/chunks/ko-2.ts
+++ b/app/src/lib/i18n/chunks/ko-2.ts
@@ -419,6 +419,42 @@ const ko2: TranslationMap = {
'자체 Composio API 키를 가져와 호출을 backend.composio.dev로 직접 라우팅',
'devOptions.menuComposioTriggers': '통합 트리거',
'devOptions.menuComposioTriggersDesc': 'Composio 통합 트리거에 대한 AI 심사 설정 구성',
+ 'settings.agents.title': 'Agents',
+ 'settings.agents.subtitle':
+ 'Manage the agents available for delegation — built-in defaults and your own custom agents.',
+ 'settings.agents.menuDesc': 'Manage built-in and custom agents',
+ 'settings.agents.newAgent': 'New agent',
+ 'settings.agents.loadError': "Couldn't load agents",
+ 'settings.agents.empty': 'No agents yet',
+ 'settings.agents.sourceDefault': 'Built-in',
+ 'settings.agents.sourceCustom': 'Custom',
+ 'settings.agents.enable': 'Enable agent',
+ 'settings.agents.disable': 'Disable agent',
+ 'settings.agents.edit': 'Edit',
+ 'settings.agents.delete': 'Delete',
+ 'settings.agents.reset': 'Reset to default',
+ 'settings.agents.modelLabel': 'Model',
+ 'settings.agents.toolsLabel': 'Tools',
+ 'settings.agents.toolsAll': 'All tools',
+ 'settings.agents.toolsCount': '{count} tools',
+ 'settings.agents.actionFailed': "Couldn't update the agent",
+ 'settings.agents.orchestratorLocked': 'The orchestrator is always enabled.',
+ 'settings.agents.editor.createTitle': 'New agent',
+ 'settings.agents.editor.editTitle': 'Edit agent',
+ 'settings.agents.editor.id': 'ID',
+ 'settings.agents.editor.idHint': 'Lowercase letters, numbers, _ and - only.',
+ 'settings.agents.editor.name': 'Name',
+ 'settings.agents.editor.description': 'Description',
+ 'settings.agents.editor.model': 'Model (optional)',
+ 'settings.agents.editor.modelPlaceholder': 'e.g. inherit, hint:fast, or a model id',
+ 'settings.agents.editor.systemPrompt': 'System prompt (optional)',
+ 'settings.agents.editor.tools': 'Allowed tools',
+ 'settings.agents.editor.toolsHint': 'One tool name per line. Use * for all tools.',
+ 'settings.agents.editor.defaultsNote':
+ 'Editing a built-in agent saves an override you can reset later.',
+ 'settings.agents.editor.save': 'Save',
+ 'settings.agents.editor.create': 'Create agent',
+ 'settings.agents.editor.saving': 'Saving…',
};
export default ko2;
diff --git a/app/src/lib/i18n/chunks/ko-4.ts b/app/src/lib/i18n/chunks/ko-4.ts
index 740eded01..64e4f200f 100644
--- a/app/src/lib/i18n/chunks/ko-4.ts
+++ b/app/src/lib/i18n/chunks/ko-4.ts
@@ -143,6 +143,23 @@ const ko4: TranslationMap = {
'intelligence.tasks.live': '실시간',
'intelligence.tasks.loadingBoards': '작업 보드 불러오는 중…',
'intelligence.tasks.threadPrefix': '스레드 {thread}',
+ 'intelligence.tasks.subtitle': 'Your tasks and agent task boards across the workspace.',
+ 'intelligence.tasks.newTask': 'New task',
+ 'intelligence.tasks.personalBoardTitle': 'Agent Tasks',
+ 'intelligence.tasks.personalEmpty': 'No personal tasks yet',
+ 'intelligence.tasks.composer.title': 'New task',
+ 'intelligence.tasks.composer.titleLabel': 'Title',
+ 'intelligence.tasks.composer.titlePlaceholder': 'What needs to be done?',
+ 'intelligence.tasks.composer.statusLabel': 'Status',
+ 'intelligence.tasks.composer.attachLabel': 'Attach to conversation',
+ 'intelligence.tasks.composer.attachNone': 'Personal (no conversation)',
+ 'intelligence.tasks.composer.objectiveLabel': 'Objective',
+ 'intelligence.tasks.composer.objectivePlaceholder': 'Optional — the desired outcome',
+ 'intelligence.tasks.composer.notesLabel': 'Notes',
+ 'intelligence.tasks.composer.notesPlaceholder': 'Optional notes',
+ 'intelligence.tasks.composer.create': 'Create task',
+ 'intelligence.tasks.composer.creating': 'Creating…',
+ 'intelligence.tasks.composer.createFailed': "Couldn't create the task",
'notifications.card.dismiss': '알림 닫기',
'notifications.card.importanceTitle': '중요도: {pct}%',
'notifications.center.empty': '아직 알림이 없습니다',
@@ -455,6 +472,7 @@ const ko4: TranslationMap = {
'conversations.taskKanban.field.status': 'Status',
'conversations.taskKanban.field.title': 'Title',
'conversations.taskKanban.saveChanges': 'Save changes',
+ 'conversations.taskKanban.deleteCard': 'Delete',
'conversations.taskKanban.updateFailed': 'Could not update task; changes were not saved.',
};
diff --git a/app/src/lib/i18n/chunks/ko-5.ts b/app/src/lib/i18n/chunks/ko-5.ts
index 3f76c4b13..acfa51468 100644
--- a/app/src/lib/i18n/chunks/ko-5.ts
+++ b/app/src/lib/i18n/chunks/ko-5.ts
@@ -436,6 +436,8 @@ const ko5: TranslationMap = {
'skills.uninstall.confirmTitle': '{name}을(를) 제거하시겠습니까?',
'conversations.taskKanban.blocked': '차단됨',
'conversations.taskKanban.done': '완료',
+ 'conversations.taskKanban.pending': 'Pending',
+ 'conversations.taskKanban.working': 'Working',
'conversations.taskKanban.awaitingApproval': 'Awaiting approval',
'conversations.taskKanban.ready': 'Ready',
'conversations.taskKanban.rejected': 'Rejected',
diff --git a/app/src/lib/i18n/chunks/pt-1.ts b/app/src/lib/i18n/chunks/pt-1.ts
index bfb6061dc..7d4c4d85e 100644
--- a/app/src/lib/i18n/chunks/pt-1.ts
+++ b/app/src/lib/i18n/chunks/pt-1.ts
@@ -182,6 +182,9 @@ const pt1: TranslationMap = {
'memory.empty':
'Nenhuma memória ainda. As memórias são criadas automaticamente conforme você interage.',
'memory.tab.memory': 'Memória',
+ 'memory.tab.tasks': 'Agent Tasks',
+ 'memory.tab.tasksDescription':
+ 'Create and track tasks — your own to-dos plus the boards your agents build across conversations.',
'memory.tab.subconscious': 'Subconsciente',
'memory.tab.dreams': 'Sonhos',
'memory.tab.calls': 'Chamadas',
diff --git a/app/src/lib/i18n/chunks/pt-2.ts b/app/src/lib/i18n/chunks/pt-2.ts
index 3088bda57..7b39d9e8b 100644
--- a/app/src/lib/i18n/chunks/pt-2.ts
+++ b/app/src/lib/i18n/chunks/pt-2.ts
@@ -443,6 +443,42 @@ const pt2: TranslationMap = {
'Definir configurações de triagem de IA para gatilhos de integração Composio',
'mic.deviceSelector': 'Dispositivo de microfone',
'mic.tapToSendCountdown': 'Toque para enviar ({seconds}s)',
+ 'settings.agents.title': 'Agents',
+ 'settings.agents.subtitle':
+ 'Manage the agents available for delegation — built-in defaults and your own custom agents.',
+ 'settings.agents.menuDesc': 'Manage built-in and custom agents',
+ 'settings.agents.newAgent': 'New agent',
+ 'settings.agents.loadError': "Couldn't load agents",
+ 'settings.agents.empty': 'No agents yet',
+ 'settings.agents.sourceDefault': 'Built-in',
+ 'settings.agents.sourceCustom': 'Custom',
+ 'settings.agents.enable': 'Enable agent',
+ 'settings.agents.disable': 'Disable agent',
+ 'settings.agents.edit': 'Edit',
+ 'settings.agents.delete': 'Delete',
+ 'settings.agents.reset': 'Reset to default',
+ 'settings.agents.modelLabel': 'Model',
+ 'settings.agents.toolsLabel': 'Tools',
+ 'settings.agents.toolsAll': 'All tools',
+ 'settings.agents.toolsCount': '{count} tools',
+ 'settings.agents.actionFailed': "Couldn't update the agent",
+ 'settings.agents.orchestratorLocked': 'The orchestrator is always enabled.',
+ 'settings.agents.editor.createTitle': 'New agent',
+ 'settings.agents.editor.editTitle': 'Edit agent',
+ 'settings.agents.editor.id': 'ID',
+ 'settings.agents.editor.idHint': 'Lowercase letters, numbers, _ and - only.',
+ 'settings.agents.editor.name': 'Name',
+ 'settings.agents.editor.description': 'Description',
+ 'settings.agents.editor.model': 'Model (optional)',
+ 'settings.agents.editor.modelPlaceholder': 'e.g. inherit, hint:fast, or a model id',
+ 'settings.agents.editor.systemPrompt': 'System prompt (optional)',
+ 'settings.agents.editor.tools': 'Allowed tools',
+ 'settings.agents.editor.toolsHint': 'One tool name per line. Use * for all tools.',
+ 'settings.agents.editor.defaultsNote':
+ 'Editing a built-in agent saves an override you can reset later.',
+ 'settings.agents.editor.save': 'Save',
+ 'settings.agents.editor.create': 'Create agent',
+ 'settings.agents.editor.saving': 'Saving…',
};
export default pt2;
diff --git a/app/src/lib/i18n/chunks/pt-4.ts b/app/src/lib/i18n/chunks/pt-4.ts
index 8cc0d814d..5b06c3d37 100644
--- a/app/src/lib/i18n/chunks/pt-4.ts
+++ b/app/src/lib/i18n/chunks/pt-4.ts
@@ -153,6 +153,23 @@ const pt4: TranslationMap = {
'intelligence.tasks.live': 'ao vivo',
'intelligence.tasks.loadingBoards': 'Carregando quadros de tarefas…',
'intelligence.tasks.threadPrefix': 'Tópico {thread}',
+ 'intelligence.tasks.subtitle': 'Your tasks and agent task boards across the workspace.',
+ 'intelligence.tasks.newTask': 'New task',
+ 'intelligence.tasks.personalBoardTitle': 'Agent Tasks',
+ 'intelligence.tasks.personalEmpty': 'No personal tasks yet',
+ 'intelligence.tasks.composer.title': 'New task',
+ 'intelligence.tasks.composer.titleLabel': 'Title',
+ 'intelligence.tasks.composer.titlePlaceholder': 'What needs to be done?',
+ 'intelligence.tasks.composer.statusLabel': 'Status',
+ 'intelligence.tasks.composer.attachLabel': 'Attach to conversation',
+ 'intelligence.tasks.composer.attachNone': 'Personal (no conversation)',
+ 'intelligence.tasks.composer.objectiveLabel': 'Objective',
+ 'intelligence.tasks.composer.objectivePlaceholder': 'Optional — the desired outcome',
+ 'intelligence.tasks.composer.notesLabel': 'Notes',
+ 'intelligence.tasks.composer.notesPlaceholder': 'Optional notes',
+ 'intelligence.tasks.composer.create': 'Create task',
+ 'intelligence.tasks.composer.creating': 'Creating…',
+ 'intelligence.tasks.composer.createFailed': "Couldn't create the task",
'notifications.card.dismiss': 'Dispensar notificação',
'notifications.card.importanceTitle': 'Importância: {pct}%',
'notifications.center.empty': 'Nenhuma notificação ainda',
@@ -455,6 +472,7 @@ const pt4: TranslationMap = {
'conversations.taskKanban.field.status': 'Status',
'conversations.taskKanban.field.title': 'Title',
'conversations.taskKanban.saveChanges': 'Save changes',
+ 'conversations.taskKanban.deleteCard': 'Delete',
'conversations.taskKanban.updateFailed': 'Could not update task; changes were not saved.',
};
diff --git a/app/src/lib/i18n/chunks/pt-5.ts b/app/src/lib/i18n/chunks/pt-5.ts
index 605d63f80..d75d67601 100644
--- a/app/src/lib/i18n/chunks/pt-5.ts
+++ b/app/src/lib/i18n/chunks/pt-5.ts
@@ -565,6 +565,8 @@ const pt5: TranslationMap = {
'skills.uninstall.confirmTitle': 'Desinstalar {name}?',
'conversations.taskKanban.blocked': 'Bloqueado',
'conversations.taskKanban.done': 'Concluído',
+ 'conversations.taskKanban.pending': 'Pending',
+ 'conversations.taskKanban.working': 'Working',
'conversations.taskKanban.awaitingApproval': 'Awaiting approval',
'conversations.taskKanban.ready': 'Ready',
'conversations.taskKanban.rejected': 'Rejected',
diff --git a/app/src/lib/i18n/chunks/ru-1.ts b/app/src/lib/i18n/chunks/ru-1.ts
index 552ea851e..6f6ebc7bc 100644
--- a/app/src/lib/i18n/chunks/ru-1.ts
+++ b/app/src/lib/i18n/chunks/ru-1.ts
@@ -176,6 +176,9 @@ const ru1: TranslationMap = {
'memory.noResults': 'Воспоминания не найдены',
'memory.empty': 'Воспоминаний пока нет. Они создаются автоматически в процессе общения.',
'memory.tab.memory': 'Память',
+ 'memory.tab.tasks': 'Agent Tasks',
+ 'memory.tab.tasksDescription':
+ 'Create and track tasks — your own to-dos plus the boards your agents build across conversations.',
'memory.tab.subconscious': 'Подсознание',
'memory.tab.dreams': 'Сны',
'memory.tab.calls': 'Звонки',
diff --git a/app/src/lib/i18n/chunks/ru-2.ts b/app/src/lib/i18n/chunks/ru-2.ts
index 0e1153d7d..a9d922fd2 100644
--- a/app/src/lib/i18n/chunks/ru-2.ts
+++ b/app/src/lib/i18n/chunks/ru-2.ts
@@ -438,6 +438,42 @@ const ru2: TranslationMap = {
'Настройка параметров сортировки AI для триггеров интеграции Composio',
'mic.deviceSelector': 'Микрофонное устройство',
'mic.tapToSendCountdown': 'Нажми для отправки ({seconds}с)',
+ 'settings.agents.title': 'Agents',
+ 'settings.agents.subtitle':
+ 'Manage the agents available for delegation — built-in defaults and your own custom agents.',
+ 'settings.agents.menuDesc': 'Manage built-in and custom agents',
+ 'settings.agents.newAgent': 'New agent',
+ 'settings.agents.loadError': "Couldn't load agents",
+ 'settings.agents.empty': 'No agents yet',
+ 'settings.agents.sourceDefault': 'Built-in',
+ 'settings.agents.sourceCustom': 'Custom',
+ 'settings.agents.enable': 'Enable agent',
+ 'settings.agents.disable': 'Disable agent',
+ 'settings.agents.edit': 'Edit',
+ 'settings.agents.delete': 'Delete',
+ 'settings.agents.reset': 'Reset to default',
+ 'settings.agents.modelLabel': 'Model',
+ 'settings.agents.toolsLabel': 'Tools',
+ 'settings.agents.toolsAll': 'All tools',
+ 'settings.agents.toolsCount': '{count} tools',
+ 'settings.agents.actionFailed': "Couldn't update the agent",
+ 'settings.agents.orchestratorLocked': 'The orchestrator is always enabled.',
+ 'settings.agents.editor.createTitle': 'New agent',
+ 'settings.agents.editor.editTitle': 'Edit agent',
+ 'settings.agents.editor.id': 'ID',
+ 'settings.agents.editor.idHint': 'Lowercase letters, numbers, _ and - only.',
+ 'settings.agents.editor.name': 'Name',
+ 'settings.agents.editor.description': 'Description',
+ 'settings.agents.editor.model': 'Model (optional)',
+ 'settings.agents.editor.modelPlaceholder': 'e.g. inherit, hint:fast, or a model id',
+ 'settings.agents.editor.systemPrompt': 'System prompt (optional)',
+ 'settings.agents.editor.tools': 'Allowed tools',
+ 'settings.agents.editor.toolsHint': 'One tool name per line. Use * for all tools.',
+ 'settings.agents.editor.defaultsNote':
+ 'Editing a built-in agent saves an override you can reset later.',
+ 'settings.agents.editor.save': 'Save',
+ 'settings.agents.editor.create': 'Create agent',
+ 'settings.agents.editor.saving': 'Saving…',
};
export default ru2;
diff --git a/app/src/lib/i18n/chunks/ru-4.ts b/app/src/lib/i18n/chunks/ru-4.ts
index 562f42fa2..6083955a2 100644
--- a/app/src/lib/i18n/chunks/ru-4.ts
+++ b/app/src/lib/i18n/chunks/ru-4.ts
@@ -152,6 +152,23 @@ const ru4: TranslationMap = {
'intelligence.tasks.live': 'в реальном времени',
'intelligence.tasks.loadingBoards': 'Загрузка досок задач…',
'intelligence.tasks.threadPrefix': 'Тред {thread}',
+ 'intelligence.tasks.subtitle': 'Your tasks and agent task boards across the workspace.',
+ 'intelligence.tasks.newTask': 'New task',
+ 'intelligence.tasks.personalBoardTitle': 'Agent Tasks',
+ 'intelligence.tasks.personalEmpty': 'No personal tasks yet',
+ 'intelligence.tasks.composer.title': 'New task',
+ 'intelligence.tasks.composer.titleLabel': 'Title',
+ 'intelligence.tasks.composer.titlePlaceholder': 'What needs to be done?',
+ 'intelligence.tasks.composer.statusLabel': 'Status',
+ 'intelligence.tasks.composer.attachLabel': 'Attach to conversation',
+ 'intelligence.tasks.composer.attachNone': 'Personal (no conversation)',
+ 'intelligence.tasks.composer.objectiveLabel': 'Objective',
+ 'intelligence.tasks.composer.objectivePlaceholder': 'Optional — the desired outcome',
+ 'intelligence.tasks.composer.notesLabel': 'Notes',
+ 'intelligence.tasks.composer.notesPlaceholder': 'Optional notes',
+ 'intelligence.tasks.composer.create': 'Create task',
+ 'intelligence.tasks.composer.creating': 'Creating…',
+ 'intelligence.tasks.composer.createFailed': "Couldn't create the task",
'notifications.card.dismiss': 'Закрыть уведомление',
'notifications.card.importanceTitle': 'Важность: {pct}%',
'notifications.center.empty': 'Уведомлений пока нет',
@@ -452,6 +469,7 @@ const ru4: TranslationMap = {
'conversations.taskKanban.field.status': 'Status',
'conversations.taskKanban.field.title': 'Title',
'conversations.taskKanban.saveChanges': 'Save changes',
+ 'conversations.taskKanban.deleteCard': 'Delete',
'conversations.taskKanban.updateFailed': 'Could not update task; changes were not saved.',
};
diff --git a/app/src/lib/i18n/chunks/ru-5.ts b/app/src/lib/i18n/chunks/ru-5.ts
index 8ffb4a2c8..4871645a5 100644
--- a/app/src/lib/i18n/chunks/ru-5.ts
+++ b/app/src/lib/i18n/chunks/ru-5.ts
@@ -561,6 +561,8 @@ const ru5: TranslationMap = {
'skills.uninstall.confirmTitle': 'Удалить {name}?',
'conversations.taskKanban.blocked': 'Заблокировано',
'conversations.taskKanban.done': 'Готово',
+ 'conversations.taskKanban.pending': 'Pending',
+ 'conversations.taskKanban.working': 'Working',
'conversations.taskKanban.awaitingApproval': 'Awaiting approval',
'conversations.taskKanban.ready': 'Ready',
'conversations.taskKanban.rejected': 'Rejected',
diff --git a/app/src/lib/i18n/chunks/zh-CN-1.ts b/app/src/lib/i18n/chunks/zh-CN-1.ts
index a1a660513..4bf16155d 100644
--- a/app/src/lib/i18n/chunks/zh-CN-1.ts
+++ b/app/src/lib/i18n/chunks/zh-CN-1.ts
@@ -171,6 +171,9 @@ const zhCN1: TranslationMap = {
'memory.noResults': '未找到记忆',
'memory.empty': '暂无记忆。记忆将在你交互时自动创建。',
'memory.tab.memory': '记忆',
+ 'memory.tab.tasks': 'Agent Tasks',
+ 'memory.tab.tasksDescription':
+ 'Create and track tasks — your own to-dos plus the boards your agents build across conversations.',
'memory.tab.subconscious': '潜意识',
'memory.tab.dreams': '梦境',
'memory.tab.calls': '调用记录',
diff --git a/app/src/lib/i18n/chunks/zh-CN-2.ts b/app/src/lib/i18n/chunks/zh-CN-2.ts
index 418b16ffe..903dc215a 100644
--- a/app/src/lib/i18n/chunks/zh-CN-2.ts
+++ b/app/src/lib/i18n/chunks/zh-CN-2.ts
@@ -406,6 +406,42 @@ const zhCN2: TranslationMap = {
'devOptions.menuComposioTriggersDesc': '为 Composio 集成触发器配置 AI 分级设置',
'mic.deviceSelector': '麦克风装置',
'mic.tapToSendCountdown': '点击发送 ({seconds}秒)',
+ 'settings.agents.title': 'Agents',
+ 'settings.agents.subtitle':
+ 'Manage the agents available for delegation — built-in defaults and your own custom agents.',
+ 'settings.agents.menuDesc': 'Manage built-in and custom agents',
+ 'settings.agents.newAgent': 'New agent',
+ 'settings.agents.loadError': "Couldn't load agents",
+ 'settings.agents.empty': 'No agents yet',
+ 'settings.agents.sourceDefault': 'Built-in',
+ 'settings.agents.sourceCustom': 'Custom',
+ 'settings.agents.enable': 'Enable agent',
+ 'settings.agents.disable': 'Disable agent',
+ 'settings.agents.edit': 'Edit',
+ 'settings.agents.delete': 'Delete',
+ 'settings.agents.reset': 'Reset to default',
+ 'settings.agents.modelLabel': 'Model',
+ 'settings.agents.toolsLabel': 'Tools',
+ 'settings.agents.toolsAll': 'All tools',
+ 'settings.agents.toolsCount': '{count} tools',
+ 'settings.agents.actionFailed': "Couldn't update the agent",
+ 'settings.agents.orchestratorLocked': 'The orchestrator is always enabled.',
+ 'settings.agents.editor.createTitle': 'New agent',
+ 'settings.agents.editor.editTitle': 'Edit agent',
+ 'settings.agents.editor.id': 'ID',
+ 'settings.agents.editor.idHint': 'Lowercase letters, numbers, _ and - only.',
+ 'settings.agents.editor.name': 'Name',
+ 'settings.agents.editor.description': 'Description',
+ 'settings.agents.editor.model': 'Model (optional)',
+ 'settings.agents.editor.modelPlaceholder': 'e.g. inherit, hint:fast, or a model id',
+ 'settings.agents.editor.systemPrompt': 'System prompt (optional)',
+ 'settings.agents.editor.tools': 'Allowed tools',
+ 'settings.agents.editor.toolsHint': 'One tool name per line. Use * for all tools.',
+ 'settings.agents.editor.defaultsNote':
+ 'Editing a built-in agent saves an override you can reset later.',
+ 'settings.agents.editor.save': 'Save',
+ 'settings.agents.editor.create': 'Create agent',
+ 'settings.agents.editor.saving': 'Saving…',
};
export default zhCN2;
diff --git a/app/src/lib/i18n/chunks/zh-CN-4.ts b/app/src/lib/i18n/chunks/zh-CN-4.ts
index 2e8476e09..cc2081ea2 100644
--- a/app/src/lib/i18n/chunks/zh-CN-4.ts
+++ b/app/src/lib/i18n/chunks/zh-CN-4.ts
@@ -149,6 +149,23 @@ const zhCN4: TranslationMap = {
'intelligence.tasks.live': '实时',
'intelligence.tasks.loadingBoards': '正在加载任务看板…',
'intelligence.tasks.threadPrefix': '对话',
+ 'intelligence.tasks.subtitle': 'Your tasks and agent task boards across the workspace.',
+ 'intelligence.tasks.newTask': 'New task',
+ 'intelligence.tasks.personalBoardTitle': 'Agent Tasks',
+ 'intelligence.tasks.personalEmpty': 'No personal tasks yet',
+ 'intelligence.tasks.composer.title': 'New task',
+ 'intelligence.tasks.composer.titleLabel': 'Title',
+ 'intelligence.tasks.composer.titlePlaceholder': 'What needs to be done?',
+ 'intelligence.tasks.composer.statusLabel': 'Status',
+ 'intelligence.tasks.composer.attachLabel': 'Attach to conversation',
+ 'intelligence.tasks.composer.attachNone': 'Personal (no conversation)',
+ 'intelligence.tasks.composer.objectiveLabel': 'Objective',
+ 'intelligence.tasks.composer.objectivePlaceholder': 'Optional — the desired outcome',
+ 'intelligence.tasks.composer.notesLabel': 'Notes',
+ 'intelligence.tasks.composer.notesPlaceholder': 'Optional notes',
+ 'intelligence.tasks.composer.create': 'Create task',
+ 'intelligence.tasks.composer.creating': 'Creating…',
+ 'intelligence.tasks.composer.createFailed': "Couldn't create the task",
'notifications.card.dismiss': '忽略通知',
'notifications.card.importanceTitle': '重要性',
'notifications.center.empty': '暂无通知',
@@ -443,6 +460,7 @@ const zhCN4: TranslationMap = {
'conversations.taskKanban.field.status': 'Status',
'conversations.taskKanban.field.title': 'Title',
'conversations.taskKanban.saveChanges': 'Save changes',
+ 'conversations.taskKanban.deleteCard': 'Delete',
'conversations.taskKanban.updateFailed': 'Could not update task; changes were not saved.',
};
diff --git a/app/src/lib/i18n/chunks/zh-CN-5.ts b/app/src/lib/i18n/chunks/zh-CN-5.ts
index 5786db46c..337963d89 100644
--- a/app/src/lib/i18n/chunks/zh-CN-5.ts
+++ b/app/src/lib/i18n/chunks/zh-CN-5.ts
@@ -533,6 +533,8 @@ const zhCN5: TranslationMap = {
'skills.uninstall.confirmTitle': '卸载 {name}?',
'conversations.taskKanban.blocked': '已阻塞',
'conversations.taskKanban.done': '已完成',
+ 'conversations.taskKanban.pending': 'Pending',
+ 'conversations.taskKanban.working': 'Working',
'conversations.taskKanban.awaitingApproval': 'Awaiting approval',
'conversations.taskKanban.ready': 'Ready',
'conversations.taskKanban.rejected': 'Rejected',
diff --git a/app/src/lib/i18n/en.ts b/app/src/lib/i18n/en.ts
index 17e37afe2..1c3efbb1e 100644
--- a/app/src/lib/i18n/en.ts
+++ b/app/src/lib/i18n/en.ts
@@ -292,6 +292,9 @@ const en: TranslationMap = {
'memory.noResults': 'No memories found',
'memory.empty': 'No memories yet. Memories are created automatically as you interact.',
'memory.tab.memory': 'Memory',
+ 'memory.tab.tasks': 'Agent Tasks',
+ 'memory.tab.tasksDescription':
+ 'Create and track tasks — your own to-dos plus the boards your agents build across conversations.',
'memory.tab.subconscious': 'Subconscious',
'memory.tab.dreams': 'Dreams',
'memory.tab.calls': 'Calls',
@@ -2548,6 +2551,7 @@ const en: TranslationMap = {
'conversations.taskKanban.field.status': 'Status',
'conversations.taskKanban.field.title': 'Title',
'conversations.taskKanban.saveChanges': 'Save changes',
+ 'conversations.taskKanban.deleteCard': 'Delete',
'conversations.taskKanban.updateFailed': 'Could not update task; changes were not saved.',
'conversations.toolTimeline.turn': 'turn',
'conversations.toolTimeline.workerThread': 'worker thread',
@@ -2636,6 +2640,23 @@ const en: TranslationMap = {
'intelligence.tasks.live': 'live',
'intelligence.tasks.loadingBoards': 'Loading task boards…',
'intelligence.tasks.threadPrefix': 'Thread {id}',
+ 'intelligence.tasks.subtitle': 'Your tasks and agent task boards across the workspace.',
+ 'intelligence.tasks.newTask': 'New task',
+ 'intelligence.tasks.personalBoardTitle': 'Agent Tasks',
+ 'intelligence.tasks.personalEmpty': 'No personal tasks yet',
+ 'intelligence.tasks.composer.title': 'New task',
+ 'intelligence.tasks.composer.titleLabel': 'Title',
+ 'intelligence.tasks.composer.titlePlaceholder': 'What needs to be done?',
+ 'intelligence.tasks.composer.statusLabel': 'Status',
+ 'intelligence.tasks.composer.attachLabel': 'Attach to conversation',
+ 'intelligence.tasks.composer.attachNone': 'Personal (no conversation)',
+ 'intelligence.tasks.composer.objectiveLabel': 'Objective',
+ 'intelligence.tasks.composer.objectivePlaceholder': 'Optional — the desired outcome',
+ 'intelligence.tasks.composer.notesLabel': 'Notes',
+ 'intelligence.tasks.composer.notesPlaceholder': 'Optional notes',
+ 'intelligence.tasks.composer.create': 'Create task',
+ 'intelligence.tasks.composer.creating': 'Creating…',
+ 'intelligence.tasks.composer.createFailed': "Couldn't create the task",
'notifications.card.dismiss': 'Dismiss notification',
'notifications.card.importanceTitle': 'Importance: {pct}%',
'notifications.center.empty': 'No notifications yet',
@@ -4025,6 +4046,8 @@ const en: TranslationMap = {
'skills.uninstall.confirmTitle': 'Uninstall {name}?',
'conversations.taskKanban.blocked': 'Blocked',
'conversations.taskKanban.done': 'Done',
+ 'conversations.taskKanban.pending': 'Pending',
+ 'conversations.taskKanban.working': 'Working',
'conversations.taskKanban.awaitingApproval': 'Awaiting approval',
'conversations.taskKanban.ready': 'Ready',
'conversations.taskKanban.rejected': 'Rejected',
@@ -4199,6 +4222,42 @@ const en: TranslationMap = {
'skills.new.title': 'Create a skill',
'skills.new.placeholderBody':
'Authoring form arrives soon. For now, use the “New skill” button on the runner page.',
+ 'settings.agents.title': 'Agents',
+ 'settings.agents.subtitle':
+ 'Manage the agents available for delegation — built-in defaults and your own custom agents.',
+ 'settings.agents.menuDesc': 'Manage built-in and custom agents',
+ 'settings.agents.newAgent': 'New agent',
+ 'settings.agents.loadError': "Couldn't load agents",
+ 'settings.agents.empty': 'No agents yet',
+ 'settings.agents.sourceDefault': 'Built-in',
+ 'settings.agents.sourceCustom': 'Custom',
+ 'settings.agents.enable': 'Enable agent',
+ 'settings.agents.disable': 'Disable agent',
+ 'settings.agents.edit': 'Edit',
+ 'settings.agents.delete': 'Delete',
+ 'settings.agents.reset': 'Reset to default',
+ 'settings.agents.modelLabel': 'Model',
+ 'settings.agents.toolsLabel': 'Tools',
+ 'settings.agents.toolsAll': 'All tools',
+ 'settings.agents.toolsCount': '{count} tools',
+ 'settings.agents.actionFailed': "Couldn't update the agent",
+ 'settings.agents.orchestratorLocked': 'The orchestrator is always enabled.',
+ 'settings.agents.editor.createTitle': 'New agent',
+ 'settings.agents.editor.editTitle': 'Edit agent',
+ 'settings.agents.editor.id': 'ID',
+ 'settings.agents.editor.idHint': 'Lowercase letters, numbers, _ and - only.',
+ 'settings.agents.editor.name': 'Name',
+ 'settings.agents.editor.description': 'Description',
+ 'settings.agents.editor.model': 'Model (optional)',
+ 'settings.agents.editor.modelPlaceholder': 'e.g. inherit, hint:fast, or a model id',
+ 'settings.agents.editor.systemPrompt': 'System prompt (optional)',
+ 'settings.agents.editor.tools': 'Allowed tools',
+ 'settings.agents.editor.toolsHint': 'One tool name per line. Use * for all tools.',
+ 'settings.agents.editor.defaultsNote':
+ 'Editing a built-in agent saves an override you can reset later.',
+ 'settings.agents.editor.save': 'Save',
+ 'settings.agents.editor.create': 'Create agent',
+ 'settings.agents.editor.saving': 'Saving…',
};
export default en;
diff --git a/app/src/pages/Intelligence.tsx b/app/src/pages/Intelligence.tsx
index 414c1aa15..fd185aeb9 100644
--- a/app/src/pages/Intelligence.tsx
+++ b/app/src/pages/Intelligence.tsx
@@ -3,8 +3,6 @@ import { useCallback, useEffect, useState } from 'react';
import { ConfirmationModal } from '../components/intelligence/ConfirmationModal';
import DiagramViewerTab from '../components/intelligence/DiagramViewerTab';
import GraphCentralityTab from '../components/intelligence/GraphCentralityTab';
-import IntelligenceCallsTab from '../components/intelligence/IntelligenceCallsTab';
-import IntelligenceDreamsTab from '../components/intelligence/IntelligenceDreamsTab';
import IntelligenceSubconsciousTab from '../components/intelligence/IntelligenceSubconsciousTab';
import IntelligenceTasksTab from '../components/intelligence/IntelligenceTasksTab';
import { MemoryWorkspace } from '../components/intelligence/MemoryWorkspace';
@@ -21,19 +19,12 @@ import type {
ToastNotification,
} from '../types/intelligence';
-type IntelligenceTab =
- | 'memory'
- | 'subconscious'
- | 'calls'
- | 'dreams'
- | 'tasks'
- | 'diagram'
- | 'centrality';
+type IntelligenceTab = 'memory' | 'subconscious' | 'tasks' | 'diagram' | 'centrality';
export default function Intelligence() {
const { t } = useT();
- const [activeTab, setActiveTab] = useState('memory');
+ const [activeTab, setActiveTab] = useState('tasks');
// The legacy header pills (system-status + Ingesting/Queued chips) were
// sourced from `useConsciousItems` + `useMemoryIngestionStatus`. They are
@@ -96,15 +87,15 @@ export default function Intelligence() {
}
}, [socketConnected, socketManager]);
- const tabs: { id: IntelligenceTab; label: string; comingSoon?: boolean }[] = [
- { id: 'memory', label: t('memory.tab.memory') },
- { id: 'subconscious', label: t('memory.tab.subconscious') },
- { id: 'tasks', label: 'Tasks' },
- { id: 'diagram', label: t('memory.tab.diagram') },
- { id: 'calls', label: t('memory.tab.calls') },
- { id: 'dreams', label: t('memory.tab.dreams') },
- { id: 'centrality', label: t('memory.tab.centrality') },
- ];
+ const tabs: { id: IntelligenceTab; label: string; description?: string; comingSoon?: boolean }[] =
+ [
+ { id: 'tasks', label: t('memory.tab.tasks'), description: t('memory.tab.tasksDescription') },
+ { id: 'memory', label: t('memory.tab.memory') },
+ { id: 'subconscious', label: t('memory.tab.subconscious') },
+ { id: 'diagram', label: t('memory.tab.diagram') },
+ { id: 'centrality', label: t('memory.tab.centrality') },
+ ];
+ const activeTabDef = tabs.find(tab => tab.id === activeTab);
return (
@@ -136,14 +127,21 @@ export default function Intelligence() {
- {/* Header */}
+ {/* Header — reflects the active tab so the panel title matches
+ what's shown below it (e.g. "Agent Tasks" on the Tasks tab),
+ rather than a static "Memory". */}
,
-}));
-
vi.mock('../../hooks/useConsciousItems', () => ({
useConsciousItems: () => ({ isRunning: false }),
}));
diff --git a/app/src/pages/conversations/components/TaskKanbanBoard.tsx b/app/src/pages/conversations/components/TaskKanbanBoard.tsx
index 5a3dc1421..5daa7322a 100644
--- a/app/src/pages/conversations/components/TaskKanbanBoard.tsx
+++ b/app/src/pages/conversations/components/TaskKanbanBoard.tsx
@@ -15,13 +15,18 @@ import type { TaskBoard, TaskBoardCard, TaskBoardCardStatus } from '../../../typ
type ColumnDef = { status: TaskBoardCardStatus; labelKey: string };
+// The board surfaces exactly three columns — Pending / Working / Done. The
+// richer status set the core tracks (approval flow, blocked, rejected) is
+// bucketed into these three via `columnFor`.
const COLUMN_DEFS: ColumnDef[] = [
- { status: 'todo', labelKey: 'conversations.taskKanban.todo' },
- { status: 'in_progress', labelKey: 'conversations.taskKanban.inProgress' },
- { status: 'blocked', labelKey: 'conversations.taskKanban.blocked' },
+ { status: 'todo', labelKey: 'conversations.taskKanban.pending' },
+ { status: 'in_progress', labelKey: 'conversations.taskKanban.working' },
{ status: 'done', labelKey: 'conversations.taskKanban.done' },
];
+/** The three statuses a user can set directly from the board. */
+const COLUMN_STATUSES = COLUMN_DEFS.map(column => column.status);
+
const STATUS_INDEX = new Map(COLUMN_DEFS.map((column, index) => [column.status, index]));
/** Label key for *every* status, including the approval-flow statuses that
@@ -31,33 +36,32 @@ const STATUS_INDEX = new Map(COLUMN_DEFS.map((column, index) => [column.status,
* React warns about and which renders as the first option, hiding the real
* status from the user). */
const STATUS_LABEL_KEYS: Record = {
- todo: 'conversations.taskKanban.todo',
+ todo: 'conversations.taskKanban.pending',
awaiting_approval: 'conversations.taskKanban.awaitingApproval',
ready: 'conversations.taskKanban.ready',
- in_progress: 'conversations.taskKanban.inProgress',
+ in_progress: 'conversations.taskKanban.working',
blocked: 'conversations.taskKanban.blocked',
done: 'conversations.taskKanban.done',
rejected: 'conversations.taskKanban.rejected',
};
-const ALL_STATUSES = Object.keys(STATUS_LABEL_KEYS) as TaskBoardCardStatus[];
-
-/** Whether a status owns a kanban column (vs the approval-flow statuses that
- * are bucketed into an existing column). */
+/** Whether a status owns a kanban column (vs the approval-flow / terminal
+ * statuses that are bucketed into an existing column). */
function isColumnStatus(status: TaskBoardCardStatus): boolean {
return STATUS_INDEX.has(status);
}
-/** Map a card status to the column it renders under. The approval-flow
- * statuses don't get their own columns: pre-execution ones sit in `todo`,
- * `rejected` sits with `blocked`. */
+/** Map a card status to the column it renders under. Pre-execution approval
+ * statuses sit in `Pending`; `blocked` and `rejected` are surfaced under
+ * `Done` so the board stays a clean three-column Pending / Working / Done. */
function columnFor(status: TaskBoardCardStatus): TaskBoardCardStatus {
switch (status) {
case 'awaiting_approval':
case 'ready':
return 'todo';
+ case 'blocked':
case 'rejected':
- return 'blocked';
+ return 'done';
default:
return status;
}
@@ -66,8 +70,12 @@ function columnFor(status: TaskBoardCardStatus): TaskBoardCardStatus {
interface TaskKanbanBoardProps {
board: TaskBoard;
disabled?: boolean;
+ /** Hide the board's own "Tasks" title row — used where the caller already
+ * renders a heading for the board, to avoid a doubled-up title. */
+ hideHeader?: boolean;
onMove?: (card: TaskBoardCard, status: TaskBoardCardStatus) => void;
onUpdateCard?: (card: TaskBoardCard, nextCard: TaskBoardCard) => void;
+ onDeleteCard?: (card: TaskBoardCard) => void;
/** Approve/reject a card awaiting plan approval. */
onDecidePlan?: (card: TaskBoardCard, approve: boolean) => void;
}
@@ -75,8 +83,10 @@ interface TaskKanbanBoardProps {
export function TaskKanbanBoard({
board,
disabled = false,
+ hideHeader = false,
onMove,
onUpdateCard,
+ onDeleteCard,
onDecidePlan,
}: TaskKanbanBoardProps) {
const { t } = useT();
@@ -108,16 +118,18 @@ export function TaskKanbanBoard({
};
return (
-