mirror of
https://github.com/Termix-SSH/Termix.git
synced 2026-10-29 22:55:24 +00:00
* feat(ai): add host coding agent sessions with configured providers * Wait for agent initialization and shutdown before resuming sessions * Keep Pi transcripts outside its configuration migration directory * Cover Pi session directory separation * Update core permission catalog expectations for remote agents * Install remote agent runtimes from verified official sources * Wait for the identity panel credentials request in its test * Add scoped SSH forwarding setup for remote agents * Verify forwarding setup through a fresh SSH connection * Bound the SSH forwarding verification timeout * Return the forwarding verification callback result * fix(ai): support agent send and interrupt keyboard shortcuts * feat(ai): add agent queues attachments worktrees and session recovery * fix(ai): handle deleted workspace paths and duplicate status events * fix(ai): accept file references in root workspaces * fix(ai): refresh paused queues after agent errors * fix(ai): store agent sessions in plugin tables and lock down OpenCode Agent sessions lived in a single ctx.kv value holding up to 2000 events, which passed the 256 KB kv limit within minutes of a normal run. Every save after that failed, so history, nativeId, queue and archive changes were lost and every event wrote a kv audit row. Sessions, events and queued prompts now have their own tables. A running agent appends events in batches at most once a second with a lazy save; session and queue changes save immediately. Prompts, drafts and stored event text are capped in UTF-8 bytes to fit MySQL TEXT. kv:own is no longer requested. The OpenCode server now requires a per-session password, so other local accounts on the host cannot drive the agent through its loopback port. * test(upgrade): include agent session tables in the reviewed upgrade SQL
196 lines
11 KiB
JSON
196 lines
11 KiB
JSON
{
|
||
"permissions": {
|
||
"use": {
|
||
"title": "השתמש בעוזר",
|
||
"description": "פתח את העוזר ושאל אותו דברים."
|
||
},
|
||
"manage_providers": {
|
||
"title": "ניהול ספקים",
|
||
"description": "הוספה, עריכה והסרה של ספקי הבינה המלאכותית ואת מפתחות ה-API שלהם."
|
||
},
|
||
"apply_proposals": {
|
||
"title": "החלת הצעות",
|
||
"description": "תן לעוזר לבצע את השינויים שהוא מציע."
|
||
},
|
||
"services.use": {
|
||
"title": "השתמש בבינה מלאכותית מתכונות אחרות",
|
||
"description": "ייתכן שתכונות אחרות יתקשרו לעוזר בשמך."
|
||
},
|
||
"secrets.share": {
|
||
"title": "שתף את מפתח ה-API",
|
||
"description": "תכונות אחרות עשויות להשתמש במפתח ה-API של בינה מלאכותית המאוחסן מבלי לראות אותו."
|
||
}
|
||
},
|
||
"settings": {
|
||
"assistantUnavailable": "עוזר הבינה המלאכותית כבוי בשרת הזה.",
|
||
"providersNeedOptIn": "הפעל את עוזר הבינה המלאכותית למעלה כדי להוסיף ספקים.",
|
||
"admin": {
|
||
"globallyEnabled": {
|
||
"label": "עוזר בינה מלאכותית",
|
||
"description": "אפשר למשתמשים להפעיל את עוזר הבינה המלאכותית. כאשר זה כבוי, העוזר מוסתר וחסום עבור כולם."
|
||
},
|
||
"privateEndpoints": {
|
||
"label": "מארחים פרטיים של בינה מלאכותית מורשים",
|
||
"description": "מארחים ברשת הפרטית שלך שמשתמשים יכולים להפנות אליהם ספק, כגון Ollama המאוחסן בעצמו. שים מארח אחד בכל שורה."
|
||
}
|
||
},
|
||
"host": {
|
||
"enableAiAssistant": {
|
||
"label": "הפעל את עוזר הבינה המלאכותית",
|
||
"description": "אפשר לעוזר הבינה המלאכותית לסייע במסוף של מארח זה. כבוי כברירת מחדל, ועדיין נדרשת הפעלת בינה מלאכותית עבור חשבונך."
|
||
}
|
||
}
|
||
},
|
||
"ai": {
|
||
"title": "עוֹזֵר",
|
||
"send": "לִשְׁלוֹחַ",
|
||
"stop": "לְהַפְסִיק",
|
||
"save": "לְהַצִיל",
|
||
"cancel": "לְבַטֵל",
|
||
"running": "רִיצָה",
|
||
"approve": "לְאַשֵׁר",
|
||
"reject": "לִדחוֹת",
|
||
"inputPlaceholder": "שאל לגבי המלצרים שלך, או תאר שינוי להציע",
|
||
"selectProvider": "בחר ספק",
|
||
"providerSettings": "הגדרות ספק",
|
||
"addProvider": "הוסף ספק",
|
||
"editProvider": "עריכת ספק",
|
||
"removeProvider": "הסר ספק",
|
||
"providerType": "ספק",
|
||
"providerLabel": "שֵׁם",
|
||
"providerLabelPlaceholder": "לדוגמה: אולמה מקומית",
|
||
"baseUrl": "כתובת השרת",
|
||
"apiKey": "מפתח API",
|
||
"defaultModel": "מודל ברירת מחדל",
|
||
"defaultModelPlaceholder": "לדוגמה: llama3.1 או claude-opus-5",
|
||
"labelRequired": "תן שם לספק הזה",
|
||
"providerSaveFailed": "לא ניתן היה לשמור את הספק",
|
||
"providerUpdated": "הספק עודכן",
|
||
"providerDeleteFailed": "לא ניתן היה להסיר את הספק",
|
||
"privateEndpointHint": "כתובות ברשת הפרטית שלך דורשות תחילה אישור ממנהל מערכת למארח.",
|
||
"providerOllama": "אולמה",
|
||
"providerAnthropic": "אנתרופי",
|
||
"providerOpenai": "בינה מלאכותית פתוחה",
|
||
"providerGemini": "גוגל ג'מיני",
|
||
"providerOpenaiCompatible": "תואם ל-OpenAI",
|
||
"toolArguments": "קֶלֶט",
|
||
"toolResult": "תוֹצָאָה",
|
||
"statusApplied": "יישומי",
|
||
"statusRejected": "נִדחֶה",
|
||
"proposalApplied": "השינוי הוחל",
|
||
"proposalApplyFailed": "לא ניתן היה להחיל את השינוי",
|
||
"proposalRejectFailed": "לא ניתן היה לדחות את השינוי",
|
||
"enableTitle": "הפעל את עוזר הבינה המלאכותית",
|
||
"enableDescription": "תן לעוזר לקרוא את ההגדרות שלך ולהציע שינויים לאישור.",
|
||
"readOnlyCommands": "אפשר פקודות אבחון לקריאה בלבד",
|
||
"readOnlyCommandsDescription": "העוזר יכול להריץ רשימה קצרה של פקודות בטוחות כמו df ו-uptime מבלי לשאול בכל פעם. כל דבר שמשנה שרת תמיד מוצע ראשון.",
|
||
"modelDetectFailed": "לא ניתן היה להגיע לספק, לכן זוהי רשימה כללית. ניתן להקליד כל שם דגם.",
|
||
"modelCustom": "הזן שם דגם",
|
||
"modelRefresh": "רענון הרשימה",
|
||
"modelPlaceholder": "בחר או הקלד מודל",
|
||
"attachHint": "הקלד @ כדי להפנות למארח, קטע טקסט או אוטומציה. שינויים מוצעים לאישורך.",
|
||
"runCommandTitle": "הפעלה של הפקודה",
|
||
"assistant": "עוזר בינה מלאכותית",
|
||
"terminalPanelEmpty": "שאל את העוזר לגבי המארח הזה. כל שינוי במצב דורש תחילה את אישורך.",
|
||
"terminalPanelPlaceholder": "שאל על המארח הזה...",
|
||
"noProvidersConfigured": "עדיין לא הוגדר ספק בינה מלאכותית. הוסף אחד בכרטיסייה עוזר בינה מלאכותית.",
|
||
"runsInOpenTerminal": "פועל בסשן הטרמינל הפתוח שלך.",
|
||
"runInTerminal": "לָרוּץ",
|
||
"terminalContextPrefill": "הנה פלט הטרמינל שלי:\n\n{{output}}\n\n",
|
||
"secrets": {
|
||
"shareApiKey": "אפשרו לתכונות אחרות להשתמש במפתח ה-API של ספק הבינה המלאכותית שלכם עבור בקשות משלהן. המפתח לעולם לא יועתק, ותוכלו לבטל אותו בכל עת."
|
||
}
|
||
},
|
||
"nav": {
|
||
"ai": "בינה מלאכותית"
|
||
},
|
||
"onboarding": {
|
||
"aiTitle": "עוזר בינה מלאכותית",
|
||
"aiIntro": "טרמיקס יכול לכלול עוזר בינה מלאכותית אופציונלי. ניתן לשנות זאת מאוחר יותר בהגדרות.",
|
||
"aiSkipTitle": "תעזוב את זה",
|
||
"aiSkipDesc": "טרמיקס עובד כמו שהוא עובד עכשיו. העוזר נשאר מוסתר.",
|
||
"aiEnableTitle": "הפעל אותו",
|
||
"aiEnableDesc": "מוסיף עוזר שקורא את ההגדרות שלך ומציע שינויים שאתה מאשר. נדרש ספק שאתה מספק, כגון אולמה מקומי.",
|
||
"aiNote": "שום דבר לא נשלח לשום מקום עד שתוסיף ספק ותשלח הודעה."
|
||
},
|
||
"hosts": {
|
||
"docsLink": "הצג מסמכים"
|
||
},
|
||
"agents": {
|
||
"title": "AI Agent",
|
||
"permissionTitle": "Run remote AI agents",
|
||
"permissionDescription": "Start coding agents on SSH hosts using configured AI providers. Agents can execute commands and change files as the SSH user.",
|
||
"new": "New session",
|
||
"description": "Run an agent in a directory on this host using a Termix AI provider.",
|
||
"runtime": "Agent",
|
||
"provider": "Termix provider",
|
||
"chooseProvider": "Choose a compatible provider",
|
||
"model": "Model",
|
||
"directory": "Working directory",
|
||
"executable": "Executable (optional absolute path)",
|
||
"requirements": "The host needs Node.js 22.19+ and the selected agent installed. SSH remote loopback forwarding must be allowed. Existing agent configurations are not overwritten.",
|
||
"responsesRequired": "Codex requires a Responses API endpoint. A Chat Completions-only endpoint cannot run Codex.",
|
||
"piPermissions": "Pi tools run with this SSH account’s permissions. Only launch in a directory you authorize the agent to modify.",
|
||
"start": "Start agent",
|
||
"resume": "Resume",
|
||
"stop": "Stop session",
|
||
"interrupt": "Interrupt turn",
|
||
"send": "Send",
|
||
"prompt": "Ask the agent to work in this directory…",
|
||
"noSessions": "No agent sessions for this host.",
|
||
"approval": "Agent needs your decision",
|
||
"answer": "Answer (JSON for structured questions)",
|
||
"allow": "Allow once",
|
||
"deny": "Deny",
|
||
"tool": "Tool activity",
|
||
"streamFailed": "Agent stream disconnected. Reopen the session to reconnect.",
|
||
"status": {
|
||
"starting": "Starting",
|
||
"ready": "Ready",
|
||
"running": "Working",
|
||
"stopped": "Stopped",
|
||
"error": "Error"
|
||
},
|
||
"installRuntime": "Install selected agent and Node.js",
|
||
"installSource": "Official sources only: nodejs.org (SHA-256 verified) and registry.npmjs.org (locked package integrity). Installs for the SSH user in ~/.local/share/termix-agent-runtime; requires curl, tar, and Linux/macOS x64 or arm64. Does not change SSH forwarding policy.",
|
||
"installSucceeded": "Installation verified. You can now start the agent; SSH loopback remote forwarding must also be allowed.",
|
||
"installFailed": "Installation failed. Review the log and retry.",
|
||
"installLog": "Installation log",
|
||
"enableForwarding": "Enable Agent forwarding",
|
||
"forwardingScope": "Linux with systemd/OpenSSH; requires root or passwordless sudo. Backs up and validates SSH configuration, then reloads it. Only the current SSH account and observed connection source receive loopback remote forwarding; existing local forwarding is preserved. Failed changes are rolled back.",
|
||
"forwardingSucceeded": "SSH loopback remote forwarding is ready. Start or resume the agent to open a new SSH connection.",
|
||
"forwardingFailed": "SSH forwarding configuration failed. Review the log; no unvalidated configuration is kept.",
|
||
"search": "Search sessions",
|
||
"showArchived": "Show archived",
|
||
"sessionName": "Session name",
|
||
"rename": "Rename",
|
||
"archive": "Archive and stop",
|
||
"restore": "Restore session",
|
||
"queue": "Queued messages",
|
||
"enqueue": "Queue message",
|
||
"continueQueue": "Continue queue",
|
||
"pauseQueue": "Pause queue",
|
||
"editQueued": "Edit queued message",
|
||
"save": "Save",
|
||
"remove": "Remove",
|
||
"upload": "Upload attachment",
|
||
"remoteFile": "File path inside working directory",
|
||
"attach": "Attach file",
|
||
"attachments": "Reuse a session attachment",
|
||
"pasteImage": "Paste an image in the composer. Up to 4 attachments, 1 MiB each.",
|
||
"attachmentLimit": "Up to 4 attachments, 1 MiB each",
|
||
"review": "Git changes and worktrees",
|
||
"gitStatus": "Refresh Git status",
|
||
"diffFile": "File path to review",
|
||
"diff": "View diff",
|
||
"branch": "New branch name",
|
||
"createWorktree": "Create worktree",
|
||
"useWorktree": "New session in this worktree",
|
||
"worktreeHint": "Creates a new branch from HEAD. Uncommitted changes stay in the current directory. Existing worktrees are never deleted automatically.",
|
||
"clean": "No changes",
|
||
"reconnecting": "Reconnecting and restoring messages…",
|
||
"unavailable": "Session is no longer accessible. Check your permissions or sign in again.",
|
||
"shortcuts": "Enter sends or queues · Shift+Enter adds a line · Esc interrupts and pauses the queue"
|
||
}
|
||
}
|