@openviking/react 0.1.4 → 0.1.6

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 (139) hide show
  1. package/README.md +15 -11
  2. package/dist/28~0.js +15 -0
  3. package/dist/2~0.js +6 -3
  4. package/dist/37~0.js +27 -0
  5. package/dist/3c~0.js +17 -9
  6. package/dist/3~0.js +4 -2
  7. package/dist/ae~0.js +6 -2
  8. package/dist/a~0.js +79 -72
  9. package/dist/ck~0.js +4 -0
  10. package/dist/client/paths.d.ts +4 -0
  11. package/dist/client/provider.d.ts +10 -6
  12. package/dist/components/agent-connect/agent-connect-code-block.d.ts +14 -0
  13. package/dist/components/agent-connect/agent-connect-copy.d.ts +3 -0
  14. package/dist/components/agent-connect/agent-connect-design.d.ts +1 -1
  15. package/dist/components/agent-connect/agent-connect-installer.d.ts +1 -0
  16. package/dist/components/agent-connect/agent-connect-instructions-view.d.ts +4 -6
  17. package/dist/components/agent-connect/agent-connect-instructions.d.ts +13 -0
  18. package/dist/components/agent-connect/agent-connect-markdown.d.ts +8 -2
  19. package/dist/components/agent-connect/agent-connect-mask.d.ts +10 -0
  20. package/dist/components/agent-connect/agent-connect.d.ts +1 -1
  21. package/dist/components/agent-connect/locales/en-US.d.ts +3 -0
  22. package/dist/components/agent-connect/style.css +163 -5
  23. package/dist/components/agent-connect/types.d.ts +5 -3
  24. package/dist/components/agent-connect/use-agent-connect-copy.d.ts +6 -0
  25. package/dist/components/directory-tour/style.css +46 -2
  26. package/dist/components/directory-tour/types.d.ts +2 -1
  27. package/dist/components/experience-dashboard/dashboard-tabs.d.ts +11 -0
  28. package/dist/components/experience-dashboard/experience-dashboard.d.ts +2 -0
  29. package/dist/components/experience-dashboard/experience-impact.d.ts +11 -0
  30. package/dist/components/experience-dashboard/experience-list.d.ts +9 -0
  31. package/dist/components/experience-dashboard/experience-pagination.d.ts +8 -0
  32. package/dist/components/experience-dashboard/experience-tests.d.ts +6 -0
  33. package/dist/components/experience-dashboard/experience-trajectories.d.ts +6 -0
  34. package/dist/components/experience-dashboard/index.d.ts +2 -0
  35. package/dist/components/experience-dashboard/labels.d.ts +2 -0
  36. package/dist/components/experience-dashboard/style.css +699 -0
  37. package/dist/components/experience-dashboard/style.js +0 -0
  38. package/dist/components/experience-dashboard/types.d.ts +106 -0
  39. package/dist/components/experience-dashboard.js +1 -0
  40. package/dist/components/file-browser-entries/file-browser-entries.d.ts +1 -1
  41. package/dist/components/file-browser-entries/style.css +259 -13
  42. package/dist/components/file-browser-entries/types.d.ts +2 -2
  43. package/dist/components/file-preview/style.css +48 -4
  44. package/dist/components/file-preview/types.d.ts +2 -2
  45. package/dist/components/file-tree/style.css +63 -4
  46. package/dist/components/file-tree/types.d.ts +2 -2
  47. package/dist/components/scope-switcher/scope-switcher.d.ts +2 -2
  48. package/dist/components/scope-switcher/style.css +48 -4
  49. package/dist/components/scope-switcher/types.d.ts +5 -5
  50. package/dist/components/scope-switcher.js +1 -1
  51. package/dist/components/style.css +2451 -139
  52. package/dist/components/tui/style.css +122 -36
  53. package/dist/components/tui/tui.d.ts +1 -1
  54. package/dist/components/tui/types.d.ts +2 -2
  55. package/dist/components/viking-bot/ark-message-list-view.d.ts +4 -1
  56. package/dist/components/viking-bot/interaction/types.d.ts +2 -2
  57. package/dist/components/viking-bot/interaction/viking-bot-interaction.d.ts +1 -1
  58. package/dist/components/viking-bot/session-actions.d.ts +2 -2
  59. package/dist/components/viking-bot/style.css +159 -12
  60. package/dist/components/viking-bot/types.d.ts +7 -7
  61. package/dist/components/viking-bot/viking-bot.d.ts +1 -1
  62. package/dist/components/wiki-dashboard/index.d.ts +2 -0
  63. package/dist/components/wiki-dashboard/labels.d.ts +2 -0
  64. package/dist/components/wiki-dashboard/style.css +741 -0
  65. package/dist/components/wiki-dashboard/style.js +0 -0
  66. package/dist/components/wiki-dashboard/types.d.ts +92 -0
  67. package/dist/components/wiki-dashboard/wiki-action-button.d.ts +9 -0
  68. package/dist/components/wiki-dashboard/wiki-conflict-card.d.ts +15 -0
  69. package/dist/components/wiki-dashboard/wiki-dashboard.d.ts +2 -0
  70. package/dist/components/wiki-dashboard/wiki-file-icon.d.ts +3 -0
  71. package/dist/components/wiki-dashboard/wiki-severity-filter.d.ts +8 -0
  72. package/dist/components/wiki-dashboard.js +1 -0
  73. package/dist/c~0.js +169 -155
  74. package/dist/e~0.js +3 -1
  75. package/dist/fi~0.js +354 -0
  76. package/dist/fj~0.js +503 -0
  77. package/dist/f~0.js +661 -309
  78. package/dist/icons/index.d.ts +28 -0
  79. package/dist/icons.js +1 -1
  80. package/dist/index.d.ts +4 -0
  81. package/dist/index.js +3 -1
  82. package/dist/k~0.js +277 -1
  83. package/dist/lk~0.js +55 -13
  84. package/dist/l~0.js +1096 -187
  85. package/dist/modules/console/console.d.ts +1 -1
  86. package/dist/modules/console/index.d.ts +1 -2
  87. package/dist/modules/console/style.css +377 -56
  88. package/dist/modules/console/types.d.ts +2 -2
  89. package/dist/modules/console/use-console.d.ts +1 -1
  90. package/dist/modules/console.js +1 -1
  91. package/dist/modules/file-browser/dashboard-data.d.ts +9 -0
  92. package/dist/modules/file-browser/dashboard-indicator.d.ts +8 -0
  93. package/dist/modules/file-browser/dashboard-labels.d.ts +9 -0
  94. package/dist/modules/file-browser/dashboard-model.d.ts +14 -0
  95. package/dist/modules/file-browser/dashboard-resource.d.ts +12 -0
  96. package/dist/modules/file-browser/experience-dashboard-pane.d.ts +8 -0
  97. package/dist/modules/file-browser/experience-data.d.ts +31 -0
  98. package/dist/modules/file-browser/file-browser-labels.d.ts +1 -1
  99. package/dist/modules/file-browser/file-browser-tree-pane.d.ts +3 -2
  100. package/dist/modules/file-browser/file-browser.d.ts +1 -1
  101. package/dist/modules/file-browser/fs-directories.d.ts +8 -0
  102. package/dist/modules/file-browser/fs-lines.d.ts +36 -0
  103. package/dist/modules/file-browser/fs-memory-fields.d.ts +65 -0
  104. package/dist/modules/file-browser/fs-model.d.ts +12 -2
  105. package/dist/modules/file-browser/fs-read-file.d.ts +14 -0
  106. package/dist/modules/file-browser/fs-selection.d.ts +4 -0
  107. package/dist/modules/file-browser/index.d.ts +2 -2
  108. package/dist/modules/file-browser/style.css +1883 -25
  109. package/dist/modules/file-browser/types.d.ts +64 -2
  110. package/dist/modules/file-browser/use-browser-dashboards.d.ts +31 -0
  111. package/dist/modules/file-browser/use-dashboard-query.d.ts +9 -0
  112. package/dist/modules/file-browser/use-experience-dashboard.d.ts +27 -0
  113. package/dist/modules/file-browser/use-file-browser.d.ts +2 -45
  114. package/dist/modules/file-browser/use-fs-tree.d.ts +2 -0
  115. package/dist/modules/file-browser/use-wiki-dashboard.d.ts +17 -0
  116. package/dist/modules/file-browser/wiki-conflicts.d.ts +12 -0
  117. package/dist/modules/file-browser/wiki-dashboard-pane.d.ts +14 -0
  118. package/dist/modules/file-browser.js +1 -1
  119. package/dist/modules/scope-cascade/controller.d.ts +2 -2
  120. package/dist/modules/scope-cascade/index.d.ts +1 -2
  121. package/dist/modules/scope-cascade/scope-cascade.d.ts +2 -2
  122. package/dist/modules/scope-cascade/style.css +48 -4
  123. package/dist/modules/scope-cascade/types.d.ts +9 -4
  124. package/dist/modules/scope-cascade/use-scope-cascade.d.ts +2 -2
  125. package/dist/modules/scope-cascade.js +1 -1
  126. package/dist/modules/style.css +2459 -192
  127. package/dist/n~0.js +16 -130
  128. package/dist/rt~0.js +152 -0
  129. package/dist/r~0.js +17 -38
  130. package/dist/shared/components/popover/popover.d.ts +1 -1
  131. package/dist/shared/components/popover/types.d.ts +7 -1
  132. package/dist/shared/dashboard/dashboard-state.d.ts +12 -0
  133. package/dist/shared/locale-context.d.ts +8 -0
  134. package/dist/static/image/dashboard-background.png +0 -0
  135. package/dist/style.css +9445 -4822
  136. package/dist/u~0.js +324 -96
  137. package/dist/viking-bot-composer~0.js +4 -2
  138. package/dist/viking-bot-interaction~0.js +3 -1
  139. package/package.json +14 -2
