@red-hat-developer-hub/backstage-plugin-intelligent-assistant 5.2.0 → 5.3.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 (44) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +14 -2
  3. package/dist/alpha.d.ts +24 -0
  4. package/dist/components/LightSpeedChat.esm.js +74 -27
  5. package/dist/components/LightSpeedChat.esm.js.map +1 -1
  6. package/dist/components/LightspeedChatBoxHeader.esm.js +28 -0
  7. package/dist/components/LightspeedChatBoxHeader.esm.js.map +1 -1
  8. package/dist/components/LightspeedChatContainer.esm.js +2 -1
  9. package/dist/components/LightspeedChatContainer.esm.js.map +1 -1
  10. package/dist/components/LightspeedDrawerProvider.esm.js +1 -0
  11. package/dist/components/LightspeedDrawerProvider.esm.js.map +1 -1
  12. package/dist/components/MessageBarModelSelector.esm.js +104 -12
  13. package/dist/components/MessageBarModelSelector.esm.js.map +1 -1
  14. package/dist/components/ScreenContextChip.esm.js +172 -0
  15. package/dist/components/ScreenContextChip.esm.js.map +1 -0
  16. package/dist/hooks/screenContextLabelSubscription.esm.js +113 -0
  17. package/dist/hooks/screenContextLabelSubscription.esm.js.map +1 -0
  18. package/dist/hooks/useScreenContextLabelRevision.esm.js +13 -0
  19. package/dist/hooks/useScreenContextLabelRevision.esm.js.map +1 -0
  20. package/dist/hooks/useScreenContextSettings.esm.js +110 -0
  21. package/dist/hooks/useScreenContextSettings.esm.js.map +1 -0
  22. package/dist/hooks/useWindowLocation.esm.js +28 -0
  23. package/dist/hooks/useWindowLocation.esm.js.map +1 -0
  24. package/dist/translations/de.esm.js +24 -0
  25. package/dist/translations/de.esm.js.map +1 -1
  26. package/dist/translations/es.esm.js +24 -0
  27. package/dist/translations/es.esm.js.map +1 -1
  28. package/dist/translations/fr.esm.js +24 -0
  29. package/dist/translations/fr.esm.js.map +1 -1
  30. package/dist/translations/it.esm.js +24 -0
  31. package/dist/translations/it.esm.js.map +1 -1
  32. package/dist/translations/ja.esm.js +24 -0
  33. package/dist/translations/ja.esm.js.map +1 -1
  34. package/dist/translations/ref.esm.js +24 -0
  35. package/dist/translations/ref.esm.js.map +1 -1
  36. package/dist/utils/dom-selectors.esm.js +22 -2
  37. package/dist/utils/dom-selectors.esm.js.map +1 -1
  38. package/dist/utils/screen-capture.esm.js +116 -0
  39. package/dist/utils/screen-capture.esm.js.map +1 -0
  40. package/dist/utils/screen-context-utils.esm.js +343 -0
  41. package/dist/utils/screen-context-utils.esm.js.map +1 -0
  42. package/dist/utils/sensitive-data-redactor.esm.js +39 -1
  43. package/dist/utils/sensitive-data-redactor.esm.js.map +1 -1
  44. package/package.json +3 -3
