@agent-native/core 0.111.4 → 0.112.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. package/corpus/README.md +2 -2
  2. package/corpus/core/CHANGELOG.md +12 -0
  3. package/corpus/core/package.json +3 -1
  4. package/corpus/core/src/cli/code-agent-executor.ts +17 -5
  5. package/corpus/core/src/cli/code-agent-runs.ts +43 -2
  6. package/corpus/core/src/cli/multi-frontier-runs.ts +841 -0
  7. package/corpus/core/src/coding-tools/index.ts +27 -8
  8. package/corpus/core/src/embeddings/index.ts +233 -0
  9. package/corpus/core/src/index.ts +2 -0
  10. package/corpus/core/src/search/index.ts +413 -0
  11. package/corpus/templates/brain/.agents/skills/brain/RUNBOOK.md +48 -5
  12. package/corpus/templates/brain/.agents/skills/brain/SKILL.md +46 -14
  13. package/corpus/templates/brain/README.md +34 -3
  14. package/corpus/templates/brain/actions/approve-proposal.ts +2 -0
  15. package/corpus/templates/brain/actions/claim-distillation.ts +24 -27
  16. package/corpus/templates/brain/actions/create-source.ts +1 -1
  17. package/corpus/templates/brain/actions/get-knowledge.ts +6 -2
  18. package/corpus/templates/brain/actions/get-pilot-report.ts +44 -8
  19. package/corpus/templates/brain/actions/import-capture.ts +21 -9
  20. package/corpus/templates/brain/actions/import-transcript.ts +42 -14
  21. package/corpus/templates/brain/actions/list-captures.ts +10 -1
  22. package/corpus/templates/brain/actions/list-distillation-queue.ts +39 -14
  23. package/corpus/templates/brain/actions/list-projects.ts +51 -0
  24. package/corpus/templates/brain/actions/list-proposals.ts +80 -4
  25. package/corpus/templates/brain/actions/list-sources.ts +17 -3
  26. package/corpus/templates/brain/actions/manage-project.ts +118 -0
  27. package/corpus/templates/brain/actions/mark-capture-distilled.ts +68 -20
  28. package/corpus/templates/brain/actions/navigate.ts +1 -0
  29. package/corpus/templates/brain/actions/reject-proposal.ts +6 -1
  30. package/corpus/templates/brain/actions/resanitize-captures.ts +159 -33
  31. package/corpus/templates/brain/actions/review-proposal.ts +2 -0
  32. package/corpus/templates/brain/actions/search-everything.ts +10 -1
  33. package/corpus/templates/brain/actions/search-knowledge.ts +1 -1
  34. package/corpus/templates/brain/actions/set-settings.ts +36 -1
  35. package/corpus/templates/brain/actions/update-proposal.ts +2 -0
  36. package/corpus/templates/brain/app/hooks/use-distillation-bridge.ts +18 -9
  37. package/corpus/templates/brain/app/hooks/use-navigation-state.ts +3 -0
  38. package/corpus/templates/brain/app/i18n-data.ts +731 -2
  39. package/corpus/templates/brain/app/lib/brain.ts +33 -1
  40. package/corpus/templates/brain/app/routes/ops.tsx +47 -0
  41. package/corpus/templates/brain/app/routes/review.tsx +41 -2
  42. package/corpus/templates/brain/app/routes/search.tsx +33 -2
  43. package/corpus/templates/brain/app/routes/settings.tsx +158 -0
  44. package/corpus/templates/brain/app/routes/sources.tsx +31 -0
  45. package/corpus/templates/brain/changelog/2026-07-19-added-private-source-safe-semantic-search.md +6 -0
  46. package/corpus/templates/brain/jobs/process-ingest-queue.ts +270 -36
  47. package/corpus/templates/brain/package.json +1 -0
  48. package/corpus/templates/brain/server/db/index.ts +18 -0
  49. package/corpus/templates/brain/server/db/schema.ts +197 -1
  50. package/corpus/templates/brain/server/jobs/distillation-queue.ts +12 -5
  51. package/corpus/templates/brain/server/lib/audiences.ts +708 -0
  52. package/corpus/templates/brain/server/lib/brain-health.ts +251 -38
  53. package/corpus/templates/brain/server/lib/brain.ts +877 -50
  54. package/corpus/templates/brain/server/lib/capture-sanitization.ts +217 -53
  55. package/corpus/templates/brain/server/lib/connectors.ts +556 -70
  56. package/corpus/templates/brain/server/lib/demo.ts +17 -4
  57. package/corpus/templates/brain/server/lib/hybrid-search.ts +363 -0
  58. package/corpus/templates/brain/server/lib/ingest-queue.ts +104 -0
  59. package/corpus/templates/brain/server/lib/privacy-readiness.ts +24 -0
  60. package/corpus/templates/brain/server/lib/search-index-contracts.ts +72 -0
  61. package/corpus/templates/brain/server/lib/search-index.ts +714 -0
  62. package/corpus/templates/brain/server/lib/search.ts +120 -4
  63. package/corpus/templates/brain/server/lib/sensitivity-policy.ts +174 -0
  64. package/corpus/templates/brain/server/lib/slack-events.ts +281 -0
  65. package/corpus/templates/brain/server/onboarding.ts +29 -0
  66. package/corpus/templates/brain/server/plugins/db.ts +204 -0
  67. package/corpus/templates/brain/server/register-secrets.ts +46 -0
  68. package/corpus/templates/brain/server/routes/api/_agent-native/brain/ingest.post.ts +36 -16
  69. package/corpus/templates/brain/server/routes/api/_agent-native/brain/slack-events.post.ts +28 -0
  70. package/corpus/templates/brain/shared/types.ts +10 -0
  71. package/dist/cli/code-agent-executor.d.ts +8 -9
  72. package/dist/cli/code-agent-executor.d.ts.map +1 -1
  73. package/dist/cli/code-agent-executor.js +9 -3
  74. package/dist/cli/code-agent-executor.js.map +1 -1
  75. package/dist/cli/code-agent-runs.d.ts +5 -0
  76. package/dist/cli/code-agent-runs.d.ts.map +1 -1
  77. package/dist/cli/code-agent-runs.js +33 -2
  78. package/dist/cli/code-agent-runs.js.map +1 -1
  79. package/dist/cli/multi-frontier-runs.d.ts +131 -0
  80. package/dist/cli/multi-frontier-runs.d.ts.map +1 -0
  81. package/dist/cli/multi-frontier-runs.js +529 -0
  82. package/dist/cli/multi-frontier-runs.js.map +1 -0
  83. package/dist/coding-tools/index.d.ts +1 -0
  84. package/dist/coding-tools/index.d.ts.map +1 -1
  85. package/dist/coding-tools/index.js +25 -7
  86. package/dist/coding-tools/index.js.map +1 -1
  87. package/dist/collab/awareness.d.ts +2 -2
  88. package/dist/collab/awareness.d.ts.map +1 -1
  89. package/dist/embeddings/index.d.ts +24 -0
  90. package/dist/embeddings/index.d.ts.map +1 -0
  91. package/dist/embeddings/index.js +172 -0
  92. package/dist/embeddings/index.js.map +1 -0
  93. package/dist/index.d.ts +2 -0
  94. package/dist/index.d.ts.map +1 -1
  95. package/dist/index.js +2 -0
  96. package/dist/index.js.map +1 -1
  97. package/dist/notifications/routes.d.ts +3 -3
  98. package/dist/progress/routes.d.ts +1 -1
  99. package/dist/resources/handlers.d.ts +1 -1
  100. package/dist/search/index.d.ts +88 -0
  101. package/dist/search/index.d.ts.map +1 -0
  102. package/dist/search/index.js +267 -0
  103. package/dist/search/index.js.map +1 -0
  104. package/package.json +3 -1
