@marinoscar/platform-web 0.1.0-next.6 → 0.1.0-next.8
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/CHANGELOG.md +21 -0
- package/dist/ai/ui/index.d.ts +9 -0
- package/dist/ai/ui/index.d.ts.map +1 -1
- package/dist/ai/ui/index.js +7 -0
- package/dist/ai/ui/index.js.map +1 -1
- package/dist/ai/ui/user/AccountSignInProviderCard.d.ts +128 -0
- package/dist/ai/ui/user/AccountSignInProviderCard.d.ts.map +1 -0
- package/dist/ai/ui/user/AccountSignInProviderCard.js +87 -0
- package/dist/ai/ui/user/AccountSignInProviderCard.js.map +1 -0
- package/dist/ai/ui/user/DefaultAiModelPicker.d.ts +13 -0
- package/dist/ai/ui/user/DefaultAiModelPicker.d.ts.map +1 -1
- package/dist/ai/ui/user/DefaultAiModelPicker.js +5 -0
- package/dist/ai/ui/user/DefaultAiModelPicker.js.map +1 -1
- package/dist/ai/ui/user/KeylessProviderCard.d.ts +18 -1
- package/dist/ai/ui/user/KeylessProviderCard.d.ts.map +1 -1
- package/dist/ai/ui/user/KeylessProviderCard.js +10 -1
- package/dist/ai/ui/user/KeylessProviderCard.js.map +1 -1
- package/dist/ai/ui/user/UserAiKeyCard.d.ts +22 -0
- package/dist/ai/ui/user/UserAiKeyCard.d.ts.map +1 -1
- package/dist/ai/ui/user/UserAiKeyCard.js +5 -0
- package/dist/ai/ui/user/UserAiKeyCard.js.map +1 -1
- package/dist/ai/ui/user/aiErrorText.d.ts +10 -2
- package/dist/ai/ui/user/aiErrorText.d.ts.map +1 -1
- package/dist/ai/ui/user/aiErrorText.js +10 -2
- package/dist/ai/ui/user/aiErrorText.js.map +1 -1
- package/dist/identity/headless/index.d.ts +2 -0
- package/dist/identity/headless/index.d.ts.map +1 -1
- package/dist/identity/headless/index.js +1 -0
- package/dist/identity/headless/index.js.map +1 -1
- package/dist/identity/headless/local-identity.d.ts +63 -0
- package/dist/identity/headless/local-identity.d.ts.map +1 -0
- package/dist/identity/headless/local-identity.js +84 -0
- package/dist/identity/headless/local-identity.js.map +1 -0
- package/dist/identity/headless/types.d.ts +7 -0
- package/dist/identity/headless/types.d.ts.map +1 -1
- package/dist/identity/headless/use-permissions.d.ts +6 -1
- package/dist/identity/headless/use-permissions.d.ts.map +1 -1
- package/dist/identity/headless/use-permissions.js +24 -9
- package/dist/identity/headless/use-permissions.js.map +1 -1
- package/dist/identity/index.d.ts +1 -1
- package/dist/identity/index.d.ts.map +1 -1
- package/dist/identity/index.js +1 -1
- package/dist/identity/index.js.map +1 -1
- package/dist/shell/headless/index.d.ts +2 -0
- package/dist/shell/headless/index.d.ts.map +1 -1
- package/dist/shell/headless/index.js +1 -0
- package/dist/shell/headless/index.js.map +1 -1
- package/dist/shell/headless/preferences.d.ts +72 -0
- package/dist/shell/headless/preferences.d.ts.map +1 -0
- package/dist/shell/headless/preferences.js +83 -0
- package/dist/shell/headless/preferences.js.map +1 -0
- package/dist/shell/headless/rail-preference.d.ts.map +1 -1
- package/dist/shell/headless/rail-preference.js +44 -1
- package/dist/shell/headless/rail-preference.js.map +1 -1
- package/dist/shell/testing/index.d.ts +2 -0
- package/dist/shell/testing/index.d.ts.map +1 -0
- package/dist/shell/testing/index.js +6 -0
- package/dist/shell/testing/index.js.map +1 -0
- package/dist/shell/testing/shell-local-host.suite.d.ts +11 -0
- package/dist/shell/testing/shell-local-host.suite.d.ts.map +1 -0
- package/dist/shell/testing/shell-local-host.suite.js +152 -0
- package/dist/shell/testing/shell-local-host.suite.js.map +1 -0
- package/dist/shell/ui/ShellBottomNav.d.ts.map +1 -1
- package/dist/shell/ui/ShellBottomNav.js +14 -1
- package/dist/shell/ui/ShellBottomNav.js.map +1 -1
- package/dist/shell/ui/ShellUserMenu.d.ts +33 -1
- package/dist/shell/ui/ShellUserMenu.d.ts.map +1 -1
- package/dist/shell/ui/ShellUserMenu.js +12 -5
- package/dist/shell/ui/ShellUserMenu.js.map +1 -1
- package/dist/shell/ui/index.d.ts +1 -1
- package/dist/shell/ui/index.d.ts.map +1 -1
- package/package.json +6 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,26 @@
|
|
|
1
1
|
# @marinoscar/platform-web
|
|
2
2
|
|
|
3
|
+
## 0.1.0-next.8
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- b609f85: `AccountSignInProviderCard` (`@marinoscar/platform-web/ai/ui`) takes `signInUnavailableReason`: while it is set and the user is signed out, Sign in is disabled, the reason is shown under the buttons and tied to the button with `aria-describedby`, and Try again never starts a sign-in. Unset, nothing changes. A host whose provider needs a step first (a runtime to install) says so instead of offering a sign-in that fails (#1003).
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- @marinoscar/platform-contract@0.1.0-next.8
|
|
12
|
+
|
|
13
|
+
## 0.1.0-next.7
|
|
14
|
+
|
|
15
|
+
### Minor Changes
|
|
16
|
+
|
|
17
|
+
- 58d2ef5: Export the AI slice's prop-driven presentational cards from `@marinoscar/platform-web/ai/ui` so other hosts (such as a desktop app) reuse them instead of copying them (#998): `UserAiKeyCard`, `KeylessProviderCard` with `KEYLESS_PROVIDER_TEXT`, `DefaultAiModelPicker`, and the `aiErrorText` and `aiCodeText` helpers, with their prop types. Adds `AccountSignInProviderCard`, a new presentational card for providers that sign in with an account rather than an API key (enable switch, blocking consent dialog, sign in and out, status, model picker, capability list, error with retry), driven entirely by props with no network or API hooks. `UserAiKeysPage` is unchanged.
|
|
18
|
+
- 58d2ef5: Local host mode for the app shell (#997). `usePermissions` falls back from the `AuthContext` to the `PlatformHostProvider` viewer (and throws a clear error naming both when neither is mounted); `@marinoscar/platform-web/identity/headless` gains `LocalIdentityProvider`, `createLocalAuthContextValue`, `LocalIdentityInput` and `AuthContextValue.mode` (`'server' | 'local'`); `@marinoscar/platform-web/shell/headless` gains `ShellPreferencesPort`, `ShellPreferences`, `ShellPreferencesProvider` and `createLocalStorageShellPreferencesPort`, and `useShellRailPreference` uses the port when a provider is mounted (the `/user-settings` default is unchanged otherwise); `ShellUserMenu` gains `hideSignOut`, `hideOrgSwitcher` (both default on in local mode) and `extraItems` (`ShellUserMenuItem`); a new `@marinoscar/platform-web/shell/testing` entry registers the `shell-local-host` conformance suite. Ordering change: `ShellBottomNav` renders destinations marked `pinned` at the end of the bar and of its More sheet (stable partition, non-pinned first).
|
|
19
|
+
|
|
20
|
+
### Patch Changes
|
|
21
|
+
|
|
22
|
+
- @marinoscar/platform-contract@0.1.0-next.7
|
|
23
|
+
|
|
3
24
|
## 0.1.0-next.6
|
|
4
25
|
|
|
5
26
|
### Patch Changes
|
package/dist/ai/ui/index.d.ts
CHANGED
|
@@ -16,4 +16,13 @@ export { AiGenericProviderCard, getAiProviderCard, registerAiProviderCard, } fro
|
|
|
16
16
|
export type { AiDeploymentRow, AiProviderCardComponent, AiProviderCardProps, AiProviderFormErrors, AiProviderFormValue, } from './provider-cards.js';
|
|
17
17
|
export { getAiPlaygroundMode, listAiPlaygroundModes, registerAiPlaygroundMode, } from './playground/aiPlaygroundModes.js';
|
|
18
18
|
export type { AiPlaygroundMode, BuiltinAiPlaygroundModeId, AiPlaygroundModeDefinition, AiPlaygroundModeId, AiPlaygroundPanelProps, } from './playground/aiPlaygroundModes.js';
|
|
19
|
+
export { UserAiKeyCard } from './user/UserAiKeyCard.js';
|
|
20
|
+
export type { UserAiKeyCardProps, UserAiKeyCardProvider } from './user/UserAiKeyCard.js';
|
|
21
|
+
export { KeylessProviderCard, KEYLESS_PROVIDER_TEXT } from './user/KeylessProviderCard.js';
|
|
22
|
+
export type { KeylessProviderCardProps } from './user/KeylessProviderCard.js';
|
|
23
|
+
export { aiErrorText, aiCodeText } from './user/aiErrorText.js';
|
|
24
|
+
export { DefaultAiModelPicker } from './user/DefaultAiModelPicker.js';
|
|
25
|
+
export type { DefaultAiModelPickerProps } from './user/DefaultAiModelPicker.js';
|
|
26
|
+
export { AccountSignInProviderCard } from './user/AccountSignInProviderCard.js';
|
|
27
|
+
export type { AccountSignInStatus, AccountSignInConsent, AccountSignInProviderCardProps, } from './user/AccountSignInProviderCard.js';
|
|
19
28
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ai/ui/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAChG,YAAY,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACjF,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC5D,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AACxG,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC5D,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC9E,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC1D,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAChE,YAAY,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACpF,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACpE,YAAY,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC1F,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,YAAY,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,eAAe,EACf,uBAAuB,EACvB,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,mCAAmC,CAAC;AAC3C,YAAY,EACV,gBAAgB,EAChB,yBAAyB,EACzB,0BAA0B,EAC1B,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,mCAAmC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ai/ui/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAChG,YAAY,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACjF,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC5D,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AACxG,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC5D,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC9E,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC1D,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAChE,YAAY,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACpF,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACpE,YAAY,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC1F,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,YAAY,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,eAAe,EACf,uBAAuB,EACvB,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,mCAAmC,CAAC;AAC3C,YAAY,EACV,gBAAgB,EAChB,yBAAyB,EACzB,0BAA0B,EAC1B,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,mCAAmC,CAAC;AAG3C,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,YAAY,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACzF,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAC3F,YAAY,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,YAAY,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAChF,OAAO,EAAE,yBAAyB,EAAE,MAAM,qCAAqC,CAAC;AAChF,YAAY,EACV,mBAAmB,EACnB,oBAAoB,EACpB,8BAA8B,GAC/B,MAAM,qCAAqC,CAAC"}
|
package/dist/ai/ui/index.js
CHANGED
|
@@ -14,4 +14,11 @@ export { default as AiPlaygroundPage } from './AiPlaygroundPage.js';
|
|
|
14
14
|
export { RequireAiEnabled } from './RequireAiEnabled.js';
|
|
15
15
|
export { AiGenericProviderCard, getAiProviderCard, registerAiProviderCard, } from './provider-cards.js';
|
|
16
16
|
export { getAiPlaygroundMode, listAiPlaygroundModes, registerAiPlaygroundMode, } from './playground/aiPlaygroundModes.js';
|
|
17
|
+
// Prop-driven presentational cards other hosts reuse (issue #998): no hooks, no
|
|
18
|
+
// network, everything arrives as props.
|
|
19
|
+
export { UserAiKeyCard } from './user/UserAiKeyCard.js';
|
|
20
|
+
export { KeylessProviderCard, KEYLESS_PROVIDER_TEXT } from './user/KeylessProviderCard.js';
|
|
21
|
+
export { aiErrorText, aiCodeText } from './user/aiErrorText.js';
|
|
22
|
+
export { DefaultAiModelPicker } from './user/DefaultAiModelPicker.js';
|
|
23
|
+
export { AccountSignInProviderCard } from './user/AccountSignInProviderCard.js';
|
|
17
24
|
//# sourceMappingURL=index.js.map
|
package/dist/ai/ui/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ai/ui/index.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,6EAA6E;AAC7E,4EAA4E;AAC5E,4EAA4E;AAC5E,wEAAwE;AACxE,kEAAkE;AAClE,8BAA8B;AAE9B,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAEhG,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE5D,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE5D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE1D,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAEhE,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,qBAAqB,CAAC;AAQ7B,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,mCAAmC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ai/ui/index.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,6EAA6E;AAC7E,4EAA4E;AAC5E,4EAA4E;AAC5E,wEAAwE;AACxE,kEAAkE;AAClE,8BAA8B;AAE9B,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAEhG,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE5D,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE5D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE1D,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAEhE,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,qBAAqB,CAAC;AAQ7B,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,mCAAmC,CAAC;AAQ3C,gFAAgF;AAChF,wCAAwC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAE3F,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAEtE,OAAO,EAAE,yBAAyB,EAAE,MAAM,qCAAqC,CAAC"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One provider that signs in with an ACCOUNT instead of an API key — issue #998.
|
|
3
|
+
*
|
|
4
|
+
* A presentational card for hosts whose AI provider is reached through the
|
|
5
|
+
* user's own account (a desktop sign-in, a device flow) rather than a stored
|
|
6
|
+
* key, the counterpart of `UserAiKeyCard`. It makes no network call and reads
|
|
7
|
+
* no hook: the host owns enabling, consent, sign-in, status and the model
|
|
8
|
+
* choice, and passes them as props. Every action prop returns a promise; a
|
|
9
|
+
* rejection is worded with `aiErrorText` and shown inline with a Try again.
|
|
10
|
+
*
|
|
11
|
+
* State machine (accessible names are part of the contract):
|
|
12
|
+
* - disabled: only the title, description and the `Enable {name}` switch.
|
|
13
|
+
* - enabled, consent required and not yet given: a blocking dialog; the
|
|
14
|
+
* sign-in button does not render until the user agrees.
|
|
15
|
+
* - consented, signed out: `Sign in with {name}`; disabled, with the reason
|
|
16
|
+
* shown under it, while `signInUnavailableReason` is set.
|
|
17
|
+
* - signed in: `Signed in as {login}`, model picker, capabilities, `Sign out`.
|
|
18
|
+
*/
|
|
19
|
+
import { type ReactNode } from 'react';
|
|
20
|
+
/**
|
|
21
|
+
* The current sign-in state of the account behind an account-sign-in provider.
|
|
22
|
+
*
|
|
23
|
+
* @stability experimental
|
|
24
|
+
*/
|
|
25
|
+
export interface AccountSignInStatus {
|
|
26
|
+
/** The user is signed in to the provider account. */
|
|
27
|
+
signedIn: boolean;
|
|
28
|
+
/** The signed-in account's login or display name, when known. */
|
|
29
|
+
login?: string | null;
|
|
30
|
+
/** A status check is in flight. */
|
|
31
|
+
checking?: boolean;
|
|
32
|
+
/** The last status check or sign-in failed with this message. */
|
|
33
|
+
error?: string | null;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* The consent a provider requires before the user may enable and sign in.
|
|
37
|
+
*
|
|
38
|
+
* @stability experimental
|
|
39
|
+
*/
|
|
40
|
+
export interface AccountSignInConsent {
|
|
41
|
+
/** Consent must be given before the provider can be used. */
|
|
42
|
+
required: boolean;
|
|
43
|
+
/** When the user agreed; absent or null while consent is still pending. */
|
|
44
|
+
acceptedAt?: string | null;
|
|
45
|
+
/** Heading of the consent notice. */
|
|
46
|
+
title: string;
|
|
47
|
+
/** The consent text shown to the user. */
|
|
48
|
+
body: ReactNode;
|
|
49
|
+
/** Defaults to `I agree`. */
|
|
50
|
+
acceptLabel?: string;
|
|
51
|
+
/** Record the user's consent. Rejects on failure. */
|
|
52
|
+
onAccept: () => Promise<void>;
|
|
53
|
+
/** When given, a signed-in user can withdraw consent. */
|
|
54
|
+
onRevoke?: () => Promise<void>;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Props of {@link AccountSignInProviderCard}.
|
|
58
|
+
*
|
|
59
|
+
* @stability experimental
|
|
60
|
+
*/
|
|
61
|
+
export interface AccountSignInProviderCardProps {
|
|
62
|
+
/** The provider the card describes. */
|
|
63
|
+
provider: {
|
|
64
|
+
/** Stable provider id. */
|
|
65
|
+
id: string;
|
|
66
|
+
/** Name shown in the card header. */
|
|
67
|
+
displayName: string;
|
|
68
|
+
/** Optional text shown under the name. */
|
|
69
|
+
description?: ReactNode;
|
|
70
|
+
/** Optional icon shown beside the name. */
|
|
71
|
+
icon?: ReactNode;
|
|
72
|
+
};
|
|
73
|
+
/** The user has switched this provider on. */
|
|
74
|
+
enabled: boolean;
|
|
75
|
+
/** Persist the on/off switch. Rejects on failure. */
|
|
76
|
+
onEnabledChange: (enabled: boolean) => Promise<void>;
|
|
77
|
+
/** Consent gate; omit when the provider needs none. */
|
|
78
|
+
consent?: AccountSignInConsent;
|
|
79
|
+
/** The current sign-in state. */
|
|
80
|
+
status: AccountSignInStatus;
|
|
81
|
+
/** Start the sign-in flow. Rejects on failure. */
|
|
82
|
+
onSignIn: () => Promise<void>;
|
|
83
|
+
/**
|
|
84
|
+
* Why the user cannot sign in yet (for example a runtime that is not installed).
|
|
85
|
+
* While set and signed out: the Sign in button is disabled, this text is shown under
|
|
86
|
+
* the buttons and tied to the button with aria-describedby, and Try again never starts
|
|
87
|
+
* a sign-in. Ignored while signed in. Unset (the default): sign-in is offered as usual.
|
|
88
|
+
*/
|
|
89
|
+
signInUnavailableReason?: ReactNode;
|
|
90
|
+
/** Sign out of the provider account. Rejects on failure. */
|
|
91
|
+
onSignOut: () => Promise<void>;
|
|
92
|
+
/** Re-check the sign-in state; when omitted the refresh control is hidden. */
|
|
93
|
+
onRefreshStatus?: () => Promise<void>;
|
|
94
|
+
/** What the signed-in account can do, one row per capability. */
|
|
95
|
+
capabilities?: {
|
|
96
|
+
/** Capability name. */
|
|
97
|
+
label: string;
|
|
98
|
+
/** The account supports it. */
|
|
99
|
+
available: boolean;
|
|
100
|
+
/** Optional qualifier shown beside the label. */
|
|
101
|
+
note?: string;
|
|
102
|
+
}[];
|
|
103
|
+
/** Models the user may choose from. */
|
|
104
|
+
models?: {
|
|
105
|
+
/** Model id. */
|
|
106
|
+
id: string;
|
|
107
|
+
/** Name shown in the model list. */
|
|
108
|
+
label: string;
|
|
109
|
+
}[];
|
|
110
|
+
/** The chosen model id, or null/undefined when none is chosen. */
|
|
111
|
+
model?: string | null;
|
|
112
|
+
/** Persist a new model choice. Rejects on failure. */
|
|
113
|
+
onModelChange?: (id: string) => Promise<void>;
|
|
114
|
+
/** Extension slots. */
|
|
115
|
+
slots?: {
|
|
116
|
+
/** Content rendered at the bottom of the card. */
|
|
117
|
+
footer?: ReactNode;
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* A settings card for a provider that signs in with the user's own account
|
|
122
|
+
* instead of an API key: enable switch, optional consent, sign-in state,
|
|
123
|
+
* capabilities and model choice.
|
|
124
|
+
*
|
|
125
|
+
* @stability experimental
|
|
126
|
+
*/
|
|
127
|
+
export declare function AccountSignInProviderCard({ provider, enabled, onEnabledChange, consent, status, onSignIn, signInUnavailableReason, onSignOut, onRefreshStatus, capabilities, models, model, onModelChange, slots, }: AccountSignInProviderCardProps): import("react").JSX.Element;
|
|
128
|
+
//# sourceMappingURL=AccountSignInProviderCard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AccountSignInProviderCard.d.ts","sourceRoot":"","sources":["../../../../src/ai/ui/user/AccountSignInProviderCard.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAoB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AA2BzD;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,qDAAqD;IACrD,QAAQ,EAAE,OAAO,CAAC;IAClB,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,mCAAmC;IACnC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC,6DAA6D;IAC7D,QAAQ,EAAE,OAAO,CAAC;IAClB,2EAA2E;IAC3E,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,qCAAqC;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,IAAI,EAAE,SAAS,CAAC;IAChB,6BAA6B;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qDAAqD;IACrD,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAChC;AAED;;;;GAIG;AACH,MAAM,WAAW,8BAA8B;IAC7C,uCAAuC;IACvC,QAAQ,EAAE;QACR,0BAA0B;QAC1B,EAAE,EAAE,MAAM,CAAC;QACX,qCAAqC;QACrC,WAAW,EAAE,MAAM,CAAC;QACpB,0CAA0C;QAC1C,WAAW,CAAC,EAAE,SAAS,CAAC;QACxB,2CAA2C;QAC3C,IAAI,CAAC,EAAE,SAAS,CAAC;KAClB,CAAC;IACF,8CAA8C;IAC9C,OAAO,EAAE,OAAO,CAAC;IACjB,qDAAqD;IACrD,eAAe,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,uDAAuD;IACvD,OAAO,CAAC,EAAE,oBAAoB,CAAC;IAC/B,iCAAiC;IACjC,MAAM,EAAE,mBAAmB,CAAC;IAC5B,kDAAkD;IAClD,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B;;;;;OAKG;IACH,uBAAuB,CAAC,EAAE,SAAS,CAAC;IACpC,4DAA4D;IAC5D,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,8EAA8E;IAC9E,eAAe,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,iEAAiE;IACjE,YAAY,CAAC,EAAE;QACb,uBAAuB;QACvB,KAAK,EAAE,MAAM,CAAC;QACd,+BAA+B;QAC/B,SAAS,EAAE,OAAO,CAAC;QACnB,iDAAiD;QACjD,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,EAAE,CAAC;IACJ,uCAAuC;IACvC,MAAM,CAAC,EAAE;QACP,gBAAgB;QAChB,EAAE,EAAE,MAAM,CAAC;QACX,oCAAoC;QACpC,KAAK,EAAE,MAAM,CAAC;KACf,EAAE,CAAC;IACJ,kEAAkE;IAClE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,sDAAsD;IACtD,aAAa,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,uBAAuB;IACvB,KAAK,CAAC,EAAE;QACN,kDAAkD;QAClD,MAAM,CAAC,EAAE,SAAS,CAAC;KACpB,CAAC;CACH;AAID;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,EACxC,QAAQ,EACR,OAAO,EACP,eAAe,EACf,OAAO,EACP,MAAM,EACN,QAAQ,EACR,uBAAuB,EACvB,SAAS,EACT,eAAe,EACf,YAAY,EACZ,MAAM,EACN,KAAK,EACL,aAAa,EACb,KAAK,GACN,EAAE,8BAA8B,+BAuQhC"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* One provider that signs in with an ACCOUNT instead of an API key — issue #998.
|
|
4
|
+
*
|
|
5
|
+
* A presentational card for hosts whose AI provider is reached through the
|
|
6
|
+
* user's own account (a desktop sign-in, a device flow) rather than a stored
|
|
7
|
+
* key, the counterpart of `UserAiKeyCard`. It makes no network call and reads
|
|
8
|
+
* no hook: the host owns enabling, consent, sign-in, status and the model
|
|
9
|
+
* choice, and passes them as props. Every action prop returns a promise; a
|
|
10
|
+
* rejection is worded with `aiErrorText` and shown inline with a Try again.
|
|
11
|
+
*
|
|
12
|
+
* State machine (accessible names are part of the contract):
|
|
13
|
+
* - disabled: only the title, description and the `Enable {name}` switch.
|
|
14
|
+
* - enabled, consent required and not yet given: a blocking dialog; the
|
|
15
|
+
* sign-in button does not render until the user agrees.
|
|
16
|
+
* - consented, signed out: `Sign in with {name}`; disabled, with the reason
|
|
17
|
+
* shown under it, while `signInUnavailableReason` is set.
|
|
18
|
+
* - signed in: `Signed in as {login}`, model picker, capabilities, `Sign out`.
|
|
19
|
+
*/
|
|
20
|
+
import { useRef, useState } from 'react';
|
|
21
|
+
import { Alert, Box, Button, Card, CardContent, Chip, CircularProgress, Dialog, DialogActions, DialogContent, DialogTitle, FormControl, FormControlLabel, InputLabel, List, ListItem, ListItemText, MenuItem, Select, Stack, Switch, Typography, } from '@mui/material';
|
|
22
|
+
import { aiErrorText } from './aiErrorText.js';
|
|
23
|
+
/**
|
|
24
|
+
* A settings card for a provider that signs in with the user's own account
|
|
25
|
+
* instead of an API key: enable switch, optional consent, sign-in state,
|
|
26
|
+
* capabilities and model choice.
|
|
27
|
+
*
|
|
28
|
+
* @stability experimental
|
|
29
|
+
*/
|
|
30
|
+
export function AccountSignInProviderCard({ provider, enabled, onEnabledChange, consent, status, onSignIn, signInUnavailableReason, onSignOut, onRefreshStatus, capabilities, models, model, onModelChange, slots, }) {
|
|
31
|
+
const [busy, setBusy] = useState(null);
|
|
32
|
+
const [actionError, setActionError] = useState(null);
|
|
33
|
+
// The last action that failed, so Try again can run it again.
|
|
34
|
+
const lastFailed = useRef(null);
|
|
35
|
+
const lastFailedKind = useRef(null);
|
|
36
|
+
const name = provider.displayName;
|
|
37
|
+
const titleId = `account-signin-${provider.id}-title`;
|
|
38
|
+
const consentTitleId = `account-signin-${provider.id}-consent-title`;
|
|
39
|
+
const signInUnavailableId = `account-signin-${provider.id}-signin-unavailable`;
|
|
40
|
+
const consentPending = enabled && !!consent?.required && !consent.acceptedAt;
|
|
41
|
+
const ready = enabled && !consentPending;
|
|
42
|
+
const errorText = actionError ?? status.error ?? null;
|
|
43
|
+
// Sign-in is blocked only while signed out and the host gave a reason.
|
|
44
|
+
const signInBlocked = !status.signedIn && signInUnavailableReason != null && signInUnavailableReason !== false;
|
|
45
|
+
/** Run one action: busy while pending, a worded error and a retry if it rejects. */
|
|
46
|
+
const run = async (kind, action, fallback) => {
|
|
47
|
+
setBusy(kind);
|
|
48
|
+
setActionError(null);
|
|
49
|
+
lastFailed.current = null;
|
|
50
|
+
lastFailedKind.current = null;
|
|
51
|
+
try {
|
|
52
|
+
await action();
|
|
53
|
+
}
|
|
54
|
+
catch (err) {
|
|
55
|
+
setActionError(aiErrorText(err, fallback));
|
|
56
|
+
lastFailed.current = () => run(kind, action, fallback);
|
|
57
|
+
lastFailedKind.current = kind;
|
|
58
|
+
}
|
|
59
|
+
finally {
|
|
60
|
+
setBusy(null);
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
const signIn = () => run('signin', onSignIn, 'Sign-in failed');
|
|
64
|
+
const retry = () => {
|
|
65
|
+
if (onRefreshStatus) {
|
|
66
|
+
void run('refresh', onRefreshStatus, 'Could not check status');
|
|
67
|
+
}
|
|
68
|
+
else if (lastFailed.current) {
|
|
69
|
+
// A failed sign-in is not retried while sign-in is unavailable.
|
|
70
|
+
if (!(signInBlocked && lastFailedKind.current === 'signin'))
|
|
71
|
+
void lastFailed.current();
|
|
72
|
+
}
|
|
73
|
+
else if (!status.signedIn && !signInBlocked) {
|
|
74
|
+
void signIn();
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
return (_jsxs(Card, { component: "section", "aria-label": `${name} sign-in`, children: [_jsx(CardContent, { children: _jsxs(Stack, { spacing: 2, children: [_jsxs(Stack, { direction: "row", spacing: 2, sx: { alignItems: 'flex-start', justifyContent: 'space-between' }, children: [_jsxs(Stack, { direction: "row", spacing: 1.5, sx: { alignItems: 'flex-start', minWidth: 0 }, children: [provider.icon ? _jsx(Box, { sx: { display: 'flex', pt: 0.5 }, children: provider.icon }) : null, _jsxs(Box, { sx: { minWidth: 0 }, children: [_jsx(Typography, { id: titleId, variant: "h6", component: "h2", gutterBottom: true, children: name }), provider.description ? (_jsx(Typography, { variant: "body2", color: "text.secondary", component: "div", children: provider.description })) : null] })] }), _jsx(FormControlLabel, { sx: { mr: 0, flexShrink: 0 }, label: "", control: _jsx(Switch, { checked: enabled, disabled: busy === 'enable', onChange: (e) => {
|
|
78
|
+
const next = e.target.checked;
|
|
79
|
+
void run('enable', () => onEnabledChange(next), `Could not update ${name}`);
|
|
80
|
+
}, slotProps: { input: { 'aria-label': `Enable ${name}` } } }) })] }), ready ? (_jsxs(_Fragment, { children: [errorText ? (_jsx(Alert, { severity: "error", action: _jsx(Button, { color: "inherit", size: "small", onClick: retry, disabled: busy !== null, children: "Try again" }), children: errorText })) : null, status.checking ? (_jsxs(Stack, { direction: "row", spacing: 1, sx: { alignItems: 'center' }, children: [_jsx(CircularProgress, { size: 16, "aria-hidden": "true" }), _jsx(Typography, { variant: "body2", color: "text.secondary", children: "Checking status\u2026" })] })) : null, status.signedIn ? (_jsxs(_Fragment, { children: [_jsx(Box, { children: _jsx(Chip, { color: "success", size: "small", label: status.login ? `Signed in as ${status.login}` : 'Signed in' }) }), models && models.length > 0 ? (_jsxs(FormControl, { size: "small", fullWidth: true, sx: { maxWidth: 360 }, children: [_jsx(InputLabel, { id: `account-signin-${provider.id}-model-label`, children: "Model" }), _jsx(Select, { labelId: `account-signin-${provider.id}-model-label`, label: "Model", value: model ?? '', disabled: busy === 'model', onChange: (e) => {
|
|
81
|
+
const id = String(e.target.value);
|
|
82
|
+
if (onModelChange) {
|
|
83
|
+
void run('model', () => onModelChange(id), 'Could not change the model');
|
|
84
|
+
}
|
|
85
|
+
}, children: models.map((m) => (_jsx(MenuItem, { value: m.id, children: m.label }, m.id))) })] })) : null, capabilities && capabilities.length > 0 ? (_jsx(List, { dense: true, disablePadding: true, "aria-label": `${name} capabilities`, children: capabilities.map((c) => (_jsx(ListItem, { disableGutters: true, secondaryAction: _jsx(Chip, { size: "small", variant: "outlined", color: c.available ? 'success' : 'default', label: c.available ? 'Available' : 'Not available' }), children: _jsx(ListItemText, { primary: c.label, secondary: c.note }) }, c.label))) })) : null, _jsxs(Stack, { direction: "row", spacing: 1, useFlexGap: true, sx: { flexWrap: 'wrap' }, children: [_jsx(Button, { variant: "outlined", disabled: busy !== null, startIcon: busy === 'signout' ? _jsx(CircularProgress, { size: 16 }) : undefined, onClick: () => void run('signout', onSignOut, 'Sign-out failed'), children: busy === 'signout' ? 'Signing out…' : 'Sign out' }), onRefreshStatus ? (_jsx(Button, { disabled: busy !== null || !!status.checking, onClick: () => void run('refresh', onRefreshStatus, 'Could not check status'), children: "Check status" })) : null, consent?.onRevoke ? (_jsx(Button, { disabled: busy !== null, onClick: () => void run('revoke', consent.onRevoke, 'Could not withdraw consent'), children: "Withdraw consent" })) : null] })] })) : (_jsxs(_Fragment, { children: [_jsxs(Stack, { direction: "row", spacing: 1, useFlexGap: true, sx: { flexWrap: 'wrap' }, children: [_jsx(Button, { variant: "contained", disabled: busy !== null || signInBlocked, "aria-describedby": signInBlocked ? signInUnavailableId : undefined, startIcon: busy === 'signin' ? _jsx(CircularProgress, { size: 16, color: "inherit" }) : undefined, onClick: () => void signIn(), children: busy === 'signin' ? 'Signing in…' : `Sign in with ${name}` }), onRefreshStatus ? (_jsx(Button, { disabled: busy !== null || !!status.checking, onClick: () => void run('refresh', onRefreshStatus, 'Could not check status'), children: "Check status" })) : null, consent?.onRevoke && consent.required && consent.acceptedAt ? (_jsx(Button, { disabled: busy !== null, onClick: () => void run('revoke', consent.onRevoke, 'Could not withdraw consent'), children: "Withdraw consent" })) : null] }), signInBlocked ? (_jsx(Typography, { id: signInUnavailableId, variant: "body2", color: "text.secondary", component: "div", children: signInUnavailableReason })) : null] })), slots?.footer ? _jsx(Box, { children: slots.footer }) : null] })) : null] }) }), consentPending && consent ? (_jsxs(Dialog, { open: true, "aria-labelledby": consentTitleId, maxWidth: "sm", fullWidth: true, children: [_jsx(DialogTitle, { id: consentTitleId, children: consent.title }), _jsxs(DialogContent, { children: [_jsx(Typography, { variant: "body2", component: "div", children: consent.body }), errorText ? (_jsx(Alert, { severity: "error", sx: { mt: 2 }, children: errorText })) : null] }), _jsxs(DialogActions, { children: [_jsx(Button, { disabled: busy !== null, onClick: () => void run('enable', () => onEnabledChange(false), `Could not update ${name}`), children: "Not now" }), _jsx(Button, { variant: "contained", disabled: busy !== null, onClick: () => void run('accept', consent.onAccept, 'Could not record consent'), children: consent.acceptLabel ?? 'I agree' })] })] })) : null] }));
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=AccountSignInProviderCard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AccountSignInProviderCard.js","sourceRoot":"","sources":["../../../../src/ai/ui/user/AccountSignInProviderCard.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,26 @@
|
|
|
1
1
|
import type { UsableAiModel } from '../../headless/types.js';
|
|
2
2
|
import type { AiDefaultModel } from '../../headless/types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Props of {@link DefaultAiModelPicker}.
|
|
5
|
+
*
|
|
6
|
+
* @stability stable
|
|
7
|
+
*/
|
|
3
8
|
export interface DefaultAiModelPickerProps {
|
|
9
|
+
/** The models the user can currently use. */
|
|
4
10
|
models: UsableAiModel[];
|
|
5
11
|
/** The saved default, or null/undefined when none has been chosen. */
|
|
6
12
|
value: AiDefaultModel | null | undefined;
|
|
7
13
|
/** Persist a new default (null clears it). Rejects on failure. */
|
|
8
14
|
onChange: (next: AiDefaultModel | null) => Promise<void>;
|
|
15
|
+
/** Disable the control (for example while AI is off). */
|
|
9
16
|
disabled?: boolean;
|
|
17
|
+
/** Display name per provider id, used to group and label models. */
|
|
10
18
|
providerNames: Record<string, string>;
|
|
11
19
|
}
|
|
20
|
+
/**
|
|
21
|
+
* A select that lets the user pick, or clear, their default AI model.
|
|
22
|
+
*
|
|
23
|
+
* @stability stable
|
|
24
|
+
*/
|
|
12
25
|
export declare function DefaultAiModelPicker({ models, value, onChange, disabled, providerNames, }: DefaultAiModelPickerProps): import("react").JSX.Element;
|
|
13
26
|
//# sourceMappingURL=DefaultAiModelPicker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultAiModelPicker.d.ts","sourceRoot":"","sources":["../../../../src/ai/ui/user/DefaultAiModelPicker.tsx"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,sEAAsE;IACtE,KAAK,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,CAAC;IACzC,kEAAkE;IAClE,QAAQ,EAAE,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvC;AAOD,wBAAgB,oBAAoB,CAAC,EACnC,MAAM,EACN,KAAK,EACL,QAAQ,EACR,QAAgB,EAChB,aAAa,GACd,EAAE,yBAAyB,+BAsF3B"}
|
|
1
|
+
{"version":3,"file":"DefaultAiModelPicker.d.ts","sourceRoot":"","sources":["../../../../src/ai/ui/user/DefaultAiModelPicker.tsx"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D;;;;GAIG;AACH,MAAM,WAAW,yBAAyB;IACxC,6CAA6C;IAC7C,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,sEAAsE;IACtE,KAAK,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,CAAC;IACzC,kEAAkE;IAClE,QAAQ,EAAE,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD,yDAAyD;IACzD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oEAAoE;IACpE,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvC;AAOD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,EACnC,MAAM,EACN,KAAK,EACL,QAAQ,EACR,QAAgB,EAChB,aAAa,GACd,EAAE,yBAAyB,+BAsF3B"}
|
|
@@ -17,6 +17,11 @@ import { Alert, Card, CardContent, FormControl, FormHelperText, InputLabel, Menu
|
|
|
17
17
|
const NONE = '';
|
|
18
18
|
const SEP = '\u0000';
|
|
19
19
|
const toValue = (model) => `${model.provider}${SEP}${model.modelId}`;
|
|
20
|
+
/**
|
|
21
|
+
* A select that lets the user pick, or clear, their default AI model.
|
|
22
|
+
*
|
|
23
|
+
* @stability stable
|
|
24
|
+
*/
|
|
20
25
|
export function DefaultAiModelPicker({ models, value, onChange, disabled = false, providerNames, }) {
|
|
21
26
|
const [saving, setSaving] = useState(false);
|
|
22
27
|
const [error, setError] = useState(null);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultAiModelPicker.js","sourceRoot":"","sources":["../../../../src/ai/ui/user/DefaultAiModelPicker.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EACL,KAAK,EACL,IAAI,EACJ,WAAW,EACX,WAAW,EACX,cAAc,EACd,UAAU,EACV,QAAQ,EACR,MAAM,EACN,UAAU,GACX,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"DefaultAiModelPicker.js","sourceRoot":"","sources":["../../../../src/ai/ui/user/DefaultAiModelPicker.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,27 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* What every surface says about a keyless provider.
|
|
3
|
+
*
|
|
4
|
+
* @stability stable
|
|
5
|
+
*/
|
|
2
6
|
export declare const KEYLESS_PROVIDER_TEXT = "No key needed \u2014 this server is keyless";
|
|
7
|
+
/**
|
|
8
|
+
* Props of {@link KeylessProviderCard}.
|
|
9
|
+
*
|
|
10
|
+
* @stability stable
|
|
11
|
+
*/
|
|
3
12
|
export interface KeylessProviderCardProps {
|
|
13
|
+
/** The keyless provider the card describes. */
|
|
4
14
|
provider: {
|
|
15
|
+
/** Stable provider id. */
|
|
5
16
|
id: string;
|
|
17
|
+
/** Name shown in the card. */
|
|
6
18
|
displayName: string;
|
|
7
19
|
};
|
|
8
20
|
}
|
|
21
|
+
/**
|
|
22
|
+
* A read-only card for a provider that needs no key, in place of the key form.
|
|
23
|
+
*
|
|
24
|
+
* @stability stable
|
|
25
|
+
*/
|
|
9
26
|
export declare function KeylessProviderCard({ provider }: KeylessProviderCardProps): import("react").JSX.Element;
|
|
10
27
|
//# sourceMappingURL=KeylessProviderCard.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KeylessProviderCard.d.ts","sourceRoot":"","sources":["../../../../src/ai/ui/user/KeylessProviderCard.tsx"],"names":[],"mappings":"AAWA
|
|
1
|
+
{"version":3,"file":"KeylessProviderCard.d.ts","sourceRoot":"","sources":["../../../../src/ai/ui/user/KeylessProviderCard.tsx"],"names":[],"mappings":"AAWA;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,gDAA2C,CAAC;AAE9E;;;;GAIG;AACH,MAAM,WAAW,wBAAwB;IACvC,+CAA+C;IAC/C,QAAQ,EAAE;QACR,0BAA0B;QAC1B,EAAE,EAAE,MAAM,CAAC;QACX,8BAA8B;QAC9B,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,QAAQ,EAAE,EAAE,wBAAwB,+BAmBzE"}
|
|
@@ -9,8 +9,17 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
9
9
|
* this card says so instead of offering the key field `UserAiKeyCard` does.
|
|
10
10
|
*/
|
|
11
11
|
import { Box, Card, CardContent, Chip, Stack, Typography } from '@mui/material';
|
|
12
|
-
/**
|
|
12
|
+
/**
|
|
13
|
+
* What every surface says about a keyless provider.
|
|
14
|
+
*
|
|
15
|
+
* @stability stable
|
|
16
|
+
*/
|
|
13
17
|
export const KEYLESS_PROVIDER_TEXT = 'No key needed — this server is keyless';
|
|
18
|
+
/**
|
|
19
|
+
* A read-only card for a provider that needs no key, in place of the key form.
|
|
20
|
+
*
|
|
21
|
+
* @stability stable
|
|
22
|
+
*/
|
|
14
23
|
export function KeylessProviderCard({ provider }) {
|
|
15
24
|
return (_jsx(Card, { component: "section", "aria-label": `${provider.displayName} key`, children: _jsx(CardContent, { children: _jsxs(Stack, { spacing: 1, children: [_jsxs(Box, { children: [_jsx(Typography, { variant: "h6", component: "h2", gutterBottom: true, children: provider.displayName }), _jsx(Chip, { size: "small", label: "No key needed" })] }), _jsxs(Typography, { variant: "body2", color: "text.secondary", children: [KEYLESS_PROVIDER_TEXT, ". Your administrator runs it without an API key, so you can use its enabled models without adding one of your own."] })] }) }) }));
|
|
16
25
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KeylessProviderCard.js","sourceRoot":"","sources":["../../../../src/ai/ui/user/KeylessProviderCard.tsx"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhF
|
|
1
|
+
{"version":3,"file":"KeylessProviderCard.js","sourceRoot":"","sources":["../../../../src/ai/ui/user/KeylessProviderCard.tsx"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhF;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,wCAAwC,CAAC;AAiB9E;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,EAAE,QAAQ,EAA4B;IACxE,OAAO,CACL,KAAC,IAAI,IAAC,SAAS,EAAC,SAAS,gBAAa,GAAG,QAAQ,CAAC,WAAW,MAAM,YACjE,KAAC,WAAW,cACV,MAAC,KAAK,IAAC,OAAO,EAAE,CAAC,aACf,MAAC,GAAG,eACF,KAAC,UAAU,IAAC,OAAO,EAAC,IAAI,EAAC,SAAS,EAAC,IAAI,EAAC,YAAY,kBACjD,QAAQ,CAAC,WAAW,GACV,EACb,KAAC,IAAI,IAAC,IAAI,EAAC,OAAO,EAAC,KAAK,EAAC,eAAe,GAAG,IACvC,EACN,MAAC,UAAU,IAAC,OAAO,EAAC,OAAO,EAAC,KAAK,EAAC,gBAAgB,aAC/C,qBAAqB,0HAEX,IACP,GACI,GACT,CACR,CAAC;AACJ,CAAC"}
|
|
@@ -1,10 +1,24 @@
|
|
|
1
1
|
import type { AiProbeResult, UserAiKey } from '../../headless/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* The provider a {@link UserAiKeyCard} manages a key for.
|
|
4
|
+
*
|
|
5
|
+
* @stability stable
|
|
6
|
+
*/
|
|
2
7
|
export interface UserAiKeyCardProvider {
|
|
8
|
+
/** Stable provider id. */
|
|
3
9
|
id: string;
|
|
10
|
+
/** Name shown in the card header. */
|
|
4
11
|
displayName: string;
|
|
12
|
+
/** The organisation holds a key for this provider. */
|
|
5
13
|
hasOrgKey: boolean;
|
|
6
14
|
}
|
|
15
|
+
/**
|
|
16
|
+
* Props of {@link UserAiKeyCard}.
|
|
17
|
+
*
|
|
18
|
+
* @stability stable
|
|
19
|
+
*/
|
|
7
20
|
export interface UserAiKeyCardProps {
|
|
21
|
+
/** The provider the card manages. */
|
|
8
22
|
provider: UserAiKeyCardProvider;
|
|
9
23
|
/** The masked view for this provider; absent until the list has loaded. */
|
|
10
24
|
keyView?: UserAiKey;
|
|
@@ -14,11 +28,19 @@ export interface UserAiKeyCardProps {
|
|
|
14
28
|
* an AI administrator (`ai_config:write`, #593).
|
|
15
29
|
*/
|
|
16
30
|
orgFallback: boolean;
|
|
31
|
+
/** Store the user's key for a provider and return its masked view. Rejects on failure. */
|
|
17
32
|
onSave: (provider: string, apiKey: string) => Promise<UserAiKey>;
|
|
33
|
+
/** Probe a key (the typed one, or the stored one when omitted). */
|
|
18
34
|
onTest: (provider: string, apiKey?: string) => Promise<AiProbeResult>;
|
|
35
|
+
/** Delete the user's stored key. Rejects on failure. */
|
|
19
36
|
onRemove: (provider: string) => Promise<void>;
|
|
20
37
|
/** Called after anything that can change which models are usable. */
|
|
21
38
|
onChanged?: () => void;
|
|
22
39
|
}
|
|
40
|
+
/**
|
|
41
|
+
* A settings card where a user saves, tests and removes their own key for one AI provider.
|
|
42
|
+
*
|
|
43
|
+
* @stability stable
|
|
44
|
+
*/
|
|
23
45
|
export declare function UserAiKeyCard({ provider, keyView, orgFallback, onSave, onTest, onRemove, onChanged, }: UserAiKeyCardProps): import("react").JSX.Element;
|
|
24
46
|
//# sourceMappingURL=UserAiKeyCard.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserAiKeyCard.d.ts","sourceRoot":"","sources":["../../../../src/ai/ui/user/UserAiKeyCard.tsx"],"names":[],"mappings":"AAuCA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAGxE,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,qBAAqB,CAAC;IAChC,2EAA2E;IAC3E,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB;;;;OAIG;IACH,WAAW,EAAE,OAAO,CAAC;IACrB,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;IACjE,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;IACtE,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;CACxB;AAgED,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,OAAO,EACP,WAAW,EACX,MAAM,EACN,MAAM,EACN,QAAQ,EACR,SAAS,GACV,EAAE,kBAAkB,+BAgMpB"}
|
|
1
|
+
{"version":3,"file":"UserAiKeyCard.d.ts","sourceRoot":"","sources":["../../../../src/ai/ui/user/UserAiKeyCard.tsx"],"names":[],"mappings":"AAuCA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAGxE;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC,0BAA0B;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,qCAAqC;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,sDAAsD;IACtD,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,qCAAqC;IACrC,QAAQ,EAAE,qBAAqB,CAAC;IAChC,2EAA2E;IAC3E,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB;;;;OAIG;IACH,WAAW,EAAE,OAAO,CAAC;IACrB,0FAA0F;IAC1F,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;IACjE,mEAAmE;IACnE,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;IACtE,wDAAwD;IACxD,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;CACxB;AAgED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,OAAO,EACP,WAAW,EACX,MAAM,EACN,MAAM,EACN,QAAQ,EACR,SAAS,GACV,EAAE,kBAAkB,+BAgMpB"}
|
|
@@ -42,6 +42,11 @@ function ProbeResult({ result }) {
|
|
|
42
42
|
? ` — ${check.detail}`
|
|
43
43
|
: ''] }, check.id))) })] }));
|
|
44
44
|
}
|
|
45
|
+
/**
|
|
46
|
+
* A settings card where a user saves, tests and removes their own key for one AI provider.
|
|
47
|
+
*
|
|
48
|
+
* @stability stable
|
|
49
|
+
*/
|
|
45
50
|
export function UserAiKeyCard({ provider, keyView, orgFallback, onSave, onTest, onRemove, onChanged, }) {
|
|
46
51
|
const [apiKey, setApiKey] = useState('');
|
|
47
52
|
const [busy, setBusy] = useState(null);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserAiKeyCard.js","sourceRoot":"","sources":["../../../../src/ai/ui/user/UserAiKeyCard.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EACL,KAAK,EACL,UAAU,EACV,GAAG,EACH,MAAM,EACN,IAAI,EACJ,WAAW,EACX,IAAI,EACJ,gBAAgB,EAChB,MAAM,EACN,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,WAAW,EACX,KAAK,EACL,SAAS,EACT,UAAU,GACX,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"UserAiKeyCard.js","sourceRoot":"","sources":["../../../../src/ai/ui/user/UserAiKeyCard.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,13 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* A friendly sentence for an AI error code; unknown codes get a generic one.
|
|
3
|
+
*
|
|
4
|
+
* @stability stable
|
|
5
|
+
*/
|
|
2
6
|
export declare function aiCodeText(code: string | null | undefined): string;
|
|
3
|
-
/**
|
|
7
|
+
/**
|
|
8
|
+
* A friendly sentence for a thrown error from an AI call.
|
|
9
|
+
*
|
|
10
|
+
* @stability stable
|
|
11
|
+
*/
|
|
4
12
|
export declare function aiErrorText(err: unknown, fallback: string): string;
|
|
5
13
|
//# sourceMappingURL=aiErrorText.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aiErrorText.d.ts","sourceRoot":"","sources":["../../../../src/ai/ui/user/aiErrorText.ts"],"names":[],"mappings":"AAmBA
|
|
1
|
+
{"version":3,"file":"aiErrorText.d.ts","sourceRoot":"","sources":["../../../../src/ai/ui/user/aiErrorText.ts"],"names":[],"mappings":"AAmBA;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAGlE;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAKlE"}
|
|
@@ -15,13 +15,21 @@ const FRIENDLY = {
|
|
|
15
15
|
AI_PROVIDER_UNAVAILABLE: 'The provider could not be reached. Try again later',
|
|
16
16
|
AI_RATE_LIMITED: 'The provider is rate limiting requests. Try again shortly',
|
|
17
17
|
};
|
|
18
|
-
/**
|
|
18
|
+
/**
|
|
19
|
+
* A friendly sentence for an AI error code; unknown codes get a generic one.
|
|
20
|
+
*
|
|
21
|
+
* @stability stable
|
|
22
|
+
*/
|
|
19
23
|
export function aiCodeText(code) {
|
|
20
24
|
if (!code)
|
|
21
25
|
return 'Something went wrong';
|
|
22
26
|
return FRIENDLY[code] ?? `The provider reported an error (${code})`;
|
|
23
27
|
}
|
|
24
|
-
/**
|
|
28
|
+
/**
|
|
29
|
+
* A friendly sentence for a thrown error from an AI call.
|
|
30
|
+
*
|
|
31
|
+
* @stability stable
|
|
32
|
+
*/
|
|
25
33
|
export function aiErrorText(err, fallback) {
|
|
26
34
|
const reason = toAiErrorInfo(err).code;
|
|
27
35
|
if (reason && FRIENDLY[reason])
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aiErrorText.js","sourceRoot":"","sources":["../../../../src/ai/ui/user/aiErrorText.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD,MAAM,QAAQ,GAA2B;IACvC,cAAc,EAAE,gCAAgC;IAChD,eAAe,EAAE,qCAAqC;IACtD,WAAW,EAAE,gDAAgD;IAC7D,oBAAoB,EAAE,+CAA+C;IACrE,uBAAuB,EAAE,oDAAoD;IAC7E,eAAe,EAAE,2DAA2D;CAC7E,CAAC;AAEF
|
|
1
|
+
{"version":3,"file":"aiErrorText.js","sourceRoot":"","sources":["../../../../src/ai/ui/user/aiErrorText.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD,MAAM,QAAQ,GAA2B;IACvC,cAAc,EAAE,gCAAgC;IAChD,eAAe,EAAE,qCAAqC;IACtD,WAAW,EAAE,gDAAgD;IAC7D,oBAAoB,EAAE,+CAA+C;IACrE,uBAAuB,EAAE,oDAAoD;IAC7E,eAAe,EAAE,2DAA2D;CAC7E,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,IAA+B;IACxD,IAAI,CAAC,IAAI;QAAE,OAAO,sBAAsB,CAAC;IACzC,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,mCAAmC,IAAI,GAAG,CAAC;AACtE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,GAAY,EAAE,QAAgB;IACxD,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;IACvC,IAAI,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;IACxD,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO;QAAE,OAAO,GAAG,CAAC,OAAO,CAAC;IAC5D,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|