package/README.md CHANGED
@@ -2,9 +2,9 @@
2
2
 
3
3
  English / [中文](README_CN.md)
4
4
 
5
- All public UI components and composed modules require an explicit `locale: 'zh-CN' | 'en-US'` for built-in Chinese or English copy. Existing `labels` override individual fields; omitted fields follow the current locale and update when it changes. Hosts still provide business content, slots and callback messages.
5
+ Public UI components, composed modules accept optional `locale: 'zh-CN' | 'en-US'`. Props override the nearest module or Provider; without a configured language, they use `en-US`. Existing `labels` override individual fields; omitted fields follow the current locale and update when it changes. Hosts still provide business content, slots and callback messages.
6
6
 
7
- React foundations for OpenViking AI application interfaces: build tooling, documentation, layered directories, and scoped styles. FileTree, Tui and FilePreview provide working views, alongside five file-type icons. FileBrowser supports early layout integration; Console provides a native command panel; ScopeCascade provides a working cascade Hook and composition.
7
+ React foundations for OpenViking AI application interfaces: build tooling, documentation, layered directories, and scoped styles. FileTree, Tui and FilePreview provide working views, alongside five file-type icons. FileBrowser coordinates browsing, previews and dashboards; Console provides a native command panel; ScopeCascade provides an integrated cascade selector.
8
8
 
9
9
  This package inherits the repository's AGPL-3.0-only license. The release workflow publishes it to npm when a `react@<version>` tag matches the version in this package's manifest.
10
10
 
@@ -19,15 +19,15 @@ This package inherits the repository's AGPL-3.0-only license. The release workfl
19
19
  | [components/scope-switcher](./src/components/scope-switcher/README.md) | `@openviking/react/components/scope-switcher` | Stateless scope layout and independent ScopeSelector options, panels and search |
20
20
  | [components/agent-connect](./src/components/agent-connect/README.md) | `@openviking/react/components/agent-connect` | Fixed Figma connection view with original icons, built-in copy and clipboard feedback |
21
21
  | [components/viking-bot](./src/components/viking-bot/README.md) | `@openviking/react/components/viking-bot` | Controlled conversation views, session controls, Markdown replies and composer |
22
- | [modules](./src/modules/README.md) | `@openviking/react/modules/<module>` | Console panel and ScopeCascade Hooks and composition, plus one placeholder |
22
+ | [modules](./src/modules/README.md) | `@openviking/react/modules/<module>` | Console panel and ScopeCascade Hooks and composition, plus FileBrowser and independent dashboards |
23
23
  | [client](./src/client/index.ts) | `@openviking/react/client` | Framework-neutral request client: `createOvClient`, `OvClient`, `OvClientError` |
24
24
  | [hooks](./src/hooks/README.md), [utils](./src/utils/README.md) | Internal only | Cross-module Hooks and pure utilities |
25
25
 