@@ -0,0 +1,113 @@
1
+ import { PAGE_CHROME_ROOT_SELECTORS } from '../utils/dom-selectors.esm.js';
2
+ import { resolveScreenContextChipLabel } from '../utils/screen-context-utils.esm.js';
3
+
4
+ const listeners = /* @__PURE__ */ new Set();
5
+ let historyPatched = false;
6
+ let pageChromeObserver;
7
+ let notifyScheduled = false;
8
+ function notifyScreenContextLabelListeners() {
9
+ listeners.forEach((listener) => listener());
10
+ }
11
+ function scheduleNotifyScreenContextLabelListeners() {
12
+ if (notifyScheduled || typeof window === "undefined") {
13
+ return;
14
+ }
15
+ notifyScheduled = true;
16
+ window.requestAnimationFrame(() => {
17
+ notifyScheduled = false;
18
+ notifyScreenContextLabelListeners();
19
+ });
20
+ }
21
+ function isInsideScreenCaptureExclude(node) {
22
+ const el = node instanceof Element ? node : node.parentElement;
23
+ return Boolean(el?.closest("[data-screen-capture-exclude]"));
24
+ }
25
+ function shouldReactToMutation(mutations) {
26
+ for (const mutation of mutations) {
27
+ if (mutation.target instanceof Node && isInsideScreenCaptureExclude(mutation.target)) {
28
+ continue;
29
+ }
30
+ return true;
31
+ }
32
+ return false;
33
+ }
34
+ const observedChromeNodes = /* @__PURE__ */ new WeakSet();
35
+ function collectPageChromeObserveTargets() {
36
+ const observeTargets = [];
37
+ const titleEl = document.querySelector("title");
38
+ if (titleEl) {
39
+ observeTargets.push(titleEl);
40
+ }
41
+ for (const selector of PAGE_CHROME_ROOT_SELECTORS) {
42
+ const node = document.querySelector(selector);
43
+ if (node && !observeTargets.includes(node)) {
44
+ observeTargets.push(node);
45
+ }
46
+ }
47
+ if (observeTargets.length === 0 && document.body) {
48
+ observeTargets.push(document.body);
49
+ }
50
+ return observeTargets;
51
+ }
52
+ function ensurePageChromeObserver() {
53
+ if (typeof window === "undefined") {
54
+ return;
55
+ }
56
+ if (!pageChromeObserver) {
57
+ pageChromeObserver = new MutationObserver((mutations) => {
58
+ if (shouldReactToMutation(mutations)) {
59
+ scheduleNotifyScreenContextLabelListeners();
60
+ }
61
+ });
62
+ }
63
+ for (const target of collectPageChromeObserveTargets()) {
64
+ if (observedChromeNodes.has(target)) {
65
+ continue;
66
+ }
67
+ observedChromeNodes.add(target);
68
+ pageChromeObserver.observe(target, {
69
+ subtree: true,
70
+ childList: true,
71
+ characterData: true
72
+ });
73
+ }
74
+ }
75
+ function patchBrowserHistoryForScreenContext() {
76
+ if (historyPatched || typeof window === "undefined") {
77
+ return;
78
+ }
79
+ historyPatched = true;
80
+ window.addEventListener("popstate", notifyScreenContextLabelListeners);
81
+ window.addEventListener("hashchange", notifyScreenContextLabelListeners);
82
+ const { pushState, replaceState } = window.history;
83
+ window.history.pushState = function pushStatePatched(...args) {
84
+ pushState.apply(this, args);
85
+ notifyScreenContextLabelListeners();
86
+ };
87
+ window.history.replaceState = function replaceStatePatched(...args) {
88
+ replaceState.apply(this, args);
89
+ notifyScreenContextLabelListeners();
90
+ };
91
+ }
92
+ let cachedSnapshot = "";
93
+ function getScreenContextLabelSnapshot() {
94
+ const pathname = window.location.pathname;
95
+ const search = window.location.search;
96
+ const { label } = resolveScreenContextChipLabel({ pathname, search });
97
+ const next = `${pathname}\0${search}\0${label}`;
98
+ if (next !== cachedSnapshot) {
99
+ cachedSnapshot = next;
100
+ }
101
+ return cachedSnapshot;
102
+ }
103
+ function subscribeToScreenContextLabel(onStoreChange) {
104
+ patchBrowserHistoryForScreenContext();
105
+ ensurePageChromeObserver();
106
+ listeners.add(onStoreChange);
107
+ return () => {
108
+ listeners.delete(onStoreChange);
109
+ };
110
+ }
111
+
112
+ export { getScreenContextLabelSnapshot, isInsideScreenCaptureExclude, patchBrowserHistoryForScreenContext, subscribeToScreenContextLabel };
113
+ //# sourceMappingURL=screenContextLabelSubscription.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screenContextLabelSubscription.esm.js","sources":["../../src/hooks/screenContextLabelSubscription.ts"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { PAGE_CHROME_ROOT_SELECTORS } from '../utils/dom-selectors';\nimport { resolveScreenContextChipLabel } from '../utils/screen-context-utils';\n\nconst listeners = new Set<() => void>();\nlet historyPatched = false;\nlet pageChromeObserver: MutationObserver | undefined;\nlet notifyScheduled = false;\n\nfunction notifyScreenContextLabelListeners() {\n listeners.forEach(listener => listener());\n}\n\nfunction scheduleNotifyScreenContextLabelListeners() {\n if (notifyScheduled || typeof window === 'undefined') {\n return;\n }\n notifyScheduled = true;\n window.requestAnimationFrame(() => {\n notifyScheduled = false;\n notifyScreenContextLabelListeners();\n });\n}\n\n/** @internal Exported for unit tests. */\nexport function isInsideScreenCaptureExclude(node: Node): boolean {\n const el = node instanceof Element ? node : node.parentElement;\n return Boolean(el?.closest('[data-screen-capture-exclude]'));\n}\n\nfunction shouldReactToMutation(mutations: MutationRecord[]): boolean {\n for (const mutation of mutations) {\n if (\n mutation.target instanceof Node &&\n isInsideScreenCaptureExclude(mutation.target)\n ) {\n continue;\n }\n return true;\n }\n return false;\n}\n\nconst observedChromeNodes = new WeakSet<Node>();\n\nfunction collectPageChromeObserveTargets(): Node[] {\n const observeTargets: Node[] = [];\n const titleEl = document.querySelector('title');\n if (titleEl) {\n observeTargets.push(titleEl);\n }\n for (const selector of PAGE_CHROME_ROOT_SELECTORS) {\n const node = document.querySelector(selector);\n if (node && !observeTargets.includes(node)) {\n observeTargets.push(node);\n }\n }\n if (observeTargets.length === 0 && document.body) {\n observeTargets.push(document.body);\n }\n return observeTargets;\n}\n\nfunction ensurePageChromeObserver() {\n if (typeof window === 'undefined') {\n return;\n }\n\n if (!pageChromeObserver) {\n pageChromeObserver = new MutationObserver(mutations => {\n if (shouldReactToMutation(mutations)) {\n scheduleNotifyScreenContextLabelListeners();\n }\n });\n }\n\n for (const target of collectPageChromeObserveTargets()) {\n if (observedChromeNodes.has(target)) {\n continue;\n }\n observedChromeNodes.add(target);\n pageChromeObserver.observe(target, {\n subtree: true,\n childList: true,\n characterData: true,\n });\n }\n}\n\n/**\n * Patch browser history so SPA pushState/replaceState notify label listeners.\n * Idempotent; called on first subscribe rather than at module load.\n */\nexport function patchBrowserHistoryForScreenContext() {\n if (historyPatched || typeof window === 'undefined') {\n return;\n }\n historyPatched = true;\n\n window.addEventListener('popstate', notifyScreenContextLabelListeners);\n window.addEventListener('hashchange', notifyScreenContextLabelListeners);\n\n const { pushState, replaceState } = window.history;\n window.history.pushState = function pushStatePatched(...args) {\n pushState.apply(this, args);\n notifyScreenContextLabelListeners();\n };\n window.history.replaceState = function replaceStatePatched(...args) {\n replaceState.apply(this, args);\n notifyScreenContextLabelListeners();\n };\n}\n\nlet cachedSnapshot = '';\n\nexport function getScreenContextLabelSnapshot(): string {\n const pathname = window.location.pathname;\n const search = window.location.search;\n const { label } = resolveScreenContextChipLabel({ pathname, search });\n const next = `${pathname}\\0${search}\\0${label}`;\n if (next !== cachedSnapshot) {\n cachedSnapshot = next;\n }\n return cachedSnapshot;\n}\n\nexport function subscribeToScreenContextLabel(\n onStoreChange: () => void,\n): () => void {\n patchBrowserHistoryForScreenContext();\n ensurePageChromeObserver();\n listeners.add(onStoreChange);\n return () => {\n listeners.delete(onStoreChange);\n };\n}\n\n/** @internal For unit tests only. */\nexport function resetScreenContextLabelSnapshotCache(): void {\n cachedSnapshot = '';\n}\n"],"names":[],"mappings":";;;AAmBA,MAAM,SAAA,uBAAgB,GAAA,EAAgB;AACtC,IAAI,cAAA,GAAiB,KAAA;AACrB,IAAI,kBAAA;AACJ,IAAI,eAAA,GAAkB,KAAA;AAEtB,SAAS,iCAAA,GAAoC;AAC3C,EAAA,SAAA,CAAU,OAAA,CAAQ,CAAA,QAAA,KAAY,QAAA,EAAU,CAAA;AAC1C;AAEA,SAAS,yCAAA,GAA4C;AACnD,EAAA,IAAI,eAAA,IAAmB,OAAO,MAAA,KAAW,WAAA,EAAa;AACpD,IAAA;AAAA,EACF;AACA,EAAA,eAAA,GAAkB,IAAA;AAClB,EAAA,MAAA,CAAO,sBAAsB,MAAM;AACjC,IAAA,eAAA,GAAkB,KAAA;AAClB,IAAA,iCAAA,EAAkC;AAAA,EACpC,CAAC,CAAA;AACH;AAGO,SAAS,6BAA6B,IAAA,EAAqB;AAChE,EAAA,MAAM,EAAA,GAAK,IAAA,YAAgB,OAAA,GAAU,IAAA,GAAO,IAAA,CAAK,aAAA;AACjD,EAAA,OAAO,OAAA,CAAQ,EAAA,EAAI,OAAA,CAAQ,+BAA+B,CAAC,CAAA;AAC7D;AAEA,SAAS,sBAAsB,SAAA,EAAsC;AACnE,EAAA,KAAA,MAAW,YAAY,SAAA,EAAW;AAChC,IAAA,IACE,SAAS,MAAA,YAAkB,IAAA,IAC3B,4BAAA,CAA6B,QAAA,CAAS,MAAM,CAAA,EAC5C;AACA,MAAA;AAAA,IACF;AACA,IAAA,OAAO,IAAA;AAAA,EACT;AACA,EAAA,OAAO,KAAA;AACT;AAEA,MAAM,mBAAA,uBAA0B,OAAA,EAAc;AAE9C,SAAS,+BAAA,GAA0C;AACjD,EAAA,MAAM,iBAAyB,EAAC;AAChC,EAAA,MAAM,OAAA,GAAU,QAAA,CAAS,aAAA,CAAc,OAAO,CAAA;AAC9C,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,cAAA,CAAe,KAAK,OAAO,CAAA;AAAA,EAC7B;AACA,EAAA,KAAA,MAAW,YAAY,0BAAA,EAA4B;AACjD,IAAA,MAAM,IAAA,GAAO,QAAA,CAAS,aAAA,CAAc,QAAQ,CAAA;AAC5C,IAAA,IAAI,IAAA,IAAQ,CAAC,cAAA,CAAe,QAAA,CAAS,IAAI,CAAA,EAAG;AAC1C,MAAA,cAAA,CAAe,KAAK,IAAI,CAAA;AAAA,IAC1B;AAAA,EACF;AACA,EAAA,IAAI,cAAA,CAAe,MAAA,KAAW,CAAA,IAAK,QAAA,CAAS,IAAA,EAAM;AAChD,IAAA,cAAA,CAAe,IAAA,CAAK,SAAS,IAAI,CAAA;AAAA,EACnC;AACA,EAAA,OAAO,cAAA;AACT;AAEA,SAAS,wBAAA,GAA2B;AAClC,EAAA,IAAI,OAAO,WAAW,WAAA,EAAa;AACjC,IAAA;AAAA,EACF;AAEA,EAAA,IAAI,CAAC,kBAAA,EAAoB;AACvB,IAAA,kBAAA,GAAqB,IAAI,iBAAiB,CAAA,SAAA,KAAa;AACrD,MAAA,IAAI,qBAAA,CAAsB,SAAS,CAAA,EAAG;AACpC,QAAA,yCAAA,EAA0C;AAAA,MAC5C;AAAA,IACF,CAAC,CAAA;AAAA,EACH;AAEA,EAAA,KAAA,MAAW,MAAA,IAAU,iCAAgC,EAAG;AACtD,IAAA,IAAI,mBAAA,CAAoB,GAAA,CAAI,MAAM,CAAA,EAAG;AACnC,MAAA;AAAA,IACF;AACA,IAAA,mBAAA,CAAoB,IAAI,MAAM,CAAA;AAC9B,IAAA,kBAAA,CAAmB,QAAQ,MAAA,EAAQ;AAAA,MACjC,OAAA,EAAS,IAAA;AAAA,MACT,SAAA,EAAW,IAAA;AAAA,MACX,aAAA,EAAe;AAAA,KAChB,CAAA;AAAA,EACH;AACF;AAMO,SAAS,mCAAA,GAAsC;AACpD,EAAA,IAAI,cAAA,IAAkB,OAAO,MAAA,KAAW,WAAA,EAAa;AACnD,IAAA;AAAA,EACF;AACA,EAAA,cAAA,GAAiB,IAAA;AAEjB,EAAA,MAAA,CAAO,gBAAA,CAAiB,YAAY,iCAAiC,CAAA;AACrE,EAAA,MAAA,CAAO,gBAAA,CAAiB,cAAc,iCAAiC,CAAA;AAEvE,EAAA,MAAM,EAAE,SAAA,EAAW,YAAA,EAAa,GAAI,MAAA,CAAO,OAAA;AAC3C,EAAA,MAAA,CAAO,OAAA,CAAQ,SAAA,GAAY,SAAS,gBAAA,CAAA,GAAoB,IAAA,EAAM;AAC5D,IAAA,SAAA,CAAU,KAAA,CAAM,MAAM,IAAI,CAAA;AAC1B,IAAA,iCAAA,EAAkC;AAAA,EACpC,CAAA;AACA,EAAA,MAAA,CAAO,OAAA,CAAQ,YAAA,GAAe,SAAS,mBAAA,CAAA,GAAuB,IAAA,EAAM;AAClE,IAAA,YAAA,CAAa,KAAA,CAAM,MAAM,IAAI,CAAA;AAC7B,IAAA,iCAAA,EAAkC;AAAA,EACpC,CAAA;AACF;AAEA,IAAI,cAAA,GAAiB,EAAA;AAEd,SAAS,6BAAA,GAAwC;AACtD,EAAA,MAAM,QAAA,GAAW,OAAO,QAAA,CAAS,QAAA;AACjC,EAAA,MAAM,MAAA,GAAS,OAAO,QAAA,CAAS,MAAA;AAC/B,EAAA,MAAM,EAAE,KAAA,EAAM,GAAI,8BAA8B,EAAE,QAAA,EAAU,QAAQ,CAAA;AACpE,EAAA,MAAM,OAAO,CAAA,EAAG,QAAQ,CAAA,EAAA,EAAK,MAAM,KAAK,KAAK,CAAA,CAAA;AAC7C,EAAA,IAAI,SAAS,cAAA,EAAgB;AAC3B,IAAA,cAAA,GAAiB,IAAA;AAAA,EACnB;AACA,EAAA,OAAO,cAAA;AACT;AAEO,SAAS,8BACd,aAAA,EACY;AACZ,EAAA,mCAAA,EAAoC;AACpC,EAAA,wBAAA,EAAyB;AACzB,EAAA,SAAA,CAAU,IAAI,aAAa,CAAA;AAC3B,EAAA,OAAO,MAAM;AACX,IAAA,SAAA,CAAU,OAAO,aAAa,CAAA;AAAA,EAChC,CAAA;AACF;;;;"}
@@ -0,0 +1,13 @@
1
+ import { useSyncExternalStore } from 'react';
2
+ import { subscribeToScreenContextLabel, getScreenContextLabelSnapshot } from './screenContextLabelSubscription.esm.js';
3
+
4
+ function useScreenContextLabelRevision() {
5
+ return useSyncExternalStore(
6
+ subscribeToScreenContextLabel,
7
+ getScreenContextLabelSnapshot,
8
+ getScreenContextLabelSnapshot
9
+ );
10
+ }
11
+
12
+ export { useScreenContextLabelRevision };
13
+ //# sourceMappingURL=useScreenContextLabelRevision.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useScreenContextLabelRevision.esm.js","sources":["../../src/hooks/useScreenContextLabelRevision.ts"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useSyncExternalStore } from 'react';\n\nimport {\n getScreenContextLabelSnapshot,\n subscribeToScreenContextLabel,\n} from './screenContextLabelSubscription';\n\n/**\n * Re-renders when the browser URL or main page chrome title changes\n * (history navigation, async header updates after route transitions).\n */\nexport function useScreenContextLabelRevision(): string {\n return useSyncExternalStore(\n subscribeToScreenContextLabel,\n getScreenContextLabelSnapshot,\n getScreenContextLabelSnapshot,\n );\n}\n"],"names":[],"mappings":";;;AA2BO,SAAS,6BAAA,GAAwC;AACtD,EAAA,OAAO,oBAAA;AAAA,IACL,6BAAA;AAAA,IACA,6BAAA;AAAA,IACA;AAAA,GACF;AACF;;;;"}
@@ -0,0 +1,110 @@
1
+ import { useState, useEffect, useCallback } from 'react';
2
+ import { useApi, storageApiRef } from '@backstage/core-plugin-api';
3
+ import { isGuestUser } from '../utils/user-utils.esm.js';
4
+
5
+ const BUCKET_NAME = "lightspeed";
6
+ const SHARING_ENABLED_KEY = "screenContextSharingEnabled";
7
+ const PAUSED_KEY = "screenContextPaused";
8
+ const useScreenContextSettings = (user) => {
9
+ const storageApi = useApi(storageApiRef);
10
+ const bucket = storageApi.forBucket(BUCKET_NAME);
11
+ const [isScreenContextSharingEnabled, setIsScreenContextSharingEnabled] = useState(false);
12
+ const [isScreenContextPaused, setIsScreenContextPaused] = useState(false);
13
+ const shouldPersist = Boolean(user) && !isGuestUser(user);
14
+ useEffect(() => {
15
+ if (!user) {
16
+ setIsScreenContextSharingEnabled(false);
17
+ setIsScreenContextPaused(false);
18
+ return void 0;
19
+ }
20
+ if (isGuestUser(user)) {
21
+ setIsScreenContextSharingEnabled(false);
22
+ setIsScreenContextPaused(false);
23
+ return void 0;
24
+ }
25
+ try {
26
+ const sharingSnapshot = bucket.snapshot(SHARING_ENABLED_KEY);
27
+ const pausedSnapshot = bucket.snapshot(PAUSED_KEY);
28
+ setIsScreenContextSharingEnabled(sharingSnapshot.value ?? false);
29
+ setIsScreenContextPaused(pausedSnapshot.value ?? false);
30
+ } catch (error) {
31
+ console.error(
32
+ "Error reading screen context settings from storage:",
33
+ error
34
+ );
35
+ }
36
+ const sharingSubscription = bucket.observe$(SHARING_ENABLED_KEY).subscribe({
37
+ next: (snapshot) => {
38
+ setIsScreenContextSharingEnabled(snapshot.value ?? false);
39
+ },
40
+ error: (error) => {
41
+ console.error("Error observing screenContextSharingEnabled:", error);
42
+ }
43
+ });
44
+ const pausedSubscription = bucket.observe$(PAUSED_KEY).subscribe({
45
+ next: (snapshot) => {
46
+ setIsScreenContextPaused(snapshot.value ?? false);
47
+ },
48
+ error: (error) => {
49
+ console.error("Error observing screenContextPaused:", error);
50
+ }
51
+ });
52
+ return () => {
53
+ sharingSubscription.unsubscribe();
54
+ pausedSubscription.unsubscribe();
55
+ };
56
+ }, [bucket, user]);
57
+ const persistSharing = useCallback(
58
+ (enabled) => {
59
+ if (!shouldPersist) return;
60
+ try {
61
+ bucket.set(SHARING_ENABLED_KEY, enabled);
62
+ } catch (error) {
63
+ console.error("Error saving screen context sharing state:", error);
64
+ }
65
+ },
66
+ [bucket, shouldPersist]
67
+ );
68
+ const persistPaused = useCallback(
69
+ (paused) => {
70
+ if (!shouldPersist) return;
71
+ try {
72
+ bucket.set(PAUSED_KEY, paused);
73
+ } catch (error) {
74
+ console.error("Error saving screen context paused state:", error);
75
+ }
76
+ },
77
+ [bucket, shouldPersist]
78
+ );
79
+ const handleScreenContextSharingToggle = useCallback(
80
+ (enabled) => {
81
+ if (!user) return;
82
+ setIsScreenContextSharingEnabled(enabled);
83
+ setIsScreenContextPaused(false);
84
+ persistPaused(false);
85
+ persistSharing(enabled);
86
+ },
87
+ [user, persistSharing, persistPaused]
88
+ );
89
+ const setScreenContextPaused = useCallback(
90
+ (paused) => {
91
+ if (!user) return;
92
+ setIsScreenContextPaused(paused);
93
+ persistPaused(paused);
94
+ },
95
+ [user, persistPaused]
96
+ );
97
+ const toggleScreenContextPaused = useCallback(() => {
98
+ setScreenContextPaused(!isScreenContextPaused);
99
+ }, [isScreenContextPaused, setScreenContextPaused]);
100
+ return {
101
+ isScreenContextSharingEnabled,
102
+ isScreenContextPaused,
103
+ handleScreenContextSharingToggle,
104
+ toggleScreenContextPaused,
105
+ setScreenContextPaused
106
+ };
107
+ };
108
+
109
+ export { useScreenContextSettings };
110
+ //# sourceMappingURL=useScreenContextSettings.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useScreenContextSettings.esm.js","sources":["../../src/hooks/useScreenContextSettings.ts"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { useCallback, useEffect, useState } from 'react';\n\nimport { storageApiRef, useApi } from '@backstage/core-plugin-api';\n\nimport { isGuestUser } from '../utils/user-utils';\n\nconst BUCKET_NAME = 'lightspeed';\nconst SHARING_ENABLED_KEY = 'screenContextSharingEnabled';\nconst PAUSED_KEY = 'screenContextPaused';\n\ntype UseScreenContextSettingsReturn = {\n isScreenContextSharingEnabled: boolean;\n isScreenContextPaused: boolean;\n handleScreenContextSharingToggle: (enabled: boolean) => void;\n toggleScreenContextPaused: () => void;\n setScreenContextPaused: (paused: boolean) => void;\n};\n\n/**\n * Persists screen context user preference (opt-in sharing + pause state).\n */\nexport const useScreenContextSettings = (\n user: string | undefined,\n): UseScreenContextSettingsReturn => {\n const storageApi = useApi(storageApiRef);\n const bucket = storageApi.forBucket(BUCKET_NAME);\n\n const [isScreenContextSharingEnabled, setIsScreenContextSharingEnabled] =\n useState(false);\n const [isScreenContextPaused, setIsScreenContextPaused] = useState(false);\n\n const shouldPersist = Boolean(user) && !isGuestUser(user);\n\n useEffect(() => {\n if (!user) {\n setIsScreenContextSharingEnabled(false);\n setIsScreenContextPaused(false);\n return undefined;\n }\n\n if (isGuestUser(user)) {\n setIsScreenContextSharingEnabled(false);\n setIsScreenContextPaused(false);\n return undefined;\n }\n\n try {\n const sharingSnapshot = bucket.snapshot<boolean>(SHARING_ENABLED_KEY);\n const pausedSnapshot = bucket.snapshot<boolean>(PAUSED_KEY);\n setIsScreenContextSharingEnabled(sharingSnapshot.value ?? false);\n setIsScreenContextPaused(pausedSnapshot.value ?? false);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\n 'Error reading screen context settings from storage:',\n error,\n );\n }\n\n const sharingSubscription = bucket\n .observe$<boolean>(SHARING_ENABLED_KEY)\n .subscribe({\n next: snapshot => {\n setIsScreenContextSharingEnabled(snapshot.value ?? false);\n },\n error: error => {\n // eslint-disable-next-line no-console\n console.error('Error observing screenContextSharingEnabled:', error);\n },\n });\n\n const pausedSubscription = bucket.observe$<boolean>(PAUSED_KEY).subscribe({\n next: snapshot => {\n setIsScreenContextPaused(snapshot.value ?? false);\n },\n error: error => {\n // eslint-disable-next-line no-console\n console.error('Error observing screenContextPaused:', error);\n },\n });\n\n return () => {\n sharingSubscription.unsubscribe();\n pausedSubscription.unsubscribe();\n };\n }, [bucket, user]);\n\n const persistSharing = useCallback(\n (enabled: boolean) => {\n if (!shouldPersist) return;\n try {\n bucket.set(SHARING_ENABLED_KEY, enabled);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Error saving screen context sharing state:', error);\n }\n },\n [bucket, shouldPersist],\n );\n\n const persistPaused = useCallback(\n (paused: boolean) => {\n if (!shouldPersist) return;\n try {\n bucket.set(PAUSED_KEY, paused);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Error saving screen context paused state:', error);\n }\n },\n [bucket, shouldPersist],\n );\n\n const handleScreenContextSharingToggle = useCallback(\n (enabled: boolean) => {\n if (!user) return;\n\n setIsScreenContextSharingEnabled(enabled);\n setIsScreenContextPaused(false);\n persistPaused(false);\n persistSharing(enabled);\n },\n [user, persistSharing, persistPaused],\n );\n\n const setScreenContextPaused = useCallback(\n (paused: boolean) => {\n if (!user) return;\n setIsScreenContextPaused(paused);\n persistPaused(paused);\n },\n [user, persistPaused],\n );\n\n const toggleScreenContextPaused = useCallback(() => {\n setScreenContextPaused(!isScreenContextPaused);\n }, [isScreenContextPaused, setScreenContextPaused]);\n\n return {\n isScreenContextSharingEnabled,\n isScreenContextPaused,\n handleScreenContextSharingToggle,\n toggleScreenContextPaused,\n setScreenContextPaused,\n };\n};\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import { useSyncExternalStore } from 'react';
2
+ import { subscribeToScreenContextLabel } from './screenContextLabelSubscription.esm.js';
3
+
4
+ let cachedSnapshot = {
5
+ pathname: "",
6
+ search: ""
7
+ };
8
+ function getWindowLocationSnapshot() {
9
+ const pathname = window.location.pathname;
10
+ const search = window.location.search;
11
+ if (cachedSnapshot.pathname !== pathname || cachedSnapshot.search !== search) {
12
+ cachedSnapshot = { pathname, search };
13
+ }
14
+ return cachedSnapshot;
15
+ }
16
+ function subscribeToWindowLocation(onStoreChange) {
17
+ return subscribeToScreenContextLabel(onStoreChange);
18
+ }
19
+ function useWindowLocation() {
20
+ return useSyncExternalStore(
21
+ subscribeToWindowLocation,
22
+ getWindowLocationSnapshot,
23
+ getWindowLocationSnapshot
24
+ );
25
+ }
26
+
27
+ export { useWindowLocation };
28
+ //# sourceMappingURL=useWindowLocation.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useWindowLocation.esm.js","sources":["../../src/hooks/useWindowLocation.ts"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useSyncExternalStore } from 'react';\n\nimport { subscribeToScreenContextLabel } from './screenContextLabelSubscription';\n\nexport type WindowLocationSnapshot = {\n pathname: string;\n search: string;\n};\n\nlet cachedSnapshot: WindowLocationSnapshot = {\n pathname: '',\n search: '',\n};\n\nfunction getWindowLocationSnapshot(): WindowLocationSnapshot {\n const pathname = window.location.pathname;\n const search = window.location.search;\n if (\n cachedSnapshot.pathname !== pathname ||\n cachedSnapshot.search !== search\n ) {\n cachedSnapshot = { pathname, search };\n }\n return cachedSnapshot;\n}\n\nfunction subscribeToWindowLocation(onStoreChange: () => void): () => void {\n return subscribeToScreenContextLabel(onStoreChange);\n}\n\n/**\n * Subscribes to browser URL changes (including history.pushState/replaceState).\n * Use when the host app navigates outside the same React Router tree as Lightspeed.\n * History patching is installed on first subscribe via subscribeToScreenContextLabel.\n */\nexport function useWindowLocation(): WindowLocationSnapshot {\n return useSyncExternalStore(\n subscribeToWindowLocation,\n getWindowLocationSnapshot,\n getWindowLocationSnapshot,\n );\n}\n"],"names":[],"mappings":";;;AAyBA,IAAI,cAAA,GAAyC;AAAA,EAC3C,QAAA,EAAU,EAAA;AAAA,EACV,MAAA,EAAQ;AACV,CAAA;AAEA,SAAS,yBAAA,GAAoD;AAC3D,EAAA,MAAM,QAAA,GAAW,OAAO,QAAA,CAAS,QAAA;AACjC,EAAA,MAAM,MAAA,GAAS,OAAO,QAAA,CAAS,MAAA;AAC/B,EAAA,IACE,cAAA,CAAe,QAAA,KAAa,QAAA,IAC5B,cAAA,CAAe,WAAW,MAAA,EAC1B;AACA,IAAA,cAAA,GAAiB,EAAE,UAAU,MAAA,EAAO;AAAA,EACtC;AACA,EAAA,OAAO,cAAA;AACT;AAEA,SAAS,0BAA0B,aAAA,EAAuC;AACxE,EAAA,OAAO,8BAA8B,aAAa,CAAA;AACpD;AAOO,SAAS,iBAAA,GAA4C;AAC1D,EAAA,OAAO,oBAAA;AAAA,IACL,yBAAA;AAAA,IACA,yBAAA;AAAA,IACA;AAAA,GACF;AACF;;;;"}
@@ -5,6 +5,9 @@ const intelligentAssistantTranslationDe = createTranslationMessages({
5
5
  ref: intelligentAssistantTranslationRef,
6
6
  messages: {
7
7
  "aria.chatHistoryMenu": "Chatverlauf-Men\xFC",
8
+ "modelSelector.visionScreenshot.line1": "Bildanalyse wird unterst\xFCtzt.",
9
+ "modelSelector.visionScreenshot.line2": "Ein Screenshot wird Ihrer Nachricht beigef\xFCgt.",
10
+ "modelSelector.visionScreenshot.ariaLabel": "Screenshot-Kontext f\xFCr Vision-Modell",
8
11
  "modelSelector.disabledTooltip": "Jede Chatsitzung unterst\xFCtzt nur ein Modell. Um das Modell zu wechseln, starten Sie einen neuen Chat.",
9
12
  "aria.chatbotSelector": "Chatbot-Auswahl",
10
13
  "aria.close": "Chatbot schlie\xDFen",
@@ -257,6 +260,27 @@ const intelligentAssistantTranslationDe = createTranslationMessages({
257
260
  "settings.savedPrompts.disabled.description": "Gespeicherte Prompts sind derzeit deaktiviert",
258
261
  "settings.savedPrompts.enable": "Gespeicherte Prompts aktivieren",
259
262
  "settings.savedPrompts.enabled.description": "Gespeicherte Prompts sind derzeit aktiviert",
263
+ "settings.screenContext.enable": "Bildschirmkontext aktivieren",
264
+ "settings.screenContext.disable": "Bildschirmkontext deaktivieren",
265
+ "settings.screenContext.enabled.description": "Die Freigabe des Bildschirmkontexts ist derzeit aktiviert",
266
+ "settings.screenContext.disabled.description": "Die Freigabe des Bildschirmkontexts ist derzeit deaktiviert",
267
+ "contextChip.label.paused": "Kontext: pausiert",
268
+ "contextChip.label.unavailable": "Kontext: nicht verf\xFCgbar",
269
+ "contextChip.label.softwareTemplates": "Software-Templates",
270
+ "contextChip.tooltip.askAbout": "Fragen Sie zu {{label}}.",
271
+ "contextChip.tooltip.template": "Fragen Sie, wie Sie das Template {{label}} ausf\xFCllen.",
272
+ "contextChip.tooltip.search": "Fragen Sie zu Ihrer Suche: {{label}}.",
273
+ "contextChip.tooltip.paused": "Der Bildschirmkontext ist pausiert. Klicken Sie, um die Freigabe Ihres aktuellen Bildschirms an den intelligenten Assistenten fortzusetzen.",
274
+ "contextChip.tooltip.unavailable": "Der Bildschirmkontext ist im Vollbildmodus nicht verf\xFCgbar. Wechseln Sie zum Overlay- oder Andockmodus, um ihn zu aktivieren.",
275
+ "contextChip.tooltip.line2.fullContext": "Seitentext und ein Screenshot werden mit Ihrer Nachricht gesendet.",
276
+ "contextChip.tooltip.line2.adminLimited": "Die Freigabe des Bildschirmkontexts ist durch Administratoreinstellungen eingeschr\xE4nkt.",
277
+ "contextChip.tooltip.line2.screenshotOnly": "Die Textextraktion ist von Ihrem Administrator deaktiviert. Nur Screenshot.",
278
+ "contextChip.tooltip.line2.domOffNoVision": "Die Textextraktion ist von Ihrem Administrator deaktiviert. Ihr Modell unterst\xFCtzt keine Bildanalyse.",
279
+ "contextChip.tooltip.line2.textOnlyNoVision": "Nur Textkontext \u2013 Ihr Modell unterst\xFCtzt keine Bildanalyse.",
280
+ "contextChip.tooltip.line2.textOnlyAdminScreenshotsOff": "Nur Textkontext \u2013 die Screenshot-Erfassung ist von Ihrem Administrator deaktiviert.",
281
+ "contextChip.tooltip.line2.textOnlyCombined": "Nur Textkontext \u2013 Ihr Modell unterst\xFCtzt keine Bildanalyse und die Screenshot-Erfassung ist von Ihrem Administrator deaktiviert.",
282
+ "contextChip.aria.pause": "Bildschirmkontext pausieren: {{label}}",
283
+ "contextChip.aria.resume": "Bildschirmkontext fortsetzen",
260
284
  "savedPrompts.tab.title": "Gespeicherte Prompts",
261
285
  "savedPrompts.disabled.title": "Gespeicherte Prompts sind deaktiviert",
262
286
  "savedPrompts.disabled.body": "Gespeicherte Prompts sind im Chat-Verlaufsbereich ausgeblendet. Aktivieren Sie sie, um Ihre Prompts in der Seitenleiste anzuzeigen.",
@@ -1 +1 @@
1
- {"version":3,"file":"de.esm.js","sources":["../../src/translations/de.ts"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createTranslationMessages } from '@backstage/core-plugin-api/alpha';\n\nimport { intelligentAssistantTranslationRef } from './ref';\n\n/**\n * de translation for plugin.intelligent-assistant.\n * @public\n */\nconst intelligentAssistantTranslationDe = createTranslationMessages({\n ref: intelligentAssistantTranslationRef,\n messages: {\n 'aria.chatHistoryMenu': 'Chatverlauf-Menü',\n 'modelSelector.disabledTooltip':\n 'Jede Chatsitzung unterstützt nur ein Modell. Um das Modell zu wechseln, starten Sie einen neuen Chat.',\n 'aria.chatbotSelector': 'Chatbot-Auswahl',\n 'aria.close': 'Chatbot schließen',\n 'aria.closeDrawerPanel': 'Drawer-Fenster schließen',\n 'aria.important': 'Wichtig',\n 'aria.options.label': 'Optionen',\n 'aria.resize': 'Größe ändern',\n 'aria.scroll.down': 'Zurück zum Ende',\n 'aria.scroll.up': 'Zurück zum Anfang',\n 'aria.search.placeholder': 'Suchen',\n 'aria.searchPreviousConversations': 'Vorherige Unterhaltungen durchsuchen',\n 'attach.menu.description': 'Eine JSON-, YAML- oder TXT-Datei anhängen',\n 'attach.menu.title': 'Anhängen',\n 'button.newChat': 'Neuer Chat',\n 'chatbox.emptyState.noPinnedChats': 'Chats anheften, um sie oben zu halten',\n 'chatbox.emptyState.noRecentChats': 'Keine letzten Chats',\n 'chatbox.emptyState.noResults.body':\n 'Passen Sie Ihre Suchanfrage an, und versuchen Sie es erneut. Überprüfen Sie Ihre Rechtschreibung, oder versuchen Sie es mit einem allgemeineren Begriff.',\n 'chatbox.emptyState.noResults.title': 'Keine Ergebnisse gefunden',\n 'chatbox.fileUpload.failed': 'Datei-Upload fehlgeschlagen',\n 'chatbox.fileUpload.infoText':\n 'Unterstützte Dateitypen: .txt, .yaml und .json. Die maximale Dateigröße beträgt 25 MB.',\n 'chatbox.header.title': 'Developer Hub Intelligenter Assistent',\n 'chatbox.message.placeholder':\n 'Senden Sie eine Nachricht, und laden Sie optional eine JSON-, YAML- oder TXT-Datei hoch ...',\n 'chatbox.provider.other': 'Andere',\n 'chatbox.search.placeholder': 'Suchen',\n 'chatbox.welcome.description': 'Wie kann ich Ihnen heute helfen?',\n 'chatbox.welcome.greeting': 'Hallo {{userName}}',\n 'common.cancel': 'Abbrechen',\n 'common.close': 'Schließen',\n 'common.loading': 'Wird geladen',\n 'common.noSearchResults': 'Keine Ergebnisse, die der Suche entsprechen',\n 'common.readMore': 'Mehr lesen',\n 'common.retry': 'Erneut versuchen',\n 'conversation.addToPinnedChats': 'Anheften',\n 'conversation.announcement.responseStopped': 'Antwort angehalten.',\n 'conversation.announcement.userMessage':\n 'Nachricht vom Benutzer: {{prompt}}. Nachricht vom Bot wird geladen.',\n 'conversation.category.pinnedChats': 'Angeheftete Chats',\n 'conversation.category.recent': 'Chats',\n 'conversation.category.savedPrompts': 'Gespeicherte Prompts',\n 'conversation.delete': 'Löschen',\n 'conversation.delete.confirm.action': 'Löschen',\n 'conversation.delete.confirm.message':\n 'Dieser Chat wird hier nicht mehr angezeigt. Dadurch werden auch zugehörige Aktivitäten wie Prompts, Antworten und Feedback aus Ihrer Aktivität gelöscht.',\n 'conversation.delete.confirm.title': 'Chat \"{{chatName}}\" löschen?',\n 'conversation.removeFromPinnedChats': 'Lösen',\n 'conversation.rename': 'Umbenennen',\n 'conversation.rename.confirm.action': 'Umbenennen',\n 'conversation.rename.confirm.title': 'Chat umbenennen?',\n 'conversation.rename.placeholder': 'Chatname',\n disclaimer:\n 'Diese Funktion nutzt KI-Technologie. Geben Sie bei Ihrer Eingabe keine persönlichen oder sonstigen sensiblen Informationen an. Interaktionen können dazu genutzt werden, die Produkte oder Dienstleistungen von Red Hat zu verbessern.',\n 'error.context.fileAttachment':\n 'useFileAttachmentContext muss innerhalb eines FileAttachmentContextProvider liegen',\n 'feedback.completion.body':\n 'Wir haben Ihre Antwort erhalten. Vielen Dank für Ihr Feedback!',\n 'feedback.completion.title': 'Feedback übermittelt',\n 'feedback.form.submitWord': 'Absenden',\n 'feedback.form.textAreaPlaceholder':\n 'Geben Sie optional zusätzliches Feedback an',\n 'feedback.form.title': 'Warum haben Sie diese Bewertung gewählt?',\n 'feedback.quickResponses.negative.didntAnswer':\n 'Meine Frage wurde nicht beantwortet',\n 'feedback.quickResponses.negative.hardToUnderstand': 'Schwer zu verstehen',\n 'feedback.quickResponses.negative.notHelpful': 'Nicht hilfreich',\n 'feedback.quickResponses.positive.easyToUnderstand': 'Leicht verständlich',\n 'feedback.quickResponses.positive.helpful': 'Hilfreiche Informationen',\n 'feedback.quickResponses.positive.resolvedIssue':\n 'Mein Problem wurde gelöst',\n 'feedback.tooltips.badResponse': 'Schlechte Antwort',\n 'feedback.tooltips.copied': 'Kopiert',\n 'feedback.tooltips.copy': 'Kopieren',\n 'feedback.tooltips.goodResponse': 'Gute Antwort',\n 'feedback.tooltips.listen': 'Überwachen',\n 'feedback.tooltips.listening': 'Überwachung',\n 'file.upload.error.alreadyExists': 'Datei existiert bereits.',\n 'file.upload.error.fileTooLarge':\n 'Ihre Dateigröße ist zu groß. Bitte stellen Sie sicher, dass Ihre Datei kleiner als 25 MB ist.',\n 'file.upload.error.multipleFiles':\n 'Es wurden mehr als eine Datei hochgeladen.',\n 'file.upload.error.readFailed':\n 'Datei konnte nicht gelesen werden: {{errorMessage}}',\n 'file.upload.error.unsupportedType':\n 'Nicht unterstützter Dateityp. Unterstützte Typen: .txt, .yaml und .json.',\n 'footer.accuracy.label':\n 'KI-generierte Inhalte sollten vor der Verwendung stets überprüft werden.',\n 'icon.lightspeed.alt': 'Symbol des intelligenten Assistenten',\n 'lcore.loadError.description':\n 'Das Backend des intelligenten Assistenten hat keine Modellliste zurückgegeben. Prüfen Sie, ob der Dienst läuft und erreichbar ist, und versuchen Sie es erneut.',\n 'lcore.loadError.title': 'Modelle konnten nicht geladen werden',\n 'lcore.notConfigured.backendDocs':\n 'Backend des intelligenten Assistenten einrichten',\n 'lcore.notConfigured.description':\n 'Der intelligente Assistent erfordert ein registriertes LLM. Wenden Sie sich an den Plattformadministrator Ihrer Organisation, um die Einrichtung abzuschließen.',\n 'lcore.notConfigured.developerLightspeedDocs':\n 'Developer Hub Intelligent Assistant wird konfiguriert',\n 'lcore.notConfigured.title': 'Verbinden Sie ein LLM, um zu starten',\n 'mcp.settings.closeAriaLabel': 'MCP-Einstellungen schließen',\n 'mcp.settings.closeConfigureModalAriaLabel':\n 'Konfigurationsdialog schließen',\n 'mcp.settings.configureServerTitle':\n '{{serverName}} MCP-Server-Einstellungen',\n 'mcp.settings.edit': 'Bearbeiten',\n 'mcp.settings.editServerAriaLabel': '{{serverName}} bearbeiten',\n 'mcp.settings.enabled': 'Aktiviert',\n 'mcp.settings.enterToken': 'Geben Sie Ihren Token ein',\n 'mcp.settings.loading': 'MCP-Server werden geladen...',\n 'mcp.settings.modalDescription':\n 'Anmeldedaten werden verschlüsselt gespeichert und sind auf Ihr Profil beschränkt. Der intelligente Assistent arbeitet mit genau Ihren Berechtigungen.',\n 'mcp.settings.modalDescriptionDcr':\n 'Dieser Server verwendet Dynamic Client Registration (DCR). Token werden automatisch mit Ihrer Backstage-Identität erstellt — kein manuelles Token erforderlich.',\n 'mcp.settings.authenticationToken': 'Authentifizierungstoken',\n 'mcp.settings.modal.authenticationHeading': 'Authentifizierung',\n 'mcp.settings.modal.credentialMode.organization':\n 'Organisations-Standard-Token verwenden',\n 'mcp.settings.modal.credentialMode.organizationDescription':\n 'Verwendet den von Ihrem Administrator konfigurierten Token.',\n 'mcp.settings.modal.credentialMode.personal':\n 'Persönlichen Token verwenden',\n 'mcp.settings.modal.toolsHeading': 'Tools ({{count}})',\n 'mcp.settings.modal.loadingTools': 'Tools werden geladen...',\n 'mcp.settings.modal.fetchingStatus': 'Status wird abgerufen...',\n 'mcp.settings.modal.loadingStatus': 'Verbindung wird getrennt...',\n 'mcp.settings.modal.tokenRemovedWarning':\n 'Token wurde entfernt. Um diesen MCP-Server erneut zu verwenden, geben Sie einen neuen Token ein.',\n 'mcp.settings.modal.noToolsAvailable': 'Keine Tools verfügbar.',\n 'mcp.settings.modal.toolsLoadFailed': 'Tools konnten nicht geladen werden.',\n 'mcp.settings.modal.enabledDescription':\n 'Dieser Server ist aktiv und im Chat verfügbar.',\n 'mcp.settings.modal.enabledDescriptionOff':\n 'Dieser Server ist deaktiviert und im Chat nicht verfügbar.',\n 'mcp.settings.modal.enabledDescriptionTokenRequired':\n 'Dieser Server ist derzeit deaktiviert. Geben Sie einen Token ein, um ihn zu aktivieren.',\n 'mcp.settings.name': 'Name',\n 'mcp.settings.noneAvailable': 'Keine MCP-Server verfügbar.',\n 'mcp.settings.personalAccessToken': 'Persönlicher Zugriffstoken',\n 'mcp.settings.removePersonalToken': 'Persönlichen Token entfernen',\n 'mcp.settings.savedToken': 'Gespeicherter Token',\n 'mcp.settings.selectedCount':\n '{{selectedCount}} von {{totalCount}} ausgewählt',\n 'mcp.settings.status': 'Status',\n 'mcp.settings.status.disabled': 'Deaktiviert',\n 'mcp.settings.status.failed': 'Fehlgeschlagen',\n 'mcp.settings.status.manyTools': '{{count}} Tools',\n 'mcp.settings.status.oneTool': '{{count}} Tool',\n 'mcp.settings.status.tokenRequired': 'Token erforderlich',\n 'mcp.settings.status.unknown': 'Unbekannt',\n 'mcp.settings.tableAriaLabel': 'MCP-Server-Tabelle',\n 'mcp.settings.title': 'MCP-Server',\n 'mcp.settings.toggleServerAriaLabel': '{{serverName}} umschalten',\n 'mcp.settings.token.clearAriaLabel': 'Tokeneingabe löschen',\n 'mcp.settings.token.connectionSuccessful': 'Verbindung erfolgreich',\n 'mcp.settings.token.invalidCredentials':\n 'Ungültige Anmeldedaten. Überprüfen Sie Server-URL und Token.',\n 'mcp.settings.token.savingAndValidating':\n 'Token wird gespeichert und validiert...',\n 'mcp.settings.token.urlUnavailableForValidation':\n 'Token kann nicht validiert werden, da die Server-URL nicht verfügbar ist.',\n 'mcp.settings.token.validating': 'Token wird validiert...',\n 'mcp.settings.token.validationFailed':\n 'Validierung fehlgeschlagen. Überprüfen Sie Server-URL und Token.',\n 'menu.newConversation': 'Neuer Chat',\n 'message.options.label': 'Optionen',\n 'modal.cancel': 'Abbrechen',\n 'modal.close': 'Schließen',\n 'modal.edit': 'Bearbeiten',\n 'modal.save': 'Speichern',\n 'modal.title.edit': 'Anhang bearbeiten',\n 'modal.title.preview': 'Anhang in der Vorschau anzeigen',\n 'notebook.document.rename': 'Umbenennen',\n 'notebook.document.rename.tooltip': 'Klicken zum Umbenennen',\n 'notebook.document.rename.error':\n 'Umbenennung von \"{{documentName}}\" fehlgeschlagen.',\n 'notebook.document.rename.conflict': 'Name existiert bereits.',\n 'notebook.document.rename.tooLong': 'Name zu lang (max 255).',\n 'notebook.document.delete': 'Löschen',\n 'notebook.document.delete.action': 'Entfernen',\n 'notebook.document.delete.description':\n 'Sind Sie sicher, dass Sie <documentName/> aus diesem Notizbuch entfernen möchten? Diese Aktion kann nicht rückgängig gemacht werden.',\n 'notebook.document.delete.success':\n '„{{documentName}}\" wurde erfolgreich entfernt.',\n 'notebook.document.delete.title': 'Ressource entfernen?',\n 'notebook.overwrite.modal.action': 'Hochladen ({{count}})',\n 'notebook.overwrite.modal.back': 'Zurück',\n 'notebook.overwrite.modal.description':\n '{{duplicateCount}} Dateien existieren bereits in diesem Notizbuch. {{newCount}} neue Ressourcen werden trotzdem hinzugefügt.',\n 'notebook.overwrite.modal.ignore': 'Doppelte Dateien ignorieren',\n 'notebook.overwrite.modal.replace': 'Bestehende Dateien ersetzen',\n 'notebook.overwrite.modal.title': 'Datei existiert bereits',\n 'notebook.overwrite.modal.title.one': 'Datei existiert bereits',\n 'notebook.overwrite.modal.title.other': 'Dateien existieren bereits',\n 'notebook.overwrite.modal.description.one':\n '{{duplicateCount}} Datei existiert bereits in diesem Notizbuch. {{newCount}} neue Ressourcen werden trotzdem hinzugefügt.',\n 'notebook.overwrite.modal.description.other':\n '{{duplicateCount}} Dateien existieren bereits in diesem Notizbuch. {{newCount}} neue Ressourcen werden trotzdem hinzugefügt.',\n 'notebook.upload.error.fileTooLarge':\n 'Upload-Fehler: Dateigröße überschreitet das Limit von 25 MB.',\n 'notebook.upload.error.tooManyFiles':\n 'Upload-Fehler: Maximal {{max}} Dateien erlaubt.',\n 'notebook.upload.error.unsupportedType':\n 'Upload-Fehler: Nicht unterstützte Dateitypen gefunden. Bitte laden Sie nur unterstützte Dateitypen hoch.',\n 'notebook.upload.failed': 'Hochladen von \"{{fileName}}\" fehlgeschlagen.',\n 'notebook.upload.modal.addButton': 'Hinzufügen ({{count}})',\n 'notebook.upload.modal.addButtonEmpty': 'Hinzufügen',\n 'notebook.upload.modal.browseButton': 'Hochladen',\n 'notebook.upload.modal.dragDropTitle':\n 'Dateien hierher ziehen und ablegen oder zum Durchsuchen klicken',\n 'notebook.upload.modal.infoText':\n 'Akzeptierte Dateitypen: .md, .txt, .pdf, .json, .yaml, .log',\n 'notebook.upload.modal.maxFileSize': 'Maximale Dateigröße beträgt 25 MB.',\n 'notebook.upload.modal.supportedFormats': 'Unterstützte Formate:',\n 'notebook.upload.modal.removeFile': '{{fileName}} entfernen',\n 'notebook.upload.modal.selectedFiles':\n '{{count}} von {{max}} Dateien ausgewählt',\n 'notebook.upload.modal.separator': 'oder',\n 'notebook.upload.modal.title': 'Ressourcen hinzufügen',\n 'notebook.view.close': 'Notizbuch schließen',\n 'notebook.view.documents.add': 'Hinzufügen',\n 'notebook.view.documents.count_one': '{{count}} Ressource',\n 'notebook.view.documents.count_other': '{{count}} Ressourcen',\n 'notebook.view.documents.maxReached':\n 'Maximal 10 Ressourcen sind erlaubt. Löschen Sie eine Ressource, um eine neue hochzuladen.',\n 'notebook.view.documents.uploading': 'Ressource wird hochgeladen',\n 'notebook.view.documents.uploadsInProgress':\n 'Bitte warten Sie, bis die aktuellen Uploads abgeschlossen sind, bevor Sie weitere Ressourcen hinzufügen.',\n 'notebook.view.input.disabledTooltip':\n 'Wählen Sie mindestens eine geladene Ressource aus, um den Chat zu starten',\n 'notebook.view.input.placeholder': 'Fragen Sie zu Ihren Ressourcen...',\n 'notebook.view.sidebar.collapse': 'Seitenleiste einklappen',\n 'notebook.view.sidebar.expand': 'Seitenleiste ausklappen',\n 'notebook.view.sidebar.resize': 'Größe der Seitenleiste ändern',\n 'notebook.view.title': 'Unbenanntes Notizbuch',\n 'notebook.view.upload.action': 'Ressource hinzufügen',\n 'notebook.view.processing.description':\n 'Ihre Dateien werden indexiert. Sie können Fragen stellen, sobald die Verarbeitung abgeschlossen ist.',\n 'notebook.view.processing.heading': 'Ressourcen werden verarbeitet...',\n 'notebook.view.upload.heading':\n 'Fügen Sie eine Ressource hinzu, um zu beginnen',\n 'notebooks.actions.delete': 'Löschen',\n 'notebooks.actions.rename': 'Umbenennen',\n 'notebooks.card.openAria': 'Notizbuch {{name}} öffnen',\n 'notebooks.delete.action': 'Löschen',\n 'notebooks.delete.message':\n 'Dieses Notizbuch wird hier nicht mehr angezeigt. Dadurch werden auch zugehörige Aktivitäten wie Eingaben, Antworten und Feedback aus Ihrer Aktivität gelöscht.',\n 'notebooks.delete.title': '{{name}} löschen?',\n 'notebooks.delete.toast': 'Notizbuch gelöscht!',\n 'notebooks.documents_one': '{{count}} Ressource',\n 'notebooks.documents_other': '{{count}} Ressourcen',\n 'notebooks.empty.action': 'Neues Notizbuch erstellen',\n 'notebooks.empty.description':\n 'Erstellen Sie ein neues Notizbuch, um Ihre Quellen zu organisieren und KI-gestützte Erkenntnisse zu gewinnen.',\n 'notebooks.empty.title': 'Keine erstellten Notizbücher',\n 'notebooks.prompts.accessIssue.title': 'Hilf mir bei einem Zugriffsproblem',\n 'notebooks.prompts.coreConcepts.title': 'Was sind die Kernkonzepte?',\n 'notebooks.prompts.vulnerabilities.title':\n 'Zeige meine kritischen Schwachstellen',\n 'notebooks.rename.inline.tooltip': 'Klicken zum Umbenennen',\n 'notebooks.rename.inline.error':\n 'Umbenennung von \"{{notebookName}}\" fehlgeschlagen.',\n 'notebooks.title': 'Meine Notizbücher',\n 'notebooks.updated.days': 'Vor {{days}} Tagen aktualisiert',\n 'notebooks.updated.on': 'Aktualisiert am',\n 'notebooks.updated.today': 'Heute aktualisiert',\n 'notebooks.updated.yesterday': 'Vor 1 Tag aktualisiert',\n 'page.subtitle': 'KI-gestützter Entwicklungsassistent',\n 'page.title': 'Intelligenter Assistent',\n 'prompts.codeOptimization.message':\n 'Können Sie gängige Methoden zur Codeoptimierung vorschlagen, um eine bessere Performance zu erzielen?',\n 'prompts.codeOptimization.title':\n 'Vorschläge zur Codeoptimierung unterbreiten',\n 'prompts.codeReadability.message':\n 'Können Sie mir Techniken vorschlagen, mit denen ich meinen Code lesbarer und wartungsfreundlicher gestalten kann?',\n 'prompts.codeReadability.title': 'Hilfe zur Code-Lesbarkeit erhalten',\n 'prompts.debugging.message':\n 'Meine Anwendung gibt beim Versuch einer Verbindung zur Datenbank einen Fehler aus. Können Sie mir helfen, das Problem zu identifizieren?',\n 'prompts.debugging.title': 'Hilfe beim Debuggen erhalten',\n 'prompts.developmentConcept.message':\n 'Können Sie erklären, wie eine Microservices-Architektur funktioniert und welche Vorteile sie gegenüber einem monolithischen Design bietet?',\n 'prompts.developmentConcept.title': 'Ein Entwicklungskonzept erläutern',\n 'prompts.documentation.message':\n 'Können Sie die Dokumentation zur Implementierung der OAuth 2.0-Authentifizierung in einer Webanwendung zusammenfassen?',\n 'prompts.documentation.title': 'Zusammenfassung von Dokumentation',\n 'prompts.eventDriven.message':\n 'Können Sie erklären, was ereignisgesteuerte Architektur bedeutet und wann ihre Verwendung in der Softwareentwicklung von Vorteil ist?',\n 'prompts.eventDriven.title': 'Ereignisgesteuerte Architektur verstehen',\n 'prompts.gitWorkflows.message':\n 'Ich möchte Änderungen am Code in einem anderen Branch vornehmen, ohne meine bestehende Arbeit zu verlieren. Wie geht man dabei mit Git vor?',\n 'prompts.gitWorkflows.title': 'Workflows mit Git',\n 'prompts.openshift.message':\n 'Können Sie mich bei der Erstellung eines neuen Deployments in OpenShift für eine containerisierte Anwendung unterstützen?',\n 'prompts.openshift.title': 'OpenShift-Deployment erstellen',\n 'prompts.rhdh.message':\n 'Können Sie mich bei den ersten Schritten zur Nutzung des Developer Hub als Entwickler unterstützen, z. B. beim Erkunden des Softwarekatalogs und beim Hinzufügen meines Dienstes?',\n 'prompts.rhdh.title': 'Erste Schritte mit dem Red Hat Developer Hub',\n 'prompts.sortingAlgorithms.message':\n 'Können Sie den Unterschied zwischen Quicksort und Mergesort erklären und wann man welchen Algorithmus verwendet?',\n 'prompts.sortingAlgorithms.title':\n 'Sortieralgorithmen verständlich erklären',\n 'prompts.tekton.message':\n 'Können Sie mir helfen, das Deployment meiner Anwendung mithilfe von Tekton-Pipelines zu automatisieren?',\n 'prompts.tekton.title': 'Mit Tekton deployen',\n 'prompts.testingStrategies.message':\n 'Können Sie mir einige gängige Teststrategien empfehlen, die meine Anwendung robust und fehlerfrei machen?',\n 'prompts.testingStrategies.title': 'Teststrategien vorschlagen',\n 'reasoning.thinking': 'Denkvorgang anzeigen',\n 'settings.displayMode.docked': 'An Fenster andocken',\n 'settings.displayMode.fullscreen': 'Vollbild',\n 'settings.displayMode.label': 'Anzeigemodus',\n 'settings.displayMode.overlay': 'Overlay',\n 'settings.mcp.badge': 'Neu',\n 'settings.panel.title': 'Einstellungen',\n 'settings.mcp.label': 'MCP- und Prompt-Einstellungen',\n 'settings.prompt.label': 'Prompt-Einstellungen',\n 'settings.pinned.disable': 'Angeheftete Chats deaktivieren',\n 'settings.pinned.disabled.description':\n 'Angeheftete Chats sind derzeit deaktiviert.',\n 'settings.pinned.enable': 'Angeheftete Chats aktivieren',\n 'settings.pinned.enabled.description':\n 'Angeheftete Chats sind derzeit aktiviert',\n 'settings.savedPrompts.disable': 'Gespeicherte Prompts deaktivieren',\n 'settings.savedPrompts.disabled.description':\n 'Gespeicherte Prompts sind derzeit deaktiviert',\n 'settings.savedPrompts.enable': 'Gespeicherte Prompts aktivieren',\n 'settings.savedPrompts.enabled.description':\n 'Gespeicherte Prompts sind derzeit aktiviert',\n 'savedPrompts.tab.title': 'Gespeicherte Prompts',\n 'savedPrompts.disabled.title': 'Gespeicherte Prompts sind deaktiviert',\n 'savedPrompts.disabled.body':\n 'Gespeicherte Prompts sind im Chat-Verlaufsbereich ausgeblendet. Aktivieren Sie sie, um Ihre Prompts in der Seitenleiste anzuzeigen.',\n 'savedPrompts.disabled.enableLink': 'Gespeicherte Prompts aktivieren',\n 'savedPrompts.count.zero': 'Keine Prompts',\n 'savedPrompts.count_one': '1 Prompt',\n 'savedPrompts.count_other': '{{count}} Prompts',\n 'savedPrompts.newPrompt': '+ Neuer Prompt',\n 'savedPrompts.form.titleLabel': 'Titel',\n 'savedPrompts.form.titlePlaceholder': 'Prompt-Titel',\n 'savedPrompts.form.contentLabel': 'Prompt',\n 'savedPrompts.form.contentPlaceholder': 'Prompt-Inhalt',\n 'savedPrompts.form.save': 'Speichern',\n 'savedPrompts.form.cancel': 'Abbrechen',\n 'savedPrompts.validation.titleMaxLength':\n 'Der Titel darf höchstens {{max}} Zeichen lang sein.',\n 'savedPrompts.validation.contentMaxLength':\n 'Der Prompt darf höchstens {{max}} Zeichen lang sein.',\n 'savedPrompts.limitReached':\n 'Prompt-Limit erreicht. Löschen Sie einen vorhandenen Prompt, um einen neuen zu erstellen.',\n 'savedPrompts.actions.apply': 'In Eingabefeld einfügen',\n 'savedPrompts.actions.send': 'Direkt senden',\n 'savedPrompts.actions.sendDisabledStreaming':\n 'Warten Sie, bis die Antwort abgeschlossen ist',\n 'savedPrompts.actions.delete': 'Löschen',\n 'savedPrompts.actions.menuAriaLabel': 'Aktionen für {{name}}',\n 'savedPrompts.delete.confirm.title': '„{{name}}“ löschen?',\n 'savedPrompts.delete.confirm.message':\n 'Dieser gespeicherte Prompt wird dauerhaft entfernt.',\n 'savedPrompts.delete.confirm.action': 'Löschen',\n 'savedPrompts.empty.description':\n 'Speichern Sie häufig verwendete Prompts, um sie in Ihren Unterhaltungen schnell wiederzuverwenden, ohne sie erneut einzugeben. Gespeicherte Prompts erscheinen auch im Chat-Verlaufsbereich für den schnellen Zugriff.',\n 'savedPrompts.sidebar.showAll': 'Alle anzeigen',\n 'savedPrompts.sidebar.showLess': 'Weniger anzeigen',\n 'savedPrompts.sidebar.openSettings':\n 'Einstellungen für gespeicherte Prompts öffnen',\n 'savedPrompts.sidebar.empty': 'Noch keine gespeicherten Prompts',\n 'sort.alphabeticalAsc': 'Name (A-Z)',\n 'sort.alphabeticalDesc': 'Name (Z-A)',\n 'sort.label': 'Unterhaltungen sortieren',\n 'sort.newest': 'Datum (neuestes zuerst)',\n 'sort.oldest': 'Datum (ältestes zuerst)',\n 'sources.chip.label_one': '{{count}} Quelle',\n 'sources.chip.label_other': '{{count}} Quellen',\n 'sources.modal.description':\n 'Die folgenden Quellen wurden verwendet, um diese KI-Antwort zu generieren und ergänzende Informationen bereitzustellen:',\n 'sources.modal.title': 'Quellen',\n 'sources.popover.closeAriaLabel': 'Quellen schließen',\n 'tabs.ariaLabel': 'Ansichten des intelligenten Assistenten',\n 'tabs.chat': 'Chat',\n 'tabs.notebooks': 'Notizbücher',\n 'tabs.notebooks.devPreview': 'Entwicklervorschau',\n 'tabs.notebooks.empty': 'Inhalte der Notizbücher kommen hierhin.',\n 'toolCall.copyResponse': 'Antwort kopieren',\n 'toolCall.executing': 'Tool wird ausgeführt...',\n 'toolCall.executionTime': 'Ausführungszeit: ',\n 'toolCall.header': 'Antwort des Tools: {{toolName}}',\n 'toolCall.loading': 'Tool wird ausgeführt...',\n 'toolCall.mcpServer': 'MCP-Server',\n 'toolCall.parameters': 'Parameter',\n 'toolCall.response': 'Antwort',\n 'toolCall.showLess': 'Weniger anzeigen',\n 'toolCall.showMore': 'Mehr anzeigen',\n 'toolCall.summary': 'Hier ist eine Zusammenfassung Ihrer Antwort.',\n 'toolCall.thinking': 'Hat {{seconds}} Sekunden nachgedacht',\n 'tooltip.attach': 'Anhängen',\n 'tooltip.backToBottom': 'Zurück zum Ende',\n 'tooltip.backToTop': 'Zurück zum Anfang',\n 'tooltip.chatHistoryMenu': 'Chatverlauf-Menü',\n 'tooltip.close': 'Schließen',\n 'tooltip.collapseHistoryPanel': 'Chatverlauf minimieren',\n 'tooltip.expandHistoryPanel': 'Chatverlauf erweitern',\n 'tooltip.fab.close': 'Intelligenten Assistenten schließen',\n 'tooltip.fab.open': 'Intelligenten Assistenten öffnen',\n 'tooltip.microphone.active': 'Überwachen beenden',\n 'tooltip.microphone.inactive': 'Mikrofon verwenden',\n 'tooltip.quickNewChat': 'Neuer Chat',\n 'tooltip.responseRecorded': 'Antwort aufgezeichnet',\n 'tooltip.send': 'Senden',\n 'tooltip.settings': 'Chatbot-Optionen',\n 'user.guest': 'Gast',\n 'user.loading': '...',\n },\n});\n\nexport default intelligentAssistantTranslationDe;\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"de.esm.js","sources":["../../src/translations/de.ts"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createTranslationMessages } from '@backstage/core-plugin-api/alpha';\n\nimport { intelligentAssistantTranslationRef } from './ref';\n\n/**\n * de translation for plugin.intelligent-assistant.\n * @public\n */\nconst intelligentAssistantTranslationDe = createTranslationMessages({\n ref: intelligentAssistantTranslationRef,\n messages: {\n 'aria.chatHistoryMenu': 'Chatverlauf-Menü',\n 'modelSelector.visionScreenshot.line1': 'Bildanalyse wird unterstützt.',\n 'modelSelector.visionScreenshot.line2':\n 'Ein Screenshot wird Ihrer Nachricht beigefügt.',\n 'modelSelector.visionScreenshot.ariaLabel':\n 'Screenshot-Kontext für Vision-Modell',\n 'modelSelector.disabledTooltip':\n 'Jede Chatsitzung unterstützt nur ein Modell. Um das Modell zu wechseln, starten Sie einen neuen Chat.',\n 'aria.chatbotSelector': 'Chatbot-Auswahl',\n 'aria.close': 'Chatbot schließen',\n 'aria.closeDrawerPanel': 'Drawer-Fenster schließen',\n 'aria.important': 'Wichtig',\n 'aria.options.label': 'Optionen',\n 'aria.resize': 'Größe ändern',\n 'aria.scroll.down': 'Zurück zum Ende',\n 'aria.scroll.up': 'Zurück zum Anfang',\n 'aria.search.placeholder': 'Suchen',\n 'aria.searchPreviousConversations': 'Vorherige Unterhaltungen durchsuchen',\n 'attach.menu.description': 'Eine JSON-, YAML- oder TXT-Datei anhängen',\n 'attach.menu.title': 'Anhängen',\n 'button.newChat': 'Neuer Chat',\n 'chatbox.emptyState.noPinnedChats': 'Chats anheften, um sie oben zu halten',\n 'chatbox.emptyState.noRecentChats': 'Keine letzten Chats',\n 'chatbox.emptyState.noResults.body':\n 'Passen Sie Ihre Suchanfrage an, und versuchen Sie es erneut. Überprüfen Sie Ihre Rechtschreibung, oder versuchen Sie es mit einem allgemeineren Begriff.',\n 'chatbox.emptyState.noResults.title': 'Keine Ergebnisse gefunden',\n 'chatbox.fileUpload.failed': 'Datei-Upload fehlgeschlagen',\n 'chatbox.fileUpload.infoText':\n 'Unterstützte Dateitypen: .txt, .yaml und .json. Die maximale Dateigröße beträgt 25 MB.',\n 'chatbox.header.title': 'Developer Hub Intelligenter Assistent',\n 'chatbox.message.placeholder':\n 'Senden Sie eine Nachricht, und laden Sie optional eine JSON-, YAML- oder TXT-Datei hoch ...',\n 'chatbox.provider.other': 'Andere',\n 'chatbox.search.placeholder': 'Suchen',\n 'chatbox.welcome.description': 'Wie kann ich Ihnen heute helfen?',\n 'chatbox.welcome.greeting': 'Hallo {{userName}}',\n 'common.cancel': 'Abbrechen',\n 'common.close': 'Schließen',\n 'common.loading': 'Wird geladen',\n 'common.noSearchResults': 'Keine Ergebnisse, die der Suche entsprechen',\n 'common.readMore': 'Mehr lesen',\n 'common.retry': 'Erneut versuchen',\n 'conversation.addToPinnedChats': 'Anheften',\n 'conversation.announcement.responseStopped': 'Antwort angehalten.',\n 'conversation.announcement.userMessage':\n 'Nachricht vom Benutzer: {{prompt}}. Nachricht vom Bot wird geladen.',\n 'conversation.category.pinnedChats': 'Angeheftete Chats',\n 'conversation.category.recent': 'Chats',\n 'conversation.category.savedPrompts': 'Gespeicherte Prompts',\n 'conversation.delete': 'Löschen',\n 'conversation.delete.confirm.action': 'Löschen',\n 'conversation.delete.confirm.message':\n 'Dieser Chat wird hier nicht mehr angezeigt. Dadurch werden auch zugehörige Aktivitäten wie Prompts, Antworten und Feedback aus Ihrer Aktivität gelöscht.',\n 'conversation.delete.confirm.title': 'Chat \"{{chatName}}\" löschen?',\n 'conversation.removeFromPinnedChats': 'Lösen',\n 'conversation.rename': 'Umbenennen',\n 'conversation.rename.confirm.action': 'Umbenennen',\n 'conversation.rename.confirm.title': 'Chat umbenennen?',\n 'conversation.rename.placeholder': 'Chatname',\n disclaimer:\n 'Diese Funktion nutzt KI-Technologie. Geben Sie bei Ihrer Eingabe keine persönlichen oder sonstigen sensiblen Informationen an. Interaktionen können dazu genutzt werden, die Produkte oder Dienstleistungen von Red Hat zu verbessern.',\n 'error.context.fileAttachment':\n 'useFileAttachmentContext muss innerhalb eines FileAttachmentContextProvider liegen',\n 'feedback.completion.body':\n 'Wir haben Ihre Antwort erhalten. Vielen Dank für Ihr Feedback!',\n 'feedback.completion.title': 'Feedback übermittelt',\n 'feedback.form.submitWord': 'Absenden',\n 'feedback.form.textAreaPlaceholder':\n 'Geben Sie optional zusätzliches Feedback an',\n 'feedback.form.title': 'Warum haben Sie diese Bewertung gewählt?',\n 'feedback.quickResponses.negative.didntAnswer':\n 'Meine Frage wurde nicht beantwortet',\n 'feedback.quickResponses.negative.hardToUnderstand': 'Schwer zu verstehen',\n 'feedback.quickResponses.negative.notHelpful': 'Nicht hilfreich',\n 'feedback.quickResponses.positive.easyToUnderstand': 'Leicht verständlich',\n 'feedback.quickResponses.positive.helpful': 'Hilfreiche Informationen',\n 'feedback.quickResponses.positive.resolvedIssue':\n 'Mein Problem wurde gelöst',\n 'feedback.tooltips.badResponse': 'Schlechte Antwort',\n 'feedback.tooltips.copied': 'Kopiert',\n 'feedback.tooltips.copy': 'Kopieren',\n 'feedback.tooltips.goodResponse': 'Gute Antwort',\n 'feedback.tooltips.listen': 'Überwachen',\n 'feedback.tooltips.listening': 'Überwachung',\n 'file.upload.error.alreadyExists': 'Datei existiert bereits.',\n 'file.upload.error.fileTooLarge':\n 'Ihre Dateigröße ist zu groß. Bitte stellen Sie sicher, dass Ihre Datei kleiner als 25 MB ist.',\n 'file.upload.error.multipleFiles':\n 'Es wurden mehr als eine Datei hochgeladen.',\n 'file.upload.error.readFailed':\n 'Datei konnte nicht gelesen werden: {{errorMessage}}',\n 'file.upload.error.unsupportedType':\n 'Nicht unterstützter Dateityp. Unterstützte Typen: .txt, .yaml und .json.',\n 'footer.accuracy.label':\n 'KI-generierte Inhalte sollten vor der Verwendung stets überprüft werden.',\n 'icon.lightspeed.alt': 'Symbol des intelligenten Assistenten',\n 'lcore.loadError.description':\n 'Das Backend des intelligenten Assistenten hat keine Modellliste zurückgegeben. Prüfen Sie, ob der Dienst läuft und erreichbar ist, und versuchen Sie es erneut.',\n 'lcore.loadError.title': 'Modelle konnten nicht geladen werden',\n 'lcore.notConfigured.backendDocs':\n 'Backend des intelligenten Assistenten einrichten',\n 'lcore.notConfigured.description':\n 'Der intelligente Assistent erfordert ein registriertes LLM. Wenden Sie sich an den Plattformadministrator Ihrer Organisation, um die Einrichtung abzuschließen.',\n 'lcore.notConfigured.developerLightspeedDocs':\n 'Developer Hub Intelligent Assistant wird konfiguriert',\n 'lcore.notConfigured.title': 'Verbinden Sie ein LLM, um zu starten',\n 'mcp.settings.closeAriaLabel': 'MCP-Einstellungen schließen',\n 'mcp.settings.closeConfigureModalAriaLabel':\n 'Konfigurationsdialog schließen',\n 'mcp.settings.configureServerTitle':\n '{{serverName}} MCP-Server-Einstellungen',\n 'mcp.settings.edit': 'Bearbeiten',\n 'mcp.settings.editServerAriaLabel': '{{serverName}} bearbeiten',\n 'mcp.settings.enabled': 'Aktiviert',\n 'mcp.settings.enterToken': 'Geben Sie Ihren Token ein',\n 'mcp.settings.loading': 'MCP-Server werden geladen...',\n 'mcp.settings.modalDescription':\n 'Anmeldedaten werden verschlüsselt gespeichert und sind auf Ihr Profil beschränkt. Der intelligente Assistent arbeitet mit genau Ihren Berechtigungen.',\n 'mcp.settings.modalDescriptionDcr':\n 'Dieser Server verwendet Dynamic Client Registration (DCR). Token werden automatisch mit Ihrer Backstage-Identität erstellt — kein manuelles Token erforderlich.',\n 'mcp.settings.authenticationToken': 'Authentifizierungstoken',\n 'mcp.settings.modal.authenticationHeading': 'Authentifizierung',\n 'mcp.settings.modal.credentialMode.organization':\n 'Organisations-Standard-Token verwenden',\n 'mcp.settings.modal.credentialMode.organizationDescription':\n 'Verwendet den von Ihrem Administrator konfigurierten Token.',\n 'mcp.settings.modal.credentialMode.personal':\n 'Persönlichen Token verwenden',\n 'mcp.settings.modal.toolsHeading': 'Tools ({{count}})',\n 'mcp.settings.modal.loadingTools': 'Tools werden geladen...',\n 'mcp.settings.modal.fetchingStatus': 'Status wird abgerufen...',\n 'mcp.settings.modal.loadingStatus': 'Verbindung wird getrennt...',\n 'mcp.settings.modal.tokenRemovedWarning':\n 'Token wurde entfernt. Um diesen MCP-Server erneut zu verwenden, geben Sie einen neuen Token ein.',\n 'mcp.settings.modal.noToolsAvailable': 'Keine Tools verfügbar.',\n 'mcp.settings.modal.toolsLoadFailed': 'Tools konnten nicht geladen werden.',\n 'mcp.settings.modal.enabledDescription':\n 'Dieser Server ist aktiv und im Chat verfügbar.',\n 'mcp.settings.modal.enabledDescriptionOff':\n 'Dieser Server ist deaktiviert und im Chat nicht verfügbar.',\n 'mcp.settings.modal.enabledDescriptionTokenRequired':\n 'Dieser Server ist derzeit deaktiviert. Geben Sie einen Token ein, um ihn zu aktivieren.',\n 'mcp.settings.name': 'Name',\n 'mcp.settings.noneAvailable': 'Keine MCP-Server verfügbar.',\n 'mcp.settings.personalAccessToken': 'Persönlicher Zugriffstoken',\n 'mcp.settings.removePersonalToken': 'Persönlichen Token entfernen',\n 'mcp.settings.savedToken': 'Gespeicherter Token',\n 'mcp.settings.selectedCount':\n '{{selectedCount}} von {{totalCount}} ausgewählt',\n 'mcp.settings.status': 'Status',\n 'mcp.settings.status.disabled': 'Deaktiviert',\n 'mcp.settings.status.failed': 'Fehlgeschlagen',\n 'mcp.settings.status.manyTools': '{{count}} Tools',\n 'mcp.settings.status.oneTool': '{{count}} Tool',\n 'mcp.settings.status.tokenRequired': 'Token erforderlich',\n 'mcp.settings.status.unknown': 'Unbekannt',\n 'mcp.settings.tableAriaLabel': 'MCP-Server-Tabelle',\n 'mcp.settings.title': 'MCP-Server',\n 'mcp.settings.toggleServerAriaLabel': '{{serverName}} umschalten',\n 'mcp.settings.token.clearAriaLabel': 'Tokeneingabe löschen',\n 'mcp.settings.token.connectionSuccessful': 'Verbindung erfolgreich',\n 'mcp.settings.token.invalidCredentials':\n 'Ungültige Anmeldedaten. Überprüfen Sie Server-URL und Token.',\n 'mcp.settings.token.savingAndValidating':\n 'Token wird gespeichert und validiert...',\n 'mcp.settings.token.urlUnavailableForValidation':\n 'Token kann nicht validiert werden, da die Server-URL nicht verfügbar ist.',\n 'mcp.settings.token.validating': 'Token wird validiert...',\n 'mcp.settings.token.validationFailed':\n 'Validierung fehlgeschlagen. Überprüfen Sie Server-URL und Token.',\n 'menu.newConversation': 'Neuer Chat',\n 'message.options.label': 'Optionen',\n 'modal.cancel': 'Abbrechen',\n 'modal.close': 'Schließen',\n 'modal.edit': 'Bearbeiten',\n 'modal.save': 'Speichern',\n 'modal.title.edit': 'Anhang bearbeiten',\n 'modal.title.preview': 'Anhang in der Vorschau anzeigen',\n 'notebook.document.rename': 'Umbenennen',\n 'notebook.document.rename.tooltip': 'Klicken zum Umbenennen',\n 'notebook.document.rename.error':\n 'Umbenennung von \"{{documentName}}\" fehlgeschlagen.',\n 'notebook.document.rename.conflict': 'Name existiert bereits.',\n 'notebook.document.rename.tooLong': 'Name zu lang (max 255).',\n 'notebook.document.delete': 'Löschen',\n 'notebook.document.delete.action': 'Entfernen',\n 'notebook.document.delete.description':\n 'Sind Sie sicher, dass Sie <documentName/> aus diesem Notizbuch entfernen möchten? Diese Aktion kann nicht rückgängig gemacht werden.',\n 'notebook.document.delete.success':\n '„{{documentName}}\" wurde erfolgreich entfernt.',\n 'notebook.document.delete.title': 'Ressource entfernen?',\n 'notebook.overwrite.modal.action': 'Hochladen ({{count}})',\n 'notebook.overwrite.modal.back': 'Zurück',\n 'notebook.overwrite.modal.description':\n '{{duplicateCount}} Dateien existieren bereits in diesem Notizbuch. {{newCount}} neue Ressourcen werden trotzdem hinzugefügt.',\n 'notebook.overwrite.modal.ignore': 'Doppelte Dateien ignorieren',\n 'notebook.overwrite.modal.replace': 'Bestehende Dateien ersetzen',\n 'notebook.overwrite.modal.title': 'Datei existiert bereits',\n 'notebook.overwrite.modal.title.one': 'Datei existiert bereits',\n 'notebook.overwrite.modal.title.other': 'Dateien existieren bereits',\n 'notebook.overwrite.modal.description.one':\n '{{duplicateCount}} Datei existiert bereits in diesem Notizbuch. {{newCount}} neue Ressourcen werden trotzdem hinzugefügt.',\n 'notebook.overwrite.modal.description.other':\n '{{duplicateCount}} Dateien existieren bereits in diesem Notizbuch. {{newCount}} neue Ressourcen werden trotzdem hinzugefügt.',\n 'notebook.upload.error.fileTooLarge':\n 'Upload-Fehler: Dateigröße überschreitet das Limit von 25 MB.',\n 'notebook.upload.error.tooManyFiles':\n 'Upload-Fehler: Maximal {{max}} Dateien erlaubt.',\n 'notebook.upload.error.unsupportedType':\n 'Upload-Fehler: Nicht unterstützte Dateitypen gefunden. Bitte laden Sie nur unterstützte Dateitypen hoch.',\n 'notebook.upload.failed': 'Hochladen von \"{{fileName}}\" fehlgeschlagen.',\n 'notebook.upload.modal.addButton': 'Hinzufügen ({{count}})',\n 'notebook.upload.modal.addButtonEmpty': 'Hinzufügen',\n 'notebook.upload.modal.browseButton': 'Hochladen',\n 'notebook.upload.modal.dragDropTitle':\n 'Dateien hierher ziehen und ablegen oder zum Durchsuchen klicken',\n 'notebook.upload.modal.infoText':\n 'Akzeptierte Dateitypen: .md, .txt, .pdf, .json, .yaml, .log',\n 'notebook.upload.modal.maxFileSize': 'Maximale Dateigröße beträgt 25 MB.',\n 'notebook.upload.modal.supportedFormats': 'Unterstützte Formate:',\n 'notebook.upload.modal.removeFile': '{{fileName}} entfernen',\n 'notebook.upload.modal.selectedFiles':\n '{{count}} von {{max}} Dateien ausgewählt',\n 'notebook.upload.modal.separator': 'oder',\n 'notebook.upload.modal.title': 'Ressourcen hinzufügen',\n 'notebook.view.close': 'Notizbuch schließen',\n 'notebook.view.documents.add': 'Hinzufügen',\n 'notebook.view.documents.count_one': '{{count}} Ressource',\n 'notebook.view.documents.count_other': '{{count}} Ressourcen',\n 'notebook.view.documents.maxReached':\n 'Maximal 10 Ressourcen sind erlaubt. Löschen Sie eine Ressource, um eine neue hochzuladen.',\n 'notebook.view.documents.uploading': 'Ressource wird hochgeladen',\n 'notebook.view.documents.uploadsInProgress':\n 'Bitte warten Sie, bis die aktuellen Uploads abgeschlossen sind, bevor Sie weitere Ressourcen hinzufügen.',\n 'notebook.view.input.disabledTooltip':\n 'Wählen Sie mindestens eine geladene Ressource aus, um den Chat zu starten',\n 'notebook.view.input.placeholder': 'Fragen Sie zu Ihren Ressourcen...',\n 'notebook.view.sidebar.collapse': 'Seitenleiste einklappen',\n 'notebook.view.sidebar.expand': 'Seitenleiste ausklappen',\n 'notebook.view.sidebar.resize': 'Größe der Seitenleiste ändern',\n 'notebook.view.title': 'Unbenanntes Notizbuch',\n 'notebook.view.upload.action': 'Ressource hinzufügen',\n 'notebook.view.processing.description':\n 'Ihre Dateien werden indexiert. Sie können Fragen stellen, sobald die Verarbeitung abgeschlossen ist.',\n 'notebook.view.processing.heading': 'Ressourcen werden verarbeitet...',\n 'notebook.view.upload.heading':\n 'Fügen Sie eine Ressource hinzu, um zu beginnen',\n 'notebooks.actions.delete': 'Löschen',\n 'notebooks.actions.rename': 'Umbenennen',\n 'notebooks.card.openAria': 'Notizbuch {{name}} öffnen',\n 'notebooks.delete.action': 'Löschen',\n 'notebooks.delete.message':\n 'Dieses Notizbuch wird hier nicht mehr angezeigt. Dadurch werden auch zugehörige Aktivitäten wie Eingaben, Antworten und Feedback aus Ihrer Aktivität gelöscht.',\n 'notebooks.delete.title': '{{name}} löschen?',\n 'notebooks.delete.toast': 'Notizbuch gelöscht!',\n 'notebooks.documents_one': '{{count}} Ressource',\n 'notebooks.documents_other': '{{count}} Ressourcen',\n 'notebooks.empty.action': 'Neues Notizbuch erstellen',\n 'notebooks.empty.description':\n 'Erstellen Sie ein neues Notizbuch, um Ihre Quellen zu organisieren und KI-gestützte Erkenntnisse zu gewinnen.',\n 'notebooks.empty.title': 'Keine erstellten Notizbücher',\n 'notebooks.prompts.accessIssue.title': 'Hilf mir bei einem Zugriffsproblem',\n 'notebooks.prompts.coreConcepts.title': 'Was sind die Kernkonzepte?',\n 'notebooks.prompts.vulnerabilities.title':\n 'Zeige meine kritischen Schwachstellen',\n 'notebooks.rename.inline.tooltip': 'Klicken zum Umbenennen',\n 'notebooks.rename.inline.error':\n 'Umbenennung von \"{{notebookName}}\" fehlgeschlagen.',\n 'notebooks.title': 'Meine Notizbücher',\n 'notebooks.updated.days': 'Vor {{days}} Tagen aktualisiert',\n 'notebooks.updated.on': 'Aktualisiert am',\n 'notebooks.updated.today': 'Heute aktualisiert',\n 'notebooks.updated.yesterday': 'Vor 1 Tag aktualisiert',\n 'page.subtitle': 'KI-gestützter Entwicklungsassistent',\n 'page.title': 'Intelligenter Assistent',\n 'prompts.codeOptimization.message':\n 'Können Sie gängige Methoden zur Codeoptimierung vorschlagen, um eine bessere Performance zu erzielen?',\n 'prompts.codeOptimization.title':\n 'Vorschläge zur Codeoptimierung unterbreiten',\n 'prompts.codeReadability.message':\n 'Können Sie mir Techniken vorschlagen, mit denen ich meinen Code lesbarer und wartungsfreundlicher gestalten kann?',\n 'prompts.codeReadability.title': 'Hilfe zur Code-Lesbarkeit erhalten',\n 'prompts.debugging.message':\n 'Meine Anwendung gibt beim Versuch einer Verbindung zur Datenbank einen Fehler aus. Können Sie mir helfen, das Problem zu identifizieren?',\n 'prompts.debugging.title': 'Hilfe beim Debuggen erhalten',\n 'prompts.developmentConcept.message':\n 'Können Sie erklären, wie eine Microservices-Architektur funktioniert und welche Vorteile sie gegenüber einem monolithischen Design bietet?',\n 'prompts.developmentConcept.title': 'Ein Entwicklungskonzept erläutern',\n 'prompts.documentation.message':\n 'Können Sie die Dokumentation zur Implementierung der OAuth 2.0-Authentifizierung in einer Webanwendung zusammenfassen?',\n 'prompts.documentation.title': 'Zusammenfassung von Dokumentation',\n 'prompts.eventDriven.message':\n 'Können Sie erklären, was ereignisgesteuerte Architektur bedeutet und wann ihre Verwendung in der Softwareentwicklung von Vorteil ist?',\n 'prompts.eventDriven.title': 'Ereignisgesteuerte Architektur verstehen',\n 'prompts.gitWorkflows.message':\n 'Ich möchte Änderungen am Code in einem anderen Branch vornehmen, ohne meine bestehende Arbeit zu verlieren. Wie geht man dabei mit Git vor?',\n 'prompts.gitWorkflows.title': 'Workflows mit Git',\n 'prompts.openshift.message':\n 'Können Sie mich bei der Erstellung eines neuen Deployments in OpenShift für eine containerisierte Anwendung unterstützen?',\n 'prompts.openshift.title': 'OpenShift-Deployment erstellen',\n 'prompts.rhdh.message':\n 'Können Sie mich bei den ersten Schritten zur Nutzung des Developer Hub als Entwickler unterstützen, z. B. beim Erkunden des Softwarekatalogs und beim Hinzufügen meines Dienstes?',\n 'prompts.rhdh.title': 'Erste Schritte mit dem Red Hat Developer Hub',\n 'prompts.sortingAlgorithms.message':\n 'Können Sie den Unterschied zwischen Quicksort und Mergesort erklären und wann man welchen Algorithmus verwendet?',\n 'prompts.sortingAlgorithms.title':\n 'Sortieralgorithmen verständlich erklären',\n 'prompts.tekton.message':\n 'Können Sie mir helfen, das Deployment meiner Anwendung mithilfe von Tekton-Pipelines zu automatisieren?',\n 'prompts.tekton.title': 'Mit Tekton deployen',\n 'prompts.testingStrategies.message':\n 'Können Sie mir einige gängige Teststrategien empfehlen, die meine Anwendung robust und fehlerfrei machen?',\n 'prompts.testingStrategies.title': 'Teststrategien vorschlagen',\n 'reasoning.thinking': 'Denkvorgang anzeigen',\n 'settings.displayMode.docked': 'An Fenster andocken',\n 'settings.displayMode.fullscreen': 'Vollbild',\n 'settings.displayMode.label': 'Anzeigemodus',\n 'settings.displayMode.overlay': 'Overlay',\n 'settings.mcp.badge': 'Neu',\n 'settings.panel.title': 'Einstellungen',\n 'settings.mcp.label': 'MCP- und Prompt-Einstellungen',\n 'settings.prompt.label': 'Prompt-Einstellungen',\n 'settings.pinned.disable': 'Angeheftete Chats deaktivieren',\n 'settings.pinned.disabled.description':\n 'Angeheftete Chats sind derzeit deaktiviert.',\n 'settings.pinned.enable': 'Angeheftete Chats aktivieren',\n 'settings.pinned.enabled.description':\n 'Angeheftete Chats sind derzeit aktiviert',\n 'settings.savedPrompts.disable': 'Gespeicherte Prompts deaktivieren',\n 'settings.savedPrompts.disabled.description':\n 'Gespeicherte Prompts sind derzeit deaktiviert',\n 'settings.savedPrompts.enable': 'Gespeicherte Prompts aktivieren',\n 'settings.savedPrompts.enabled.description':\n 'Gespeicherte Prompts sind derzeit aktiviert',\n 'settings.screenContext.enable': 'Bildschirmkontext aktivieren',\n 'settings.screenContext.disable': 'Bildschirmkontext deaktivieren',\n 'settings.screenContext.enabled.description':\n 'Die Freigabe des Bildschirmkontexts ist derzeit aktiviert',\n 'settings.screenContext.disabled.description':\n 'Die Freigabe des Bildschirmkontexts ist derzeit deaktiviert',\n 'contextChip.label.paused': 'Kontext: pausiert',\n 'contextChip.label.unavailable': 'Kontext: nicht verfügbar',\n 'contextChip.label.softwareTemplates': 'Software-Templates',\n 'contextChip.tooltip.askAbout': 'Fragen Sie zu {{label}}.',\n 'contextChip.tooltip.template':\n 'Fragen Sie, wie Sie das Template {{label}} ausfüllen.',\n 'contextChip.tooltip.search': 'Fragen Sie zu Ihrer Suche: {{label}}.',\n 'contextChip.tooltip.paused':\n 'Der Bildschirmkontext ist pausiert. Klicken Sie, um die Freigabe Ihres aktuellen Bildschirms an den intelligenten Assistenten fortzusetzen.',\n 'contextChip.tooltip.unavailable':\n 'Der Bildschirmkontext ist im Vollbildmodus nicht verfügbar. Wechseln Sie zum Overlay- oder Andockmodus, um ihn zu aktivieren.',\n 'contextChip.tooltip.line2.fullContext':\n 'Seitentext und ein Screenshot werden mit Ihrer Nachricht gesendet.',\n 'contextChip.tooltip.line2.adminLimited':\n 'Die Freigabe des Bildschirmkontexts ist durch Administratoreinstellungen eingeschränkt.',\n 'contextChip.tooltip.line2.screenshotOnly':\n 'Die Textextraktion ist von Ihrem Administrator deaktiviert. Nur Screenshot.',\n 'contextChip.tooltip.line2.domOffNoVision':\n 'Die Textextraktion ist von Ihrem Administrator deaktiviert. Ihr Modell unterstützt keine Bildanalyse.',\n 'contextChip.tooltip.line2.textOnlyNoVision':\n 'Nur Textkontext – Ihr Modell unterstützt keine Bildanalyse.',\n 'contextChip.tooltip.line2.textOnlyAdminScreenshotsOff':\n 'Nur Textkontext – die Screenshot-Erfassung ist von Ihrem Administrator deaktiviert.',\n 'contextChip.tooltip.line2.textOnlyCombined':\n 'Nur Textkontext – Ihr Modell unterstützt keine Bildanalyse und die Screenshot-Erfassung ist von Ihrem Administrator deaktiviert.',\n 'contextChip.aria.pause': 'Bildschirmkontext pausieren: {{label}}',\n 'contextChip.aria.resume': 'Bildschirmkontext fortsetzen',\n 'savedPrompts.tab.title': 'Gespeicherte Prompts',\n 'savedPrompts.disabled.title': 'Gespeicherte Prompts sind deaktiviert',\n 'savedPrompts.disabled.body':\n 'Gespeicherte Prompts sind im Chat-Verlaufsbereich ausgeblendet. Aktivieren Sie sie, um Ihre Prompts in der Seitenleiste anzuzeigen.',\n 'savedPrompts.disabled.enableLink': 'Gespeicherte Prompts aktivieren',\n 'savedPrompts.count.zero': 'Keine Prompts',\n 'savedPrompts.count_one': '1 Prompt',\n 'savedPrompts.count_other': '{{count}} Prompts',\n 'savedPrompts.newPrompt': '+ Neuer Prompt',\n 'savedPrompts.form.titleLabel': 'Titel',\n 'savedPrompts.form.titlePlaceholder': 'Prompt-Titel',\n 'savedPrompts.form.contentLabel': 'Prompt',\n 'savedPrompts.form.contentPlaceholder': 'Prompt-Inhalt',\n 'savedPrompts.form.save': 'Speichern',\n 'savedPrompts.form.cancel': 'Abbrechen',\n 'savedPrompts.validation.titleMaxLength':\n 'Der Titel darf höchstens {{max}} Zeichen lang sein.',\n 'savedPrompts.validation.contentMaxLength':\n 'Der Prompt darf höchstens {{max}} Zeichen lang sein.',\n 'savedPrompts.limitReached':\n 'Prompt-Limit erreicht. Löschen Sie einen vorhandenen Prompt, um einen neuen zu erstellen.',\n 'savedPrompts.actions.apply': 'In Eingabefeld einfügen',\n 'savedPrompts.actions.send': 'Direkt senden',\n 'savedPrompts.actions.sendDisabledStreaming':\n 'Warten Sie, bis die Antwort abgeschlossen ist',\n 'savedPrompts.actions.delete': 'Löschen',\n 'savedPrompts.actions.menuAriaLabel': 'Aktionen für {{name}}',\n 'savedPrompts.delete.confirm.title': '„{{name}}“ löschen?',\n 'savedPrompts.delete.confirm.message':\n 'Dieser gespeicherte Prompt wird dauerhaft entfernt.',\n 'savedPrompts.delete.confirm.action': 'Löschen',\n 'savedPrompts.empty.description':\n 'Speichern Sie häufig verwendete Prompts, um sie in Ihren Unterhaltungen schnell wiederzuverwenden, ohne sie erneut einzugeben. Gespeicherte Prompts erscheinen auch im Chat-Verlaufsbereich für den schnellen Zugriff.',\n 'savedPrompts.sidebar.showAll': 'Alle anzeigen',\n 'savedPrompts.sidebar.showLess': 'Weniger anzeigen',\n 'savedPrompts.sidebar.openSettings':\n 'Einstellungen für gespeicherte Prompts öffnen',\n 'savedPrompts.sidebar.empty': 'Noch keine gespeicherten Prompts',\n 'sort.alphabeticalAsc': 'Name (A-Z)',\n 'sort.alphabeticalDesc': 'Name (Z-A)',\n 'sort.label': 'Unterhaltungen sortieren',\n 'sort.newest': 'Datum (neuestes zuerst)',\n 'sort.oldest': 'Datum (ältestes zuerst)',\n 'sources.chip.label_one': '{{count}} Quelle',\n 'sources.chip.label_other': '{{count}} Quellen',\n 'sources.modal.description':\n 'Die folgenden Quellen wurden verwendet, um diese KI-Antwort zu generieren und ergänzende Informationen bereitzustellen:',\n 'sources.modal.title': 'Quellen',\n 'sources.popover.closeAriaLabel': 'Quellen schließen',\n 'tabs.ariaLabel': 'Ansichten des intelligenten Assistenten',\n 'tabs.chat': 'Chat',\n 'tabs.notebooks': 'Notizbücher',\n 'tabs.notebooks.devPreview': 'Entwicklervorschau',\n 'tabs.notebooks.empty': 'Inhalte der Notizbücher kommen hierhin.',\n 'toolCall.copyResponse': 'Antwort kopieren',\n 'toolCall.executing': 'Tool wird ausgeführt...',\n 'toolCall.executionTime': 'Ausführungszeit: ',\n 'toolCall.header': 'Antwort des Tools: {{toolName}}',\n 'toolCall.loading': 'Tool wird ausgeführt...',\n 'toolCall.mcpServer': 'MCP-Server',\n 'toolCall.parameters': 'Parameter',\n 'toolCall.response': 'Antwort',\n 'toolCall.showLess': 'Weniger anzeigen',\n 'toolCall.showMore': 'Mehr anzeigen',\n 'toolCall.summary': 'Hier ist eine Zusammenfassung Ihrer Antwort.',\n 'toolCall.thinking': 'Hat {{seconds}} Sekunden nachgedacht',\n 'tooltip.attach': 'Anhängen',\n 'tooltip.backToBottom': 'Zurück zum Ende',\n 'tooltip.backToTop': 'Zurück zum Anfang',\n 'tooltip.chatHistoryMenu': 'Chatverlauf-Menü',\n 'tooltip.close': 'Schließen',\n 'tooltip.collapseHistoryPanel': 'Chatverlauf minimieren',\n 'tooltip.expandHistoryPanel': 'Chatverlauf erweitern',\n 'tooltip.fab.close': 'Intelligenten Assistenten schließen',\n 'tooltip.fab.open': 'Intelligenten Assistenten öffnen',\n 'tooltip.microphone.active': 'Überwachen beenden',\n 'tooltip.microphone.inactive': 'Mikrofon verwenden',\n 'tooltip.quickNewChat': 'Neuer Chat',\n 'tooltip.responseRecorded': 'Antwort aufgezeichnet',\n 'tooltip.send': 'Senden',\n 'tooltip.settings': 'Chatbot-Optionen',\n 'user.guest': 'Gast',\n 'user.loading': '...',\n },\n});\n\nexport default intelligentAssistantTranslationDe;\n"],"names":[],"mappings":"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"}
@@ -5,6 +5,9 @@ const intelligentAssistantTranslationEs = createTranslationMessages({
5
5
  ref: intelligentAssistantTranslationRef,
6
6
  messages: {
7
7
  "aria.chatHistoryMenu": "Men\xFA del historial de chat",
8
+ "modelSelector.visionScreenshot.line1": "An\xE1lisis de im\xE1genes compatible.",
9
+ "modelSelector.visionScreenshot.line2": "Se incluir\xE1 una captura de pantalla con su mensaje.",
10
+ "modelSelector.visionScreenshot.ariaLabel": "Contexto de captura de pantalla del modelo de visi\xF3n",
8
11
  "modelSelector.disabledTooltip": "Cada sesi\xF3n de chat solo admite un modelo. Para cambiar de modelo, abra un nuevo chat.",
9
12
  "aria.chatbotSelector": "Selector de chatbot",
10
13
  "aria.close": "Cerrar chatbot",
@@ -257,6 +260,27 @@ const intelligentAssistantTranslationEs = createTranslationMessages({
257
260
  "settings.savedPrompts.disabled.description": "Los prompts guardados est\xE1n deshabilitados actualmente",
258
261
  "settings.savedPrompts.enable": "Habilitar prompts guardados",
259
262
  "settings.savedPrompts.enabled.description": "Los prompts guardados est\xE1n habilitados actualmente",
263
+ "settings.screenContext.enable": "Habilitar contexto de pantalla",
264
+ "settings.screenContext.disable": "Deshabilitar contexto de pantalla",
265
+ "settings.screenContext.enabled.description": "El uso compartido del contexto de pantalla est\xE1 habilitado actualmente",
266
+ "settings.screenContext.disabled.description": "El uso compartido del contexto de pantalla est\xE1 deshabilitado actualmente",
267
+ "contextChip.label.paused": "Contexto: en pausa",
268
+ "contextChip.label.unavailable": "Contexto: no disponible",
269
+ "contextChip.label.softwareTemplates": "Plantillas de software",
270
+ "contextChip.tooltip.askAbout": "Pregunte sobre {{label}}.",
271
+ "contextChip.tooltip.template": "Pregunte c\xF3mo completar la plantilla {{label}}.",
272
+ "contextChip.tooltip.search": "Pregunte sobre su b\xFAsqueda: {{label}}.",
273
+ "contextChip.tooltip.paused": "El contexto de pantalla est\xE1 en pausa. Haga clic para reanudar el uso compartido de su pantalla actual con el asistente inteligente.",
274
+ "contextChip.tooltip.unavailable": "El contexto de pantalla no est\xE1 disponible en modo de pantalla completa. Cambie al modo Superposici\xF3n o Anclar a la ventana para habilitarlo.",
275
+ "contextChip.tooltip.line2.fullContext": "El texto de la p\xE1gina y una captura de pantalla se enviar\xE1n con su mensaje.",
276
+ "contextChip.tooltip.line2.adminLimited": "El uso compartido del contexto de pantalla est\xE1 limitado por la configuraci\xF3n del administrador.",
277
+ "contextChip.tooltip.line2.screenshotOnly": "La extracci\xF3n de texto est\xE1 deshabilitada por su administrador. Solo captura de pantalla.",
278
+ "contextChip.tooltip.line2.domOffNoVision": "La extracci\xF3n de texto est\xE1 deshabilitada por su administrador. Su modelo no admite el an\xE1lisis de im\xE1genes.",
279
+ "contextChip.tooltip.line2.textOnlyNoVision": "Solo contexto de texto: su modelo no admite el an\xE1lisis de im\xE1genes.",
280
+ "contextChip.tooltip.line2.textOnlyAdminScreenshotsOff": "Solo contexto de texto: la captura de pantalla est\xE1 deshabilitada por su administrador.",
281
+ "contextChip.tooltip.line2.textOnlyCombined": "Solo contexto de texto: su modelo no admite el an\xE1lisis de im\xE1genes y la captura de pantalla est\xE1 deshabilitada por su administrador.",
282
+ "contextChip.aria.pause": "Pausar contexto de pantalla: {{label}}",
283
+ "contextChip.aria.resume": "Reanudar contexto de pantalla",
260
284
  "savedPrompts.tab.title": "Prompts guardados",
261
285
  "savedPrompts.disabled.title": "Los prompts guardados est\xE1n deshabilitados",
262
286
  "savedPrompts.disabled.body": "Los prompts guardados est\xE1n ocultos en el panel del historial de chat. Habil\xEDtelos para mostrar sus prompts en la barra lateral.",