Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions crates/config/src/app_mode.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@ impl AppMode {
/// `Auto` remains an internal variant while the real implementation is
/// redesigned; do not expose it through user-facing mode selection (#3733).
/// `Yolo` is kept for parse/back-compat only and is not in the Tab cycle.
/// Operate joins the visible cycle because ordinary messages can now
/// coordinate background workers without requiring a Workflow definition.
/// Operate joins the visible cycle as the always-on pod operation:
/// a lead plans slices, then workers execute against an optional burn rate.
pub const CYCLE: [Self; 3] = [Self::Plan, Self::Agent, Self::Operate];

#[must_use]
Expand Down Expand Up @@ -113,7 +113,9 @@ impl AppMode {
}
AppMode::Yolo => "Act mode with Full Access (legacy compatibility setting)",
AppMode::Plan => "Plan mode - research and design before implementing",
AppMode::Operate => "Operate mode - send tasks while Fleet workers run in parallel",
AppMode::Operate => {
"Operate mode - always-on pod operation: lead plans, optional $/time burn rate, workers follow the plan"
}
}
}

Expand Down
8 changes: 8 additions & 0 deletions crates/tui/locales/ca.json
Original file line number Diff line number Diff line change
Expand Up @@ -1808,6 +1808,14 @@
"ProviderTemplateOpened": "S'ha obert la plantilla de proveïdor '{id}'. Introduïu només la clau API.",
"ProviderTemplateUnknown": "Plantilla de proveïdor desconeguda '{id}'.",
"ProviderTemplateOpenedEnvOnly": "S'ha obert la plantilla integrada '{id}'. Introduïu el nom de la variable d'entorn de la clau API i deseu. No enganxeu la clau crua.",
"OperateBoardHeader": "Operate {id} [{status}] ritme={pace} escriptors={writers}",
"OperateBoardBurnObserved": "despesa ${actual}/h observats vs ${target}/h objectiu",
"OperateBoardBurnNoCap": "despesa Sense límit",
"OperateBoardDirectionEmpty": "direcció (buida — blocat en espera)",
"OperateBoardDirectionLine": "direcció {line}",
"OperateBoardPlanMissing": "plaLíder (cap — treballadors no admesos)",
"OperateBoardPlanHeader": "plaLíder id propietari inici dur est$ depèn títol",
"OperateBoardGantt": "gantt temps →",
"ConfigCategoryAppearance": "Aparença",
"ConfigCategoryModelsProviders": "Models i proveïdors",
"ConfigCategoryPod": "Pod",
Expand Down
8 changes: 8 additions & 0 deletions crates/tui/locales/de.json
Original file line number Diff line number Diff line change
Expand Up @@ -1808,6 +1808,14 @@
"ProviderTemplateOpened": "Provider-Vorlage '{id}' geöffnet. Nur den API-Schlüssel eingeben.",
"ProviderTemplateUnknown": "Unbekannte Provider-Vorlage '{id}'.",
"ProviderTemplateOpenedEnvOnly": "Eingebaute Vorlage '{id}' geöffnet. Geben Sie den Umgebungsvariablennamen des API-Schlüssels ein und speichern Sie. Keinen Rohschlüssel einfügen.",
"OperateBoardHeader": "Operate {id} [{status}] Tempo={pace} Schreiber={writers}",
"OperateBoardBurnObserved": "Verbrauch ${actual}/Std. beobachtet vs ${target}/Std. Ziel",
"OperateBoardBurnNoCap": "Verbrauch Kein Limit",
"OperateBoardDirectionEmpty": "Richtung (leer — im Leerlauf blockiert)",
"OperateBoardDirectionLine": "Richtung {line}",
"OperateBoardPlanMissing": "Lead-Plan (keiner — Worker nicht zugelassen)",
"OperateBoardPlanHeader": "Lead-Plan id Besitzer Start Dauer gesch$ hängt ab Titel",
"OperateBoardGantt": "Gantt Zeit →",
"ConfigCategoryAppearance": "Darstellung",
"ConfigCategoryModelsProviders": "Modelle & Anbieter",
"ConfigCategoryPod": "Pod",
Expand Down
8 changes: 8 additions & 0 deletions crates/tui/locales/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -1808,6 +1808,14 @@
"ProviderTemplateOpened": "Provider template '{id}' opened. Enter an API key only.",
"ProviderTemplateUnknown": "Unknown provider template '{id}'.",
"ProviderTemplateOpenedEnvOnly": "Built-in template '{id}' opened. Enter the API key env var name, then save. Do not paste a raw key.",
"OperateBoardHeader": "Operate {id} [{status}] pace={pace} writers={writers}",
"OperateBoardBurnObserved": "burn ${actual}/hr observed vs ${target}/hr target",
"OperateBoardBurnNoCap": "burn No cap",
"OperateBoardDirectionEmpty": "direction (empty — idle-blocked)",
"OperateBoardDirectionLine": "direction {line}",
"OperateBoardPlanMissing": "leadPlan (none — workers not admitted)",
"OperateBoardPlanHeader": "leadPlan id owner start dur est$ depends title",
"OperateBoardGantt": "gantt time →",
"ConfigCategoryAppearance": "Appearance",
"ConfigCategoryModelsProviders": "Models & providers",
"ConfigCategoryPod": "Pod",
Expand Down
8 changes: 8 additions & 0 deletions crates/tui/locales/es-419.json
Original file line number Diff line number Diff line change
Expand Up @@ -1808,6 +1808,14 @@
"ProviderTemplateOpened": "Plantilla de proveedor '{id}' abierta. Introduce solo la API key.",
"ProviderTemplateUnknown": "Plantilla de proveedor desconocida '{id}'.",
"ProviderTemplateOpenedEnvOnly": "Plantilla integrada '{id}' abierta. Escribe el nombre de la variable de entorno de la API key y guarda. No pegues la clave cruda.",
"OperateBoardHeader": "Operate {id} [{status}] ritmo={pace} escritores={writers}",
"OperateBoardBurnObserved": "gasto ${actual}/h observado vs ${target}/h objetivo",
"OperateBoardBurnNoCap": "gasto Sin límite",
"OperateBoardDirectionEmpty": "dirección (vacía — bloqueado por inactividad)",
"OperateBoardDirectionLine": "dirección {line}",
"OperateBoardPlanMissing": "planLíder (ninguno — trabajadores no admitidos)",
"OperateBoardPlanHeader": "planLíder id dueño inicio dur est$ depende título",
"OperateBoardGantt": "gantt tiempo →",
"ConfigCategoryAppearance": "Apariencia",
"ConfigCategoryModelsProviders": "Modelos y proveedores",
"ConfigCategoryPod": "Pod",
Expand Down
8 changes: 8 additions & 0 deletions crates/tui/locales/fr.json
Original file line number Diff line number Diff line change
Expand Up @@ -1808,6 +1808,14 @@
"ProviderTemplateOpened": "Modèle de fournisseur '{id}' ouvert. Saisissez uniquement la clé API.",
"ProviderTemplateUnknown": "Modèle de fournisseur inconnu '{id}'.",
"ProviderTemplateOpenedEnvOnly": "Modèle intégré '{id}' ouvert. Saisissez le nom de la variable d'environnement de la clé API, puis enregistrez. Ne collez pas la clé brute.",
"OperateBoardHeader": "Operate {id} [{status}] allure={pace} rédacteurs={writers}",
"OperateBoardBurnObserved": "dépense ${actual}/h observée vs ${target}/h cible",
"OperateBoardBurnNoCap": "dépense Sans plafond",
"OperateBoardDirectionEmpty": "direction (vide — bloquée en veille)",
"OperateBoardDirectionLine": "direction {line}",
"OperateBoardPlanMissing": "plan du lead (aucun — workers non admis)",
"OperateBoardPlanHeader": "plan du lead id propriétaire début dur est$ dépend titre",
"OperateBoardGantt": "gantt temps →",
"ConfigCategoryAppearance": "Apparence",
"ConfigCategoryModelsProviders": "Modèles et fournisseurs",
"ConfigCategoryPod": "Pod",
Expand Down
8 changes: 8 additions & 0 deletions crates/tui/locales/hi.json
Original file line number Diff line number Diff line change
Expand Up @@ -1808,6 +1808,14 @@
"ProviderTemplateOpened": "प्रोवाइडर टेम्पलेट '{id}' खुला। केवल API कुंजी दर्ज करें।",
"ProviderTemplateUnknown": "अज्ञात प्रोवाइडर टेम्पलेट '{id}'।",
"ProviderTemplateOpenedEnvOnly": "अंतर्निहित टेम्पलेट '{id}' खुला। API कुंजी का पर्यावरण चर नाम दर्ज कर सहेजें; कच्ची कुंजी न चिपकाएँ।",
"OperateBoardHeader": "Operate {id} [{status}] गति={pace} लेखक={writers}",
"OperateBoardBurnObserved": "खर्च देखा गया ${actual}/घंटा बनाम लक्ष्य ${target}/घंटा",
"OperateBoardBurnNoCap": "खर्च कोई सीमा नहीं",
"OperateBoardDirectionEmpty": "दिशा (खाली — निष्क्रिय अवरुद्ध)",
"OperateBoardDirectionLine": "दिशा {line}",
"OperateBoardPlanMissing": "लीड योजना (कोई नहीं — वर्कर स्वीकृत नहीं)",
"OperateBoardPlanHeader": "लीड योजना id स्वामी प्रारंभ अवधि अनुमान$ निर्भर शीर्षक",
"OperateBoardGantt": "गैंट समय →",
"ConfigCategoryAppearance": "रूप",
"ConfigCategoryModelsProviders": "मॉडल और प्रदाता",
"ConfigCategoryPod": "Pod",
Expand Down
8 changes: 8 additions & 0 deletions crates/tui/locales/id.json
Original file line number Diff line number Diff line change
Expand Up @@ -1808,6 +1808,14 @@
"ProviderTemplateOpened": "Templat penyedia '{id}' dibuka. Masukkan API key saja.",
"ProviderTemplateUnknown": "Templat penyedia tidak dikenal '{id}'.",
"ProviderTemplateOpenedEnvOnly": "Templat bawaan '{id}' dibuka. Masukkan nama variabel lingkungan API key, lalu simpan. Jangan tempel kunci mentah.",
"OperateBoardHeader": "Operate {id} [{status}] laju={pace} penulis={writers}",
"OperateBoardBurnObserved": "pembakaran teramati ${actual}/jam vs target ${target}/jam",
"OperateBoardBurnNoCap": "pembakaran Tanpa batas",
"OperateBoardDirectionEmpty": "arah (kosong — diblokir menganggur)",
"OperateBoardDirectionLine": "arah {line}",
"OperateBoardPlanMissing": "rencana lead (belum ada — pekerja belum diizinkan)",
"OperateBoardPlanHeader": "rencana lead id pemilik mulai dur est$ bergantung judul",
"OperateBoardGantt": "gantt waktu →",
"ConfigCategoryAppearance": "Tampilan",
"ConfigCategoryModelsProviders": "Model & penyedia",
"ConfigCategoryPod": "Pod",
Expand Down
8 changes: 8 additions & 0 deletions crates/tui/locales/ja.json
Original file line number Diff line number Diff line change
Expand Up @@ -1808,6 +1808,14 @@
"ProviderTemplateOpened": "プロバイダテンプレート '{id}' を開きました。API キーだけ入力してください。",
"ProviderTemplateUnknown": "未知のプロバイダテンプレート '{id}'。",
"ProviderTemplateOpenedEnvOnly": "組み込みテンプレート '{id}' を開きました。生のキーではなく API キーの環境変数名を入力して保存してください。",
"OperateBoardHeader": "Operate {id} [{status}] ペース={pace} ライター={writers}",
"OperateBoardBurnObserved": "バーン 観測 ${actual}/時 vs 目標 ${target}/時",
"OperateBoardBurnNoCap": "バーン 上限なし",
"OperateBoardDirectionEmpty": "方向 (空 — アイドルブロック中)",
"OperateBoardDirectionLine": "方向 {line}",
"OperateBoardPlanMissing": "リード計画 (なし — ワーカーは未許可)",
"OperateBoardPlanHeader": "リード計画 id 所有者 開始 長さ 推定$ 依存 タイトル",
"OperateBoardGantt": "ガント 時間 →",
"ConfigCategoryAppearance": "外観",
"ConfigCategoryModelsProviders": "モデルとプロバイダー",
"ConfigCategoryPod": "Pod",
Expand Down
8 changes: 8 additions & 0 deletions crates/tui/locales/ko.json
Original file line number Diff line number Diff line change
Expand Up @@ -1808,6 +1808,14 @@
"ProviderTemplateOpened": "프로바이더 템플릿 '{id}'을(를) 열었습니다. API 키만 입력하세요.",
"ProviderTemplateUnknown": "알 수 없는 프로바이더 템플릿 '{id}'.",
"ProviderTemplateOpenedEnvOnly": "내장 템플릿 '{id}'을(를) 열었습니다. 원시 키가 아니라 API 키 환경 변수 이름을 입력한 뒤 저장하세요.",
"OperateBoardHeader": "Operate {id} [{status}] 페이스={pace} 작성자={writers}",
"OperateBoardBurnObserved": "소진 관측 ${actual}/시간 vs 목표 ${target}/시간",
"OperateBoardBurnNoCap": "소진 상한 없음",
"OperateBoardDirectionEmpty": "방향 (비어 있음 — 대기 차단)",
"OperateBoardDirectionLine": "방향 {line}",
"OperateBoardPlanMissing": "리드 계획 (없음 — 워커 미승인)",
"OperateBoardPlanHeader": "리드 계획 id 소유자 시작 길이 예상$ 의존 제목",
"OperateBoardGantt": "간트 시간 →",
"ConfigCategoryAppearance": "모양",
"ConfigCategoryModelsProviders": "모델 및 제공자",
"ConfigCategoryPod": "Pod",
Expand Down
8 changes: 8 additions & 0 deletions crates/tui/locales/pt-BR.json
Original file line number Diff line number Diff line change
Expand Up @@ -1808,6 +1808,14 @@
"ProviderTemplateOpened": "Modelo de provedor '{id}' aberto. Informe só a API key.",
"ProviderTemplateUnknown": "Modelo de provedor desconhecido '{id}'.",
"ProviderTemplateOpenedEnvOnly": "Modelo embutido '{id}' aberto. Informe o nome da variável de ambiente da API key e salve. Não cole a chave crua.",
"OperateBoardHeader": "Operate {id} [{status}] ritmo={pace} escritores={writers}",
"OperateBoardBurnObserved": "gasto ${actual}/h observado vs ${target}/h alvo",
"OperateBoardBurnNoCap": "gasto Sem limite",
"OperateBoardDirectionEmpty": "direção (vazia — bloqueado por ociosidade)",
"OperateBoardDirectionLine": "direção {line}",
"OperateBoardPlanMissing": "planoLíder (nenhum — trabalhadores não admitidos)",
"OperateBoardPlanHeader": "planoLíder id dono início dur est$ depende título",
"OperateBoardGantt": "gantt tempo →",
"ConfigCategoryAppearance": "Aparência",
"ConfigCategoryModelsProviders": "Modelos e provedores",
"ConfigCategoryPod": "Pod",
Expand Down
8 changes: 8 additions & 0 deletions crates/tui/locales/ru.json
Original file line number Diff line number Diff line change
Expand Up @@ -1808,6 +1808,14 @@
"ProviderTemplateOpened": "Открыт шаблон провайдера '{id}'. Введите только API-ключ.",
"ProviderTemplateUnknown": "Неизвестный шаблон провайдера '{id}'.",
"ProviderTemplateOpenedEnvOnly": "Открыт встроенный шаблон '{id}'. Введите имя переменной окружения API-ключа и сохраните. Не вставляйте сырой ключ.",
"OperateBoardHeader": "Operate {id} [{status}] темп={pace} писателей={writers}",
"OperateBoardBurnObserved": "расход наблюдается ${actual}/ч против цель ${target}/ч",
"OperateBoardBurnNoCap": "расход Без лимита",
"OperateBoardDirectionEmpty": "направление (пусто — блокировано в простое)",
"OperateBoardDirectionLine": "направление {line}",
"OperateBoardPlanMissing": "план лида (нет — воркеры не допущены)",
"OperateBoardPlanHeader": "план лида id владелец старт длит. оценка$ зависит название",
"OperateBoardGantt": "гант время →",
"ConfigCategoryAppearance": "Оформление",
"ConfigCategoryModelsProviders": "Модели и провайдеры",
"ConfigCategoryPod": "Pod",
Expand Down
8 changes: 8 additions & 0 deletions crates/tui/locales/uk.json
Original file line number Diff line number Diff line change
Expand Up @@ -1808,6 +1808,14 @@
"ProviderTemplateOpened": "Відкрито шаблон провайдера '{id}'. Введіть лише API-ключ.",
"ProviderTemplateUnknown": "Невідомий шаблон провайдера '{id}'.",
"ProviderTemplateOpenedEnvOnly": "Відкрито вбудований шаблон '{id}'. Введіть ім’я змінної середовища API-ключа і збережіть. Не вставляйте сирий ключ.",
"OperateBoardHeader": "Operate {id} [{status}] темп={pace} авторів={writers}",
"OperateBoardBurnObserved": "витрата спостерігається ${actual}/год проти ціль ${target}/год",
"OperateBoardBurnNoCap": "витрата Без обмеження",
"OperateBoardDirectionEmpty": "напрям (порожній — заблоковано в простої)",
"OperateBoardDirectionLine": "напрям {line}",
"OperateBoardPlanMissing": "план ліда (немає — воркери не допущені)",
"OperateBoardPlanHeader": "план ліда id власник старт тривалість орієнтовно$ залежить назва",
"OperateBoardGantt": "гант час →",
"ConfigCategoryAppearance": "Оформлення",
"ConfigCategoryModelsProviders": "Моделі та провайдери",
"ConfigCategoryPod": "Pod",
Expand Down
8 changes: 8 additions & 0 deletions crates/tui/locales/vi.json
Original file line number Diff line number Diff line change
Expand Up @@ -1808,6 +1808,14 @@
"ProviderTemplateOpened": "Đã mở mẫu nhà cung cấp '{id}'. Chỉ cần nhập API key.",
"ProviderTemplateUnknown": "Mẫu nhà cung cấp không rõ '{id}'.",
"ProviderTemplateOpenedEnvOnly": "Đã mở mẫu có sẵn '{id}'. Nhập tên biến môi trường API key rồi lưu; đừng dán khóa thô.",
"OperateBoardHeader": "Operate {id} [{status}] nhịp={pace} người viết={writers}",
"OperateBoardBurnObserved": "tiêu hao quan sát ${actual}/giờ so với mục tiêu ${target}/giờ",
"OperateBoardBurnNoCap": "tiêu hao Không giới hạn",
"OperateBoardDirectionEmpty": "định hướng (trống — bị chặn nhàn rỗi)",
"OperateBoardDirectionLine": "định hướng {line}",
"OperateBoardPlanMissing": "kế hoạch trưởng (chưa có — worker chưa được nhận)",
"OperateBoardPlanHeader": "kế hoạch trưởng id chủ sở hữu bắt đầu thời lượng chi phí phụ thuộc tiêu đề",
"OperateBoardGantt": "gantt thời gian →",
"ConfigCategoryAppearance": "Giao diện",
"ConfigCategoryModelsProviders": "Mô hình & nhà cung cấp",
"ConfigCategoryPod": "Pod",
Expand Down
8 changes: 8 additions & 0 deletions crates/tui/locales/zh-Hans.json
Original file line number Diff line number Diff line change
Expand Up @@ -1808,6 +1808,14 @@
"ProviderTemplateOpened": "已打开提供商模板 '{id}'。只需输入 API 密钥。",
"ProviderTemplateUnknown": "未知提供商模板 '{id}'。",
"ProviderTemplateOpenedEnvOnly": "已打开内置模板 '{id}'。请填写 API 密钥环境变量名后保存,不要粘贴原始密钥。",
"OperateBoardHeader": "Operate {id} [{status}] 节奏={pace} 写手={writers}",
"OperateBoardBurnObserved": "消耗 观测 ${actual}/时 vs 目标 ${target}/时",
"OperateBoardBurnNoCap": "消耗 无上限",
"OperateBoardDirectionEmpty": "方向 (为空 — 空转受阻)",
"OperateBoardDirectionLine": "方向 {line}",
"OperateBoardPlanMissing": "领队计划 (无 — 工作单元未获准)",
"OperateBoardPlanHeader": "领队计划 id 负责人 开始 时长 预估$ 依赖 标题",
"OperateBoardGantt": "甘特图 时间 →",
"ConfigCategoryAppearance": "外观",
"ConfigCategoryModelsProviders": "模型与提供商",
"ConfigCategoryPod": "Pod",
Expand Down
8 changes: 8 additions & 0 deletions crates/tui/locales/zh-Hant.json
Original file line number Diff line number Diff line change
Expand Up @@ -1808,6 +1808,14 @@
"ProviderTemplateOpened": "已開啟提供商範本 '{id}'。只需輸入 API 金鑰。",
"ProviderTemplateUnknown": "未知提供商範本 '{id}'。",
"ProviderTemplateOpenedEnvOnly": "已開啟內建範本 '{id}'。請填入 API 金鑰環境變數名後儲存,不要貼上原始金鑰。",
"OperateBoardHeader": "Operate {id} [{status}] 節奏={pace} 寫手={writers}",
"OperateBoardBurnObserved": "消耗 觀測 ${actual}/時 vs 目標 ${target}/時",
"OperateBoardBurnNoCap": "消耗 無上限",
"OperateBoardDirectionEmpty": "方向 (為空 — 閒置受阻)",
"OperateBoardDirectionLine": "方向 {line}",
"OperateBoardPlanMissing": "領隊計畫 (無 — 工作單元未獲准)",
"OperateBoardPlanHeader": "領隊計畫 id 負責人 開始 時長 預估$ 相依 標題",
"OperateBoardGantt": "甘特圖 時間 →",
"ConfigCategoryAppearance": "外觀",
"ConfigCategoryModelsProviders": "模型與提供者",
"ConfigCategoryPod": "Pod",
Expand Down
4 changes: 3 additions & 1 deletion crates/tui/src/automation_manager.rs
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,9 @@ use uuid::Uuid;
use crate::task_manager::{NewTaskRequest, SharedTaskManager, TaskStatus};
use crate::utils::spawn_supervised;

const CURRENT_AUTOMATION_SCHEMA_VERSION: u32 = 1;
/// Current automation record schema. `pub(crate)` so the Operate keepalive
/// can build a fixed-id record directly (no create/delete id swap).
pub(crate) const CURRENT_AUTOMATION_SCHEMA_VERSION: u32 = 1;
const CURRENT_RUN_SCHEMA_VERSION: u32 = 1;
const CURRENT_TRIGGER_SCHEMA_VERSION: u32 = 1;
const DEFAULT_AUTOMATION_MODE: &str = "agent";
Expand Down
1 change: 1 addition & 0 deletions crates/tui/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,7 @@ mod models_dev_live;
mod native_memory;
mod network_policy;
mod oauth;
mod operate;
mod palette;
mod plugins;
mod prefix_cache;
Expand Down
Loading
Loading