26
- Components implement their reviewed contracts incrementally. FileTree renders every documented row type with keyboard interaction; FilePreview implements the tab shell, header actions and the plain-text preview and editing foundation, with its body not yet wired to FileViewer. ScopeSwitcher is a stateless layout container; independently rendered ScopeSelector children own visibility, with host-owned per-level data subscriptions, search and requests. Tui renders records, results and the input. AgentConnect follows the Figma layout with built-in bilingual agent and developer integration content, host-provided credentials and locale, optional controlled selection and clipboard feedback. VikingBot provides a working view pending design review. Limits are described in each component's own docs. The package also ships five file-type icons.
26
+ Components implement their reviewed contracts incrementally. FileTree renders every documented row type with keyboard interaction; FilePreview implements the tab shell, header actions and the plain-text preview and editing foundation, with its body not yet wired to FileViewer. ScopeSwitcher is a stateless layout container; independently rendered ScopeSelector children own visibility, with host-owned per-level data subscriptions, search and requests. Tui renders records, results and the input. AgentConnect follows the Figma layout with built-in bilingual agent and developer integration content, host-provided credentials and locale, optional controlled selection and clipboard feedback. VikingBot provides a working view pending design review. Limits are described in each component's own docs. The package also ships five file-type icons, `ArrowRightIcon` and the three scope-level icons (`LibraryIcon`, `SpaceIcon`, `UserIcon`).
27
27
 
28
- Components receive view data and state through props and express user intent through callbacks, following the [component directory conventions](./src/components/AGENTS.md). [modules](./src/modules/README.md) plan Hooks and views per business capability: Hooks load data, hold state and expose operations, and composite views wire them into components. Full pages and product-specific flows belong to the host; the admin console is out of scope for this phase. `console` exports a native command panel; its orchestration Hook stays internal and conversation data and callbacks are supplied by the host. `file-browser` ships placeholder views and types.
28
+ Components receive view data and state through props and express user intent through callbacks, following the [component directory conventions](./src/components/AGENTS.md). [modules](./src/modules/README.md) plan Hooks and views per business capability: Hooks load data, hold state and expose operations, and composite views wire them into components. Full pages and product-specific flows belong to the host; the admin console is out of scope for this phase. `console` exports a native command panel; its orchestration Hook stays internal and conversation data and callbacks are supplied by the host. `file-browser` provides browsing, preview and dashboard coordination.
29
29
 
30
- Modules consume the native OpenViking API through a shared Client by default, with the Provider supplying `baseURL`, headers and other configuration, and modules or standalone Hooks overriding individual fields through `requestOptions`. Standard integration needs no per-module Adapter; nonstandard gateways are adapted at the host's request boundary. The request contract — `OvRequestOptions`, `OvClient` and `OvClientError` — comes from the `@openviking/react/client` subpath, which ships a `fetch`-based `createOvClient`; the Provider is exported from the same subpath; these native API module Hooks are not implemented yet. ScopeCascade instead accepts three host API adapters and needs no Provider. See [request conventions](./src/modules/README.md#request-conventions-and-default-configuration).
30
+ Modules consume the native OpenViking API through a shared Client by default, with the Provider supplying `baseURL`, headers and other configuration, and module views overriding individual fields through `requestOptions`. Standard integration needs no per-module Adapter; nonstandard gateways are adapted at the host's request boundary. The request contract — `OvRequestOptions`, `OvClient` and `OvClientError` — comes from the `@openviking/react/client` subpath, which ships a `fetch`-based `createOvClient`; the Provider is exported from the same subpath. Native module Hooks share this request boundary. ScopeCascade instead accepts three host API adapters and needs no Provider. See [request conventions](./src/modules/README.md#request-conventions-and-default-configuration).
31
31
 
32
32
  Tui preserves JSON numeric tokens when indenting output. Structured resource links allow only `viking://`, `https://`, and `http://`; other targets render as text. Resource tables retain entry titles, native links and metadata. Output follows updates only near the bottom or after explicit submission. Read-only and disabled consoles cannot submit or insert help commands. `labels.resource` customizes the resource identity column.
33
33
 
@@ -41,9 +41,11 @@ The same props are consumed by different hosts. Hosts differ in flows and interf
41
41
  - Icons, extension tabs, extra fields and toolbar actions come in as slots or nodes; components bind to no third-party UI library.
42
42
  - List components render the rows or items the caller has already expanded; paging, loading, error and empty states come from module Hooks or the host.
43
43
 
44
+ `WikiDashboard` is exported from `@openviking/react/components/wiki-dashboard`; `ExperienceDashboard` from `@openviking/react/components/experience-dashboard`. Both are pure UI components receiving display data and state; FileBrowser owns native loading and response adaptation. Components and main Props types also appear at the package root. FileBrowser detects Wiki/experience entries, with `dashboardKinds` and `renderDashboard` for host permissions and gateway data. Each component exports `style.css`; FileBrowser styles include both boards. See the [dashboard docs](../../docs/docs/en/components/index.mdx).
45
+
44
46
  ## Public entries and styles
45
47
 
46
- - The root entry exports each component and each business module placeholder with its main Props type (`<Component>Props`) only — currently `FileTree`, `Tui`, `ScopeSwitcher`, `ScopeSelector`, `ScopeCascade`, `AgentConnect` and Console and the one business module placeholder. Row types, option types, handles and label bags come from the `components/<component>` and `modules/<module>` subpaths. `FilePreview` is not on the root entry: its types reference the optional `@ark-design/ui`, and putting it there would make that peer required. ScopeCascade exports a working three-level composition and per-level subscription Hooks from `modules/scope-cascade`; Console exports its panel from `modules/console` and keeps its orchestration Hook internal; FileBrowser remains a placeholder. No aggregate `@openviking/react/components` or `@openviking/react/modules` JavaScript entry. Package exports are listed explicitly and internal files stay closed.
48
+ - The root entry exports each component and each business module placeholder with its main Props type (`<Component>Props`) only — currently `FileTree`, `Tui`, `ScopeSwitcher`, `ScopeSelector`, `ScopeCascade`, `AgentConnect` and Console, FileBrowser, WikiDashboard and ExperienceDashboard. Row types, option types, handles and label bags come from the `components/<component>` and `modules/<module>` subpaths. `FilePreview` is not on the root entry: its types reference the optional `@ark-design/ui`, and putting it there would make that peer required. ScopeCascade exports a working three-level composition with internal per-level subscriptions from `modules/scope-cascade`; Console exports its panel from `modules/console` and keeps its orchestration Hook internal; FileBrowser provides browsing and dashboard coordination. No aggregate `@openviking/react/components` or `@openviking/react/modules` JavaScript entry. Package exports are listed explicitly and internal files stay closed.
47
49
  - Components expose only the explicitly listed layered subpaths, with no legacy path aliases.