@@ -179,6 +179,34 @@ const enUS = {
179
179
  actionsUnavailableDetail:
180
180
  "This page is wired to get-brain-settings and update-brain-settings and is using defaults for now.",
181
181
  numberFieldRange: "Must be between {{min}} and {{max}} minutes.",
182
+ privacySensitivityTitle: "Privacy and sensitivity",
183
+ privacySensitivityDescription:
184
+ "Readiness for the classifier and the metadata-only quarantine boundary.",
185
+ privacyClassifier: "Privacy classifier",
186
+ privacyModel: "Classifier model",
187
+ quarantineRetention: "Quarantine retention",
188
+ tightenOnly:
189
+ "Sensitivity controls can only tighten retrieval and handling. Quarantined material is never available to source editors or search results.",
190
+ ready: "Ready",
191
+ readinessPending: "Readiness pending",
192
+ days: "{{count}} days",
193
+ privacyClassifierModel: "Classifier model",
194
+ privacyClassifierModelPlaceholder: "Default privacy classifier model",
195
+ privacyClassifierEngine: "Classifier engine",
196
+ privacyClassifierEnginePlaceholder: "Default classifier engine",
197
+ quarantineRetentionHours: "Quarantine retention hours",
198
+ quarantineRetentionHoursDescription:
199
+ "Metadata-only quarantine events are deleted after this period.",
200
+ sensitivityCustomInstructions: "Custom sensitivity instructions",
201
+ sensitivityCustomInstructionsPlaceholder:
202
+ "Add workspace-specific rules that make classification stricter.",
203
+ sensitivityCustomInstructionsDescription:
204
+ "These instructions can only tighten the base privacy policy.",
205
+ publicChannelExclusionPatterns: "Public Slack channel exclusions",
206
+ publicChannelExclusionPatternsPlaceholder:
207
+ "One channel name or pattern per line",
208
+ publicChannelExclusionPatternsDescription:
209
+ "Matching public channels stay excluded from discovery and ingestion.",
182
210
  },
