@burdenoff/fe-libs 2026.1006.1 → 2026.1007.1
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.
- package/dist/chrome/ContextSwitcher.d.ts.map +1 -1
- package/dist/chrome/ContextSwitcher.js +93 -89
- package/dist/chrome/GlobalSearch.d.ts.map +1 -1
- package/dist/chrome/GlobalSearch.js +94 -96
- package/dist/chrome/NotificationCenter.d.ts.map +1 -1
- package/dist/chrome/NotificationCenter.js +62 -62
- package/dist/chrome/ShortcutHelpDialog.d.ts.map +1 -1
- package/dist/chrome/ShortcutHelpDialog.js +103 -97
- package/dist/chrome/notificationCenter/NotificationPanel.d.ts.map +1 -1
- package/dist/chrome/notificationCenter/NotificationPanel.js +28 -17
- package/dist/chrome/notificationCenter/usePanelChrome.d.ts +0 -1
- package/dist/chrome/notificationCenter/usePanelChrome.d.ts.map +1 -1
- package/dist/chrome/notificationCenter/usePanelChrome.js +1 -10
- package/dist/chrome/shellOverlayLayer.d.ts +42 -0
- package/dist/chrome/shellOverlayLayer.d.ts.map +1 -0
- package/dist/chrome/shellOverlayLayer.js +4 -0
- package/dist/connections/ConnectionDialogPanel.d.ts.map +1 -1
- package/dist/connections/ConnectionDialogPanel.js +133 -126
- package/dist/connections/ConnectionFormTab.d.ts +2 -1
- package/dist/connections/ConnectionFormTab.d.ts.map +1 -1
- package/dist/connections/ConnectionFormTab.js +43 -42
- package/dist/connections/CredentialStorageSelector.d.ts +3 -1
- package/dist/connections/CredentialStorageSelector.d.ts.map +1 -1
- package/dist/connections/CredentialStorageSelector.js +73 -64
- package/dist/connections/connectionFlow.d.ts +4 -1
- package/dist/connections/connectionFlow.d.ts.map +1 -1
- package/dist/connections/connectionFlow.js +50 -18
- package/dist/connections/types.d.ts +3 -1
- package/dist/connections/types.d.ts.map +1 -1
- package/dist/shared/assistant/appControls/languageReply.d.ts +28 -0
- package/dist/shared/assistant/appControls/languageReply.d.ts.map +1 -0
- package/dist/shared/assistant/appControls/languageReply.js +17 -0
- package/dist/shared/assistant/appControls/text.d.ts +7 -1
- package/dist/shared/assistant/appControls/text.d.ts.map +1 -1
- package/dist/shared/assistant/appControls/text.js +4 -3
- package/dist/shared/assistant/conversation.d.ts +2 -0
- package/dist/shared/assistant/conversation.d.ts.map +1 -1
- package/dist/shared/assistant/displayContent.d.ts.map +1 -1
- package/dist/shared/assistant/displayContent.js +14 -11
- package/dist/shared/assistant/history/historyMapping.d.ts.map +1 -1
- package/dist/shared/assistant/history/historyMapping.js +10 -5
- package/dist/shared/assistant/index.d.ts +1 -0
- package/dist/shared/assistant/index.d.ts.map +1 -1
- package/dist/shared/assistant/ui/AIAssistantPanel.js +8 -8
- package/dist/shared/assistant/ui/AssistantChatArea.d.ts.map +1 -1
- package/dist/shared/assistant/ui/AssistantChatArea.js +1012 -939
- package/dist/shared/assistant/ui/AssistantMessageItem.d.ts.map +1 -1
- package/dist/shared/assistant/ui/AssistantMessageItem.js +105 -97
- package/dist/shared/assistant/ui/AssistantMoreMenu.d.ts.map +1 -1
- package/dist/shared/assistant/ui/AssistantMoreMenu.js +112 -108
- package/dist/shared/assistant/ui/composer/AssistantAttachmentButton.d.ts.map +1 -1
- package/dist/shared/assistant/ui/composer/AssistantAttachmentButton.js +66 -62
- package/dist/shared/assistant/ui/controlConfirmDialog.js +4 -4
- package/dist/shared/assistant/ui/useDropdownEscape.d.ts +8 -30
- package/dist/shared/assistant/ui/useDropdownEscape.d.ts.map +1 -1
- package/dist/shared/assistant/ui/useDropdownEscape.js +6 -20
- package/dist/shared/assistant/ui/voice/AssistantVoiceSession.js +7 -7
- package/dist/shared/assistant/uiActions/recordNames.d.ts +18 -6
- package/dist/shared/assistant/uiActions/recordNames.d.ts.map +1 -1
- package/dist/shared/assistant/uiActions/recordNames.js +42 -37
- package/dist/shared/components/EscapeLayer.d.ts +15 -0
- package/dist/shared/components/EscapeLayer.d.ts.map +1 -0
- package/dist/shared/components/EscapeLayer.js +31 -0
- package/dist/shared-assistant.js +151 -150
- package/package.json +3 -1
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { FC } from 'react';
|
|
2
2
|
import { Translator } from '../credentials/translate';
|
|
3
3
|
import { ConnectionsApi } from './api';
|
|
4
|
-
import { CredentialStorageState, ProviderAuthType } from './types';
|
|
4
|
+
import { CredentialStorageMode, CredentialStorageState, ProviderAuthType } from './types';
|
|
5
5
|
interface CredentialStorageSelectorProps {
|
|
6
6
|
api: ConnectionsApi;
|
|
7
7
|
value: CredentialStorageState;
|
|
8
8
|
onChange: (update: (current: CredentialStorageState) => CredentialStorageState) => void;
|
|
9
|
+
/** Existing direct consumers omit this; the shared dialog always passes the provider policy. */
|
|
10
|
+
supportedStorageModes?: readonly CredentialStorageMode[];
|
|
9
11
|
authType: ProviderAuthType;
|
|
10
12
|
/** False lets the integrations service hold the secret when no vault is picked. */
|
|
11
13
|
requireVault: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CredentialStorageSelector.d.ts","sourceRoot":"","sources":["../../src/connections/CredentialStorageSelector.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAA2C,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAGzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAE5C,OAAO,KAAK,EACV,sBAAsB,EACtB,gBAAgB,EAGjB,MAAM,SAAS,CAAC;AAEjB,UAAU,8BAA8B;IACtC,GAAG,EAAE,cAAc,CAAC;IACpB,KAAK,EAAE,sBAAsB,CAAC;IAC9B,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,sBAAsB,KAAK,sBAAsB,KAAK,IAAI,CAAC;IACxF,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,mFAAmF;IACnF,YAAY,EAAE,OAAO,CAAC;IACtB,8EAA8E;IAC9E,cAAc,EAAE,OAAO,CAAC;IACxB,SAAS,EAAE,UAAU,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAWD,eAAO,MAAM,yBAAyB,EAAE,EAAE,CAAC,8BAA8B,
|
|
1
|
+
{"version":3,"file":"CredentialStorageSelector.d.ts","sourceRoot":"","sources":["../../src/connections/CredentialStorageSelector.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAA2C,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAGzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAE5C,OAAO,KAAK,EACV,qBAAqB,EACrB,sBAAsB,EACtB,gBAAgB,EAGjB,MAAM,SAAS,CAAC;AAEjB,UAAU,8BAA8B;IACtC,GAAG,EAAE,cAAc,CAAC;IACpB,KAAK,EAAE,sBAAsB,CAAC;IAC9B,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,sBAAsB,KAAK,sBAAsB,KAAK,IAAI,CAAC;IACxF,gGAAgG;IAChG,qBAAqB,CAAC,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACzD,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,mFAAmF;IACnF,YAAY,EAAE,OAAO,CAAC;IACtB,8EAA8E;IAC9E,cAAc,EAAE,OAAO,CAAC;IACxB,SAAS,EAAE,UAAU,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAWD,eAAO,MAAM,yBAAyB,EAAE,EAAE,CAAC,8BAA8B,CA+WxE,CAAC"}
|
|
@@ -3,57 +3,66 @@ import { useCallback as t, useEffect as n, useId as r, useState as i } from "rea
|
|
|
3
3
|
import { AlertCircle as a, Database as o, FolderKey as s, KeyRound as c, Loader2 as l, Plus as u, X as d } from "lucide-react";
|
|
4
4
|
import { Fragment as f, jsx as p, jsxs as m } from "react/jsx-runtime";
|
|
5
5
|
//#region src/connections/CredentialStorageSelector.tsx
|
|
6
|
-
var h = "w-full rounded-lg border border-border-subtle bg-bg-surface px-3 py-2.5 text-sm focus:outline-none focus:ring-2 focus:ring-primary/20 focus:border-primary disabled:opacity-60", g = `${h} scheme-normal dark:scheme-dark [&_option]:bg-bg-surface [&_option]:text-text-primary`, _ = ({ api: a, value: d, onChange: _,
|
|
7
|
-
let [
|
|
8
|
-
|
|
6
|
+
var h = "w-full rounded-lg border border-border-subtle bg-bg-surface px-3 py-2.5 text-sm focus:outline-none focus:ring-2 focus:ring-primary/20 focus:border-primary disabled:opacity-60", g = `${h} scheme-normal dark:scheme-dark [&_option]:bg-bg-surface [&_option]:text-text-primary`, _ = ({ api: a, value: d, onChange: _, supportedStorageModes: y = ["managed", "existing"], authType: b, requireVault: x, canCreateVault: S, translate: C, disabled: w }) => {
|
|
7
|
+
let [T, E] = i([]), [D, O] = i(!0), [k, A] = i([]), [j, M] = i(!1), [N, P] = i(!1), F = r(), I = y.includes("managed"), L = y.includes("existing"), R = x || !I, z = t(async () => {
|
|
8
|
+
O(!0);
|
|
9
9
|
try {
|
|
10
|
-
|
|
10
|
+
E(await a.listVaults());
|
|
11
11
|
} catch {
|
|
12
|
-
|
|
12
|
+
E([]);
|
|
13
13
|
} finally {
|
|
14
|
-
|
|
14
|
+
O(!1);
|
|
15
15
|
}
|
|
16
16
|
}, [a]);
|
|
17
17
|
n(() => {
|
|
18
|
-
|
|
19
|
-
}, [
|
|
20
|
-
if (d.mode !== "existing" || !d.vaultId) {
|
|
21
|
-
|
|
18
|
+
z();
|
|
19
|
+
}, [z]), n(() => {
|
|
20
|
+
if (!L || d.mode !== "existing" || !d.vaultId) {
|
|
21
|
+
A([]), M(!1);
|
|
22
22
|
return;
|
|
23
23
|
}
|
|
24
24
|
let t = !1;
|
|
25
|
-
return
|
|
26
|
-
t ||
|
|
25
|
+
return M(!0), a.listVaultSecrets(d.vaultId).then((n) => {
|
|
26
|
+
t || A(e(n, b));
|
|
27
27
|
}).catch(() => {
|
|
28
|
-
t ||
|
|
28
|
+
t || A([]);
|
|
29
29
|
}).finally(() => {
|
|
30
|
-
t ||
|
|
30
|
+
t || M(!1);
|
|
31
31
|
}), () => {
|
|
32
32
|
t = !0;
|
|
33
33
|
};
|
|
34
34
|
}, [
|
|
35
35
|
a,
|
|
36
|
-
|
|
36
|
+
b,
|
|
37
|
+
L,
|
|
37
38
|
d.mode,
|
|
38
39
|
d.vaultId
|
|
39
40
|
]);
|
|
40
|
-
let
|
|
41
|
-
await
|
|
41
|
+
let B = async (e) => {
|
|
42
|
+
await z(), _((t) => ({
|
|
42
43
|
...t,
|
|
43
44
|
vaultId: e,
|
|
44
45
|
secretId: ""
|
|
45
|
-
})),
|
|
46
|
-
},
|
|
46
|
+
})), P(!1);
|
|
47
|
+
}, V = `${F}-vault`, H = `${F}-managed-name`, U = `${F}-existing-secret`, W = R ? C("integrations.addConnection.credentialStorage.selectVault", "Select a vault") : C("integrations.addConnection.credentialStorage.noVault", "No vault — stored encrypted by the integrations service");
|
|
48
|
+
if (!I && !L) return /* @__PURE__ */ p("div", {
|
|
49
|
+
role: "alert",
|
|
50
|
+
className: "rounded-md border border-border-default bg-status-error-bg-subtle px-3 py-2 text-sm text-status-error-text",
|
|
51
|
+
children: C("integrations.addConnection.credentialStorage.noCompatibleMode", "This authentication method has no compatible credential storage mode. Ask an administrator to correct its configuration.")
|
|
52
|
+
});
|
|
53
|
+
let G = (e, t, n, r) => {
|
|
47
54
|
let i = t, a = d.mode === e;
|
|
48
55
|
return /* @__PURE__ */ m("button", {
|
|
49
56
|
type: "button",
|
|
50
|
-
disabled:
|
|
57
|
+
disabled: w,
|
|
51
58
|
"aria-pressed": a,
|
|
52
|
-
onClick: () =>
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
59
|
+
onClick: () => {
|
|
60
|
+
y.includes(e) && _((t) => ({
|
|
61
|
+
...t,
|
|
62
|
+
mode: e,
|
|
63
|
+
...e === "managed" ? { secretId: "" } : {}
|
|
64
|
+
}));
|
|
65
|
+
},
|
|
57
66
|
className: `rounded-xl border px-4 py-3 text-left transition-colors disabled:opacity-60 ${a ? "border-primary bg-action-primary-bg/5" : "border-border-subtle hover:border-primary/40 hover:bg-accent/30"}`,
|
|
58
67
|
children: [/* @__PURE__ */ m("span", {
|
|
59
68
|
className: "flex items-center gap-2 text-sm font-medium text-text-primary",
|
|
@@ -75,45 +84,45 @@ var h = "w-full rounded-lg border border-border-subtle bg-bg-surface px-3 py-2.5
|
|
|
75
84
|
children: [/* @__PURE__ */ p(o, {
|
|
76
85
|
size: 16,
|
|
77
86
|
className: "text-primary"
|
|
78
|
-
}),
|
|
87
|
+
}), C("integrations.addConnection.credentialStorage.title", "Credential Storage")]
|
|
79
88
|
}), /* @__PURE__ */ p("p", {
|
|
80
89
|
className: "mt-1 text-xs text-text-secondary",
|
|
81
|
-
children:
|
|
90
|
+
children: I && L ? R ? C("integrations.addConnection.credentialStorage.description", "Connections use vault-managed secrets by default. You can also reuse an existing compatible secret.") : C("integrations.addConnection.credentialStorage.optionalDescription", "Optional. Without a vault, the integrations service stores the credential encrypted. Pick a vault to manage it yourself, or reuse an existing secret.") : I ? R ? C("integrations.addConnection.credentialStorage.managedOnlyDescription", "Choose a vault to create a dedicated secret for this connection.") : C("integrations.addConnection.credentialStorage.managedOnlyOptionalDescription", "Without a vault, the integrations service stores the credential encrypted. You can choose a vault for a dedicated secret.") : C("integrations.addConnection.credentialStorage.existingOnlyDescription", "Choose a vault and an existing compatible secret.")
|
|
82
91
|
})] }),
|
|
83
92
|
/* @__PURE__ */ m("div", {
|
|
84
|
-
className:
|
|
85
|
-
children: [
|
|
93
|
+
className: `grid grid-cols-1 gap-3 ${I && L ? "sm:grid-cols-2" : ""}`,
|
|
94
|
+
children: [I && G("managed", s, C("integrations.addConnection.credentialStorage.dedicatedSecret", "Dedicated secret"), C("integrations.addConnection.credentialStorage.dedicatedSecretDescription", "Create and own a vault secret for this connection.")), L && G("existing", c, C("integrations.addConnection.credentialStorage.existingSecret", "Existing secret"), C("integrations.addConnection.credentialStorage.existingSecretDescription", "Reference an already stored secret from the vault."))]
|
|
86
95
|
}),
|
|
87
96
|
/* @__PURE__ */ m("div", {
|
|
88
97
|
className: "space-y-2",
|
|
89
98
|
children: [/* @__PURE__ */ m("div", {
|
|
90
99
|
className: "flex items-center justify-between gap-2",
|
|
91
100
|
children: [/* @__PURE__ */ p("label", {
|
|
92
|
-
htmlFor:
|
|
101
|
+
htmlFor: V,
|
|
93
102
|
className: "block text-xs font-semibold uppercase tracking-wide text-text-primary",
|
|
94
|
-
children:
|
|
95
|
-
}), !
|
|
103
|
+
children: C("integrations.addConnection.credentialStorage.vaultLabel", "Vault")
|
|
104
|
+
}), !N && S && /* @__PURE__ */ m("button", {
|
|
96
105
|
type: "button",
|
|
97
|
-
disabled:
|
|
98
|
-
onClick: () =>
|
|
106
|
+
disabled: w,
|
|
107
|
+
onClick: () => P(!0),
|
|
99
108
|
className: "inline-flex items-center gap-1 text-xs font-medium text-primary hover:underline",
|
|
100
109
|
children: [
|
|
101
110
|
/* @__PURE__ */ p(u, { size: 13 }),
|
|
102
111
|
" ",
|
|
103
|
-
|
|
112
|
+
C("integrations.addConnection.credentialStorage.newVault", "New vault")
|
|
104
113
|
]
|
|
105
114
|
})]
|
|
106
|
-
}),
|
|
115
|
+
}), N ? /* @__PURE__ */ p(v, {
|
|
107
116
|
api: a,
|
|
108
|
-
translate:
|
|
109
|
-
onCreated: (e) => void
|
|
110
|
-
onCancel: () =>
|
|
117
|
+
translate: C,
|
|
118
|
+
onCreated: (e) => void B(e),
|
|
119
|
+
onCancel: () => P(!1)
|
|
111
120
|
}) : /* @__PURE__ */ m(f, { children: [/* @__PURE__ */ m("div", {
|
|
112
121
|
className: "relative",
|
|
113
122
|
children: [/* @__PURE__ */ m("select", {
|
|
114
|
-
id:
|
|
123
|
+
id: V,
|
|
115
124
|
value: d.vaultId,
|
|
116
|
-
disabled:
|
|
125
|
+
disabled: w,
|
|
117
126
|
onChange: (e) => _((t) => ({
|
|
118
127
|
...t,
|
|
119
128
|
vaultId: e.target.value,
|
|
@@ -122,8 +131,8 @@ var h = "w-full rounded-lg border border-border-subtle bg-bg-surface px-3 py-2.5
|
|
|
122
131
|
className: g,
|
|
123
132
|
children: [/* @__PURE__ */ p("option", {
|
|
124
133
|
value: "",
|
|
125
|
-
children:
|
|
126
|
-
}),
|
|
134
|
+
children: W
|
|
135
|
+
}), T.map((e) => /* @__PURE__ */ m("option", {
|
|
127
136
|
value: e.id,
|
|
128
137
|
children: [
|
|
129
138
|
e.name,
|
|
@@ -132,75 +141,75 @@ var h = "w-full rounded-lg border border-border-subtle bg-bg-surface px-3 py-2.5
|
|
|
132
141
|
")"
|
|
133
142
|
]
|
|
134
143
|
}, e.id))]
|
|
135
|
-
}),
|
|
144
|
+
}), D && /* @__PURE__ */ p(l, {
|
|
136
145
|
size: 16,
|
|
137
146
|
className: "absolute right-3 top-3 animate-spin text-text-secondary"
|
|
138
147
|
})]
|
|
139
|
-
}),
|
|
148
|
+
}), R && !D && T.length === 0 && (S ? /* @__PURE__ */ m("p", {
|
|
140
149
|
className: "text-xs text-text-secondary",
|
|
141
150
|
children: [
|
|
142
|
-
|
|
151
|
+
C("integrations.addConnection.credentialStorage.noVaults.canCreate", "No vaults yet. Create one to store this connection's credentials."),
|
|
143
152
|
" ",
|
|
144
153
|
/* @__PURE__ */ p("button", {
|
|
145
154
|
type: "button",
|
|
146
|
-
onClick: () =>
|
|
155
|
+
onClick: () => P(!0),
|
|
147
156
|
className: "font-medium text-primary hover:underline",
|
|
148
|
-
children:
|
|
157
|
+
children: C("integrations.addConnection.credentialStorage.noVaults.createOne", "Create one")
|
|
149
158
|
})
|
|
150
159
|
]
|
|
151
160
|
}) : /* @__PURE__ */ p("p", {
|
|
152
161
|
className: "text-xs text-text-secondary",
|
|
153
|
-
children:
|
|
162
|
+
children: C("integrations.addConnection.credentialStorage.noVaults.readOnly", "No vaults yet. Ask an administrator to create one — a connection needs a vault to store its credentials.")
|
|
154
163
|
}))] })]
|
|
155
164
|
}),
|
|
156
|
-
d.mode === "managed" ? d.vaultId ? /* @__PURE__ */ m("div", {
|
|
165
|
+
d.mode === "managed" || !L ? I && d.vaultId ? /* @__PURE__ */ m("div", {
|
|
157
166
|
className: "space-y-2",
|
|
158
167
|
children: [
|
|
159
168
|
/* @__PURE__ */ p("label", {
|
|
160
|
-
htmlFor:
|
|
169
|
+
htmlFor: H,
|
|
161
170
|
className: "block text-xs font-semibold uppercase tracking-wide text-text-primary",
|
|
162
|
-
children:
|
|
171
|
+
children: C("integrations.addConnection.credentialStorage.managedSecretName", "Managed secret name")
|
|
163
172
|
}),
|
|
164
173
|
/* @__PURE__ */ p("input", {
|
|
165
|
-
id:
|
|
174
|
+
id: H,
|
|
166
175
|
type: "text",
|
|
167
176
|
value: d.managedSecretName,
|
|
168
|
-
disabled:
|
|
177
|
+
disabled: w,
|
|
169
178
|
onChange: (e) => _((t) => ({
|
|
170
179
|
...t,
|
|
171
180
|
managedSecretName: e.target.value
|
|
172
181
|
})),
|
|
173
|
-
placeholder:
|
|
182
|
+
placeholder: C("integrations.addConnection.credentialStorage.managedSecretPlaceholder", "Optional custom vault secret name"),
|
|
174
183
|
className: h
|
|
175
184
|
}),
|
|
176
185
|
/* @__PURE__ */ p("p", {
|
|
177
186
|
className: "text-xs text-text-secondary",
|
|
178
|
-
children:
|
|
187
|
+
children: C("integrations.addConnection.credentialStorage.managedSecretHint", "Leave empty to auto-generate a secret name from the connection and provider.")
|
|
179
188
|
})
|
|
180
189
|
]
|
|
181
190
|
}) : null : /* @__PURE__ */ m("div", {
|
|
182
191
|
className: "space-y-2",
|
|
183
192
|
children: [
|
|
184
193
|
/* @__PURE__ */ p("label", {
|
|
185
|
-
htmlFor:
|
|
194
|
+
htmlFor: U,
|
|
186
195
|
className: "block text-xs font-semibold uppercase tracking-wide text-text-primary",
|
|
187
|
-
children:
|
|
196
|
+
children: C("integrations.addConnection.credentialStorage.existingSecretLabel", "Existing secret")
|
|
188
197
|
}),
|
|
189
198
|
/* @__PURE__ */ m("div", {
|
|
190
199
|
className: "relative",
|
|
191
200
|
children: [/* @__PURE__ */ m("select", {
|
|
192
|
-
id:
|
|
201
|
+
id: U,
|
|
193
202
|
value: d.secretId,
|
|
194
203
|
onChange: (e) => _((t) => ({
|
|
195
204
|
...t,
|
|
196
205
|
secretId: e.target.value
|
|
197
206
|
})),
|
|
198
|
-
disabled:
|
|
207
|
+
disabled: w || !d.vaultId,
|
|
199
208
|
className: g,
|
|
200
209
|
children: [/* @__PURE__ */ p("option", {
|
|
201
210
|
value: "",
|
|
202
|
-
children:
|
|
203
|
-
}),
|
|
211
|
+
children: C("integrations.addConnection.credentialStorage.selectExistingSecret", "Select an existing secret")
|
|
212
|
+
}), k.map((e) => /* @__PURE__ */ m("option", {
|
|
204
213
|
value: e.id,
|
|
205
214
|
children: [
|
|
206
215
|
e.name,
|
|
@@ -208,14 +217,14 @@ var h = "w-full rounded-lg border border-border-subtle bg-bg-surface px-3 py-2.5
|
|
|
208
217
|
e.type
|
|
209
218
|
]
|
|
210
219
|
}, e.id))]
|
|
211
|
-
}),
|
|
220
|
+
}), j && /* @__PURE__ */ p(l, {
|
|
212
221
|
size: 16,
|
|
213
222
|
className: "absolute right-3 top-3 animate-spin text-text-secondary"
|
|
214
223
|
})]
|
|
215
224
|
}),
|
|
216
225
|
/* @__PURE__ */ p("p", {
|
|
217
226
|
className: "text-xs text-text-secondary",
|
|
218
|
-
children:
|
|
227
|
+
children: C("integrations.addConnection.credentialStorage.existingSecretHint", "For OAuth and basic auth, choose a structured credential secret created for integrations.")
|
|
219
228
|
})
|
|
220
229
|
]
|
|
221
230
|
})
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Translator } from '../credentials/translate';
|
|
2
2
|
import { AuthMethodFlow, FormSchema } from '../credentials/types';
|
|
3
3
|
import { ConnectionRecord, ConnectionsApi, CreateConnectionInput } from './api';
|
|
4
|
-
import { ConnectionAuthMethod, ConnectionProvider, CredentialStorageState, ProviderAuthType } from './types';
|
|
4
|
+
import { ConnectionAuthMethod, ConnectionProvider, CredentialStorageMode, CredentialStorageState, ProviderAuthType } from './types';
|
|
5
5
|
/** Providers whose methods were never backfilled fall back to their type. */
|
|
6
6
|
export declare function flowForAuthType(authType: ProviderAuthType): AuthMethodFlow;
|
|
7
7
|
/** The methods a user may pick: enabled ones, in display order. */
|
|
@@ -17,6 +17,9 @@ export declare function selectableMethods(provider: ConnectionProvider): Connect
|
|
|
17
17
|
export declare function resolveMethod(provider: ConnectionProvider, selectedKey: string | null): ConnectionAuthMethod | null;
|
|
18
18
|
export declare function resolveFlow(provider: ConnectionProvider, method: ConnectionAuthMethod | null): AuthMethodFlow;
|
|
19
19
|
export declare function resolveSchema(provider: ConnectionProvider, method: ConnectionAuthMethod | null): FormSchema | null;
|
|
20
|
+
export declare function supportedStorageModes(provider: ConnectionProvider, method: ConnectionAuthMethod | null): readonly CredentialStorageMode[];
|
|
21
|
+
/** Keep a vault selection when changing methods, but never reuse a forbidden secret. */
|
|
22
|
+
export declare function normalizeStorageMode(storage: CredentialStorageState, modes: readonly CredentialStorageMode[]): CredentialStorageState;
|
|
20
23
|
/**
|
|
21
24
|
* A method that asks for a client id is bring-your-own-app: the user must
|
|
22
25
|
* register the callback URL in their provider app. Derived from the schema, not
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connectionFlow.d.ts","sourceRoot":"","sources":["../../src/connections/connectionFlow.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,OAAO,CAAC;AACrF,OAAO,KAAK,EACV,oBAAoB,EACpB,kBAAkB,EAClB,sBAAsB,EACtB,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAEjB,6EAA6E;AAC7E,wBAAgB,eAAe,CAAC,QAAQ,EAAE,gBAAgB,GAAG,cAAc,CAM1E;AAED,mEAAmE;AACnE,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,oBAAoB,EAAE,CAEtF;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,kBAAkB,EAC5B,WAAW,EAAE,MAAM,GAAG,IAAI,GACzB,oBAAoB,GAAG,IAAI,CAQ7B;AAED,wBAAgB,WAAW,CACzB,QAAQ,EAAE,kBAAkB,EAC5B,MAAM,EAAE,oBAAoB,GAAG,IAAI,GAClC,cAAc,CAEhB;AAED,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,kBAAkB,EAC5B,MAAM,EAAE,oBAAoB,GAAG,IAAI,GAClC,UAAU,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"connectionFlow.d.ts","sourceRoot":"","sources":["../../src/connections/connectionFlow.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,OAAO,CAAC;AACrF,OAAO,KAAK,EACV,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,EACtB,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAEjB,6EAA6E;AAC7E,wBAAgB,eAAe,CAAC,QAAQ,EAAE,gBAAgB,GAAG,cAAc,CAM1E;AAED,mEAAmE;AACnE,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,oBAAoB,EAAE,CAEtF;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,kBAAkB,EAC5B,WAAW,EAAE,MAAM,GAAG,IAAI,GACzB,oBAAoB,GAAG,IAAI,CAQ7B;AAED,wBAAgB,WAAW,CACzB,QAAQ,EAAE,kBAAkB,EAC5B,MAAM,EAAE,oBAAoB,GAAG,IAAI,GAClC,cAAc,CAEhB;AAED,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,kBAAkB,EAC5B,MAAM,EAAE,oBAAoB,GAAG,IAAI,GAClC,UAAU,GAAG,IAAI,CAOnB;AAiCD,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,kBAAkB,EAC5B,MAAM,EAAE,oBAAoB,GAAG,IAAI,GAClC,SAAS,qBAAqB,EAAE,CAMlC;AAED,wFAAwF;AACxF,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,sBAAsB,EAC/B,KAAK,EAAE,SAAS,qBAAqB,EAAE,GACtC,sBAAsB,CAGxB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,GAAG,OAAO,CAEtE;AAED,0EAA0E;AAC1E,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,cAAc,EACpB,QAAQ,EAAE,kBAAkB,GAC3B,OAAO,CAET;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,MAAM,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,yEAAyE;IACzE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,OAAO,EAAE,sBAAsB,CAAC;IAChC;;;OAGG;IACH,YAAY,EAAE,OAAO,CAAC;IACtB,yEAAyE;IACzE,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC;AAED,wEAAwE;AACxE,wBAAgB,aAAa,CAAC,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,CAkD1F;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,UAAU,GAAG,IAAI,EACzB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAWzB;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,eAAe,GAAG,qBAAqB,CA2C9E;AAED,6CAA6C;AAC7C,MAAM,MAAM,QAAQ,GAChB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,gBAAgB,CAAA;CAAE,GAC9C;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,gBAAgB,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzE;;;;GAIG;AACH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,cAAc,EACnB,KAAK,EAAE,eAAe,EACtB,OAAO,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,GAClD,OAAO,CAAC,QAAQ,CAAC,CAoCnB"}
|
|
@@ -14,19 +14,44 @@ function o(e, t) {
|
|
|
14
14
|
return t?.flow ?? r(e.authType);
|
|
15
15
|
}
|
|
16
16
|
function s(e, n) {
|
|
17
|
-
|
|
17
|
+
let r = t(n?.configSchema);
|
|
18
|
+
return r && Object.keys(r.properties).length > 0 ? r : t(e.configSchema) ?? r;
|
|
18
19
|
}
|
|
19
|
-
|
|
20
|
+
var c = ["managed", "existing"], l = [];
|
|
21
|
+
function u(e) {
|
|
22
|
+
if (!e || !Object.prototype.hasOwnProperty.call(e, "supportedStorageModes")) return null;
|
|
23
|
+
let t = e.supportedStorageModes;
|
|
24
|
+
if (!Array.isArray(t) || t.length === 0) return l;
|
|
25
|
+
let n = [];
|
|
26
|
+
for (let e of t) {
|
|
27
|
+
if (e !== "managed" && e !== "existing" || n.includes(e)) return l;
|
|
28
|
+
n.push(e);
|
|
29
|
+
}
|
|
30
|
+
return n;
|
|
31
|
+
}
|
|
32
|
+
function d(e, t) {
|
|
33
|
+
let n = u(e.configSchema), r = u(t?.configSchema);
|
|
34
|
+
return n ? r ? r.filter((e) => n.includes(e)) : n : r ?? c;
|
|
35
|
+
}
|
|
36
|
+
function f(e, t) {
|
|
37
|
+
return t.includes(e.mode) ? e : {
|
|
38
|
+
...e,
|
|
39
|
+
mode: t[0] ?? "managed",
|
|
40
|
+
secretId: ""
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
function p(e) {
|
|
20
44
|
return !!(e && Object.prototype.hasOwnProperty.call(e.properties, "clientId"));
|
|
21
45
|
}
|
|
22
|
-
function
|
|
46
|
+
function m(e, t) {
|
|
23
47
|
return e !== "minted" && t.authType !== "service_account";
|
|
24
48
|
}
|
|
25
|
-
function
|
|
49
|
+
function h(t, n) {
|
|
26
50
|
let r = o(t.provider, t.method), i = s(t.provider, t.method);
|
|
27
51
|
if (!t.name.trim()) return n("integrations.addConnection.errors.nameRequired", "Connection name is required");
|
|
28
52
|
if (t.method && !t.method.isConfigured) return n("integrations.addConnection.authentication.methodNotConfigured", "This authentication method is not configured in this environment. Ask an administrator to add its credentials, or pick another method.");
|
|
29
|
-
if (
|
|
53
|
+
if (m(r, t.provider)) {
|
|
54
|
+
if (!d(t.provider, t.method).includes(t.storage.mode)) return n("integrations.addConnection.errors.storageModeUnsupported", "This authentication method does not support the selected credential storage mode.");
|
|
30
55
|
if (t.storage.mode === "existing") {
|
|
31
56
|
if (!t.storage.vaultId) return n("integrations.addConnection.errors.vaultRequired", "Please select a vault for storing or referencing credentials");
|
|
32
57
|
if (!t.storage.secretId) return n("integrations.addConnection.errors.secretRequired", "Please select an existing vault secret to reuse");
|
|
@@ -34,7 +59,7 @@ function u(t, n) {
|
|
|
34
59
|
}
|
|
35
60
|
return r !== "minted" && i && !e(i, t.values) ? n("integrations.addConnection.errors.fieldsRequired", "Please fill in all required fields") : null;
|
|
36
61
|
}
|
|
37
|
-
function
|
|
62
|
+
function g(e, t) {
|
|
38
63
|
let r = {};
|
|
39
64
|
for (let [i, a] of Object.entries(n(e, t))) if (typeof a == "string") {
|
|
40
65
|
let e = a.trim();
|
|
@@ -42,27 +67,34 @@ function d(e, t) {
|
|
|
42
67
|
} else a != null && (r[i] = a);
|
|
43
68
|
return r;
|
|
44
69
|
}
|
|
45
|
-
function
|
|
46
|
-
let t = o(e.provider, e.method), n = s(e.provider, e.method), r = t === "oauth2" ?
|
|
70
|
+
function _(e) {
|
|
71
|
+
let t = o(e.provider, e.method), n = s(e.provider, e.method), r = t === "oauth2" ? g(n, e.values) : {}, i = {
|
|
47
72
|
...e.extraConfig ?? {},
|
|
48
73
|
...r
|
|
49
74
|
}, a = {
|
|
50
75
|
name: e.name.trim(),
|
|
51
76
|
providerId: e.provider.id
|
|
52
77
|
}, c = e.description.trim();
|
|
53
|
-
if (c && (a.description = c), e.method && (a.authMethodKey = e.method.key), Object.keys(i).length > 0 && (a.config = i),
|
|
78
|
+
if (c && (a.description = c), e.method && (a.authMethodKey = e.method.key), Object.keys(i).length > 0 && (a.config = i), m(t, e.provider)) {
|
|
54
79
|
let { storage: t } = e;
|
|
55
|
-
if (t.mode
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
80
|
+
if (!d(e.provider, e.method).includes(t.mode)) throw Error("This authentication method does not support the selected credential storage mode.");
|
|
81
|
+
if (t.mode === "existing") {
|
|
82
|
+
if (!t.vaultId) throw Error("Please select a vault for storing or referencing credentials");
|
|
83
|
+
if (!t.secretId) throw Error("Please select an existing vault secret to reuse");
|
|
84
|
+
a.credentialSecretId = t.secretId;
|
|
85
|
+
} else {
|
|
86
|
+
if (e.requireVault && !t.vaultId) throw Error("Please select a vault for storing or referencing credentials");
|
|
87
|
+
if (t.vaultId) {
|
|
88
|
+
a.vaultId = t.vaultId;
|
|
89
|
+
let e = t.managedSecretName.trim();
|
|
90
|
+
e && (a.managedSecretName = e);
|
|
91
|
+
}
|
|
60
92
|
}
|
|
61
93
|
}
|
|
62
94
|
return a;
|
|
63
95
|
}
|
|
64
|
-
async function
|
|
65
|
-
let r = o(t.provider, t.method), i = await e.createConnection(
|
|
96
|
+
async function v(e, t, n) {
|
|
97
|
+
let r = o(t.provider, t.method), i = await e.createConnection(_(t));
|
|
66
98
|
switch (r) {
|
|
67
99
|
case "oauth2": {
|
|
68
100
|
let { redirectUrl: t } = await e.initiateOAuth({
|
|
@@ -92,10 +124,10 @@ async function p(e, t, n) {
|
|
|
92
124
|
connection: await e.authenticateConnection({
|
|
93
125
|
connectionId: i.id,
|
|
94
126
|
...t.method ? { authMethodKey: t.method.key } : {},
|
|
95
|
-
values:
|
|
127
|
+
values: g(s(t.provider, t.method), t.values)
|
|
96
128
|
}) ?? i
|
|
97
129
|
};
|
|
98
130
|
}
|
|
99
131
|
}
|
|
100
132
|
//#endregion
|
|
101
|
-
export {
|
|
133
|
+
export { _ as buildCreateInput, p as collectsOwnClientId, r as flowForAuthType, m as needsCredentialStorage, f as normalizeStorageMode, o as resolveFlow, a as resolveMethod, s as resolveSchema, i as selectableMethods, v as submitConnection, g as submittedValues, d as supportedStorageModes, h as validateDraft };
|
|
@@ -43,13 +43,15 @@ export interface CreatedConnection {
|
|
|
43
43
|
status: string;
|
|
44
44
|
provider: ConnectionProvider;
|
|
45
45
|
}
|
|
46
|
+
/** Storage modes a method permits for its credential. */
|
|
47
|
+
export type CredentialStorageMode = 'managed' | 'existing';
|
|
46
48
|
/** Where a new connection's credential is kept. */
|
|
47
49
|
export interface CredentialStorageState {
|
|
48
50
|
/**
|
|
49
51
|
* `managed` — a new secret, in `vaultId` when one is chosen, otherwise held
|
|
50
52
|
* by the integrations service itself. `existing` — reference `secretId`.
|
|
51
53
|
*/
|
|
52
|
-
mode:
|
|
54
|
+
mode: CredentialStorageMode;
|
|
53
55
|
vaultId: string;
|
|
54
56
|
secretId: string;
|
|
55
57
|
managedSecretName: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/connections/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,MAAM,MAAM,gBAAgB,GACxB,eAAe,GACf,oBAAoB,GACpB,eAAe,GACf,KAAK,GACL,WAAW,GACX,iBAAiB,GACjB,WAAW,GACX,SAAS,GACT,IAAI,GACJ,SAAS,GACT,QAAQ,GACR,IAAI,GACJ,OAAO,GACP,UAAU,GACV,cAAc,GACd,OAAO,CAAC;AAEZ,MAAM,MAAM,gBAAgB,GACxB,QAAQ,GACR,SAAS,GACT,YAAY,GACZ,cAAc,GACd,iBAAiB,GACjB,qBAAqB,GACrB,QAAQ,CAAC;AAEb,oDAAoD;AACpD,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,IAAI,EAAE,cAAc,CAAC;IACrB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,mEAAmE;IACnE,eAAe,EAAE,OAAO,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC7C,0EAA0E;IAC1E,YAAY,EAAE,OAAO,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,4EAA4E;IAC5E,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,eAAe,EAAE,OAAO,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC7C,WAAW,EAAE,oBAAoB,EAAE,CAAC;CACrC;AAED,8DAA8D;AAC9D,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,gDAAgD;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,kBAAkB,CAAC;CAC9B;AAED,mDAAmD;AACnD,MAAM,WAAW,sBAAsB;IACrC;;;OAGG;IACH,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/connections/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Message } from '../conversation';
|
|
2
|
+
import { AssistantTr } from '../i18n';
|
|
3
|
+
import { LocalCommandCopy } from '../localUiCommandCopy';
|
|
4
|
+
/**
|
|
5
|
+
* ★ BOFF-8677: save a compatibility string immediately, then wait briefly
|
|
6
|
+
* before displaying and speaking its new-language projection. The optional
|
|
7
|
+
* display parameter also translates it when late words arrive, or when history
|
|
8
|
+
* is reopened in another app language; saved strings are never rewritten.
|
|
9
|
+
*/
|
|
10
|
+
export type LanguageReplyStep = "write" | "wait" | "grace";
|
|
11
|
+
/** How long an idle, still-untranslated language is given before displaying English. */
|
|
12
|
+
export declare const LANGUAGE_REPLY_GRACE_MS = 400;
|
|
13
|
+
/** The longest the reply waits for the new language at all. */
|
|
14
|
+
export declare const LANGUAGE_REPLY_DEADLINE_MS = 5000;
|
|
15
|
+
export interface LanguageReplyView {
|
|
16
|
+
/** The language the person asked for (the app's own code for it). */
|
|
17
|
+
wanted: string;
|
|
18
|
+
/** The language the i18n provider is in NOW. */
|
|
19
|
+
locale: string;
|
|
20
|
+
/** The provider is fetching translations. */
|
|
21
|
+
isLoading: boolean;
|
|
22
|
+
/** The sentence, made with the translator in force now, came back translated. */
|
|
23
|
+
translatedNow: boolean;
|
|
24
|
+
}
|
|
25
|
+
export declare function languageReplyStep(view: LanguageReplyView): LanguageReplyStep;
|
|
26
|
+
/** Only new language confirmations are live copy; older records keep their saved text. */
|
|
27
|
+
export declare function languageConfirmationCopy(message: Message, tr: AssistantTr): LocalCommandCopy | null;
|
|
28
|
+
//# sourceMappingURL=languageReply.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"languageReply.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/appControls/languageReply.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAG9D;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;AAE3D,wFAAwF;AACxF,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAE3C,+DAA+D;AAC/D,eAAO,MAAM,0BAA0B,OAAQ,CAAC;AAKhD,MAAM,WAAW,iBAAiB;IAChC,qEAAqE;IACrE,MAAM,EAAE,MAAM,CAAC;IACf,gDAAgD;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,SAAS,EAAE,OAAO,CAAC;IACnB,iFAAiF;IACjF,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,iBAAiB,GAAG,iBAAiB,CAO5E;AAED,0FAA0F;AAC1F,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,OAAO,EAChB,EAAE,EAAE,WAAW,GACd,gBAAgB,GAAG,IAAI,CAkBzB"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { appControlCopy as e } from "./copy.js";
|
|
2
|
+
//#region src/shared/assistant/appControls/languageReply.ts
|
|
3
|
+
var t = 400, n = 5e3, r = (e) => e.trim().toLowerCase().split(/[-_]/)[0] ?? "";
|
|
4
|
+
function i(e) {
|
|
5
|
+
let t = r(e.wanted);
|
|
6
|
+
return r(e.locale) === t ? t === "en" || e.translatedNow ? "write" : e.isLoading ? "wait" : "grace" : "wait";
|
|
7
|
+
}
|
|
8
|
+
function a(t, n) {
|
|
9
|
+
let r = t.metadata?.localAction;
|
|
10
|
+
return t.role !== "assistant" || r?.kind !== "app-control" || r.control !== "language" || r.outcome !== "done" && r.outcome !== "already" || typeof r.languageLabel != "string" || r.languageLabel.length === 0 || r.languageLabel.length > 80 ? null : e(n, {
|
|
11
|
+
code: "language",
|
|
12
|
+
label: r.languageLabel,
|
|
13
|
+
already: r.outcome === "already"
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
//#endregion
|
|
17
|
+
export { n as LANGUAGE_REPLY_DEADLINE_MS, t as LANGUAGE_REPLY_GRACE_MS, a as languageConfirmationCopy, i as languageReplyStep };
|
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Lower-case, punctuation-free, single-spaced ("let's" → "let s"). The ONE
|
|
3
3
|
* canonical form the command grammars compare in (`localUiCommands.ts` and
|
|
4
|
-
* `appControls/grammar.ts`)
|
|
4
|
+
* `appControls/grammar.ts`) and record names are matched in
|
|
5
|
+
* (`uiActions/recordNames.ts`), so a label, a sentence and a record's name are
|
|
6
|
+
* judged alike.
|
|
7
|
+
*
|
|
8
|
+
* ★ BOFF-8680: "&" reads as "and" ("P&L" → "p and l"), and combining marks
|
|
9
|
+
* (`\p{M}`) are KEPT so a Hindi or Tamil word is not cut at every vowel sign.
|
|
10
|
+
* Every other symbol ("+", "@", "%", "/", apostrophes, dashes) is a separator.
|
|
5
11
|
*/
|
|
6
12
|
export declare function canonical(text: string): string;
|
|
7
13
|
//# sourceMappingURL=text.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/appControls/text.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/appControls/text.ts"],"names":[],"mappings":"AAQA;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAa9C"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
//#region src/shared/assistant/appControls/text.ts
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
var e = /[\u200C\u200D]/g;
|
|
3
|
+
function t(t) {
|
|
4
|
+
return t.normalize("NFKC").toLowerCase().replace(e, "").normalize("NFKC").replace(/&/g, " and ").replace(/[^\p{L}\p{N}\p{M}\s]/gu, " ").replace(/\s+/g, " ").trim();
|
|
4
5
|
}
|
|
5
6
|
//#endregion
|
|
6
|
-
export {
|
|
7
|
+
export { t as canonical };
|
|
@@ -54,6 +54,8 @@ export interface AssistantAppControlAction {
|
|
|
54
54
|
kind: "app-control";
|
|
55
55
|
control: string;
|
|
56
56
|
outcome: AssistantAppControlOutcome;
|
|
57
|
+
/** Optional display parameter for a language confirmation; never an instruction. */
|
|
58
|
+
languageLabel?: string;
|
|
57
59
|
}
|
|
58
60
|
export type AssistantAppControlOutcome = "done" | "already" | "failed" | "blocked" | "not-found" | "ambiguous" | "confirm";
|
|
59
61
|
export type AssistantLocalAction = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversation.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/conversation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACxE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAIhE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,MAAM,MAAM,sBAAsB,GAC9B,MAAM,GACN,cAAc,GACd,SAAS,GACT,UAAU,GACV,OAAO,CAAC;AAEZ,MAAM,MAAM,2BAA2B,GACnC,MAAM,GACN,cAAc,GACd,YAAY,GACZ,WAAW,GACX,UAAU,GACV,OAAO,CAAC;AAEZ;;;;;;;;;GASG;AACH,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;GAIG;AACH;;;;;;;GAOG;AACH,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,UAAU,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,oBAAoB,CAAC;IAC3B,OAAO,CAAC,EAAE,wBAAwB,CAAC;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,oBAAoB,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;AAClF,MAAM,MAAM,wBAAwB,GAChC,SAAS,GACT,YAAY,GACZ,SAAS,GACT,SAAS,GACT,aAAa,CAAC;AAElB;;;;GAIG;AACH,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,aAAa,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"conversation.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/conversation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"displayContent.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/displayContent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,+BAA+B,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC/E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"displayContent.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/displayContent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,+BAA+B,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC/E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAU1C;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,uBAAuB,GAC/B;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAClD;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAA;CAAE,GAC/C;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAgExD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,+BAA+B,GAAG,IAAI,GAAG,SAAS,EAC9D,EAAE,EAAE,WAAW,GACd,uBAAuB,CAuBzB"}
|