48
50
  - JS entries share implementations and never load CSS implicitly. Whole-package, component-set and single-module stylesheets are built from the same source, so import the scope you need.
49
51
 
@@ -55,7 +57,7 @@ The same props are consumed by different hosts. Hosts differ in flows and interf
55
57
  | Business module set | `@openviking/react/modules/style.css` |
56
58
  | Single business module | `@openviking/react/modules/<module>/style.css` |
57
59
 
58
- Each CSS entry works standalone, and the whole-package CSS already includes module placeholder styles. Once real capability lands, module CSS must also include the composite view and the styles of the components it uses; using a module Hook alone needs no CSS. Cross-module public Hooks open `@openviking/react/hooks` only after a real implementation; module-specific public Hooks are exported from their module entry, and private Hooks and utilities stay out of public exports.
60
+ Each CSS entry works independently and includes the component styles it depends on. Business Hooks remain internal; no headless Hook entry is exposed.
59
61
 
60
62
  ```tsx
61
63
  import { FileBrowser } from '@openviking/react/modules/file-browser';
@@ -67,7 +69,7 @@ import '@openviking/react/modules/file-browser/style.css';
67
69
  />;
68
70
  ```
69
71
 
70
- The remaining module exports `Console`; it currently accepts `className`, `style` and `labels`, and needs no Provider or request configuration.
72
+ Console accepts its documented panel props; native command execution uses Provider request configuration and starts only on explicit submission.
71
73
 
72
74
  Experience dashboards belong to preview extensions; task progress starts inside its owning module; API Key display controls are reused on demand while credential creation and management belong to the host. No separate modules are added for these now.
73
75
 
@@ -79,7 +81,7 @@ import { PdfIcon } from '@openviking/react/icons';
79
81
  <PdfIcon width={20} height={20} className="file-icon" alt="PDF" />;