183
211
  review: {
184
212
  eyebrow: "Review",
@@ -195,6 +223,12 @@ const enUS = {
195
223
  pending: "Pending",
196
224
  approved: "Approved",
197
225
  rejected: "Rejected",
226
+ quarantine: "Quarantine",
227
+ quarantineEvent: "Quarantine event",
228
+ metadataOnly: "Metadata only",
229
+ quarantineNoReason: "Suppressed by the sensitivity policy.",
230
+ quarantineId: "Event {{id}}",
231
+ quarantineSource: "Source {{source}}",
198
232
  cardAria:
199
233
  "{{title}}. Press A to approve, R to reject, or S to save wording changes.",
200
234
  reviewerQueue: "Reviewer queue",
@@ -391,6 +425,19 @@ const enUS = {
391
425
  allowedChannels: "Allowed channels",
392
426
  allowedChannelsDescription:
393
427
  "Brain verifies the allow-list, rejects DMs/MPIMs, and never stores credential values in source config.",
428
+ slackDiscoveryMode: "Discovery mode",
429
+ slackDiscoveryModeDescription:
430
+ "List channel metadata for allow-list selection; message history remains off until a channel is approved.",
431
+ slackExclusions:
432
+ "DMs, group DMs, archived channels, and channels without a manual app invite are excluded.",
433
+ slackManualInvite:
434
+ "Private channels require a manual Slack app invite before they can be validated.",
435
+ sensitivityPreview: "Sensitivity preview",
436
+ sensitivityPreviewDescription:
437
+ "Raw message content stays hidden here. Review classification metadata in Quarantine instead.",
438
+ includePublicChannels: "Include approved public channels",
439
+ includePublicChannelsDescription:
440
+ "Off by default. When enabled, discovery still honors the workspace exclusion patterns and channel allow-list.",
394
441
  messagesPerPage: "Messages per page",
395
442
  pollMinutes: "Poll minutes",
396
443
  pageSize: "Page size",
@@ -680,6 +727,8 @@ const enUS = {
680
727
  searchPlaceholder:
681
728
  "Search decisions, customer facts, source names, transcripts, or policy snippets...",
682
729
  type: "Type",
730
+ project: "Project",
731
+ allProjects: "All projects",
683
732
  source: "Source",
684
733
  status: "Status",
685
734
  limit: "Limit",
@@ -774,6 +823,14 @@ const enUS = {
774
823
  items: "items",
775
824
  retryError: "retry error",
776
825
  retryErrors: "retry errors",
826
+ semanticIndex: "Semantic index",
827
+ semanticIndexDescription:
828
+ "Administrator health signals for retrieval coverage and access-control propagation. Counts never expose protected content.",
829
+ indexCoverage: "Index coverage",
830
+ embeddingLag: "Embedding lag",
831
+ aclFreshness: "ACL freshness",
832
+ suppressed: "Suppressed",
833
+ adminOnly: "Admin signal",
777
834
  },
778
835
  };
779
836
 
@@ -6328,6 +6385,675 @@ const exactEnglishDebtOverrides: Partial<
6328
6385
  },
6329
6386
  } satisfies Partial<Record<LocaleCode, DeepPartial<Messages>>>;
6330
6387
 
6388
+ const privacySearchLocalizationOverrides: Partial<
6389
+ Record<LocaleCode, DeepPartial<Messages>>
6390
+ > = {
6391
+ "ar-SA": {
6392
+ settings: {
6393
+ privacySensitivityTitle: "الخصوصية والحساسية",
6394
+ privacySensitivityDescription:
6395
+ "جاهزية المصنّف وحد العزل الذي يحتفظ بالبيانات الوصفية فقط.",
6396
+ privacyClassifier: "مصنّف الخصوصية",
6397
+ privacyModel: "نموذج المصنّف",
6398
+ quarantineRetention: "مدة الاحتفاظ بالعزل",
6399
+ tightenOnly:
6400
+ "لا يمكن لضوابط الحساسية إلا تشديد الاسترجاع والمعالجة. المواد المعزولة لا تظهر لمحرري المصادر أو نتائج البحث.",
6401
+ ready: "جاهز",
6402
+ readinessPending: "الجاهزية قيد الانتظار",
6403
+ days: "{{count}} يومًا",
6404
+ privacyClassifierModel: "نموذج مصنّف الخصوصية",
6405
+ privacyClassifierModelPlaceholder: "نموذج مصنّف الخصوصية الافتراضي",
6406
+ privacyClassifierEngine: "محرك المصنّف",
6407
+ privacyClassifierEnginePlaceholder: "محرك المصنّف الافتراضي",
6408
+ quarantineRetentionHours: "ساعات الاحتفاظ بالعزل",
6409
+ quarantineRetentionHoursDescription:
6410
+ "تُحذف أحداث العزل الوصفية فقط بعد هذه المدة.",
6411
+ sensitivityCustomInstructions: "تعليمات حساسية مخصصة",
6412
+ sensitivityCustomInstructionsPlaceholder:
6413
+ "أضف قواعد مساحة عمل أكثر صرامة.",
6414
+ sensitivityCustomInstructionsDescription:
6415
+ "لا يمكن لهذه التعليمات إلا تشديد سياسة الخصوصية الأساسية.",
6416
+ publicChannelExclusionPatterns: "استثناءات قنوات Slack العامة",
6417
+ publicChannelExclusionPatternsPlaceholder:
6418
+ "اسم قناة أو نمط واحد في كل سطر",
6419
+ publicChannelExclusionPatternsDescription:
6420
+ "تبقى القنوات العامة المطابقة مستبعدة من الاكتشاف والاستيعاب.",
6421
+ },
6422
+ review: {
6423
+ quarantine: "العزل",
6424
+ quarantineEvent: "حدث عزل",
6425
+ metadataOnly: "بيانات وصفية فقط",
6426
+ quarantineNoReason: "تم الحجب بموجب سياسة الحساسية.",
6427
+ quarantineId: "الحدث {{id}}",
6428
+ quarantineSource: "المصدر {{source}}",
6429
+ },
6430
+ sources: {
6431
+ slackDiscoveryMode: "وضع الاكتشاف",
6432
+ slackDiscoveryModeDescription:
6433
+ "اكتشف القنوات العامة وفق قواعد المصدر؛ القنوات الخاصة تتطلب دعوة يدوية للتطبيق.",
6434
+ slackExclusions:
6435
+ "تُستبعد الرسائل المباشرة ورسائل المجموعات والقنوات المؤرشفة والقنوات من دون دعوة يدوية للتطبيق.",
6436
+ slackManualInvite:
6437
+ "تتطلب القنوات الخاصة دعوة يدوية لتطبيق Slack قبل التحقق منها.",
6438
+ sensitivityPreview: "معاينة الحساسية",
6439
+ sensitivityPreviewDescription:
6440
+ "يبقى محتوى الرسالة الخام مخفيًا هنا. راجع بيانات التصنيف الوصفية في العزل بدلًا من ذلك.",
6441
+ includePublicChannels: "تضمين القنوات العامة المعتمدة",
6442
+ includePublicChannelsDescription:
6443
+ "متوقف افتراضيًا. عند التمكين، يظل الاكتشاف ملتزمًا بالاستثناءات وقائمة السماح.",
6444
+ },
6445
+ searchPage: { project: "المشروع", allProjects: "كل المشاريع" },
6446
+ ops: {
6447
+ semanticIndex: "الفهرس الدلالي",
6448
+ semanticIndexDescription:
6449
+ "إشارات صحة للمسؤول حول تغطية الاسترجاع وانتشار التحكم بالوصول. لا تكشف الأعداد محتوى محميًا.",
6450
+ indexCoverage: "تغطية الفهرس",
6451
+ embeddingLag: "تأخر التضمين",
6452
+ aclFreshness: "حداثة ACL",
6453
+ suppressed: "محجوب",
6454
+ adminOnly: "إشارة للمسؤول",
6455
+ },
6456
+ },
6457
+ "de-DE": {
6458
+ settings: {
6459
+ privacySensitivityTitle: "Datenschutz und Sensibilität",
6460
+ privacySensitivityDescription:
6461
+ "Bereitschaft des Klassifikators und Grenze der reinen Metadaten-Quarantäne.",
6462
+ privacyClassifier: "Datenschutzklassifikator",
6463
+ privacyModel: "Klassifikatormodell",
6464
+ quarantineRetention: "Quarantäne-Aufbewahrung",
6465
+ tightenOnly:
6466
+ "Sensibilitätskontrollen können Abruf und Verarbeitung nur verschärfen. Quarantänematerial ist nie für Quellenbearbeitung oder Suche verfügbar.",
6467
+ ready: "Bereit",
6468
+ readinessPending: "Bereitschaft ausstehend",
6469
+ days: "{{count}} Tage",
6470
+ privacyClassifierModel: "Modell des Datenschutzklassifikators",
6471
+ privacyClassifierModelPlaceholder:
6472
+ "Standardmodell für Datenschutzklassifizierung",
6473
+ privacyClassifierEngine: "Klassifikator-Engine",
6474
+ privacyClassifierEnginePlaceholder: "Standard-Engine für Klassifizierung",
6475
+ quarantineRetentionHours: "Quarantäne-Aufbewahrung in Stunden",
6476
+ quarantineRetentionHoursDescription:
6477
+ "Reine Metadatenereignisse werden nach diesem Zeitraum gelöscht.",
6478
+ sensitivityCustomInstructions:
6479
+ "Benutzerdefinierte Sensibilitätsanweisungen",
6480
+ sensitivityCustomInstructionsPlaceholder:
6481
+ "Arbeitsbereichsregeln hinzufügen, die strenger klassifizieren.",
6482
+ sensitivityCustomInstructionsDescription:
6483
+ "Diese Anweisungen können die Basisrichtlinie nur verschärfen.",
6484
+ publicChannelExclusionPatterns: "Ausschlüsse öffentlicher Slack-Kanäle",
6485
+ publicChannelExclusionPatternsPlaceholder:
6486
+ "Ein Kanalname oder Muster pro Zeile",
6487
+ publicChannelExclusionPatternsDescription:
6488
+ "Passende öffentliche Kanäle bleiben von Erkennung und Aufnahme ausgeschlossen.",
6489
+ },
6490
+ review: {
6491
+ quarantine: "Quarantäne",
6492
+ quarantineEvent: "Quarantäneereignis",
6493
+ metadataOnly: "Nur Metadaten",
6494
+ quarantineNoReason: "Durch die Sensibilitätsrichtlinie unterdrückt.",
6495
+ quarantineId: "Ereignis {{id}}",
6496
+ quarantineSource: "Quelle {{source}}",
6497
+ },
6498
+ sources: {
6499
+ slackDiscoveryMode: "Erkennungsmodus",
6500
+ slackDiscoveryModeDescription:
6501
+ "Öffentliche Kanäle nach Quellenregeln erkennen; private Kanäle brauchen eine manuelle App-Einladung.",
6502
+ slackExclusions:
6503
+ "DMs, Gruppen-DMs, archivierte Kanäle und Kanäle ohne manuelle App-Einladung sind ausgeschlossen.",
6504
+ slackManualInvite:
6505
+ "Private Kanäle benötigen vor der Validierung eine manuelle Slack-App-Einladung.",
6506
+ sensitivityPreview: "Sensibilitätsvorschau",
6507
+ sensitivityPreviewDescription:
6508
+ "Rohe Nachrichteninhalte bleiben hier verborgen. Prüfe stattdessen Klassifizierungsmetadaten in Quarantäne.",
6509
+ includePublicChannels: "Genehmigte öffentliche Kanäle einbeziehen",
6510
+ includePublicChannelsDescription:
6511
+ "Standardmäßig aus. Die Erkennung beachtet weiterhin Ausschlüsse und Zulassungsliste.",
6512
+ },
6513
+ searchPage: { project: "Projekt", allProjects: "Alle Projekte" },
6514
+ ops: {
6515
+ semanticIndex: "Semantischer Index",
6516
+ semanticIndexDescription:
6517
+ "Admin-Signale für Abrufabdeckung und Weitergabe der Zugriffskontrolle. Zählwerte zeigen keine geschützten Inhalte.",
6518
+ indexCoverage: "Indexabdeckung",
6519
+ embeddingLag: "Embedding-Verzögerung",
6520
+ aclFreshness: "ACL-Aktualität",
6521
+ suppressed: "Unterdrückt",
6522
+ adminOnly: "Admin-Signal",
6523
+ },
6524
+ },
6525
+ "es-ES": {
6526
+ settings: {
6527
+ privacySensitivityTitle: "Privacidad y sensibilidad",
6528
+ privacySensitivityDescription:
6529
+ "Disponibilidad del clasificador y límite de cuarentena solo con metadatos.",
6530
+ privacyClassifier: "Clasificador de privacidad",
6531
+ privacyModel: "Modelo de clasificador",
6532
+ quarantineRetention: "Retención de cuarentena",
6533
+ tightenOnly:
6534
+ "Los controles de sensibilidad solo pueden reforzar la recuperación y el tratamiento. El material en cuarentena nunca está disponible para editores de fuentes ni resultados de búsqueda.",
6535
+ ready: "Listo",
6536
+ readinessPending: "Disponibilidad pendiente",
6537
+ days: "{{count}} días",
6538
+ privacyClassifierModel: "Modelo del clasificador de privacidad",
6539
+ privacyClassifierModelPlaceholder:
6540
+ "Modelo predeterminado del clasificador",
6541
+ privacyClassifierEngine: "Motor del clasificador",
6542
+ privacyClassifierEnginePlaceholder:
6543
+ "Motor de clasificación predeterminado",
6544
+ quarantineRetentionHours: "Horas de retención en cuarentena",
6545
+ quarantineRetentionHoursDescription:
6546
+ "Los eventos de cuarentena con solo metadatos se eliminan tras este periodo.",
6547
+ sensitivityCustomInstructions:
6548
+ "Instrucciones de sensibilidad personalizadas",
6549
+ sensitivityCustomInstructionsPlaceholder:
6550
+ "Añade reglas del espacio de trabajo más estrictas.",
6551
+ sensitivityCustomInstructionsDescription:
6552
+ "Estas instrucciones solo pueden reforzar la política de privacidad base.",
6553
+ publicChannelExclusionPatterns:
6554
+ "Exclusiones de canales públicos de Slack",
6555
+ publicChannelExclusionPatternsPlaceholder:
6556
+ "Un nombre de canal o patrón por línea",
6557
+ publicChannelExclusionPatternsDescription:
6558
+ "Los canales públicos coincidentes quedan fuera de la detección y la ingesta.",
6559
+ },
6560
+ review: {
6561
+ quarantine: "Cuarentena",
6562
+ quarantineEvent: "Evento de cuarentena",
6563
+ metadataOnly: "Solo metadatos",
6564
+ quarantineNoReason: "Suprimido por la política de sensibilidad.",
6565
+ quarantineId: "Evento {{id}}",
6566
+ quarantineSource: "Fuente {{source}}",
6567
+ },
6568
+ sources: {
6569
+ slackDiscoveryMode: "Modo de detección",
6570
+ slackDiscoveryModeDescription:
6571
+ "Descubre canales públicos según las reglas de la fuente; los privados requieren una invitación manual a la aplicación.",
6572
+ slackExclusions:
6573
+ "Se excluyen los MD, MD grupales, canales archivados y canales sin invitación manual a la aplicación.",
6574
+ slackManualInvite:
6575
+ "Los canales privados requieren una invitación manual a la aplicación de Slack antes de validarse.",
6576
+ sensitivityPreview: "Vista previa de sensibilidad",
6577
+ sensitivityPreviewDescription:
6578
+ "El contenido bruto de mensajes permanece oculto aquí. Revisa los metadatos de clasificación en Cuarentena.",
6579
+ includePublicChannels: "Incluir canales públicos aprobados",
6580
+ includePublicChannelsDescription:
6581
+ "Desactivado por defecto. La detección sigue respetando exclusiones y canales permitidos.",
6582
+ },
6583
+ searchPage: { project: "Proyecto", allProjects: "Todos los proyectos" },
6584
+ ops: {
6585
+ semanticIndex: "Índice semántico",
6586
+ semanticIndexDescription:
6587
+ "Señales administrativas sobre cobertura de recuperación y propagación del control de acceso. Los recuentos nunca muestran contenido protegido.",
6588
+ indexCoverage: "Cobertura del índice",
6589
+ embeddingLag: "Retraso de incrustaciones",
6590
+ aclFreshness: "Actualidad de ACL",
6591
+ suppressed: "Suprimido",
6592
+ adminOnly: "Señal administrativa",
6593
+ },
6594
+ },
6595
+ "fr-FR": {
6596
+ settings: {
6597
+ privacySensitivityTitle: "Confidentialité et sensibilité",
6598
+ privacySensitivityDescription:
6599
+ "État du classificateur et limite de quarantaine avec métadonnées seulement.",
6600
+ privacyClassifier: "Classificateur de confidentialité",
6601
+ privacyModel: "Modèle de classificateur",
6602
+ quarantineRetention: "Conservation en quarantaine",
6603
+ tightenOnly:
6604
+ "Les contrôles de sensibilité ne peuvent que renforcer la recherche et le traitement. Le contenu en quarantaine n'est jamais disponible aux éditeurs de sources ni aux résultats de recherche.",
6605
+ ready: "Prêt",
6606
+ readinessPending: "État en attente",
6607
+ days: "{{count}} jours",
6608
+ privacyClassifierModel: "Modèle du classificateur de confidentialité",
6609
+ privacyClassifierModelPlaceholder: "Modèle de classification par défaut",
6610
+ privacyClassifierEngine: "Moteur du classificateur",
6611
+ privacyClassifierEnginePlaceholder: "Moteur de classification par défaut",
6612
+ quarantineRetentionHours: "Heures de conservation en quarantaine",
6613
+ quarantineRetentionHoursDescription:
6614
+ "Les événements de quarantaine limités aux métadonnées sont supprimés après ce délai.",
6615
+ sensitivityCustomInstructions:
6616
+ "Instructions de sensibilité personnalisées",
6617
+ sensitivityCustomInstructionsPlaceholder:
6618
+ "Ajoutez des règles d’espace de travail plus strictes.",
6619
+ sensitivityCustomInstructionsDescription:
6620
+ "Ces instructions peuvent uniquement renforcer la politique de confidentialité de base.",
6621
+ publicChannelExclusionPatterns: "Exclusions des canaux Slack publics",
6622
+ publicChannelExclusionPatternsPlaceholder:
6623
+ "Un nom de canal ou motif par ligne",
6624
+ publicChannelExclusionPatternsDescription:
6625
+ "Les canaux publics correspondants restent exclus de la découverte et de l’ingestion.",
6626
+ },
6627
+ review: {
6628
+ quarantine: "Quarantaine",
6629
+ quarantineEvent: "Événement de quarantaine",
6630
+ metadataOnly: "Métadonnées seules",
6631
+ quarantineNoReason: "Supprimé par la politique de sensibilité.",
6632
+ quarantineId: "Événement {{id}}",
6633
+ quarantineSource: "Source {{source}}",
6634
+ },
6635
+ sources: {
6636
+ slackDiscoveryMode: "Mode de découverte",
6637
+ slackDiscoveryModeDescription:
6638
+ "Découvre les canaux publics selon les règles de la source ; les canaux privés exigent une invitation manuelle à l'application.",
6639
+ slackExclusions:
6640
+ "Les messages privés, messages de groupe, canaux archivés et canaux sans invitation manuelle à l'application sont exclus.",
6641
+ slackManualInvite:
6642
+ "Les canaux privés exigent une invitation manuelle à l'application Slack avant validation.",
6643
+ sensitivityPreview: "Aperçu de sensibilité",
6644
+ sensitivityPreviewDescription:
6645
+ "Le contenu brut des messages reste masqué ici. Consultez plutôt les métadonnées de classification dans Quarantaine.",
6646
+ includePublicChannels: "Inclure les canaux publics approuvés",
6647
+ includePublicChannelsDescription:
6648
+ "Désactivé par défaut. La découverte respecte toujours les exclusions et la liste autorisée.",
6649
+ },
6650
+ searchPage: { project: "Projet", allProjects: "Tous les projets" },
6651
+ ops: {
6652
+ semanticIndex: "Index sémantique",
6653
+ semanticIndexDescription:
6654
+ "Signaux administrateur sur la couverture de recherche et la propagation du contrôle d'accès. Les compteurs n'exposent jamais de contenu protégé.",
6655
+ indexCoverage: "Couverture de l'index",
6656
+ embeddingLag: "Retard d'intégration",
6657
+ aclFreshness: "Actualité des ACL",
6658
+ suppressed: "Supprimé",
6659
+ adminOnly: "Signal administrateur",
6660
+ },
6661
+ },
6662
+ "hi-IN": {
6663
+ settings: {
6664
+ privacySensitivityTitle: "गोपनीयता और संवेदनशीलता",
6665
+ privacySensitivityDescription:
6666
+ "क्लासिफ़ायर की तैयारी और केवल मेटाडेटा वाली क्वारंटीन सीमा।",
6667
+ privacyClassifier: "गोपनीयता क्लासिफ़ायर",
6668
+ privacyModel: "क्लासिफ़ायर मॉडल",
6669
+ quarantineRetention: "क्वारंटीन अवधारण",
6670
+ tightenOnly:
6671
+ "संवेदनशीलता नियंत्रण केवल पुनर्प्राप्ति और हैंडलिंग को सख्त कर सकते हैं। क्वारंटीन सामग्री स्रोत संपादकों या खोज परिणामों को कभी उपलब्ध नहीं होती।",
6672
+ ready: "तैयार",
6673
+ readinessPending: "तैयारी लंबित है",
6674
+ days: "{{count}} दिन",
6675
+ privacyClassifierModel: "गोपनीयता क्लासिफ़ायर मॉडल",
6676
+ privacyClassifierModelPlaceholder: "डिफ़ॉल्ट गोपनीयता क्लासिफ़ायर मॉडल",
6677
+ privacyClassifierEngine: "क्लासिफ़ायर इंजन",
6678
+ privacyClassifierEnginePlaceholder: "डिफ़ॉल्ट क्लासिफ़ायर इंजन",
6679
+ quarantineRetentionHours: "क्वारंटीन अवधारण घंटे",
6680
+ quarantineRetentionHoursDescription:
6681
+ "केवल मेटाडेटा वाले क्वारंटीन इवेंट इस अवधि के बाद मिटा दिए जाते हैं।",
6682
+ sensitivityCustomInstructions: "कस्टम संवेदनशीलता निर्देश",
6683
+ sensitivityCustomInstructionsPlaceholder: "अधिक सख्त कार्यस्थान नियम जोड़ें।",
6684
+ sensitivityCustomInstructionsDescription:
6685
+ "ये निर्देश केवल मूल गोपनीयता नीति को सख्त कर सकते हैं।",
6686
+ publicChannelExclusionPatterns: "सार्वजनिक Slack चैनल अपवर्जन",
6687
+ publicChannelExclusionPatternsPlaceholder:
6688
+ "हर पंक्ति पर एक चैनल नाम या पैटर्न",
6689
+ publicChannelExclusionPatternsDescription:
6690
+ "मेल खाने वाले सार्वजनिक चैनल खोज और अंतर्ग्रहण से बाहर रहते हैं।",
6691
+ },
6692
+ review: {
6693
+ quarantine: "क्वारंटीन",
6694
+ quarantineEvent: "क्वारंटीन घटना",
6695
+ metadataOnly: "केवल मेटाडेटा",
6696
+ quarantineNoReason: "संवेदनशीलता नीति द्वारा दबाया गया।",
6697
+ quarantineId: "घटना {{id}}",
6698
+ quarantineSource: "स्रोत {{source}}",
6699
+ },
6700
+ sources: {
6701
+ slackDiscoveryMode: "खोज मोड",
6702
+ slackDiscoveryModeDescription:
6703
+ "स्रोत नियमों के अनुसार सार्वजनिक चैनल खोजें; निजी चैनलों के लिए मैन्युअल ऐप आमंत्रण चाहिए।",
6704
+ slackExclusions:
6705
+ "DM, समूह DM, संग्रहित चैनल और मैन्युअल ऐप आमंत्रण के बिना चैनल बाहर रखे जाते हैं।",
6706
+ slackManualInvite:
6707
+ "निजी चैनलों को सत्यापन से पहले मैन्युअल Slack ऐप आमंत्रण चाहिए।",
6708
+ sensitivityPreview: "संवेदनशीलता पूर्वावलोकन",
6709
+ sensitivityPreviewDescription:
6710
+ "कच्ची संदेश सामग्री यहां छिपी रहती है। इसके बजाय क्वारंटीन में वर्गीकरण मेटाडेटा देखें।",
6711
+ includePublicChannels: "स्वीकृत सार्वजनिक चैनल शामिल करें",
6712
+ includePublicChannelsDescription:
6713
+ "डिफ़ॉल्ट रूप से बंद। खोज अभी भी अपवर्जन और अनुमति सूची का पालन करती है।",
6714
+ },
6715
+ searchPage: { project: "प्रोजेक्ट", allProjects: "सभी प्रोजेक्ट" },
6716
+ ops: {
6717
+ semanticIndex: "अर्थगत सूचकांक",
6718
+ semanticIndexDescription:
6719
+ "पुनर्प्राप्ति कवरेज और पहुंच नियंत्रण प्रसार के लिए व्यवस्थापक संकेत। गिनती संरक्षित सामग्री नहीं दिखाती।",
6720
+ indexCoverage: "सूचकांक कवरेज",
6721
+ embeddingLag: "एम्बेडिंग देरी",
6722
+ aclFreshness: "ACL ताजगी",
6723
+ suppressed: "दबाया गया",
6724
+ adminOnly: "व्यवस्थापक संकेत",
6725
+ },
6726
+ },
6727
+ "ja-JP": {
6728
+ settings: {
6729
+ privacySensitivityTitle: "プライバシーと機密性",
6730
+ privacySensitivityDescription:
6731
+ "分類器の準備状況とメタデータのみの隔離境界です。",
6732
+ privacyClassifier: "プライバシー分類器",
6733
+ privacyModel: "分類器モデル",
6734
+ quarantineRetention: "隔離の保持期間",
6735
+ tightenOnly:
6736
+ "機密性コントロールは取得と処理を厳しくすることしかできません。隔離された資料はソース編集者や検索結果に提供されません。",
6737
+ ready: "準備完了",
6738
+ readinessPending: "準備中",
6739
+ days: "{{count}} 日",
6740
+ privacyClassifierModel: "プライバシー分類モデル",
6741
+ privacyClassifierModelPlaceholder: "既定のプライバシー分類モデル",
6742
+ privacyClassifierEngine: "分類エンジン",
6743
+ privacyClassifierEnginePlaceholder: "既定の分類エンジン",
6744
+ quarantineRetentionHours: "隔離の保持時間",
6745
+ quarantineRetentionHoursDescription:
6746
+ "メタデータのみの隔離イベントは、この期間後に削除されます。",
6747
+ sensitivityCustomInstructions: "カスタム機密性指示",
6748
+ sensitivityCustomInstructionsPlaceholder:
6749
+ "分類を厳しくするワークスペース規則を追加します。",
6750
+ sensitivityCustomInstructionsDescription:
6751
+ "これらの指示は基本のプライバシーポリシーを厳しくする場合にのみ使えます。",
6752
+ publicChannelExclusionPatterns: "公開 Slack チャンネルの除外",
6753
+ publicChannelExclusionPatternsPlaceholder:
6754
+ "1行に1つのチャンネル名またはパターン",
6755
+ publicChannelExclusionPatternsDescription:
6756
+ "一致する公開チャンネルは検出と取り込みから除外されます。",
6757
+ },
6758
+ review: {
6759
+ quarantine: "隔離",
6760
+ quarantineEvent: "隔離イベント",
6761
+ metadataOnly: "メタデータのみ",
6762
+ quarantineNoReason: "機密性ポリシーにより抑制されました。",
6763
+ quarantineId: "イベント {{id}}",
6764
+ quarantineSource: "ソース {{source}}",
6765
+ },
6766
+ sources: {
6767
+ slackDiscoveryMode: "検出モード",
6768
+ slackDiscoveryModeDescription:
6769
+ "ソース規則に従って公開チャンネルを検出します。非公開チャンネルには手動のアプリ招待が必要です。",
6770
+ slackExclusions:
6771
+ "DM、グループDM、アーカイブ済みチャンネル、手動アプリ招待のないチャンネルは除外されます。",
6772
+ slackManualInvite:
6773
+ "非公開チャンネルは検証前に手動でSlackアプリを招待する必要があります。",
6774
+ sensitivityPreview: "機密性プレビュー",
6775
+ sensitivityPreviewDescription:
6776
+ "ここでは生のメッセージ内容は非表示です。代わりに隔離で分類メタデータを確認してください。",
6777
+ includePublicChannels: "承認済み公開チャンネルを含める",
6778
+ includePublicChannelsDescription:
6779
+ "既定ではオフです。有効化後も除外規則と許可リストを尊重します。",
6780
+ },
6781
+ searchPage: {
6782
+ project: "プロジェクト",
6783
+ allProjects: "すべてのプロジェクト",
6784
+ },
6785
+ ops: {
6786
+ semanticIndex: "セマンティックインデックス",
6787
+ semanticIndexDescription:
6788
+ "検索カバレッジとアクセス制御の伝播に関する管理者向けシグナルです。件数で保護された内容が公開されることはありません。",
6789
+ indexCoverage: "インデックスのカバレッジ",
6790
+ embeddingLag: "埋め込みの遅延",
6791
+ aclFreshness: "ACL の鮮度",
6792
+ suppressed: "抑制済み",
6793
+ adminOnly: "管理者シグナル",
6794
+ },
6795
+ },
6796
+ "ko-KR": {
6797
+ settings: {
6798
+ privacySensitivityTitle: "개인정보 및 민감도",
6799
+ privacySensitivityDescription:
6800
+ "분류기 준비 상태와 메타데이터 전용 격리 경계입니다.",
6801
+ privacyClassifier: "개인정보 분류기",
6802
+ privacyModel: "분류기 모델",
6803
+ quarantineRetention: "격리 보존 기간",
6804
+ tightenOnly:
6805
+ "민감도 제어는 검색과 처리를 더 엄격하게만 만들 수 있습니다. 격리된 자료는 소스 편집자나 검색 결과에 절대 제공되지 않습니다.",
6806
+ ready: "준비됨",
6807
+ readinessPending: "준비 상태 대기 중",
6808
+ days: "{{count}}일",
6809
+ privacyClassifierModel: "개인정보 분류 모델",
6810
+ privacyClassifierModelPlaceholder: "기본 개인정보 분류 모델",
6811
+ privacyClassifierEngine: "분류 엔진",
6812
+ privacyClassifierEnginePlaceholder: "기본 분류 엔진",
6813
+ quarantineRetentionHours: "격리 보존 시간",
6814
+ quarantineRetentionHoursDescription:
6815
+ "메타데이터 전용 격리 이벤트는 이 기간 후 삭제됩니다.",
6816
+ sensitivityCustomInstructions: "사용자 지정 민감도 지침",
6817
+ sensitivityCustomInstructionsPlaceholder:
6818
+ "분류를 더 엄격하게 하는 작업공간 규칙을 추가하세요.",
6819
+ sensitivityCustomInstructionsDescription:
6820
+ "이 지침은 기본 개인정보 정책을 강화하는 데만 사용할 수 있습니다.",
6821
+ publicChannelExclusionPatterns: "공개 Slack 채널 제외",
6822
+ publicChannelExclusionPatternsPlaceholder:
6823
+ "줄마다 채널 이름 또는 패턴 하나",
6824
+ publicChannelExclusionPatternsDescription:
6825
+ "일치하는 공개 채널은 검색 및 수집에서 제외됩니다.",
6826
+ },
6827
+ review: {
6828
+ quarantine: "격리",
6829
+ quarantineEvent: "격리 이벤트",
6830
+ metadataOnly: "메타데이터만",
6831
+ quarantineNoReason: "민감도 정책에 의해 차단되었습니다.",
6832
+ quarantineId: "이벤트 {{id}}",
6833
+ quarantineSource: "소스 {{source}}",
6834
+ },
6835
+ sources: {
6836
+ slackDiscoveryMode: "검색 모드",
6837
+ slackDiscoveryModeDescription:
6838
+ "소스 규칙에 따라 공개 채널을 검색합니다. 비공개 채널에는 수동 앱 초대가 필요합니다.",
6839
+ slackExclusions:
6840
+ "DM, 그룹 DM, 보관된 채널 및 수동 앱 초대가 없는 채널은 제외됩니다.",
6841
+ slackManualInvite:
6842
+ "비공개 채널은 유효성 검사 전에 Slack 앱을 수동으로 초대해야 합니다.",
6843
+ sensitivityPreview: "민감도 미리보기",
6844
+ sensitivityPreviewDescription:
6845
+ "원시 메시지 콘텐츠는 여기에서 숨겨집니다. 대신 격리에서 분류 메타데이터를 검토하세요.",
6846
+ includePublicChannels: "승인된 공개 채널 포함",
6847
+ includePublicChannelsDescription:
6848
+ "기본적으로 꺼져 있습니다. 검색은 계속 제외 패턴과 허용 목록을 따릅니다.",
6849
+ },
6850
+ searchPage: { project: "프로젝트", allProjects: "모든 프로젝트" },
6851
+ ops: {
6852
+ semanticIndex: "시맨틱 인덱스",
6853
+ semanticIndexDescription:
6854
+ "검색 범위와 접근 제어 전파를 위한 관리자 신호입니다. 개수는 보호된 콘텐츠를 노출하지 않습니다.",
6855
+ indexCoverage: "인덱스 범위",
6856
+ embeddingLag: "임베딩 지연",
6857
+ aclFreshness: "ACL 최신성",
6858
+ suppressed: "차단됨",
6859
+ adminOnly: "관리자 신호",
6860
+ },
6861
+ },
6862
+ "pt-BR": {
6863
+ settings: {
6864
+ privacySensitivityTitle: "Privacidade e sensibilidade",
6865
+ privacySensitivityDescription:
6866
+ "Prontidão do classificador e limite de quarentena somente com metadados.",
6867
+ privacyClassifier: "Classificador de privacidade",
6868
+ privacyModel: "Modelo do classificador",
6869
+ quarantineRetention: "Retenção da quarentena",
6870
+ tightenOnly:
6871
+ "Os controles de sensibilidade só podem reforçar a recuperação e o tratamento. Material em quarentena nunca fica disponível para editores de fontes ou resultados de busca.",
6872
+ ready: "Pronto",
6873
+ readinessPending: "Prontidão pendente",
6874
+ days: "{{count}} dias",
6875
+ privacyClassifierModel: "Modelo do classificador de privacidade",
6876
+ privacyClassifierModelPlaceholder: "Modelo padrão do classificador",
6877
+ privacyClassifierEngine: "Mecanismo do classificador",
6878
+ privacyClassifierEnginePlaceholder: "Mecanismo de classificação padrão",
6879
+ quarantineRetentionHours: "Horas de retenção da quarentena",
6880
+ quarantineRetentionHoursDescription:
6881
+ "Eventos de quarentena somente com metadados são excluídos após este período.",
6882
+ sensitivityCustomInstructions:
6883
+ "Instruções personalizadas de sensibilidade",
6884
+ sensitivityCustomInstructionsPlaceholder:
6885
+ "Adicione regras de espaço de trabalho mais rigorosas.",
6886
+ sensitivityCustomInstructionsDescription:
6887
+ "Estas instruções só podem reforçar a política de privacidade base.",
6888
+ publicChannelExclusionPatterns: "Exclusões de canais públicos do Slack",
6889
+ publicChannelExclusionPatternsPlaceholder:
6890
+ "Um nome de canal ou padrão por linha",
6891
+ publicChannelExclusionPatternsDescription:
6892
+ "Canais públicos correspondentes ficam fora da descoberta e ingestão.",
6893
+ },
6894
+ review: {
6895
+ quarantine: "Quarentena",
6896
+ quarantineEvent: "Evento de quarentena",
6897
+ metadataOnly: "Somente metadados",
6898
+ quarantineNoReason: "Suprimido pela política de sensibilidade.",
6899
+ quarantineId: "Evento {{id}}",
6900
+ quarantineSource: "Fonte {{source}}",
6901
+ },
6902
+ sources: {
6903
+ slackDiscoveryMode: "Modo de descoberta",
6904
+ slackDiscoveryModeDescription:
6905
+ "Descubra canais públicos pelas regras da fonte; canais privados exigem convite manual ao aplicativo.",
6906
+ slackExclusions:
6907
+ "DMs, DMs em grupo, canais arquivados e canais sem convite manual ao aplicativo são excluídos.",
6908
+ slackManualInvite:
6909
+ "Canais privados exigem convite manual ao aplicativo Slack antes da validação.",
6910
+ sensitivityPreview: "Prévia de sensibilidade",
6911
+ sensitivityPreviewDescription:
6912
+ "O conteúdo bruto das mensagens fica oculto aqui. Revise os metadados de classificação em Quarentena.",
6913
+ includePublicChannels: "Incluir canais públicos aprovados",
6914
+ includePublicChannelsDescription:
6915
+ "Desativado por padrão. A descoberta continua respeitando exclusões e a lista permitida.",
6916
+ },
6917
+ searchPage: { project: "Projeto", allProjects: "Todos os projetos" },
6918
+ ops: {
6919
+ semanticIndex: "Índice semântico",
6920
+ semanticIndexDescription:
6921
+ "Sinais administrativos para cobertura de recuperação e propagação de controle de acesso. Contagens nunca expõem conteúdo protegido.",
6922
+ indexCoverage: "Cobertura do índice",
6923
+ embeddingLag: "Atraso de embeddings",
6924
+ aclFreshness: "Atualidade da ACL",
6925
+ suppressed: "Suprimido",
6926
+ adminOnly: "Sinal administrativo",
6927
+ },
6928
+ },
6929
+ "zh-CN": {
6930
+ settings: {
6931
+ privacySensitivityTitle: "隐私与敏感性",
6932
+ privacySensitivityDescription:
6933
+ "分类器就绪状态以及仅保留元数据的隔离边界。",
6934
+ privacyClassifier: "隐私分类器",
6935
+ privacyModel: "分类器模型",
6936
+ quarantineRetention: "隔离保留期",
6937
+ tightenOnly:
6938
+ "敏感性控制只能收紧检索和处理。隔离材料绝不会提供给来源编辑者或搜索结果。",
6939
+ ready: "已就绪",
6940
+ readinessPending: "就绪状态待定",
6941
+ days: "{{count}} 天",
6942
+ privacyClassifierModel: "隐私分类器模型",
6943
+ privacyClassifierModelPlaceholder: "默认隐私分类器模型",
6944
+ privacyClassifierEngine: "分类器引擎",
6945
+ privacyClassifierEnginePlaceholder: "默认分类器引擎",
6946
+ quarantineRetentionHours: "隔离保留小时数",
6947
+ quarantineRetentionHoursDescription:
6948
+ "仅含元数据的隔离事件将在此期限后删除。",
6949
+ sensitivityCustomInstructions: "自定义敏感性说明",
6950
+ sensitivityCustomInstructionsPlaceholder: "添加更严格的工作区分类规则。",
6951
+ sensitivityCustomInstructionsDescription:
6952
+ "这些说明只能收紧基础隐私策略。",
6953
+ publicChannelExclusionPatterns: "公开 Slack 频道排除项",
6954
+ publicChannelExclusionPatternsPlaceholder: "每行一个频道名称或模式",
6955
+ publicChannelExclusionPatternsDescription:
6956
+ "匹配的公开频道将保持在发现和摄取范围之外。",
6957
+ },
6958
+ review: {
6959
+ quarantine: "隔离",
6960
+ quarantineEvent: "隔离事件",
6961
+ metadataOnly: "仅元数据",
6962
+ quarantineNoReason: "已根据敏感性策略抑制。",
6963
+ quarantineId: "事件 {{id}}",
6964
+ quarantineSource: "来源 {{source}}",
6965
+ },
6966
+ sources: {
6967
+ slackDiscoveryMode: "发现模式",
6968
+ slackDiscoveryModeDescription:
6969
+ "按来源规则发现公开频道;私密频道需要手动邀请应用。",
6970
+ slackExclusions:
6971
+ "会排除私信、群组私信、已归档频道以及未手动邀请应用的频道。",
6972
+ slackManualInvite: "私密频道必须先手动邀请 Slack 应用才能验证。",
6973
+ sensitivityPreview: "敏感性预览",
6974
+ sensitivityPreviewDescription:
6975
+ "原始消息内容在此处保持隐藏。请改在隔离中查看分类元数据。",
6976
+ includePublicChannels: "包含已批准的公开频道",
6977
+ includePublicChannelsDescription:
6978
+ "默认关闭。启用后,发现仍会遵守排除模式和频道允许列表。",
6979
+ },
6980
+ searchPage: { project: "项目", allProjects: "所有项目" },
6981
+ ops: {
6982
+ semanticIndex: "语义索引",
6983
+ semanticIndexDescription:
6984
+ "用于检索覆盖率和访问控制传播的管理员运行状况信号。计数绝不会暴露受保护内容。",
6985
+ indexCoverage: "索引覆盖率",
6986
+ embeddingLag: "嵌入延迟",
6987
+ aclFreshness: "ACL 新鲜度",
6988
+ suppressed: "已抑制",
6989
+ adminOnly: "管理员信号",
6990
+ },
6991
+ },
6992
+ "zh-TW": {
6993
+ settings: {
6994
+ privacySensitivityTitle: "隱私與敏感性",
6995
+ privacySensitivityDescription:
6996
+ "分類器整備狀態與僅保留中繼資料的隔離邊界。",
6997
+ privacyClassifier: "隱私分類器",
6998
+ privacyModel: "分類器模型",
6999
+ quarantineRetention: "隔離保留期",
7000
+ tightenOnly:
7001
+ "敏感性控制只能收緊擷取和處理。隔離材料絕不會提供給來源編輯者或搜尋結果。",
7002
+ ready: "已就緒",
7003
+ readinessPending: "整備狀態待定",
7004
+ days: "{{count}} 天",
7005
+ privacyClassifierModel: "隱私分類器模型",
7006
+ privacyClassifierModelPlaceholder: "預設隱私分類器模型",
7007
+ privacyClassifierEngine: "分類器引擎",
7008
+ privacyClassifierEnginePlaceholder: "預設分類器引擎",
7009
+ quarantineRetentionHours: "隔離保留時數",
7010
+ quarantineRetentionHoursDescription:
7011
+ "僅含中繼資料的隔離事件將在此期限後刪除。",
7012
+ sensitivityCustomInstructions: "自訂敏感性指示",
7013
+ sensitivityCustomInstructionsPlaceholder: "新增更嚴格的工作區分類規則。",
7014
+ sensitivityCustomInstructionsDescription:
7015
+ "這些指示只能收緊基礎隱私政策。",
7016
+ publicChannelExclusionPatterns: "公開 Slack 頻道排除項目",
7017
+ publicChannelExclusionPatternsPlaceholder: "每行一個頻道名稱或模式",
7018
+ publicChannelExclusionPatternsDescription:
7019
+ "符合的公開頻道會排除於探索和擷取之外。",
7020
+ },
7021
+ review: {
7022
+ quarantine: "隔離",
7023
+ quarantineEvent: "隔離事件",
7024
+ metadataOnly: "僅中繼資料",
7025
+ quarantineNoReason: "已依敏感性政策抑制。",
7026
+ quarantineId: "事件 {{id}}",
7027
+ quarantineSource: "來源 {{source}}",
7028
+ },
7029
+ sources: {
7030
+ slackDiscoveryMode: "探索模式",
7031
+ slackDiscoveryModeDescription:
7032
+ "依來源規則探索公開頻道;私人頻道需要手動邀請應用程式。",
7033
+ slackExclusions:
7034
+ "會排除私訊、群組私訊、已封存頻道,以及未手動邀請應用程式的頻道。",
7035
+ slackManualInvite: "私人頻道必須先手動邀請 Slack 應用程式才能驗證。",
7036
+ sensitivityPreview: "敏感性預覽",
7037
+ sensitivityPreviewDescription:
7038
+ "原始訊息內容在此處保持隱藏。請改在隔離中檢閱分類中繼資料。",
7039
+ includePublicChannels: "包含已核准的公開頻道",
7040
+ includePublicChannelsDescription:
7041
+ "預設關閉。啟用後,探索仍會遵循排除模式與頻道允許清單。",
7042
+ },
7043
+ searchPage: { project: "專案", allProjects: "所有專案" },
7044
+ ops: {
7045
+ semanticIndex: "語意索引",
7046
+ semanticIndexDescription:
7047
+ "用於擷取涵蓋率與存取控制傳播的管理員健康訊號。計數絕不會暴露受保護內容。",
7048
+ indexCoverage: "索引涵蓋率",
7049
+ embeddingLag: "嵌入延遲",
7050
+ aclFreshness: "ACL 新鮮度",
7051
+ suppressed: "已抑制",
7052
+ adminOnly: "管理員訊號",
7053
+ },
7054
+ },
7055
+ };
7056
+
6331
7057
  function deepMergeMessages<T extends Record<string, unknown>>(
6332
7058
  base: T,
6333
7059
  overrides: DeepPartial<T> | undefined,
@@ -6360,8 +7086,11 @@ export const messagesByLocale = Object.fromEntries(
6360
7086
  locale === "en-US"
6361
7087
  ? messages
6362
7088
  : deepMergeMessages(
6363
- messages,
6364
- exactEnglishDebtOverrides[locale as LocaleCode],
7089
+ deepMergeMessages(
7090
+ messages,
7091
+ exactEnglishDebtOverrides[locale as LocaleCode],
7092
+ ),
7093
+ privacySearchLocalizationOverrides[locale as LocaleCode],
6365
7094
  ),
6366
7095
  ]),
6367
7096
  ) as Record<LocaleCode, Messages>;