Adjust skills
This commit is contained in:
@@ -13,8 +13,15 @@ import { ChannelUsers } from "@/components/channel-users/channel-users";
|
||||
import { AssignedUsersPanel } from "@/components/tenants/assigned-users-panel";
|
||||
import { SubscriptionToggle } from "@/components/tenants/subscription-toggle";
|
||||
import { formatDateTime, formatRelative } from "@/lib/format";
|
||||
import { CHANNEL_PACKAGE_IDS } from "@/lib/packages";
|
||||
|
||||
const CHANNEL_PACKAGES = ["telegram", "discord", "email"];
|
||||
// CHANNEL_PACKAGES used to be a hardcoded literal here
|
||||
// (`["telegram", "discord", "email"]`). It now derives from the
|
||||
// portal-side catalog so adding a new channel anywhere only requires
|
||||
// editing src/lib/packages.ts. The `email` channel was dropped as
|
||||
// part of the Phase A package-model rework — IMAP/SMTP is now the
|
||||
// `mail` skill instead.
|
||||
const CHANNEL_PACKAGES = CHANNEL_PACKAGE_IDS;
|
||||
|
||||
export default async function TenantDetailPage({
|
||||
params,
|
||||
|
||||
@@ -8,7 +8,10 @@ import { useRouter } from "next/navigation";
|
||||
const CHANNEL_ID_HELP: Record<string, string> = {
|
||||
telegram: "telegramIdHelp",
|
||||
discord: "discordIdHelp",
|
||||
email: "emailIdHelp",
|
||||
// email entry dropped in the Phase A rework — IMAP/SMTP is handled by
|
||||
// the `mail` skill (category=skill, not channel), so it never appears
|
||||
// in `enabledChannels`. If a future channel is added to the catalog,
|
||||
// give it an entry here so the help blurb renders.
|
||||
};
|
||||
|
||||
interface ChannelUsersProps {
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
import { useState, useCallback, useEffect, useRef } from "react";
|
||||
import { useTranslations } from "next-intl";
|
||||
import { Card } from "@/components/ui/card";
|
||||
import { PACKAGE_CATALOG, type PackageDef } from "@/lib/packages";
|
||||
import { PACKAGE_CATALOG, DEFAULT_PACKAGE_IDS, type PackageDef } from "@/lib/packages";
|
||||
import { isPersonalOrgName, displayOrgNameFor } from "@/lib/personal-org";
|
||||
import {
|
||||
configureStepSchema,
|
||||
@@ -69,6 +69,7 @@ translation, and general question answering.
|
||||
`;
|
||||
|
||||
const CATEGORIES = [
|
||||
{ key: "core" as const, labelKey: "categories.core" },
|
||||
{ key: "channel" as const, labelKey: "categories.channels" },
|
||||
{ key: "skill" as const, labelKey: "categories.skills" },
|
||||
] as const;
|
||||
@@ -198,7 +199,11 @@ export function OnboardingWizard({
|
||||
agentName: "Assistant",
|
||||
soulMd: FALLBACK_SOUL.replace("{company}", displayOrgName),
|
||||
agentsMd: FALLBACK_AGENTS,
|
||||
packages: [] as string[],
|
||||
// CORE defaults: heartbeat + cron pre-selected so the assistant
|
||||
// can be proactive and run scheduled tasks out of the box.
|
||||
// Customers can untoggle either before submitting. core-voice
|
||||
// stays unselected — its toggle is disabled until Phase B.
|
||||
packages: [...DEFAULT_PACKAGE_IDS] as string[],
|
||||
billingAddress: {
|
||||
// For personal accounts, leave the company field empty — it'll
|
||||
// appear on invoices. The user can still type something if they
|
||||
@@ -691,7 +696,7 @@ export function OnboardingWizard({
|
||||
<button
|
||||
type="button"
|
||||
onClick={() => togglePackage(pkg.id)}
|
||||
className="w-full flex items-center justify-between px-3 py-2.5 cursor-pointer hover:bg-surface-3/30 transition-colors"
|
||||
className="w-full flex items-center justify-between px-3 py-2.5 transition-colors cursor-pointer hover:bg-surface-3/30"
|
||||
>
|
||||
<div className="text-left">
|
||||
<span
|
||||
|
||||
@@ -15,6 +15,7 @@ interface Props {
|
||||
}
|
||||
|
||||
const CATEGORIES = [
|
||||
{ key: "core" as const, labelKey: "categories.core" },
|
||||
{ key: "channel" as const, labelKey: "categories.channels" },
|
||||
{ key: "skill" as const, labelKey: "categories.skills" },
|
||||
] as const;
|
||||
|
||||
@@ -1,9 +1,32 @@
|
||||
/**
|
||||
* Portal-side package catalog. Hardcoded mirror of the operator-side
|
||||
* catalog ConfigMap (deploy/helm/pieced-operator/templates/catalog-cm.yaml).
|
||||
*
|
||||
* The two have to stay in sync:
|
||||
* - `id` here must match the catalog key in the ConfigMap.
|
||||
* - `secrets[].key` here must match the catalog's env_vars[].secret_key
|
||||
* so that POST /api/tenants/:name/secrets writes to the same OpenBao
|
||||
* path the operator's ExternalSecret reads from.
|
||||
* - `requiresSecrets` is true when the catalog declares any env_var
|
||||
* that is a secret (vault_path_suffix set, no default value).
|
||||
*
|
||||
* Category model (Phase A rework):
|
||||
* - core — platform-behaviour toggles (heartbeat, cron,
|
||||
* active-memory, voice). Mostly no secrets. core-voice is
|
||||
* a catalog stub in Phase A — toggling stores customer
|
||||
* intent only; the OCI config_patch lands in Phase B.
|
||||
* - channel — messaging integration.
|
||||
* - skill — ClawHub skill install.
|
||||
*/
|
||||
|
||||
export interface PackageSecretField {
|
||||
key: string;
|
||||
labelKey: string;
|
||||
placeholderKey: string;
|
||||
}
|
||||
|
||||
export type PackageCategory = "core" | "channel" | "skill";
|
||||
|
||||
export interface PackageDef {
|
||||
id: string;
|
||||
name: string;
|
||||
@@ -12,10 +35,45 @@ export interface PackageDef {
|
||||
secrets?: PackageSecretField[];
|
||||
instructionsKey?: string;
|
||||
disclaimerKey?: string;
|
||||
category: "channel" | "skill";
|
||||
category: PackageCategory;
|
||||
}
|
||||
|
||||
export const PACKAGE_CATALOG: PackageDef[] = [
|
||||
// -------------------------------------------------------------------------
|
||||
// CORE
|
||||
// -------------------------------------------------------------------------
|
||||
{
|
||||
id: "core-heartbeat",
|
||||
name: "Heartbeat (Proactive Checks)",
|
||||
descriptionKey: "packages.coreHeartbeat.description",
|
||||
requiresSecrets: false,
|
||||
category: "core",
|
||||
},
|
||||
{
|
||||
id: "core-cron",
|
||||
name: "Scheduled Tasks (Cron)",
|
||||
descriptionKey: "packages.coreCron.description",
|
||||
requiresSecrets: false,
|
||||
category: "core",
|
||||
},
|
||||
{
|
||||
id: "core-active-memory",
|
||||
name: "Active Memory",
|
||||
descriptionKey: "packages.coreActiveMemory.description",
|
||||
requiresSecrets: false,
|
||||
category: "core",
|
||||
},
|
||||
{
|
||||
id: "core-voice",
|
||||
name: "Voice Interaction",
|
||||
descriptionKey: "packages.coreVoice.description",
|
||||
requiresSecrets: false,
|
||||
category: "core",
|
||||
},
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// CHANNELS
|
||||
// -------------------------------------------------------------------------
|
||||
{
|
||||
id: "telegram",
|
||||
name: "Telegram",
|
||||
@@ -43,42 +101,181 @@ export const PACKAGE_CATALOG: PackageDef[] = [
|
||||
labelKey: "packages.discord.botTokenLabel",
|
||||
placeholderKey: "packages.discord.botTokenPlaceholder",
|
||||
},
|
||||
// app-id was missing from the portal catalog historically while the
|
||||
// operator catalog declared DISCORD_APP_ID as a required env var.
|
||||
// Tenants who enabled Discord ended up with the env var blank
|
||||
// because the secrets POST never wrote an `app-id` key to OpenBao
|
||||
// and the operator's ExternalSecret couldn't populate it. Added
|
||||
// here as part of the Phase A rework to close the alignment gap;
|
||||
// not strictly secret (the application ID is visible in the bot's
|
||||
// profile URL) but stored alongside the bot token for convenience.
|
||||
{
|
||||
key: "app-id",
|
||||
labelKey: "packages.discord.appIdLabel",
|
||||
placeholderKey: "packages.discord.appIdPlaceholder",
|
||||
},
|
||||
],
|
||||
instructionsKey: "packages.discord.instructions",
|
||||
disclaimerKey: "packages.discord.disclaimer",
|
||||
category: "channel",
|
||||
},
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// SKILLS
|
||||
// -------------------------------------------------------------------------
|
||||
{
|
||||
id: "email",
|
||||
name: "Email",
|
||||
descriptionKey: "packages.email.description",
|
||||
requiresSecrets: true,
|
||||
secrets: [
|
||||
{ key: "smtp-host", labelKey: "packages.email.smtpHostLabel", placeholderKey: "packages.email.smtpHostPlaceholder" },
|
||||
{ key: "smtp-user", labelKey: "packages.email.smtpUserLabel", placeholderKey: "packages.email.smtpUserPlaceholder" },
|
||||
{ key: "smtp-password", labelKey: "packages.email.smtpPasswordLabel", placeholderKey: "packages.email.smtpPasswordPlaceholder" },
|
||||
{ key: "imap-host", labelKey: "packages.email.imapHostLabel", placeholderKey: "packages.email.imapHostPlaceholder" },
|
||||
],
|
||||
instructionsKey: "packages.email.instructions",
|
||||
disclaimerKey: "packages.email.disclaimer",
|
||||
category: "channel",
|
||||
},
|
||||
{
|
||||
id: "web-search",
|
||||
name: "Web Search",
|
||||
descriptionKey: "packages.webSearch.description",
|
||||
id: "git-cli",
|
||||
name: "Git CLI",
|
||||
descriptionKey: "packages.gitCli.description",
|
||||
requiresSecrets: false,
|
||||
category: "skill",
|
||||
},
|
||||
{
|
||||
id: "document-processing",
|
||||
name: "Document Processing",
|
||||
descriptionKey: "packages.documentProcessing.description",
|
||||
id: "github",
|
||||
name: "GitHub (gh CLI)",
|
||||
descriptionKey: "packages.github.description",
|
||||
requiresSecrets: true,
|
||||
secrets: [
|
||||
{
|
||||
key: "token",
|
||||
labelKey: "packages.github.tokenLabel",
|
||||
placeholderKey: "packages.github.tokenPlaceholder",
|
||||
},
|
||||
],
|
||||
instructionsKey: "packages.github.instructions",
|
||||
category: "skill",
|
||||
},
|
||||
{
|
||||
id: "gitea",
|
||||
name: "Gitea",
|
||||
descriptionKey: "packages.gitea.description",
|
||||
requiresSecrets: true,
|
||||
secrets: [
|
||||
{
|
||||
key: "token",
|
||||
labelKey: "packages.gitea.tokenLabel",
|
||||
placeholderKey: "packages.gitea.tokenPlaceholder",
|
||||
},
|
||||
],
|
||||
instructionsKey: "packages.gitea.instructions",
|
||||
category: "skill",
|
||||
},
|
||||
{
|
||||
id: "whisper-self-hosted",
|
||||
name: "Whisper (Self-Hosted Transcription)",
|
||||
descriptionKey: "packages.whisperSelfHosted.description",
|
||||
requiresSecrets: false,
|
||||
category: "skill",
|
||||
},
|
||||
{
|
||||
id: "searxng-local-search",
|
||||
name: "Web Search (SearXNG)",
|
||||
descriptionKey: "packages.searxngLocalSearch.description",
|
||||
requiresSecrets: false,
|
||||
category: "skill",
|
||||
},
|
||||
{
|
||||
id: "gog",
|
||||
name: "Google Workspace (Gog)",
|
||||
descriptionKey: "packages.gog.description",
|
||||
requiresSecrets: true,
|
||||
secrets: [
|
||||
{
|
||||
key: "client-id",
|
||||
labelKey: "packages.gog.clientIdLabel",
|
||||
placeholderKey: "packages.gog.clientIdPlaceholder",
|
||||
},
|
||||
{
|
||||
key: "client-secret",
|
||||
labelKey: "packages.gog.clientSecretLabel",
|
||||
placeholderKey: "packages.gog.clientSecretPlaceholder",
|
||||
},
|
||||
{
|
||||
key: "refresh-token",
|
||||
labelKey: "packages.gog.refreshTokenLabel",
|
||||
placeholderKey: "packages.gog.refreshTokenPlaceholder",
|
||||
},
|
||||
],
|
||||
instructionsKey: "packages.gog.instructions",
|
||||
disclaimerKey: "packages.gog.disclaimer",
|
||||
category: "skill",
|
||||
},
|
||||
{
|
||||
id: "mail",
|
||||
name: "Email (IMAP / SMTP)",
|
||||
descriptionKey: "packages.mail.description",
|
||||
requiresSecrets: true,
|
||||
secrets: [
|
||||
{
|
||||
key: "imap-host",
|
||||
labelKey: "packages.mail.imapHostLabel",
|
||||
placeholderKey: "packages.mail.imapHostPlaceholder",
|
||||
},
|
||||
{
|
||||
key: "imap-user",
|
||||
labelKey: "packages.mail.imapUserLabel",
|
||||
placeholderKey: "packages.mail.imapUserPlaceholder",
|
||||
},
|
||||
{
|
||||
key: "imap-pass",
|
||||
labelKey: "packages.mail.imapPassLabel",
|
||||
placeholderKey: "packages.mail.imapPassPlaceholder",
|
||||
},
|
||||
{
|
||||
key: "smtp-host",
|
||||
labelKey: "packages.mail.smtpHostLabel",
|
||||
placeholderKey: "packages.mail.smtpHostPlaceholder",
|
||||
},
|
||||
{
|
||||
key: "smtp-user",
|
||||
labelKey: "packages.mail.smtpUserLabel",
|
||||
placeholderKey: "packages.mail.smtpUserPlaceholder",
|
||||
},
|
||||
{
|
||||
key: "smtp-pass",
|
||||
labelKey: "packages.mail.smtpPassLabel",
|
||||
placeholderKey: "packages.mail.smtpPassPlaceholder",
|
||||
},
|
||||
],
|
||||
instructionsKey: "packages.mail.instructions",
|
||||
disclaimerKey: "packages.mail.disclaimer",
|
||||
category: "skill",
|
||||
},
|
||||
];
|
||||
|
||||
export function getPackageDef(id: string): PackageDef | undefined {
|
||||
return PACKAGE_CATALOG.find((p) => p.id === id);
|
||||
}
|
||||
|
||||
/**
|
||||
* IDs of channel-category packages. Derived from the catalog so it
|
||||
* cannot drift from the source of truth (previously hardcoded as
|
||||
* `["telegram", "discord", "email"]` in tenants/[name]/page.tsx —
|
||||
* removed as part of the Phase A package-model rework).
|
||||
*
|
||||
* Consumers: tenant detail page (filter spec.packages to channel set
|
||||
* before rendering the channel-users panel).
|
||||
*/
|
||||
export const CHANNEL_PACKAGE_IDS: string[] = PACKAGE_CATALOG
|
||||
.filter((p) => p.category === "channel")
|
||||
.map((p) => p.id);
|
||||
|
||||
/**
|
||||
* Default packages selected when the wizard opens a fresh onboarding
|
||||
* request. The three CORE behaviours that make the assistant feel
|
||||
* "smart out of the box":
|
||||
* - heartbeat: proactive checks (otherwise the assistant is purely
|
||||
* reactive).
|
||||
* - cron: scheduled tasks (daily briefings, reminders).
|
||||
* - active-memory: long-term recall of stable preferences and habits.
|
||||
*
|
||||
* Each adds some token cost — active-memory the most (one extra
|
||||
* sub-agent turn per inbound message) — so customers can untoggle any
|
||||
* of them before submitting. core-voice is deliberately excluded from
|
||||
* defaults until its config_patch lands in Phase B.
|
||||
*/
|
||||
export const DEFAULT_PACKAGE_IDS: string[] = [
|
||||
"core-heartbeat",
|
||||
"core-cron",
|
||||
"core-active-memory",
|
||||
];
|
||||
|
||||
@@ -214,7 +214,8 @@
|
||||
"packages": {
|
||||
"categories": {
|
||||
"channels": "Kanäle",
|
||||
"skills": "Fähigkeiten"
|
||||
"skills": "Fähigkeiten",
|
||||
"core": "Kern"
|
||||
},
|
||||
"enable": "Aktivieren",
|
||||
"disable": "Deaktivieren",
|
||||
@@ -239,29 +240,73 @@
|
||||
"botTokenLabel": "Discord Bot Token",
|
||||
"botTokenPlaceholder": "MTAxNjQ0OTk2NjAz...",
|
||||
"instructions": "1. Gehen Sie zu discord.com/developers/applications\n2. Erstellen Sie eine neue Anwendung und fügen Sie einen Bot hinzu\n3. Kopieren Sie den Bot-Token",
|
||||
"disclaimer": "Ich bestätige, dass ich diesen Discord-Bot besitze und PieCed IT autorisiere, ihn mit meinem KI-Assistenten zu verbinden."
|
||||
},
|
||||
"email": {
|
||||
"description": "Ermöglichen Sie Ihrem KI-Assistenten, E-Mails zu senden und zu empfangen.",
|
||||
"smtpHostLabel": "SMTP Host",
|
||||
"smtpHostPlaceholder": "smtp.example.com",
|
||||
"smtpUserLabel": "SMTP Benutzername",
|
||||
"smtpUserPlaceholder": "user@example.com",
|
||||
"smtpPasswordLabel": "SMTP Passwort",
|
||||
"smtpPasswordPlaceholder": "••••••••",
|
||||
"imapHostLabel": "IMAP Host",
|
||||
"imapHostPlaceholder": "imap.example.com",
|
||||
"instructions": "Geben Sie SMTP- und IMAP-Zugangsdaten an. Der Assistent nutzt diese zum Senden und Empfangen von Nachrichten.",
|
||||
"disclaimer": "Ich bestätige, dass ich berechtigt bin, diese E-Mail-Zugangsdaten zu verwenden und dass PieCed IT auf dieses Postfach zugreifen darf."
|
||||
},
|
||||
"webSearch": {
|
||||
"description": "Geben Sie Ihrem KI-Assistenten die Möglichkeit, im Web zu suchen."
|
||||
},
|
||||
"documentProcessing": {
|
||||
"description": "Aktivieren Sie Dokumentenverarbeitung, Zusammenfassung und Extraktion."
|
||||
"disclaimer": "Ich bestätige, dass ich diesen Discord-Bot besitze und PieCed IT autorisiere, ihn mit meinem KI-Assistenten zu verbinden.",
|
||||
"appIdLabel": "Discord-Anwendungs-ID",
|
||||
"appIdPlaceholder": "18–19-stellige numerische ID aus dem Developer Portal"
|
||||
},
|
||||
"statusEnabled": "aktiviert",
|
||||
"statusDisabled": "deaktiviert"
|
||||
"statusDisabled": "deaktiviert",
|
||||
"coreHeartbeat": {
|
||||
"description": "Periodischer Agentenlauf alle 30 Minuten, der es dem Assistenten erlaubt, Posteingang, Kalender und andere konfigurierte Quellen zu prüfen und proaktiv Bescheid zu geben, wenn etwas Aufmerksamkeit braucht. Ohne diese Option reagiert der Assistent nur, wenn Sie ihn ansprechen."
|
||||
},
|
||||
"coreCron": {
|
||||
"description": "Erlaubt dem Assistenten, geplante Aufgaben auszuführen (tägliche Briefings, wiederkehrende Erinnerungen, periodische Berichte). Standardmässig deaktiviert. Bei Deaktivierung bleibt das Cron-Werkzeug verfügbar, aber keine geplante Aufgabe wird ausgeführt."
|
||||
},
|
||||
"coreActiveMemory": {
|
||||
"description": "Erlaubt dem Assistenten, stabile Präferenzen, wiederkehrende Gewohnheiten und langfristigen Kontext aus früheren Gesprächen abzurufen. Nutzt einen zusätzlichen Sub-Agent-Lauf pro eingehender Nachricht, um den Memory-Store abzufragen. Nur Direktnachrichten. Kleiner Mehraufwand an Tokens im Tausch gegen Kontinuität und Personalisierung."
|
||||
},
|
||||
"coreVoice": {
|
||||
"description": "Spracherkennung für eingehende Sprachnachrichten und Sprachsynthese für Antworten, über das PieCed-LiteLLM-Gateway, damit Audiokosten pro Mandant erfasst werden. Die Laufzeit-Integration kommt im nächsten Plattform-Release; das Umschalten speichert die Auswahl für diese Auslieferung."
|
||||
},
|
||||
"gitCli": {
|
||||
"description": "Eigenständige Git-Kommandozeilenoperationen (clone, commit, branch, diff, log, status). Für private Repositories konfigurieren Sie die Zugangsdaten in Ihrem Workspace."
|
||||
},
|
||||
"github": {
|
||||
"description": "Interaktion mit GitHub-Repositories über die gh-CLI — Issues, Pull Requests, CI-Läufe, Releases, Gists. Erfordert ein persönliches Zugriffstoken.",
|
||||
"tokenLabel": "GitHub Persönliches Zugriffstoken",
|
||||
"tokenPlaceholder": "ghp_… oder github_pat_…",
|
||||
"instructions": "1. Öffnen Sie https://github.com/settings/tokens\n2. Erstellen Sie ein fein abgestimmtes persönliches Zugriffstoken mit den gewünschten Repo-Berechtigungen\n3. Kopieren Sie das Token (es wird nur einmal angezeigt)"
|
||||
},
|
||||
"gitea": {
|
||||
"description": "Interaktion mit einer Gitea-Instanz — Repositories, Issues, Pull Requests, Releases. Standardmässig die PieCed-Plattform-Gitea unter git.c5ai.ch.",
|
||||
"tokenLabel": "Gitea-Zugriffstoken",
|
||||
"tokenPlaceholder": "Erstellt unter Einstellungen → Anwendungen",
|
||||
"instructions": "1. Melden Sie sich bei Ihrer Gitea-Instanz an (Standard https://git.c5ai.ch)\n2. Gehen Sie zu Einstellungen → Anwendungen → Neues Token erstellen\n3. Vergeben Sie die gewünschten Berechtigungen (repo, issue, user)\n4. Kopieren Sie das Token"
|
||||
},
|
||||
"whisperSelfHosted": {
|
||||
"description": "Transkribieren Sie Audiodateien über die plattformeigene Whisper-Instanz. Nützlich für Ad-hoc-Transkriptionsaufgaben aus dem Chat heraus."
|
||||
},
|
||||
"searxngLocalSearch": {
|
||||
"description": "Datenschutzfreundliche Web-Suche über die interne SearXNG-Instanz der Plattform. Durchsuchen Sie Web, Bilder und News ohne externe API-Aufrufe oder Tracker."
|
||||
},
|
||||
"gog": {
|
||||
"description": "Gebündelter Zugriff auf Gmail, Kalender, Drive, Docs, Sheets und Kontakte via Google OAuth. Setup erfordert ein Google-Cloud-Projekt — wenden Sie sich an den PieCed-Support für die Einrichtung.",
|
||||
"clientIdLabel": "Google OAuth Client-ID",
|
||||
"clientIdPlaceholder": "xxxxxxxxxxx.apps.googleusercontent.com",
|
||||
"clientSecretLabel": "Google OAuth Client-Secret",
|
||||
"clientSecretPlaceholder": "GOCSPX-…",
|
||||
"refreshTokenLabel": "Google OAuth Refresh-Token",
|
||||
"refreshTokenPlaceholder": "1//0g…",
|
||||
"instructions": "Die Google-Workspace-Integration verwendet OAuth und erfordert derzeit manuelles Onboarding. Bitte eröffnen Sie ein Support-Ticket, um den Setup-Prozess zu starten — wir tauschen die Client-Zugangsdaten und ein Refresh-Token offline aus und aktivieren dann dieses Paket für Ihren Mandanten.",
|
||||
"disclaimer": "Mit der Aktivierung der Google-Workspace-Integration autorisieren Sie PieCed, in Ihrem Namen auf Gmail, Kalender, Drive, Docs, Sheets und Kontakte zuzugreifen. Daten fliessen über die Google-APIs, vorbehaltlich der Google-Bedingungen."
|
||||
},
|
||||
"mail": {
|
||||
"description": "E-Mails über IMAP lesen, suchen und verwalten; senden über SMTP. Funktioniert mit Gmail (mit App-Passwort), Outlook, Fastmail und jedem standardkonformen IMAP/SMTP-Host.",
|
||||
"imapHostLabel": "IMAP-Host",
|
||||
"imapHostPlaceholder": "imap.example.com",
|
||||
"imapUserLabel": "IMAP-Benutzername",
|
||||
"imapUserPlaceholder": "benutzer@example.com",
|
||||
"imapPassLabel": "IMAP-Passwort",
|
||||
"imapPassPlaceholder": "••••••••",
|
||||
"smtpHostLabel": "SMTP-Host",
|
||||
"smtpHostPlaceholder": "smtp.example.com",
|
||||
"smtpUserLabel": "SMTP-Benutzername",
|
||||
"smtpUserPlaceholder": "benutzer@example.com",
|
||||
"smtpPassLabel": "SMTP-Passwort",
|
||||
"smtpPassPlaceholder": "••••••••",
|
||||
"instructions": "1. Für Gmail: Aktivieren Sie die 2-Faktor-Authentifizierung, erstellen Sie dann unter https://myaccount.google.com/apppasswords ein App-Passwort und verwenden Sie es als IMAP- und SMTP-Passwort.\n2. Für Outlook / Microsoft 365 mit MFA: Generieren Sie ein App-Passwort in den Sicherheitseinstellungen Ihres Kontos.\n3. Für andere Anbieter: Konsultieren Sie deren IMAP/SMTP-Dokumentation für Hostnamen und Ports.\n4. Typische IMAP-Hosts: imap.gmail.com, outlook.office365.com.\n5. Typische SMTP-Hosts: smtp.gmail.com, smtp.office365.com.",
|
||||
"disclaimer": "Der Assistent erhält Lese- und Schreibzugriff auf das von Ihnen konfigurierte Postfach. Verwenden Sie eine dedizierte Adresse anstelle eines persönlichen Postfachs, wenn Sie den Umfang einschränken möchten."
|
||||
}
|
||||
},
|
||||
"admin": {
|
||||
"title": "Plattform-Admin",
|
||||
@@ -345,8 +390,7 @@
|
||||
"remove": "Entfernen",
|
||||
"alreadyAdded": "Diese Benutzer-ID ist bereits autorisiert.",
|
||||
"telegramIdHelp": "So finden Sie Ihre Telegram-Benutzer-ID:\n1. Öffnen Sie Telegram und schreiben Sie @userinfobot\n2. Der Bot antwortet sofort mit Ihrer numerischen ID\n3. Geben Sie diese Nummer hier ein",
|
||||
"discordIdHelp": "So finden Sie Ihre Discord-Benutzer-ID:\n1. Aktivieren Sie den Entwicklermodus in den Discord-Einstellungen (Erweitert)\n2. Rechtsklick auf Ihren Namen → Benutzer-ID kopieren\n3. Geben Sie diese Nummer hier ein",
|
||||
"emailIdHelp": "Geben Sie die E-Mail-Adresse ein, die zur Interaktion mit dem Assistenten autorisiert werden soll."
|
||||
"discordIdHelp": "So finden Sie Ihre Discord-Benutzer-ID:\n1. Aktivieren Sie den Entwicklermodus in den Discord-Einstellungen (Erweitert)\n2. Rechtsklick auf Ihren Namen → Benutzer-ID kopieren\n3. Geben Sie diese Nummer hier ein"
|
||||
},
|
||||
"team": {
|
||||
"title": "Team",
|
||||
|
||||
@@ -214,7 +214,8 @@
|
||||
"packages": {
|
||||
"categories": {
|
||||
"channels": "Channels",
|
||||
"skills": "Skills"
|
||||
"skills": "Skills",
|
||||
"core": "Core"
|
||||
},
|
||||
"enable": "Enable",
|
||||
"disable": "Disable",
|
||||
@@ -239,29 +240,73 @@
|
||||
"botTokenLabel": "Discord Bot Token",
|
||||
"botTokenPlaceholder": "MTAxNjQ0OTk2NjAz...",
|
||||
"instructions": "1. Go to discord.com/developers/applications\n2. Create a new application and add a bot\n3. Copy the bot token",
|
||||
"disclaimer": "I confirm I own this Discord bot and authorize PieCed IT to connect it to my AI assistant."
|
||||
"disclaimer": "I confirm I own this Discord bot and authorize PieCed IT to connect it to my AI assistant.",
|
||||
"appIdLabel": "Discord Application ID",
|
||||
"appIdPlaceholder": "18-19 digit numeric ID from Developer Portal"
|
||||
},
|
||||
"email": {
|
||||
"description": "Enable your AI assistant to send and receive email.",
|
||||
"statusEnabled": "enabled",
|
||||
"statusDisabled": "disabled",
|
||||
"coreHeartbeat": {
|
||||
"description": "Periodic agent run every 30 minutes that lets your assistant check inbox, calendar, and other configured sources and message you proactively when something needs attention. Without this, the assistant only responds when you message it first."
|
||||
},
|
||||
"coreCron": {
|
||||
"description": "Allow the assistant to run scheduled tasks (daily briefings, recurring reminders, periodic reports). Off by default. When off, the agent's cron tool stays available but no scheduled job ever fires."
|
||||
},
|
||||
"coreActiveMemory": {
|
||||
"description": "Lets the assistant recall stable preferences, recurring habits, and long-term context from past conversations during a chat. Uses an extra sub-agent turn per inbound message to query the memory store. Direct-message sessions only. Adds a small token cost in exchange for continuity and personalisation."
|
||||
},
|
||||
"coreVoice": {
|
||||
"description": "Speech-to-text on incoming voice notes and text-to-speech on replies, routed through the PieCed LiteLLM gateway so audio cost is tracked per tenant alongside chat. Runtime wiring lands in the next platform release; toggling now stores the preference for that rollout."
|
||||
},
|
||||
"gitCli": {
|
||||
"description": "Standalone git command-line operations (clone, commit, branch, diff, log, status). For private repositories, configure credentials in your workspace."
|
||||
},
|
||||
"github": {
|
||||
"description": "Interact with GitHub repositories via the gh CLI — issues, pull requests, CI runs, releases, gists. Requires a personal access token.",
|
||||
"tokenLabel": "GitHub Personal Access Token",
|
||||
"tokenPlaceholder": "ghp_… or github_pat_…",
|
||||
"instructions": "1. Open https://github.com/settings/tokens\n2. Generate a fine-grained personal access token with the repo scopes you want the assistant to use\n3. Copy the token (it's shown only once)"
|
||||
},
|
||||
"gitea": {
|
||||
"description": "Interact with a Gitea instance — repositories, issues, pull requests, releases. Defaults to the PieCed-platform Gitea at git.c5ai.ch.",
|
||||
"tokenLabel": "Gitea Access Token",
|
||||
"tokenPlaceholder": "Generated under Settings → Applications",
|
||||
"instructions": "1. Log in to your Gitea instance (default https://git.c5ai.ch)\n2. Go to Settings → Applications → Generate New Token\n3. Grant the scopes you want the assistant to use (repo, issue, user)\n4. Copy the token"
|
||||
},
|
||||
"whisperSelfHosted": {
|
||||
"description": "Transcribe audio files via the platform's self-hosted Whisper instance. Useful for ad-hoc transcription tasks initiated from chat."
|
||||
},
|
||||
"searxngLocalSearch": {
|
||||
"description": "Privacy-respecting web search via the platform's internal SearXNG instance. Search the web, images, and news without external API calls or trackers."
|
||||
},
|
||||
"gog": {
|
||||
"description": "Bundled access to Gmail, Calendar, Drive, Docs, Sheets, and Contacts via Google OAuth. Setup requires a Google Cloud project — contact PieCed support to onboard.",
|
||||
"clientIdLabel": "Google OAuth Client ID",
|
||||
"clientIdPlaceholder": "xxxxxxxxxxx.apps.googleusercontent.com",
|
||||
"clientSecretLabel": "Google OAuth Client Secret",
|
||||
"clientSecretPlaceholder": "GOCSPX-…",
|
||||
"refreshTokenLabel": "Google OAuth Refresh Token",
|
||||
"refreshTokenPlaceholder": "1//0g…",
|
||||
"instructions": "Google Workspace integration uses OAuth and requires manual onboarding for now. Please open a support ticket to start the setup — we'll exchange the client credentials and a refresh token offline, then enable this package on your tenant.",
|
||||
"disclaimer": "By enabling Google Workspace integration you authorize PieCed to access Gmail, Calendar, Drive, Docs, Sheets, and Contacts on your behalf. Data flows through Google's APIs subject to Google's terms."
|
||||
},
|
||||
"mail": {
|
||||
"description": "Read, search, and manage email via IMAP; send via SMTP. Works with Gmail (with an app password), Outlook, Fastmail, and any standard IMAP/SMTP host.",
|
||||
"imapHostLabel": "IMAP Host",
|
||||
"imapHostPlaceholder": "imap.example.com",
|
||||
"imapUserLabel": "IMAP Username",
|
||||
"imapUserPlaceholder": "user@example.com",
|
||||
"imapPassLabel": "IMAP Password",
|
||||
"imapPassPlaceholder": "••••••••",
|
||||
"smtpHostLabel": "SMTP Host",
|
||||
"smtpHostPlaceholder": "smtp.example.com",
|
||||
"smtpUserLabel": "SMTP Username",
|
||||
"smtpUserPlaceholder": "user@example.com",
|
||||
"smtpPasswordLabel": "SMTP Password",
|
||||
"smtpPasswordPlaceholder": "••••••••",
|
||||
"imapHostLabel": "IMAP Host",
|
||||
"imapHostPlaceholder": "imap.example.com",
|
||||
"instructions": "Provide SMTP and IMAP credentials. The assistant uses these to send and monitor messages.",
|
||||
"disclaimer": "I confirm I am authorized to use these email credentials and that PieCed IT may access this mailbox."
|
||||
},
|
||||
"webSearch": {
|
||||
"description": "Give your AI assistant the ability to search the web."
|
||||
},
|
||||
"documentProcessing": {
|
||||
"description": "Enable document parsing, summarization, and extraction."
|
||||
},
|
||||
"statusEnabled": "enabled",
|
||||
"statusDisabled": "disabled"
|
||||
"smtpPassLabel": "SMTP Password",
|
||||
"smtpPassPlaceholder": "••••••••",
|
||||
"instructions": "1. For Gmail: enable 2-Step Verification, then create an App Password at https://myaccount.google.com/apppasswords and use it as both IMAP and SMTP password.\n2. For Outlook / Microsoft 365 with MFA: generate an app password in your account's security settings.\n3. For other providers: refer to their IMAP/SMTP documentation for host names and ports.\n4. Typical IMAP hosts: imap.gmail.com, outlook.office365.com.\n5. Typical SMTP hosts: smtp.gmail.com, smtp.office365.com.",
|
||||
"disclaimer": "The assistant gains read/write access to the mailbox you configure. Consider using a dedicated address rather than a personal inbox if you want to limit scope."
|
||||
}
|
||||
},
|
||||
"admin": {
|
||||
"title": "Platform Admin",
|
||||
@@ -345,8 +390,7 @@
|
||||
"remove": "Remove",
|
||||
"alreadyAdded": "This user ID is already authorized.",
|
||||
"telegramIdHelp": "To find your Telegram user ID:\n1. Open Telegram and message @userinfobot\n2. It instantly replies with your numeric ID\n3. Enter that number here",
|
||||
"discordIdHelp": "To find your Discord user ID:\n1. Enable Developer Mode in Discord settings (Advanced)\n2. Right-click your name → Copy User ID\n3. Enter that number here",
|
||||
"emailIdHelp": "Enter the email address that should be authorized to interact with the assistant."
|
||||
"discordIdHelp": "To find your Discord user ID:\n1. Enable Developer Mode in Discord settings (Advanced)\n2. Right-click your name → Copy User ID\n3. Enter that number here"
|
||||
},
|
||||
"team": {
|
||||
"title": "Team",
|
||||
|
||||
@@ -214,7 +214,8 @@
|
||||
"packages": {
|
||||
"categories": {
|
||||
"channels": "Canaux",
|
||||
"skills": "Compétences"
|
||||
"skills": "Compétences",
|
||||
"core": "Cœur"
|
||||
},
|
||||
"enable": "Activer",
|
||||
"disable": "Désactiver",
|
||||
@@ -239,29 +240,73 @@
|
||||
"botTokenLabel": "Token du bot Discord",
|
||||
"botTokenPlaceholder": "MTAxNjQ0OTk2NjAz...",
|
||||
"instructions": "1. Allez sur discord.com/developers/applications\n2. Créez une nouvelle application et ajoutez un bot\n3. Copiez le token du bot",
|
||||
"disclaimer": "Je confirme que je possède ce bot Discord et autorise PieCed IT à le connecter à mon assistant IA."
|
||||
"disclaimer": "Je confirme que je possède ce bot Discord et autorise PieCed IT à le connecter à mon assistant IA.",
|
||||
"appIdLabel": "ID d'application Discord",
|
||||
"appIdPlaceholder": "ID numérique de 18–19 chiffres depuis le Developer Portal"
|
||||
},
|
||||
"email": {
|
||||
"description": "Permettez à votre assistant IA d'envoyer et de recevoir des e-mails.",
|
||||
"statusEnabled": "activé",
|
||||
"statusDisabled": "désactivé",
|
||||
"coreHeartbeat": {
|
||||
"description": "Exécution périodique de l'agent toutes les 30 minutes pour vérifier votre boîte mail, votre agenda et d'autres sources configurées, et vous notifier de manière proactive lorsqu'une attention est requise. Sans cette option, l'assistant ne répond que lorsque vous lui écrivez."
|
||||
},
|
||||
"coreCron": {
|
||||
"description": "Permet à l'assistant d'exécuter des tâches programmées (briefings quotidiens, rappels récurrents, rapports périodiques). Désactivé par défaut. Lorsqu'il est désactivé, l'outil cron reste disponible mais aucune tâche planifiée ne s'exécute."
|
||||
},
|
||||
"coreActiveMemory": {
|
||||
"description": "Permet à l'assistant de se rappeler des préférences stables, des habitudes récurrentes et du contexte à long terme issu de conversations passées. Utilise un tour de sous-agent supplémentaire par message entrant pour interroger la mémoire. Uniquement en messages directs. Légère consommation de tokens supplémentaire en échange de continuité et de personnalisation."
|
||||
},
|
||||
"coreVoice": {
|
||||
"description": "Reconnaissance vocale sur les notes vocales entrantes et synthèse vocale sur les réponses, via la passerelle PieCed LiteLLM pour un suivi du coût audio par tenant. L'intégration runtime arrive dans la prochaine version de la plateforme ; basculer le commutateur enregistre dès maintenant la préférence."
|
||||
},
|
||||
"gitCli": {
|
||||
"description": "Opérations git en ligne de commande autonomes (clone, commit, branch, diff, log, status). Pour les dépôts privés, configurez les identifiants dans votre espace de travail."
|
||||
},
|
||||
"github": {
|
||||
"description": "Interagissez avec les dépôts GitHub via la CLI gh — issues, pull requests, exécutions CI, releases, gists. Nécessite un jeton d'accès personnel.",
|
||||
"tokenLabel": "Jeton d'accès personnel GitHub",
|
||||
"tokenPlaceholder": "ghp_… ou github_pat_…",
|
||||
"instructions": "1. Ouvrez https://github.com/settings/tokens\n2. Générez un jeton d'accès personnel fin avec les portées de dépôt souhaitées\n3. Copiez le jeton (il n'est affiché qu'une fois)"
|
||||
},
|
||||
"gitea": {
|
||||
"description": "Interagissez avec une instance Gitea — dépôts, issues, pull requests, releases. Par défaut, l'instance Gitea PieCed à git.c5ai.ch.",
|
||||
"tokenLabel": "Jeton d'accès Gitea",
|
||||
"tokenPlaceholder": "Généré sous Paramètres → Applications",
|
||||
"instructions": "1. Connectez-vous à votre instance Gitea (par défaut https://git.c5ai.ch)\n2. Allez dans Paramètres → Applications → Générer un nouveau jeton\n3. Accordez les portées souhaitées (repo, issue, user)\n4. Copiez le jeton"
|
||||
},
|
||||
"whisperSelfHosted": {
|
||||
"description": "Transcrivez des fichiers audio via l'instance Whisper auto-hébergée de la plateforme. Utile pour les transcriptions ad hoc initiées depuis le chat."
|
||||
},
|
||||
"searxngLocalSearch": {
|
||||
"description": "Recherche web respectueuse de la vie privée via l'instance SearXNG interne de la plateforme. Recherchez le web, les images et les actualités sans appels d'API externes ni traqueurs."
|
||||
},
|
||||
"gog": {
|
||||
"description": "Accès groupé à Gmail, Agenda, Drive, Docs, Sheets et Contacts via Google OAuth. La configuration nécessite un projet Google Cloud — contactez le support PieCed pour l'intégration.",
|
||||
"clientIdLabel": "ID client Google OAuth",
|
||||
"clientIdPlaceholder": "xxxxxxxxxxx.apps.googleusercontent.com",
|
||||
"clientSecretLabel": "Secret client Google OAuth",
|
||||
"clientSecretPlaceholder": "GOCSPX-…",
|
||||
"refreshTokenLabel": "Jeton de rafraîchissement Google OAuth",
|
||||
"refreshTokenPlaceholder": "1//0g…",
|
||||
"instructions": "L'intégration de Google Workspace utilise OAuth et nécessite actuellement une intégration manuelle. Veuillez ouvrir un ticket de support pour démarrer la configuration — nous échangerons hors ligne les identifiants client et un jeton de rafraîchissement, puis activerons ce package sur votre tenant.",
|
||||
"disclaimer": "En activant l'intégration de Google Workspace, vous autorisez PieCed à accéder à Gmail, Agenda, Drive, Docs, Sheets et Contacts en votre nom. Les données transitent par les API de Google, soumises aux conditions de Google."
|
||||
},
|
||||
"mail": {
|
||||
"description": "Lisez, recherchez et gérez vos e-mails via IMAP ; envoyez via SMTP. Compatible avec Gmail (avec un mot de passe d'application), Outlook, Fastmail et tout hôte IMAP/SMTP standard.",
|
||||
"imapHostLabel": "Hôte IMAP",
|
||||
"imapHostPlaceholder": "imap.example.com",
|
||||
"imapUserLabel": "Nom d'utilisateur IMAP",
|
||||
"imapUserPlaceholder": "utilisateur@example.com",
|
||||
"imapPassLabel": "Mot de passe IMAP",
|
||||
"imapPassPlaceholder": "••••••••",
|
||||
"smtpHostLabel": "Hôte SMTP",
|
||||
"smtpHostPlaceholder": "smtp.example.com",
|
||||
"smtpUserLabel": "Nom d'utilisateur SMTP",
|
||||
"smtpUserPlaceholder": "user@example.com",
|
||||
"smtpPasswordLabel": "Mot de passe SMTP",
|
||||
"smtpPasswordPlaceholder": "••••••••",
|
||||
"imapHostLabel": "Hôte IMAP",
|
||||
"imapHostPlaceholder": "imap.example.com",
|
||||
"instructions": "Fournissez les identifiants SMTP et IMAP. L'assistant les utilise pour envoyer et surveiller les messages.",
|
||||
"disclaimer": "Je confirme que je suis autorisé à utiliser ces identifiants e-mail et que PieCed IT peut accéder à cette boîte mail."
|
||||
},
|
||||
"webSearch": {
|
||||
"description": "Donnez à votre assistant IA la capacité de rechercher sur le web."
|
||||
},
|
||||
"documentProcessing": {
|
||||
"description": "Activez l'analyse, le résumé et l'extraction de documents."
|
||||
},
|
||||
"statusEnabled": "activé",
|
||||
"statusDisabled": "désactivé"
|
||||
"smtpUserPlaceholder": "utilisateur@example.com",
|
||||
"smtpPassLabel": "Mot de passe SMTP",
|
||||
"smtpPassPlaceholder": "••••••••",
|
||||
"instructions": "1. Pour Gmail : activez la validation en deux étapes, puis créez un mot de passe d'application sur https://myaccount.google.com/apppasswords et utilisez-le comme mot de passe IMAP et SMTP.\n2. Pour Outlook / Microsoft 365 avec MFA : générez un mot de passe d'application dans les paramètres de sécurité de votre compte.\n3. Pour les autres fournisseurs : consultez leur documentation IMAP/SMTP pour les noms d'hôte et les ports.\n4. Hôtes IMAP typiques : imap.gmail.com, outlook.office365.com.\n5. Hôtes SMTP typiques : smtp.gmail.com, smtp.office365.com.",
|
||||
"disclaimer": "L'assistant obtient un accès en lecture/écriture à la boîte aux lettres que vous configurez. Envisagez d'utiliser une adresse dédiée plutôt qu'une boîte personnelle si vous souhaitez limiter la portée."
|
||||
}
|
||||
},
|
||||
"admin": {
|
||||
"title": "Admin plateforme",
|
||||
@@ -345,8 +390,7 @@
|
||||
"remove": "Supprimer",
|
||||
"alreadyAdded": "Cet identifiant est déjà autorisé.",
|
||||
"telegramIdHelp": "Pour trouver votre identifiant Telegram :\n1. Ouvrez Telegram et envoyez un message à @userinfobot\n2. Il répond instantanément avec votre identifiant numérique\n3. Entrez ce numéro ici",
|
||||
"discordIdHelp": "Pour trouver votre identifiant Discord :\n1. Activez le mode développeur dans les paramètres Discord (Avancé)\n2. Clic droit sur votre nom → Copier l'identifiant\n3. Entrez ce numéro ici",
|
||||
"emailIdHelp": "Entrez l'adresse e-mail qui doit être autorisée à interagir avec l'assistant."
|
||||
"discordIdHelp": "Pour trouver votre identifiant Discord :\n1. Activez le mode développeur dans les paramètres Discord (Avancé)\n2. Clic droit sur votre nom → Copier l'identifiant\n3. Entrez ce numéro ici"
|
||||
},
|
||||
"team": {
|
||||
"title": "Équipe",
|
||||
|
||||
@@ -214,7 +214,8 @@
|
||||
"packages": {
|
||||
"categories": {
|
||||
"channels": "Canali",
|
||||
"skills": "Capacità"
|
||||
"skills": "Capacità",
|
||||
"core": "Core"
|
||||
},
|
||||
"enable": "Attiva",
|
||||
"disable": "Disattiva",
|
||||
@@ -239,29 +240,73 @@
|
||||
"botTokenLabel": "Token bot Discord",
|
||||
"botTokenPlaceholder": "MTAxNjQ0OTk2NjAz...",
|
||||
"instructions": "1. Vai su discord.com/developers/applications\n2. Crea una nuova applicazione e aggiungi un bot\n3. Copia il token del bot",
|
||||
"disclaimer": "Confermo di possedere questo bot Discord e autorizzo PieCed IT a collegarlo al mio assistente IA."
|
||||
},
|
||||
"email": {
|
||||
"description": "Permetti al tuo assistente IA di inviare e ricevere e-mail.",
|
||||
"smtpHostLabel": "Host SMTP",
|
||||
"smtpHostPlaceholder": "smtp.example.com",
|
||||
"smtpUserLabel": "Nome utente SMTP",
|
||||
"smtpUserPlaceholder": "user@example.com",
|
||||
"smtpPasswordLabel": "Password SMTP",
|
||||
"smtpPasswordPlaceholder": "••••••••",
|
||||
"imapHostLabel": "Host IMAP",
|
||||
"imapHostPlaceholder": "imap.example.com",
|
||||
"instructions": "Fornisci le credenziali SMTP e IMAP. L'assistente le usa per inviare e monitorare i messaggi.",
|
||||
"disclaimer": "Confermo di essere autorizzato a utilizzare queste credenziali e-mail e che PieCed IT può accedere a questa casella di posta."
|
||||
},
|
||||
"webSearch": {
|
||||
"description": "Dai al tuo assistente IA la capacità di cercare nel web."
|
||||
},
|
||||
"documentProcessing": {
|
||||
"description": "Attiva l'analisi, il riassunto e l'estrazione di documenti."
|
||||
"disclaimer": "Confermo di possedere questo bot Discord e autorizzo PieCed IT a collegarlo al mio assistente IA.",
|
||||
"appIdLabel": "ID applicazione Discord",
|
||||
"appIdPlaceholder": "ID numerico di 18–19 cifre dal Developer Portal"
|
||||
},
|
||||
"statusEnabled": "abilitato",
|
||||
"statusDisabled": "disabilitato"
|
||||
"statusDisabled": "disabilitato",
|
||||
"coreHeartbeat": {
|
||||
"description": "Esecuzione periodica dell'agente ogni 30 minuti che consente all'assistente di controllare posta, calendario e altre fonti configurate e di avvisarti proattivamente quando serve attenzione. Senza questa opzione, l'assistente risponde solo quando lo contatti."
|
||||
},
|
||||
"coreCron": {
|
||||
"description": "Consente all'assistente di eseguire attività pianificate (briefing giornalieri, promemoria ricorrenti, report periodici). Disattivato per impostazione predefinita. Quando è disattivato, lo strumento cron resta disponibile ma nessuna attività pianificata viene eseguita."
|
||||
},
|
||||
"coreActiveMemory": {
|
||||
"description": "Consente all'assistente di richiamare preferenze stabili, abitudini ricorrenti e contesto a lungo termine dalle conversazioni precedenti. Utilizza un turno extra di sub-agente per ogni messaggio in entrata per interrogare lo store di memoria. Solo messaggi diretti. Aggiunge un piccolo costo in token in cambio di continuità e personalizzazione."
|
||||
},
|
||||
"coreVoice": {
|
||||
"description": "Riconoscimento vocale sui messaggi audio in entrata e sintesi vocale sulle risposte, instradati attraverso il gateway PieCed LiteLLM per tracciare il costo audio per tenant. L'integrazione runtime arriverà nel prossimo rilascio della piattaforma; attivare ora salva la preferenza per quel rilascio."
|
||||
},
|
||||
"gitCli": {
|
||||
"description": "Operazioni git da riga di comando autonome (clone, commit, branch, diff, log, status). Per i repository privati, configura le credenziali nel tuo workspace."
|
||||
},
|
||||
"github": {
|
||||
"description": "Interagisci con repository GitHub tramite la CLI gh — issue, pull request, esecuzioni CI, release, gist. Richiede un token di accesso personale.",
|
||||
"tokenLabel": "Token di accesso personale GitHub",
|
||||
"tokenPlaceholder": "ghp_… o github_pat_…",
|
||||
"instructions": "1. Apri https://github.com/settings/tokens\n2. Genera un token di accesso personale fine con gli ambiti repo desiderati\n3. Copia il token (viene mostrato una sola volta)"
|
||||
},
|
||||
"gitea": {
|
||||
"description": "Interagisci con un'istanza Gitea — repository, issue, pull request, release. Per impostazione predefinita, l'istanza Gitea PieCed su git.c5ai.ch.",
|
||||
"tokenLabel": "Token di accesso Gitea",
|
||||
"tokenPlaceholder": "Generato in Impostazioni → Applicazioni",
|
||||
"instructions": "1. Accedi alla tua istanza Gitea (predefinito https://git.c5ai.ch)\n2. Vai a Impostazioni → Applicazioni → Genera nuovo token\n3. Concedi gli ambiti desiderati (repo, issue, user)\n4. Copia il token"
|
||||
},
|
||||
"whisperSelfHosted": {
|
||||
"description": "Trascrivi file audio tramite l'istanza Whisper auto-ospitata della piattaforma. Utile per attività di trascrizione ad hoc avviate dalla chat."
|
||||
},
|
||||
"searxngLocalSearch": {
|
||||
"description": "Ricerca web rispettosa della privacy tramite l'istanza SearXNG interna della piattaforma. Cerca sul web, nelle immagini e nelle notizie senza chiamate ad API esterne né tracker."
|
||||
},
|
||||
"gog": {
|
||||
"description": "Accesso integrato a Gmail, Calendar, Drive, Docs, Sheets e Contatti tramite Google OAuth. La configurazione richiede un progetto Google Cloud — contatta il supporto PieCed per l'onboarding.",
|
||||
"clientIdLabel": "ID client Google OAuth",
|
||||
"clientIdPlaceholder": "xxxxxxxxxxx.apps.googleusercontent.com",
|
||||
"clientSecretLabel": "Client secret Google OAuth",
|
||||
"clientSecretPlaceholder": "GOCSPX-…",
|
||||
"refreshTokenLabel": "Token di refresh Google OAuth",
|
||||
"refreshTokenPlaceholder": "1//0g…",
|
||||
"instructions": "L'integrazione con Google Workspace utilizza OAuth e richiede attualmente un onboarding manuale. Apri un ticket di supporto per avviare la configurazione — scambieremo le credenziali del client e un token di refresh offline, quindi abiliteremo questo pacchetto sul tuo tenant.",
|
||||
"disclaimer": "Abilitando l'integrazione con Google Workspace autorizzi PieCed ad accedere per tuo conto a Gmail, Calendar, Drive, Docs, Sheets e Contatti. I dati transitano attraverso le API di Google, soggetti ai termini di Google."
|
||||
},
|
||||
"mail": {
|
||||
"description": "Leggi, cerca e gestisci le e-mail via IMAP; invia tramite SMTP. Funziona con Gmail (con una password per app), Outlook, Fastmail e qualsiasi host IMAP/SMTP standard.",
|
||||
"imapHostLabel": "Host IMAP",
|
||||
"imapHostPlaceholder": "imap.example.com",
|
||||
"imapUserLabel": "Username IMAP",
|
||||
"imapUserPlaceholder": "utente@example.com",
|
||||
"imapPassLabel": "Password IMAP",
|
||||
"imapPassPlaceholder": "••••••••",
|
||||
"smtpHostLabel": "Host SMTP",
|
||||
"smtpHostPlaceholder": "smtp.example.com",
|
||||
"smtpUserLabel": "Username SMTP",
|
||||
"smtpUserPlaceholder": "utente@example.com",
|
||||
"smtpPassLabel": "Password SMTP",
|
||||
"smtpPassPlaceholder": "••••••••",
|
||||
"instructions": "1. Per Gmail: abilita la verifica in due passaggi, quindi crea una password per app su https://myaccount.google.com/apppasswords e usala come password IMAP e SMTP.\n2. Per Outlook / Microsoft 365 con MFA: genera una password per app nelle impostazioni di sicurezza del tuo account.\n3. Per altri provider: consulta la loro documentazione IMAP/SMTP per nomi host e porte.\n4. Host IMAP tipici: imap.gmail.com, outlook.office365.com.\n5. Host SMTP tipici: smtp.gmail.com, smtp.office365.com.",
|
||||
"disclaimer": "L'assistente ottiene accesso in lettura/scrittura alla casella di posta che configuri. Valuta l'uso di un indirizzo dedicato anziché di una casella personale se vuoi limitare la portata."
|
||||
}
|
||||
},
|
||||
"admin": {
|
||||
"title": "Admin piattaforma",
|
||||
@@ -345,8 +390,7 @@
|
||||
"remove": "Rimuovi",
|
||||
"alreadyAdded": "Questo ID utente è già autorizzato.",
|
||||
"telegramIdHelp": "Per trovare il tuo ID Telegram:\n1. Apri Telegram e invia un messaggio a @userinfobot\n2. Risponde istantaneamente con il tuo ID numerico\n3. Inserisci quel numero qui",
|
||||
"discordIdHelp": "Per trovare il tuo ID Discord:\n1. Attiva la Modalità sviluppatore nelle impostazioni Discord (Avanzate)\n2. Clic destro sul tuo nome → Copia ID utente\n3. Inserisci quel numero qui",
|
||||
"emailIdHelp": "Inserisci l'indirizzo e-mail che deve essere autorizzato a interagire con l'assistente."
|
||||
"discordIdHelp": "Per trovare il tuo ID Discord:\n1. Attiva la Modalità sviluppatore nelle impostazioni Discord (Avanzate)\n2. Clic destro sul tuo nome → Copia ID utente\n3. Inserisci quel numero qui"
|
||||
},
|
||||
"team": {
|
||||
"title": "Team",
|
||||
|
||||
Reference in New Issue
Block a user