80
82
  ```
81
83
 
82
- Icons render as 16 × 16 images by default. Decorative icons can keep the empty `alt`, while icons that convey file type can provide a description. SVGs are inlined into the build output, and hosts consume them directly from the package exports.
84
+ Icons render as inline SVG. Decorative icons stay `aria-hidden`, while an icon that conveys meaning on its own can take an `aria-label`. SVGs are inlined into the build output, and hosts consume them directly from the package exports. `LibraryIcon`, `SpaceIcon` and `UserIcon` are the scope-level defaults; `ScopeCascade`'s default view applies them automatically when an adapter returns no `icon`.
83
85
 
84
86
  React and ReactDOM are peer dependencies (`^18.2.0 || ^19.0.0`), automatically externalized by Rslib. Rslib emits shared ESM JavaScript and declarations, plus independently built CSS entries. The public `@openviking/react/style.css` entry resolves to `dist/style.css`. Styles are scoped and do not reset application styles.
85
87
 
@@ -87,10 +89,12 @@ From `frontend/`, run `npm run build:lib` to generate `packages/react/dist/`. Se
87
89
 
88
90
  ### ScopeCascade
89
91
 
90
- Pass three stable API adapter functions to `useScopeCascade({ loadLibraries, loadSpaces, loadUsers })`, then render `<ScopeCascade controller={controller} />`. Adapters return `{ id, label }` options and receive an `AbortSignal`. The module handles dependent requests, descendant resets, loading, errors, retries and stale responses. Each selector subscribes independently; the Hook caller does not subscribe to request state. Import the Hook and composition from `@openviking/react/modules/scope-cascade` and its CSS from the corresponding `/style.css` entry.
92
+ Pass three stable API adapters directly to `<ScopeCascade {...api} onChange={handleSelection} />`. Adapters return `{ id, label }` options and receive an `AbortSignal`. The component owns requests, descendant resets, loading, retries and stale-response protection. `onChange` reports a complete `{ libraryId, spaceId, userId }` identity or `null` while incomplete. Import the component and Props from `@openviking/react/modules/scope-cascade` and its CSS from the corresponding `/style.css` entry.
91
93
 
92
94
  ## Maintaining built-in copy
93
95
 
94
96
  Built-in translations live alongside each component or module in `locales/en-US.ts` and `locales/zh-CN.ts`. The internal `src/shared/locale.ts` contains only shared language types and resolution/override rules, with no business messages or public entry. Modules own workflow copy and reuse the defaults owned by their child components.
95
97
 
96
98
  Dynamic messages use typed formatter functions; dates and numbers use `Intl`. `npm test` checks matching keys, string placeholders and formatter arity across languages, while type checking validates parameter types. Undefined `labels` entries inherit the selected language; empty strings remain explicit overrides.
99
+
100
+ Set `locale` on `OpenVikingProvider` for a subtree. Optional module and component Props override the nearest scope, then fall back to `en-US`. Standalone Hooks also inherit the Provider. The private `src/shared/locale-context.tsx` is shared across public entries and remains separate from request-client configuration, so language changes preserve requests and state.
package/dist/28~0.js ADDED
@@ -0,0 +1,15 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { createContext, useContext } from "react";
3
+ const LocaleContext = /*#__PURE__*/ createContext('en-US');
4
+ function useLocale(locale) {
5
+ const inherited = useContext(LocaleContext);
6
+ return locale ?? inherited;
7
+ }
8
+ function LocaleProvider({ locale, children }) {
9
+ const value = useLocale(locale);
10
+ return /*#__PURE__*/ jsx(LocaleContext.Provider, {
11
+ value: value,
12
+ children: children
13
+ });
14
+ }
15
+ export { LocaleProvider, useLocale };
package/dist/2~0.js CHANGED
@@ -7,6 +7,7 @@ import { __webpack_require__ } from "./rslib-runtime~0.js";
7
7
  import { resolveLocale } from "./nx~0.js";
8
8
  import { removereact } from "./4~0.js";
9
9
  import { usePortalTheme } from "./9~0.js";
10
+ import { useLocale } from "./28~0.js";
10
11
  import { AgentConnect } from "./u~0.js";
11
12
  import * as __rspack_external_react from "react";
12
13
  __webpack_require__.add({
@@ -2274,7 +2275,8 @@ function ImportResourcesIcon() {
2274
2275
  })
2275
2276
  });
2276
2277
  }
2277
- function FileBrowserEntries({ locale = 'en-US', agentConnect, onConnectAgent, onImportResources, renderImportResources, labels, className, ...rest }) {
2278
+ function FileBrowserEntries({ locale: localeProp, agentConnect, onConnectAgent, onImportResources, renderImportResources, labels, className, ...rest }) {
2279
+ const locale = useLocale(localeProp);
2278
2280
  const triggerRef = useRef(null);
2279
2281
  const drawerId = useId();
2280
2282
  const [drawerOpen, setDrawerOpen] = useState(false);
@@ -2344,10 +2346,11 @@ function FileBrowserEntries({ locale = 'en-US', agentConnect, onConnectAgent, on
2344
2346
  closeLabel: text.close,
2345
2347
  triggerRef: triggerRef,
2346
2348
  className: "ov-file-browser-entries__drawer",
2347
- lang: agentConnect.locale,
2349
+ lang: agentConnect.locale ?? locale,
2348
2350
  onClose: ()=>setDrawerOpen(false),
2349
2351
  children: /*#__PURE__*/ jsx(AgentConnect, {
2350
- ...agentConnect
2352
+ ...agentConnect,
2353
+ locale: agentConnect.locale ?? locale
2351
2354
  })
2352
2355
  }) : null,
2353
2356
  showImport ? /*#__PURE__*/ jsx("span", {
package/dist/37~0.js ADDED
@@ -0,0 +1,27 @@
1
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
2
+ function DashboardState({ state = {}, empty, loading, failed, retry }) {
3
+ return /*#__PURE__*/ jsxs("div", {
4
+ className: "ov-dashboard-state",
5
+ "aria-busy": state.loading,
6
+ children: [
7
+ /*#__PURE__*/ jsx("p", {
8
+ "aria-live": "polite",
9
+ children: state.loading ? loading : state.error ? failed : empty
10
+ }),
11
+ state.error ? /*#__PURE__*/ jsxs(Fragment, {
12
+ children: [
13
+ /*#__PURE__*/ jsx("p", {
14
+ children: state.error.message
15
+ }),
16
+ /*#__PURE__*/ jsx("button", {
17
+ type: "button",
18
+ disabled: !state.onRetry,
19
+ onClick: state.onRetry,
20
+ children: retry
21
+ })
22
+ ]
23
+ }) : null
24
+ ]
25
+ });
26
+ }
27
+ export { DashboardState };
package/dist/3c~0.js CHANGED
@@ -5,7 +5,8 @@ import remark_gfm from "remark-gfm";
5
5
  import { ArrowRightIcon } from "./k~0.js";
6
6
  import { resolveLocale } from "./nx~0.js";
7
7
  import { checkreact } from "./0~0.js";
8
- import { Tooltip } from "./r~0.js";
8
+ import { Tooltip } from "./rt~0.js";
9
+ import { useLocale } from "./28~0.js";
9
10
  function getTuiCommandInputText(command) {
10
11
  return command.inputText?.trim() || command.name;
11
12
  }
@@ -964,13 +965,19 @@ function TuiEmptyRegion({ emptyState, commands, labels, disabled, onPick }) {
964
965
  height: 14,
965
966
  focusable: "false"
966
967
  }),
967
- /*#__PURE__*/ jsx("span", {
968
- className: "ov-tui__empty-name",
969
- children: command.name
970
- }),
971
- /*#__PURE__*/ jsx("span", {
972
- className: "ov-tui__empty-desc",
973
- children: command.summary ?? command.description
968
+ /*#__PURE__*/ jsxs("span", {
969
+ className: "ov-tui__empty-content",
970
+ children: [
971
+ /*#__PURE__*/ jsx("span", {
972
+ className: "ov-tui__empty-name",
973
+ children: command.name
974
+ }),
975
+ /*#__PURE__*/ jsx("span", {
976
+ className: "ov-tui__empty-desc",
977
+ title: command.summary ?? command.description,
978
+ children: command.summary ?? command.description
979
+ })
980
+ ]
974
981
  })
975
982
  ]
976
983
  })
@@ -2073,7 +2080,8 @@ function useTuiCompletion(value, enabled, commands, groups = [], paletteScope =
2073
2080
  showSuggestions: enabled && (query.automatic || null !== query.scope && paletteScope === query.scope)
2074
2081
  };
2075
2082
  }
2076
- function Tui({ records, value, disabled = false, emptyState, quickCommands, locale = 'en-US', commands = [], commandGroups = [], onValueChange, onSubmit, onOpenUri, onCopy, labels, className, ...rest }) {
2083
+ function Tui({ records, value, disabled = false, emptyState, quickCommands, locale: localeProp, commands = [], commandGroups = [], onValueChange, onSubmit, onOpenUri, onCopy, labels, className, ...rest }) {
2084
+ const locale = useLocale(localeProp);
2077
2085
  const text = resolveTuiLabels(labels, locale);
2078
2086
  const bodyRef = useRef(null);
2079
2087
  const followOutput = useRef(true);
package/dist/3~0.js CHANGED
@@ -1,7 +1,8 @@
1
1
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
2
2
  import { Fragment as external_react_Fragment, Suspense, forwardRef, lazy, useCallback, useId, useImperativeHandle, useLayoutEffect, useMemo, useRef, useState } from "react";
3
- import { Tooltip } from "./r~0.js";
3
+ import { Tooltip } from "./rt~0.js";
4
4
  import { resolveLocale, mergeLabels } from "./nx~0.js";
5
+ import { useLocale } from "./28~0.js";
5
6
  function FilePreviewImageFrame({ children }) {
6
7
  const [dimensions, setDimensions] = useState('');
7
8
  return /*#__PURE__*/ jsxs("div", {
@@ -1214,7 +1215,8 @@ function useFilePreviewEditing(activeTabKey) {
1214
1215
  function isFileTab(tab) {
1215
1216
  return 'file' === tab.kind;
1216
1217
  }
1217
- const file_preview_FilePreview = /*#__PURE__*/ forwardRef(function({ tabs, activeKey, defaultActiveKey, locale, labels, onActiveKeyChange, className, ...rest }, ref) {
1218
+ const file_preview_FilePreview = /*#__PURE__*/ forwardRef(function({ tabs, activeKey, defaultActiveKey, locale: localeProp, labels, onActiveKeyChange, className, ...rest }, ref) {
1219
+ const locale = useLocale(localeProp);
1218
1220
  const text = resolveFilePreviewLabels(locale, labels);
1219
1221
  const [internalKey, setInternalKey] = useState(()=>defaultActiveKey ?? tabs[0].key);
1220
1222
  const currentKey = activeKey ?? internalKey;
package/dist/ae~0.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
2
  import { createContext, useContext, useMemo } from "react";
3
+ import { LocaleProvider } from "./28~0.js";
3
4
  class OvClientError extends Error {
4
5
  code;
5
6
  statusCode;
@@ -439,7 +440,7 @@ function createOvClient(options = {}) {
439
440
  return client;
440
441
  }
441
442
  const OvClientContext = /*#__PURE__*/ createContext(null);
442
- function OpenVikingProvider({ baseURL, apiKey, accountId, userId, resourceId, credentials, signal, fetch, children }) {
443
+ function OpenVikingProvider({ baseURL, apiKey, accountId, userId, resourceId, credentials, signal, fetch, locale, children }) {
443
444
  const parent = useContext(OvClientContext);
444
445
  const value = useMemo(()=>{
445
446
  const base = mergeProviderConfig(parent?.base, {
@@ -475,7 +476,10 @@ function OpenVikingProvider({ baseURL, apiKey, accountId, userId, resourceId, cr
475
476
  ]);
476
477
  return /*#__PURE__*/ jsx(OvClientContext.Provider, {
477
478
  value: value,
478
- children: children
479
+ children: /*#__PURE__*/ jsx(LocaleProvider, {
480
+ locale: locale,
481
+ children: children
482
+ })
479
483
  });
480
484
  }
481
485
  function useOvClient() {
package/dist/a~0.js CHANGED
@@ -3,9 +3,10 @@ import { useEffect, useId, useMemo, useRef, useState, useSyncExternalStore } fro
3
3
  import { createPortal } from "react-dom";
4
4
  import { resolveLocale, mergeLabels } from "./nx~0.js";
5
5
  import { useOvSignal, useOvClient, createOvClient, isOvClientError } from "./ae~0.js";
6
+ import { useLocale, LocaleProvider } from "./28~0.js";
6
7
  import { new_sessionreact, historyreact } from "./lg~0.js";
7
8
  import { useOverlayPosition } from "./o~0.js";
8
- import { Tooltip } from "./r~0.js";
9
+ import { Tooltip } from "./rt~0.js";
9
10
  import { VikingBotSessionActions, VikingBot } from "./c~0.js";
10
11
  import { Tui } from "./3c~0.js";
11
12
  const command_specs_uri = {
@@ -842,7 +843,8 @@ function createConsoleController(client, options = {}) {
842
843
  retry: (locale)=>state.failedCommand ? execute(state.failedCommand, locale) : Promise.resolve()
843
844
  };
844
845
  }
845
- function useConsole({ mode: controlledMode, defaultMode = 'conversation', locale = 'en-US', scopeKey, onModeChange, requestOptions = {} } = {}) {
846
+ function useConsole({ mode: controlledMode, defaultMode = 'conversation', locale: localeProp, scopeKey, onModeChange, requestOptions = {} } = {}) {
847
+ const locale = useLocale(localeProp);
846
848
  const inherited = useOvClient();
847
849
  const inheritedSignal = useOvSignal();
848
850
  const [fallback] = useState(()=>createOvClient());
@@ -1204,7 +1206,8 @@ const DEFAULT_QUICK_COMMANDS = [
1204
1206
  'read',
1205
1207
  'status'
1206
1208
  ];
1207
- function Console({ mode, defaultMode, locale = 'en-US', quickCommands = DEFAULT_QUICK_COMMANDS, scopeKey, requestOptions, onModeChange, onOpenUri, conversation, slots, labels: overrides, className, ...rest }) {
1209
+ function Console({ mode, defaultMode, locale: localeProp, quickCommands = DEFAULT_QUICK_COMMANDS, scopeKey, requestOptions, onModeChange, onOpenUri, conversation, slots, labels: overrides, className, ...rest }) {
1210
+ const locale = useLocale(localeProp);
1208
1211
  const state = useConsole({
1209
1212
  mode,
1210
1213
  defaultMode,
@@ -1215,8 +1218,9 @@ function Console({ mode, defaultMode, locale = 'en-US', quickCommands = DEFAULT_
1215
1218
  });
1216
1219
  const labels = consoleLabels(locale, overrides);
1217
1220
  const { sessions, headerActions, ...conversationProps } = conversation ?? {};
1221
+ const botLocale = conversationProps.locale ?? locale;
1218
1222
  const botLabels = {
1219
- ...labels.vikingBot,
1223
+ ...consoleLabels(botLocale, overrides).vikingBot,
1220
1224
  ...conversationProps.labels
1221
1225
  };
1222
1226
  const id = useId();
@@ -1227,74 +1231,77 @@ function Console({ mode, defaultMode, locale = 'en-US', quickCommands = DEFAULT_
1227
1231
  preventScroll: true
1228
1232
  });
1229
1233
  };
1230
- return /*#__PURE__*/ jsxs("div", {
1231
- ...rest,
1232
- className: [
1233
- 'ov-console',
1234
- className
1235
- ].filter(Boolean).join(' '),
1236
- children: [
1237
- /*#__PURE__*/ jsx(ConsoleToolbar, {
1238
- mode: state.mode,
1239
- panelId: id,
1240
- locale: locale,
1241
- labels: labels,
1242
- records: state.records,
1243
- isExecuting: state.isExecuting,
1244
- onModeChange: (next)=>state.setMode(next),
1245
- onClear: ()=>{
1246
- state.clear();
1247
- fillCommand('');
1248
- },
1249
- onRecall: fillCommand,
1250
- conversationActions: /*#__PURE__*/ jsx(VikingBotSessionActions, {
1251
- sessions: sessions,
1252
- extra: headerActions,
1253
- labels: botLabels,
1254
- locale: locale
1234
+ return /*#__PURE__*/ jsx(LocaleProvider, {
1235
+ locale: locale,
1236
+ children: /*#__PURE__*/ jsxs("div", {
1237
+ ...rest,
1238
+ className: [
1239
+ 'ov-console',
1240
+ className
1241
+ ].filter(Boolean).join(' '),
1242
+ children: [
1243
+ /*#__PURE__*/ jsx(ConsoleToolbar, {
1244
+ mode: state.mode,
1245
+ panelId: id,
1246
+ locale: locale,
1247
+ labels: labels,
1248
+ records: state.records,
1249
+ isExecuting: state.isExecuting,
1250
+ onModeChange: (next)=>state.setMode(next),
1251
+ onClear: ()=>{
1252
+ state.clear();
1253
+ fillCommand('');
1254
+ },
1255
+ onRecall: fillCommand,
1256
+ conversationActions: /*#__PURE__*/ jsx(VikingBotSessionActions, {
1257
+ sessions: sessions,
1258
+ extra: headerActions,
1259
+ labels: botLabels,
1260
+ locale: botLocale
1261
+ }),
1262
+ children: slots?.toolbar
1255
1263
  }),
1256
- children: slots?.toolbar
1257
- }),
1258
- /*#__PURE__*/ jsx("div", {
1259
- id: `${id}-conversation`,
1260
- className: "ov-console__panel",
1261
- hidden: 'conversation' !== state.mode,
1262
- children: 'conversation' === state.mode ? /*#__PURE__*/ jsx(VikingBot, {
1263
- ...conversationProps,
1264
- onOpenUri: conversationProps.onOpenUri ?? onOpenUri,
1265
- messages: conversationProps.messages ?? [],
1266
- draft: conversationProps.draft ?? state.conversationDraft,
1267
- onDraftChange: void 0 === conversationProps.draft ? (value)=>{
1268
- state.setConversationDraft(value);
1269
- conversationProps.onDraftChange?.(value);
1270
- } : conversationProps.onDraftChange,
1271
- footer: slots?.conversationContext ?? conversationProps.footer,
1272
- locale: conversationProps.locale ?? locale,
1273
- labels: botLabels
1274
- }) : null
1275
- }),
1276
- /*#__PURE__*/ jsxs("div", {
1277
- id: `${id}-command`,
1278
- ref: commandPanel,
1279
- className: "ov-console__panel",
1280
- hidden: 'command' !== state.mode,
1281
- children: [
1282
- slots?.commandHelp,
1283
- /*#__PURE__*/ jsx(Tui, {
1284
- records: state.records,
1285
- value: state.command,
1286
- commands: state.commands,
1287
- locale: locale,
1288
- disabled: state.isExecuting,
1289
- quickCommands: quickCommands,
1290
- onValueChange: state.setCommand,
1291
- onSubmit: (command)=>void state.execute(command),
1292
- onOpenUri: onOpenUri,
1293
- labels: labels.tui
1294
- })
1295
- ]
1296
- })
1297
- ]
1264
+ /*#__PURE__*/ jsx("div", {
1265
+ id: `${id}-conversation`,
1266
+ className: "ov-console__panel",
1267
+ hidden: 'conversation' !== state.mode,
1268
+ children: 'conversation' === state.mode ? /*#__PURE__*/ jsx(VikingBot, {
1269
+ ...conversationProps,
1270
+ onOpenUri: conversationProps.onOpenUri ?? onOpenUri,
1271
+ messages: conversationProps.messages ?? [],
1272
+ draft: conversationProps.draft ?? state.conversationDraft,
1273
+ onDraftChange: void 0 === conversationProps.draft ? (value)=>{
1274
+ state.setConversationDraft(value);
1275
+ conversationProps.onDraftChange?.(value);
1276
+ } : conversationProps.onDraftChange,
1277
+ footer: slots?.conversationContext ?? conversationProps.footer,
1278
+ locale: botLocale,
1279
+ labels: botLabels
1280
+ }) : null
1281
+ }),
1282
+ /*#__PURE__*/ jsxs("div", {
1283
+ id: `${id}-command`,
1284
+ ref: commandPanel,
1285
+ className: "ov-console__panel",
1286
+ hidden: 'command' !== state.mode,
1287
+ children: [
1288
+ slots?.commandHelp,
1289
+ /*#__PURE__*/ jsx(Tui, {
1290
+ records: state.records,
1291
+ value: state.command,
1292
+ commands: state.commands,
1293
+ locale: locale,
1294
+ disabled: state.isExecuting,
1295
+ quickCommands: quickCommands,
1296
+ onValueChange: state.setCommand,
1297
+ onSubmit: (command)=>void state.execute(command),
1298
+ onOpenUri: onOpenUri,
1299
+ labels: labels.tui
1300
+ })
1301
+ ]
1302
+ })
1303
+ ]
1304
+ })
1298
1305
  });
1299
1306
  }
1300
- export { Console, useConsole };
1307
+ export { Console };
package/dist/ck~0.js CHANGED
@@ -1,5 +1,9 @@
1
1
  const OV_PATHS = {
2
2
  fsLs: '/api/v1/fs/ls',
3
+ fsAttrs: '/api/v1/fs/attrs',
4
+ compileConfigs: '/api/v1/compile/configs',
5
+ experienceTrajectories: '/api/v1/agent-evolution/experiences/trajectories',
6
+ experienceOutcomes: '/api/v1/agent-evolution/experiences/outcomes',
3
7
  fsStat: '/api/v1/fs/stat',
4
8
  fsTree: '/api/v1/fs/tree',
5
9
  fsMkdir: '/api/v1/fs/mkdir',
@@ -18,6 +18,10 @@
18
18
  export declare const OV_PATHS: {
19
19
  /** 列出目录内容。List directory contents. */
20
20
  readonly fsLs: '/api/v1/fs/ls';
21
+ readonly fsAttrs: '/api/v1/fs/attrs';
22
+ readonly compileConfigs: '/api/v1/compile/configs';
23
+ readonly experienceTrajectories: '/api/v1/agent-evolution/experiences/trajectories';
24
+ readonly experienceOutcomes: '/api/v1/agent-evolution/experiences/outcomes';
21
25
  /** 读取条目状态。Read an entry's status. */
22
26
  readonly fsStat: '/api/v1/fs/stat';
23
27
  /** 读取目录树。Read a directory tree. */
@@ -1,17 +1,21 @@
1
1
  import type { ReactNode } from 'react';
2
+ import type { Locale } from '../shared/locale.js';
2
3
  import type { OvClient, OvClientOptions } from './types.js';
3
4
  /**
4
- * {@link OpenVikingProvider} 的属性。字段与 {@link OvClientOptions} 同形:
5
+ * {@link OpenVikingProvider} 的属性。请求字段与 {@link OvClientOptions} 同形,另可设置界面语言:
5
6
  * 服务地址、身份与作用域、Cookie 策略,都按字段传值。
6
- * Props of {@link OpenVikingProvider}, the same shape as {@link OvClientOptions}:
7
- * the service address, identity and scope, and the cookie policy are all passed
7
+ * Props of {@link OpenVikingProvider}: request fields follow {@link OvClientOptions},
8
+ * with an optional interface locale.
9
+ * The service address, identity and scope, and the cookie policy are all passed
8
10
  * as fields.
9
11
  */
10
12
  export interface OpenVikingProviderProps extends OvClientOptions {
13
+ /** 界面语言;省略时继承上层,无配置时默认英文。Subtree locale; inherits or defaults to en-US. */
14
+ locale?: Locale;
11
15
  children?: ReactNode;
12
16
  }
13
17
  /**
14
- * 向子树下发请求配置。模块通过内部的 `useOvClient` 取用,宿主只需在应用根部
18
+ * 向子树下发请求配置与默认语言。模块通过内部的 `useOvClient` 取用,宿主只需在应用根部
15
19
  * 配置一次服务地址与身份字段,不必自己组装请求头。
16
20
  *
17
21
  * 开源版传 `apiKey`、`accountId`、`userId`;商业版由浏览器 Cookie 鉴权,只传
@@ -23,7 +27,7 @@ export interface OpenVikingProviderProps extends OvClientOptions {
23
27
  * 不传 `baseURL` 时按浏览器同源请求。挂载本身不发请求,也不读取浏览器里保存
24
28
  * 的凭证。
25
29
  *
26
- * Provides request configuration to a subtree. Modules read it through the
30
+ * Provides request configuration and a default language to a subtree. Modules read it through the
27
31
  * internal `useOvClient`, so a host configures the service address and identity
28
32
  * fields once at the application root and never assembles headers itself.
29
33
  *
@@ -40,7 +44,7 @@ export interface OpenVikingProviderProps extends OvClientOptions {
40
44
  * Without `baseURL` it targets the browser's own origin. Mounting it sends no
41
45
  * request and reads no credential stored in the browser.
42
46
  */
43
- export declare function OpenVikingProvider({ baseURL, apiKey, accountId, userId, resourceId, credentials, signal, fetch, children, }: OpenVikingProviderProps): import("react").JSX.Element;
47
+ export declare function OpenVikingProvider({ baseURL, apiKey, accountId, userId, resourceId, credentials, signal, fetch, locale, children, }: OpenVikingProviderProps): import("react").JSX.Element;
44
48
  /**
45
49
  * 读取最近的 Provider 提供的客户端。仅供模块内部使用,不从包入口导出:
46
50
  * 调用方不需要知道该发什么请求,也就不会直接用它。
@@ -0,0 +1,14 @@
1
+ import type { AgentConnectLocale } from './types.js';
2
+ export interface CodeBlockControls {
3
+ locale: AgentConnectLocale;
4
+ visibleBlockId: string | null;
5
+ onReveal: (id: string | null) => void;
6
+ onCopy?: (text: string) => void;
7
+ }
8
+ interface CodeBlockProps extends CodeBlockControls {
9
+ display: string;
10
+ copyText: string;
11
+ language?: string;
12
+ }
13
+ export declare function AgentConnectCodeBlock({ display, copyText, language, locale, visibleBlockId, onReveal, onCopy, }: CodeBlockProps): import("react").JSX.Element;
14
+ export {};
@@ -7,6 +7,9 @@ export declare function resolveAgentConnectLabels(locale: AgentConnectLocale): {
7
7
  instructions: string;
8
8
  copy: string;
9
9
  copyMarkdown: string;
10
+ copyCode: string;
11
+ showApiKey: string;
12
+ hideApiKey: string;
10
13
  copied: string;
11
14
  failed: string;
12
15
  notice: string;
@@ -1,5 +1,5 @@
1
1
  import type { AgentConnectLocale } from './types.js';
2
- export declare function getAgentConnectDesign(locale: AgentConnectLocale): {
2
+ export declare function getAgentConnectDesign(locale: AgentConnectLocale, showOverseasTag?: boolean): {
3
3
  tabs: readonly [{
4
4
  readonly id: 'mainstream';
5
5
  readonly label: string;
@@ -1,3 +1,4 @@
1
1
  import type { AgentConnectLocale } from './types.js';
2
2
  export declare const INSTALLER_HARNESSES: Partial<Record<string, string>>;
3
+ export declare function getInstallerCommand(harness: string, locale: AgentConnectLocale, apiKey: string, baseUrl: string): string;
3
4
  export declare function getInstallerInstructions(name: string, harness: string, locale: AgentConnectLocale, apiKey: string, baseUrl: string): string;
@@ -1,14 +1,12 @@
1
1
  import type { AgentConnectLocale } from './types.js';
2
+ import type { getAgentConnectInstructions } from './agent-connect-instructions.js';
2
3
  interface InstructionsViewProps {
3
- instructions: {
4
- fixed: boolean;
5
- display: string;
6
- copy: string;
7
- };
4
+ instructions: ReturnType<typeof getAgentConnectInstructions>;
5
+ apiKey: string;
8
6
  locale: AgentConnectLocale;
9
7
  agreementUrl?: string;
10
8
  onCopy?: (text: string) => void;
11
9
  }
12
10
  /** 由父视图的 key 隔离指南及凭据的复制生命周期。 */
13
- export declare function AgentConnectInstructionsView({ instructions, locale, agreementUrl, onCopy, }: InstructionsViewProps): import("react").JSX.Element;
11
+ export declare function AgentConnectInstructionsView({ instructions, apiKey, locale, agreementUrl, onCopy, }: InstructionsViewProps): import("react").JSX.Element;
14
12
  export {};
@@ -277,4 +277,17 @@ export declare function getAgentConnectInstructions(id: keyof typeof contentZh,
277
277
  fixed: boolean;
278
278
  display: string;
279
279
  copy: string;
280
+ command: {
281
+ display: string;
282
+ copy: string;
283
+ };
284
+ markdown?: undefined;
285
+ keyToken?: undefined;
286
+ } | {
287
+ command?: undefined;
288
+ fixed: boolean;
289
+ display: string;
290
+ copy: string;
291
+ markdown: string;
292
+ keyToken: string;
280
293
  };