@openviking/react 0.1.3 → 0.1.4

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 (200) hide show
  1. package/LICENSE.arco-design +21 -0
  2. package/README.md +25 -15
  3. package/dist/0~0.js +19 -0
  4. package/dist/2~0.js +2267 -29
  5. package/dist/2~0.js.LICENSE.txt +23 -0
  6. package/dist/3c~0.js +2206 -0
  7. package/dist/3~0.js +1205 -1982
  8. package/dist/4~0.js +18 -0
  9. package/dist/9~0.js +43 -0
  10. package/dist/{1~0.js → ae~0.js} +5 -24
  11. package/dist/ark-message-list-view~0.js +530 -119
  12. package/dist/a~0.js +1289 -10
  13. package/dist/c7~0.js +38 -2
  14. package/dist/ck~0.js +23 -0
  15. package/dist/client/provider.d.ts +5 -3
  16. package/dist/client/types.d.ts +5 -5
  17. package/dist/client.js +2 -1
  18. package/dist/components/agent-connect/agent-connect-copy.d.ts +19 -33
  19. package/dist/components/agent-connect/agent-connect-design.d.ts +1935 -167
  20. package/dist/components/agent-connect/agent-connect-instructions.d.ts +135 -0
  21. package/dist/components/agent-connect/locales/en-US.d.ts +20 -0
  22. package/dist/components/agent-connect/locales/zh-CN.d.ts +3 -0
  23. package/dist/components/agent-connect/style.css +14 -2
  24. package/dist/components/agent-connect/types.d.ts +2 -1
  25. package/dist/components/directory-tour/directory-tour.d.ts +3 -0
  26. package/dist/components/directory-tour/index.d.ts +3 -0
  27. package/dist/components/directory-tour/locales/en-US.d.ts +3 -0
  28. package/dist/components/directory-tour/locales/zh-CN.d.ts +3 -0
  29. package/dist/components/directory-tour/steps.d.ts +5 -0
  30. package/dist/components/directory-tour/style.css +237 -0
  31. package/dist/components/directory-tour/style.js +0 -0
  32. package/dist/components/directory-tour/types.d.ts +42 -0
  33. package/dist/components/directory-tour/use-tour-anchor.d.ts +5 -0
  34. package/dist/components/directory-tour/use-tour-position.d.ts +12 -0
  35. package/dist/components/directory-tour.js +40 -0
  36. package/dist/components/file-browser-entries/file-browser-entries.d.ts +5 -5
  37. package/dist/components/file-browser-entries/labels.d.ts +3 -0
  38. package/dist/components/file-browser-entries/locales/en-US.d.ts +6 -0
  39. package/dist/components/file-browser-entries/locales/zh-CN.d.ts +6 -0
  40. package/dist/components/file-browser-entries/style.css +752 -2
  41. package/dist/components/file-browser-entries/types.d.ts +34 -16
  42. package/dist/components/file-preview/file-preview-adapters.d.ts +2 -1
  43. package/dist/components/file-preview/file-preview-body.d.ts +2 -1
  44. package/dist/components/file-preview/file-preview-breadcrumb-menu.d.ts +2 -1
  45. package/dist/components/file-preview/file-preview-breadcrumb.d.ts +2 -1
  46. package/dist/components/file-preview/file-preview-directory.d.ts +2 -1
  47. package/dist/components/file-preview/file-preview-handle-adapters.d.ts +2 -1
  48. package/dist/components/file-preview/file-preview-header.d.ts +6 -2
  49. package/dist/components/file-preview/file-preview-image-frame.d.ts +5 -0
  50. package/dist/components/file-preview/file-preview-labels.d.ts +2 -14
  51. package/dist/components/file-preview/file-preview-level-tabs.d.ts +7 -0
  52. package/dist/components/file-preview/file-preview-markdown-images.d.ts +13 -0
  53. package/dist/components/file-preview/file-preview-panels.d.ts +5 -2
  54. package/dist/components/file-preview/file-preview-viewer.d.ts +2 -1
  55. package/dist/components/file-preview/file-preview.d.ts +0 -1
  56. package/dist/components/file-preview/index.d.ts +2 -1
  57. package/dist/components/file-preview/locales/en-US.d.ts +16 -0
  58. package/dist/components/file-preview/locales/zh-CN.d.ts +16 -0
  59. package/dist/components/file-preview/style.css +160 -2
  60. package/dist/components/file-preview/types.d.ts +34 -10
  61. package/dist/components/file-preview/use-file-preview-levels.d.ts +7 -0
  62. package/dist/components/file-preview/use-file-preview-view-state.d.ts +15 -0
  63. package/dist/components/file-preview.js +1 -1
  64. package/dist/components/file-tree/file-tree-info-labels.d.ts +0 -15
  65. package/dist/components/file-tree/file-tree-labels.d.ts +4 -0
  66. package/dist/components/file-tree/file-tree-row-shared.d.ts +2 -12
  67. package/dist/components/file-tree/file-tree-toolbar.d.ts +11 -0
  68. package/dist/components/file-tree/locales/en-US.d.ts +69 -0
  69. package/dist/components/file-tree/locales/zh-CN.d.ts +69 -0
  70. package/dist/components/file-tree/style.css +143 -15
  71. package/dist/components/file-tree/types.d.ts +38 -10
  72. package/dist/components/file-tree/use-file-tree-actions.d.ts +4 -1
  73. package/dist/components/scope-switcher/labels.d.ts +3 -0
  74. package/dist/components/scope-switcher/locales/en-US.d.ts +8 -0
  75. package/dist/components/scope-switcher/locales/zh-CN.d.ts +8 -0
  76. package/dist/components/scope-switcher/scope-panel.d.ts +1 -1
  77. package/dist/components/scope-switcher/scope-switcher.d.ts +1 -1
  78. package/dist/components/scope-switcher/style.css +14 -2
  79. package/dist/components/scope-switcher/types.d.ts +11 -5
  80. package/dist/components/style.css +9851 -6812
  81. package/dist/components/tui/locales/en-US.d.ts +35 -0
  82. package/dist/components/tui/locales/zh-CN.d.ts +35 -0
  83. package/dist/components/tui/style.css +310 -18
  84. package/dist/components/tui/tui-copy-button.d.ts +1 -1
  85. package/dist/components/tui/tui-empty.d.ts +25 -0
  86. package/dist/components/tui/tui-labels.d.ts +2 -2
  87. package/dist/components/tui/tui.d.ts +1 -1
  88. package/dist/components/tui/types.d.ts +35 -12
  89. package/dist/components/tui.js +1 -1
  90. package/dist/components/viking-bot/ark-adapter.d.ts +2 -0
  91. package/dist/components/viking-bot/ark-message-body.d.ts +1 -7
  92. package/dist/components/viking-bot/ark-message-list-view.d.ts +1 -1
  93. package/dist/components/viking-bot/ark-message-row.d.ts +3 -1
  94. package/dist/components/viking-bot/bot-popover.d.ts +9 -0
  95. package/dist/components/viking-bot/capabilities.d.ts +49 -0
  96. package/dist/components/viking-bot/composer-attachments.d.ts +13 -0
  97. package/dist/components/viking-bot/composer-controls.d.ts +10 -0
  98. package/dist/components/viking-bot/composer-footer.d.ts +17 -0
  99. package/dist/components/viking-bot/composer-references.d.ts +20 -0
  100. package/dist/components/viking-bot/composer-text.d.ts +10 -0
  101. package/dist/components/viking-bot/index.d.ts +3 -1
  102. package/dist/components/viking-bot/interaction/ask-human-fields.d.ts +1 -1
  103. package/dist/components/viking-bot/interaction/labels.d.ts +2 -1
  104. package/dist/components/viking-bot/interaction/locales/en-US.d.ts +17 -0
  105. package/dist/components/viking-bot/interaction/locales/zh-CN.d.ts +17 -0
  106. package/dist/components/viking-bot/interaction/types.d.ts +8 -3
  107. package/dist/components/viking-bot/interaction/viking-bot-interaction.d.ts +1 -1
  108. package/dist/components/viking-bot/labels.d.ts +2 -0
  109. package/dist/components/viking-bot/locales/en-US.d.ts +40 -0
  110. package/dist/components/viking-bot/locales/zh-CN.d.ts +40 -0
  111. package/dist/components/viking-bot/markdown-links.d.ts +27 -0
  112. package/dist/components/viking-bot/message-activity.d.ts +7 -0
  113. package/dist/components/viking-bot/message-code-block.d.ts +8 -0
  114. package/dist/components/viking-bot/message-footer.d.ts +8 -0
  115. package/dist/components/viking-bot/message-markdown.d.ts +9 -0
  116. package/dist/components/viking-bot/model.d.ts +37 -3
  117. package/dist/components/viking-bot/quick-input-tracker.d.ts +16 -0
  118. package/dist/components/viking-bot/quick-inputs.d.ts +6 -0
  119. package/dist/components/viking-bot/reference-picker.d.ts +16 -0
  120. package/dist/components/viking-bot/session-actions.d.ts +11 -0
  121. package/dist/components/viking-bot/style.css +1486 -48
  122. package/dist/components/viking-bot/tool-activity.d.ts +9 -0
  123. package/dist/components/viking-bot/tool-result-links.d.ts +6 -0
  124. package/dist/components/viking-bot/types.d.ts +21 -9
  125. package/dist/components/viking-bot/use-quick-input.d.ts +17 -0
  126. package/dist/components/viking-bot/viking-bot.d.ts +1 -6
  127. package/dist/components/viking-bot/welcome.d.ts +8 -0
  128. package/dist/components/viking-bot.js +1 -1
  129. package/dist/c~0.js +533 -66
  130. package/dist/e~0.js +333 -0
  131. package/dist/file-preview-viewer~0.js +90 -8
  132. package/dist/f~0.js +39 -47
  133. package/dist/h~0.js +5 -1
  134. package/dist/icons/console-icons.d.ts +12 -0
  135. package/dist/icons/index.d.ts +2 -0
  136. package/dist/icons/viking-bot-icons.d.ts +6 -0
  137. package/dist/icons.js +1 -0
  138. package/dist/index.d.ts +2 -0
  139. package/dist/index.js +2 -1
  140. package/dist/k~0.js +1 -0
  141. package/dist/lg~0.js +155 -0
  142. package/dist/lk~0.js +37 -8
  143. package/dist/l~0.js +102 -119
  144. package/dist/modules/console/command-messages.d.ts +19 -0
  145. package/dist/modules/console/command-parser.d.ts +15 -0
  146. package/dist/modules/console/command-specs.d.ts +15 -0
  147. package/dist/modules/console/commands.d.ts +6 -0
  148. package/dist/modules/console/console-history.d.ts +10 -0
  149. package/dist/modules/console/console-toolbar.d.ts +18 -0
  150. package/dist/modules/console/console.d.ts +1 -3
  151. package/dist/modules/console/controller.d.ts +17 -0
  152. package/dist/modules/console/index.d.ts +2 -0
  153. package/dist/modules/console/labels.d.ts +61 -0
  154. package/dist/modules/console/locales/en-US.d.ts +49 -0
  155. package/dist/modules/console/locales/zh-CN.d.ts +3 -0
  156. package/dist/modules/console/localize-records.d.ts +11 -0
  157. package/dist/modules/console/results.d.ts +2 -0
  158. package/dist/modules/console/style.css +10905 -15
  159. package/dist/modules/console/types.d.ts +59 -80
  160. package/dist/modules/console/use-console.d.ts +3 -0
  161. package/dist/modules/console.js +1 -1
  162. package/dist/modules/file-browser/file-browser-detail.d.ts +2 -1
  163. package/dist/modules/file-browser/file-browser-labels.d.ts +11 -12
  164. package/dist/modules/file-browser/file-browser-toolbar.d.ts +3 -4
  165. package/dist/modules/file-browser/file-browser-tree-pane.d.ts +7 -5
  166. package/dist/modules/file-browser/file-browser.d.ts +1 -1
  167. package/dist/modules/file-browser/fs-read-directory.d.ts +2 -6
  168. package/dist/modules/file-browser/locales/en-US.d.ts +25 -0
  169. package/dist/modules/file-browser/locales/zh-CN.d.ts +25 -0
  170. package/dist/modules/file-browser/style.css +1581 -126
  171. package/dist/modules/file-browser/types.d.ts +38 -29
  172. package/dist/modules/file-browser/use-file-browser.d.ts +6 -1
  173. package/dist/modules/file-browser/use-fs-preview.d.ts +15 -1
  174. package/dist/modules/scope-cascade/labels.d.ts +6 -0
  175. package/dist/modules/scope-cascade/locales/en-US.d.ts +6 -0
  176. package/dist/modules/scope-cascade/locales/zh-CN.d.ts +3 -0
  177. package/dist/modules/scope-cascade/scope-cascade.d.ts +1 -1
  178. package/dist/modules/scope-cascade/style.css +14 -2
  179. package/dist/modules/scope-cascade/types.d.ts +3 -0
  180. package/dist/modules/style.css +15853 -3484
  181. package/dist/nx~0.js +15 -0
  182. package/dist/n~0.js +238 -83
  183. package/dist/o~0.js +10 -7
  184. package/dist/p~0.js +27 -0
  185. package/dist/rslib-runtime~0.js +42 -0
  186. package/dist/r~0.js +152 -0
  187. package/dist/shared/components/drawer/drawer.d.ts +13 -0
  188. package/dist/shared/components/drawer/index.d.ts +1 -0
  189. package/dist/shared/components/overlay/use-overlay-position.d.ts +2 -2
  190. package/dist/shared/components/tooltip/use-portal-theme.d.ts +3 -0
  191. package/dist/shared/locale.d.ts +6 -0
  192. package/dist/style.css +26056 -10636
  193. package/dist/u~0.js +75 -58
  194. package/dist/viking-bot-composer~0.js +434 -77
  195. package/dist/viking-bot-interaction~0.js +11 -11
  196. package/package.json +13 -4
  197. package/dist/30~0.js +0 -1332
  198. package/dist/components/tui/tui-labels-zh.d.ts +0 -2
  199. package/dist/modules/file-browser/tree-info-copy.d.ts +0 -15
  200. package/dist/modules/file-browser/tree-info-copy.zh-CN.d.ts +0 -15
@@ -0,0 +1,15 @@
1
+ import type { ViewerHandle, ViewerViewModeOption } from '@ark-design/ui/file-viewer/core';
2
+ import type { FilePreviewViewMode } from './types.js';
3
+ /** Scope modes and handles to the actual file/level, including controlled navigation. */
4
+ export declare function useFilePreviewViewState(identity: string): {
5
+ viewMode: FilePreviewViewMode;
6
+ setViewMode: import("react").Dispatch<import("react").SetStateAction<FilePreviewViewMode>>;
7
+ viewModes: readonly string[];
8
+ setViewModes: import("react").Dispatch<import("react").SetStateAction<readonly string[]>>;
9
+ viewerHandle: {
10
+ identity: string;
11
+ current: ViewerHandle | null;
12
+ };
13
+ onHandleChange: (handle: ViewerHandle | null) => void;
14
+ onViewModesChange: (modes: readonly ViewerViewModeOption[]) => void;
15
+ };
@@ -1 +1 @@
1
- export { FilePreview, LoadingState } from "../30~0.js";
1
+ export { FilePreview, LoadingState } from "../3~0.js";
@@ -1,20 +1,5 @@
1
1
  import type { FileTreeInfoKey, FileTreeInfoLabels } from './types.js';
2
- /**
3
- * 内置英文文案。`FileTreeLabels.info` 未提供的键沿用这里的值。
4
- *
5
- * Built-in English copy. Keys missing from `FileTreeLabels.info` fall back here.
6
- */
7
2
  export declare const DEFAULT_INFO_LABELS: FileTreeInfoLabels;
8
- /**
9
- * 按宿主的覆盖合并内置文案,键为单位。宿主的空字符串表示该键不显示,因此
10
- * 合并时保留空串,由渲染方判断。
11
- *
12
- * Merges host overrides over the built-in copy, key by key. An empty host string
13
- * means "hide this key", so it is kept and the renderer decides.
14
- *
15
- * Returns the copy of one key, or `undefined` when the key is hidden or has no
16
- * copy.
17
- */
18
3
  export declare function resolveInfoCopy(key: FileTreeInfoKey, hostLabels: FileTreeInfoLabels | undefined): {
19
4
  description?: string;
20
5
  triggerBehavior?: string;
@@ -0,0 +1,4 @@
1
+ import type { FileTreeLabels } from './types.js';
2
+ import type { ResolvedLabels } from './file-tree-row-context.js';
3
+ import { type Locale } from '../../shared/locale.js';
4
+ export declare function resolveFileTreeLabels(locale?: Locale, labels?: FileTreeLabels): ResolvedLabels;
@@ -1,18 +1,8 @@
1
- /** 每一级缩进与祖先连线的宽度。Indent per level, and the guide through it. */
2
- export declare const INDENT = 16;
3
- export declare const CHEVRON_SIZE = 16;
4
1
  /** 行按深度缩进。Indents a row by its depth. */
5
2
  export declare function rowStyle(depth: number): {
6
- paddingLeft: number;
3
+ paddingLeft: string;
7
4
  };
8
- /**
9
- * 每一级祖先画一条竖线。线的位置固定在缩进列的中点,与设计稿一致——上一级的
10
- * 竖线穿过本行时正好落在自己缩进列的中心。
11
- *
12
- * One vertical line per ancestor level. The line sits at the centre of its indent
13
- * column, matching the design: an ancestor's guide crossing this row lands exactly
14
- * in the middle of that column.
15
- */
5
+ /** 每一级祖先画一条竖线,上下各溢出 1px 让相邻行接上。 */
16
6
  export declare function Guides({ depth }: {
17
7
  depth: number;
18
8
  }): import("react").JSX.Element;
@@ -0,0 +1,11 @@
1
+ import type { ResolvedLabels } from './file-tree-row-context.js';
2
+ import type { FileTreeProps } from './types.js';
3
+ type ToolbarProps = Pick<FileTreeProps, 'search' | 'refresh'> & {
4
+ text: ResolvedLabels;
5
+ refreshing: boolean;
6
+ onSearch?: () => void;
7
+ onRefresh?: () => void;
8
+ };
9
+ /** Optional host-driven search and refresh controls; no data fetching here. */
10
+ export declare function FileTreeToolbar({ search, refresh, text, refreshing, onSearch, onRefresh, }: ToolbarProps): import("react").JSX.Element | null;
11
+ export {};
@@ -0,0 +1,69 @@
1
+ declare const messages: {
2
+ search: string;
3
+ refresh: string;
4
+ empty: string;
5
+ error: string;
6
+ retry: string;
7
+ loadMore: string;
8
+ loading: string;
9
+ expand: string;
10
+ collapse: string;
11
+ info: {
12
+ description: {
13
+ userRoot: string;
14
+ memories: string;
15
+ peers: string;
16
+ privacy: string;
17
+ userResources: string;
18
+ sessions: string;
19
+ skills: string;
20
+ profile: string;
21
+ preferences: string;
22
+ entities: string;
23
+ events: string;
24
+ identity: string;
25
+ soul: string;
26
+ cases: string;
27
+ trajectories: string;
28
+ experiences: string;
29
+ sharedResources: string;
30
+ agentRoot: string;
31
+ agentEndpoints: string;
32
+ agentPayments: string;
33
+ agentSkills: string;
34
+ agentTools: string;
35
+ memoryRoot: string;
36
+ resourceRoot: string;
37
+ sessionRoot: string;
38
+ systemRoot: string;
39
+ };
40
+ triggerBehavior: {
41
+ userRoot: string;
42
+ memories: string;
43
+ peers: string;
44
+ userResources: string;
45
+ sessions: string;
46
+ skills: string;
47
+ profile: string;
48
+ preferences: string;
49
+ entities: string;
50
+ events: string;
51
+ identity: string;
52
+ soul: string;
53
+ cases: string;
54
+ trajectories: string;
55
+ experiences: string;
56
+ sharedResources: string;
57
+ agentEndpoints: string;
58
+ agentPayments: string;
59
+ agentSkills: string;
60
+ agentTools: string;
61
+ };
62
+ field: {
63
+ description: string;
64
+ triggerBehavior: string;
65
+ path: string;
66
+ };
67
+ };
68
+ };
69
+ export default messages;
@@ -0,0 +1,69 @@
1
+ declare const messages: {
2
+ search: string;
3
+ refresh: string;
4
+ empty: string;
5
+ error: string;
6
+ retry: string;
7
+ loadMore: string;
8
+ loading: string;
9
+ expand: string;
10
+ collapse: string;
11
+ info: {
12
+ description: {
13
+ userRoot: string;
14
+ memories: string;
15
+ peers: string;
16
+ privacy: string;
17
+ userResources: string;
18
+ sessions: string;
19
+ skills: string;
20
+ profile: string;
21
+ preferences: string;
22
+ entities: string;
23
+ events: string;
24
+ identity: string;
25
+ soul: string;
26
+ cases: string;
27
+ trajectories: string;
28
+ experiences: string;
29
+ sharedResources: string;
30
+ agentRoot: string;
31
+ agentEndpoints: string;
32
+ agentPayments: string;
33
+ agentSkills: string;
34
+ agentTools: string;
35
+ memoryRoot: string;
36
+ resourceRoot: string;
37
+ sessionRoot: string;
38
+ systemRoot: string;
39
+ };
40
+ triggerBehavior: {
41
+ userRoot: string;
42
+ memories: string;
43
+ peers: string;
44
+ userResources: string;
45
+ sessions: string;
46
+ skills: string;
47
+ profile: string;
48
+ preferences: string;
49
+ entities: string;
50
+ events: string;
51
+ identity: string;
52
+ soul: string;
53
+ cases: string;
54
+ trajectories: string;
55
+ experiences: string;
56
+ sharedResources: string;
57
+ agentEndpoints: string;
58
+ agentPayments: string;
59
+ agentSkills: string;
60
+ agentTools: string;
61
+ };
62
+ field: {
63
+ description: string;
64
+ triggerBehavior: string;
65
+ path: string;
66
+ };
67
+ };
68
+ };
69
+ export default messages;
@@ -1,7 +1,11 @@
1
- .ov-agent-connect, .ov-divider, .ov-file-browser, .ov-file-browser-entries, .ov-file-preview, .ov-file-tree, .ov-module-placeholder, .ov-popover, .ov-scope-switcher, .ov-tooltip, .ov-tui, .ov-viking-bot, .ov-viking-bot__interaction {
1
+ .ov-directory-tour, .ov-agent-connect, .ov-console, .ov-divider, .ov-file-browser-entries, .ov-drawer, .ov-file-browser, .ov-file-preview, .ov-file-tree, .ov-module-placeholder, .ov-popover, .ov-scope-switcher, .ov-tooltip, .ov-tui, .ov-viking-bot, .ov-viking-bot__popover, .ov-viking-bot__reference-picker--mention, .ov-viking-bot__interaction {
2
+ --ov-ui-tour-shadow-default: 0 15px 35px #0000000d, 0 5px 15px #0000000d;
3
+ --ov-ui-tour-highlight-default: #5252ff14;
2
4
  --ov-ui-primary-default: #5252ff;
3
5
  --ov-ui-primary-hover-default: #7075ff;
4
6
  --ov-ui-primary-active-default: #3833d2;
7
+ --ov-ui-primary-disabled-default: #acb4ff;
8
+ --ov-ui-text-on-primary-default: #fff;
5
9
  --ov-ui-primary-light-default: #f5f7ff;
6
10
  --ov-ui-connect-glow-warm-default: #ff952b0a;
7
11
  --ov-ui-connect-glow-pink-default: #fb4fbc0f;
@@ -19,18 +23,21 @@
19
23
  --ov-ui-bg-3-default: #f7f8fd;
20
24
  --ov-ui-bg-4-default: #f6f7fa;
21
25
  --ov-ui-bg-5-default: #f1f2f9;
26
+ --ov-ui-code-bg-default: #fbfbfc;
22
27
  --ov-ui-status-success-default: #1f9d55;
23
28
  --ov-ui-shadow-default: #0f172a;
29
+ --ov-ui-shadow-control-default: #0000000d;
24
30
  --ov-ui-focus-default: #5252ff;
25
31
  --ov-ui-fill-hover-default: #f1f2f9;
26
32
  --ov-ui-status-error-default: #c43838;
27
33
  --ov-ui-warning-default: #b26a00;
28
34
  --ov-ui-warning-light-default: #fff0b3;
35
+ --ov-ui-overlay-default: #0006;
29
36
  --ov-ui-tooltip-bg-default: #1f2329;
30
37
  --ov-ui-tooltip-text-default: #fff;
31
38
  }
32
39
 
33
- .dark .ov-agent-connect, .dark .ov-divider, .dark .ov-file-browser, .dark .ov-file-browser-entries, .dark .ov-file-preview, .dark .ov-file-tree, .dark .ov-module-placeholder, .dark .ov-popover, .dark .ov-scope-switcher, .dark .ov-tooltip, .dark .ov-tui, .dark .ov-viking-bot, .dark .ov-viking-bot__interaction {
40
+ .dark .ov-directory-tour, .dark .ov-agent-connect, .dark .ov-console, .dark .ov-divider, .dark .ov-file-browser-entries, .dark .ov-drawer, .dark .ov-file-browser, .dark .ov-file-preview, .dark .ov-file-tree, .dark .ov-module-placeholder, .dark .ov-popover, .dark .ov-scope-switcher, .dark .ov-tooltip, .dark .ov-tui, .dark .ov-viking-bot, .dark .ov-viking-bot__popover, .dark .ov-viking-bot__reference-picker--mention, .dark .ov-viking-bot__interaction {
34
41
  --ov-ui-primary-default: #5f5fff;
35
42
  --ov-ui-primary-hover-default: #7075ff;
36
43
  --ov-ui-primary-active-default: #4242ba;
@@ -56,9 +63,14 @@
56
63
  --ov-ui-warning-default: #e0a04a;
57
64
  --ov-ui-warning-light-default: #3a2f14;
58
65
  --ov-ui-tooltip-bg-default: #2a2d33;
66
+ --ov-ui-overlay-default: #000000a3;
59
67
  --ov-ui-tooltip-text-default: #f0f1f3;
60
68
  }
61
69
 
70
+ .dark .ov-viking-bot {
71
+ --ov-ui-code-bg-default: var(--ov-ui-bg-3-default);
72
+ }
73
+
62
74
  .ov-agent-connect {
63
75
  --ov-ui-connect-card-default: #fbfbfc;
64
76
  --ov-ui-connect-tabs-default: #f7f7f9;
@@ -119,19 +131,21 @@
119
131
  .ov-file-tree {
120
132
  --ov-ui-file-tree-row-height: 32px;
121
133
  --ov-ui-file-tree-row-radius: 4px;
122
- --ov-ui-file-tree-indent: 16px;
123
- --ov-ui-file-tree-text: var(--ov-ui-color-text-1, var(--ov-ui-text-1-default, #0b0b0f));
124
- --ov-ui-file-tree-text-muted: var(--ov-ui-color-text-3, var(--ov-ui-text-3-default, #6e718c));
125
- --ov-ui-file-tree-icon: var(--ov-ui-color-text-3, var(--ov-ui-text-3-default, #6e718c));
126
- --ov-ui-file-tree-row-hover: var(--ov-ui-color-bg-5, var(--ov-ui-bg-5-default, #f1f2f9));
127
- --ov-ui-file-tree-row-selected: var(--ov-ui-color-bg-4, var(--ov-ui-bg-4-default, #f6f7fa));
128
- --ov-ui-file-tree-guide: var(--ov-ui-color-border-2, var(--ov-ui-border-2-default, #e1e4f2));
129
- --ov-ui-file-tree-spinner-track: var(--ov-ui-color-border-3, var(--ov-ui-border-3-default, #d7daea));
130
- --ov-ui-file-tree-spinner: var(--ov-ui-color-primary, var(--ov-ui-primary-default, #5252ff));
131
- --ov-ui-file-tree-action: var(--ov-ui-color-primary, var(--ov-ui-primary-default, #5252ff));
132
- --ov-ui-file-tree-warning: var(--ov-ui-color-warning, var(--ov-ui-warning-default, #b26a00));
134
+ --ov-ui-file-tree-indent: 20px;
135
+ --ov-ui-file-tree-text: var(--ov-ui-color-text-1, var(--ov-ui-text-1-default));
136
+ --ov-ui-file-tree-text-muted: var(--ov-ui-color-text-3, var(--ov-ui-text-3-default));
137
+ --ov-ui-file-tree-icon: var(--ov-ui-color-text-3, var(--ov-ui-text-3-default));
138
+ --ov-ui-file-tree-row-hover: var(--ov-ui-color-bg-5, var(--ov-ui-bg-5-default));
139
+ --ov-ui-file-tree-row-selected: var(--ov-ui-color-primary-light, var(--ov-ui-primary-light-default));
140
+ --ov-ui-file-tree-guide: var(--ov-ui-color-border-1, var(--ov-ui-border-1-default));
141
+ --ov-ui-file-tree-spinner-track: var(--ov-ui-color-border-3, var(--ov-ui-border-3-default));
142
+ --ov-ui-file-tree-spinner: var(--ov-ui-color-primary, var(--ov-ui-primary-default));
143
+ --ov-ui-file-tree-action: var(--ov-ui-color-primary, var(--ov-ui-primary-default));
144
+ --ov-ui-file-tree-warning: var(--ov-ui-color-warning, var(--ov-ui-warning-default));
133
145
  box-sizing: border-box;
134
146
  min-width: 0;
147
+ max-width: 100%;
148
+ height: 100%;
135
149
  min-height: 0;
136
150
  color: var(--ov-ui-file-tree-text);
137
151
  flex-direction: column;
@@ -164,14 +178,19 @@
164
178
  width: max-content;
165
179
  min-width: 100%;
166
180
  height: var(--ov-ui-file-tree-row-height);
181
+ min-height: var(--ov-ui-file-tree-row-height);
167
182
  border-radius: var(--ov-ui-file-tree-row-radius);
168
183
  cursor: pointer;
169
184
  -webkit-user-select: none;
170
185
  user-select: none;
171
186
  outline: none;
187
+ flex: none;
172
188
  align-items: center;
173
189
  gap: 2px;
174
- padding-right: 4px;
190
+ padding-right: 8px;
191
+ font-family: inherit;
192
+ font-size: 13px;
193
+ line-height: 20px;
175
194
  display: flex;
176
195
  position: relative;
177
196
  }
@@ -216,6 +235,12 @@
216
235
  display: inline-flex;
217
236
  }
218
237
 
238
+ .ov-file-tree__toggle svg {
239
+ width: 12px;
240
+ height: 12px;
241
+ display: block;
242
+ }
243
+
219
244
  .ov-file-tree__toggle {
220
245
  color: var(--ov-ui-file-tree-text-muted);
221
246
  cursor: pointer;
@@ -371,7 +396,7 @@
371
396
  }
372
397
 
373
398
  .ov-file-tree__state-row[data-tone="error"] {
374
- color: var(--ov-ui-color-status-error, var(--ov-ui-status-error-default, #c43838));
399
+ color: var(--ov-ui-color-status-error, var(--ov-ui-status-error-default));
375
400
  }
376
401
 
377
402
  .ov-file-tree__state {
@@ -445,5 +470,108 @@
445
470
  color: var(--ov-file-tree-icon-dark, var(--ov-ui-file-tree-icon));
446
471
  }
447
472
 
473
+ .ov-file-tree__controls {
474
+ flex: none;
475
+ align-items: center;
476
+ gap: 8px;
477
+ min-width: 0;
478
+ padding: 1px 1px 7px;
479
+ display: flex;
480
+ }
481
+
482
+ .ov-file-tree__search, .ov-file-tree__refresh {
483
+ box-sizing: border-box;
484
+ border: 1px solid var(--ov-ui-color-border-2, var(--ov-ui-border-2-default));
485
+ background: var(--ov-ui-color-bg-1, var(--ov-ui-bg-1-default));
486
+ height: 32px;
487
+ color: var(--ov-ui-file-tree-icon);
488
+ box-shadow: 0 1px 1px
489
+ var(--ov-ui-color-shadow-control, var(--ov-ui-shadow-control-default));
490
+ cursor: pointer;
491
+ border-radius: 6px;
492
+ flex-shrink: 0;
493
+ justify-content: center;
494
+ align-items: center;
495
+ margin: 0;
496
+ padding: 0;
497
+ font-family: inherit;
498
+ font-size: 12px;
499
+ font-weight: 400;
500
+ line-height: 22px;
501
+ transition: border-color .16s, background-color .16s;
502
+ display: inline-flex;
503
+ }
504
+
505
+ .ov-file-tree__search {
506
+ min-width: 0;
507
+ color: var(--ov-ui-file-tree-text-muted);
508
+ text-align: left;
509
+ flex: auto;
510
+ justify-content: flex-start;
511
+ gap: 4px;
512
+ padding: 4px 12px;
513
+ }
514
+
515
+ .ov-file-tree__search svg {
516
+ flex: none;
517
+ width: 16px;
518
+ height: 16px;
519
+ display: block;
520
+ }
521
+
522
+ .ov-file-tree__search-label {
523
+ letter-spacing: .036px;
524
+ text-overflow: ellipsis;
525
+ white-space: nowrap;
526
+ min-width: 0;
527
+ overflow: hidden;
528
+ }
529
+
530
+ .ov-file-tree__refresh {
531
+ width: 32px;
532
+ }
533
+
534
+ .ov-file-tree__refresh svg {
535
+ flex: none;
536
+ display: block;
537
+ }
538
+
539
+ .ov-file-tree__search:hover:not(:disabled), .ov-file-tree__refresh:hover:not(:disabled) {
540
+ border-color: var(--ov-ui-color-border-3, var(--ov-ui-border-3-default));
541
+ }
542
+
543
+ .ov-file-tree__refresh:hover:not(:disabled) {
544
+ background: var(--ov-ui-file-tree-row-hover);
545
+ }
546
+
547
+ .ov-file-tree__search:focus-visible, .ov-file-tree__refresh:focus-visible {
548
+ outline: 2px solid var(--ov-ui-file-tree-action);
549
+ outline-offset: 2px;
550
+ }
551
+
552
+ .ov-file-tree__search:disabled, .ov-file-tree__refresh:disabled {
553
+ cursor: not-allowed;
554
+ opacity: .6;
555
+ }
556
+
557
+ .ov-file-tree__refresh[aria-busy="true"] {
558
+ cursor: wait;
559
+ opacity: 1;
560
+ }
561
+
562
+ .ov-file-tree__refresh-spinning {
563
+ animation: .9s linear infinite ov-file-tree-spin;
564
+ }
565
+
566
+ @media (prefers-reduced-motion: reduce) {
567
+ .ov-file-tree__search, .ov-file-tree__refresh {
568
+ transition: none;
569
+ }
570
+
571
+ .ov-file-tree__refresh-spinning {
572
+ animation-duration: 2s;
573
+ }
574
+ }
575
+
448
576
 
449
577
 
@@ -1,3 +1,4 @@
1
+ import type { Locale } from '../../shared/locale.js';
1
2
  import type { ForwardRefExoticComponent, HTMLAttributes, PropsWithoutRef, ReactNode, RefAttributes } from 'react';
2
3
  /**
3
4
  * 所有行的公共字段。行是按宿主展平后的顺序渲染的,因此 `id` 与 `depth` 每行都要有。
@@ -380,10 +381,14 @@ export interface FileTreeInfoLabels {
380
381
  };
381
382
  }
382
383
  /**
383
- * 可替换文案,组件内置英文默认值。
384
- * Replaceable copy; the component ships English defaults.
384
+ * 可替换文案,组件内置中英文文案。
385
+ * Replaceable copy with built-in Chinese and English defaults.
385
386
  */
386
387
  export interface FileTreeLabels {
388
+ /** 搜索入口文案。Search trigger label. */
389
+ search?: string;
390
+ /** 刷新按钮的无障碍名称。Accessible refresh button label. */
391
+ refresh?: string;
387
392
  /**
388
393
  * 空树提示。
389
394
  * Empty tree message.
@@ -428,9 +433,8 @@ export interface FileTreeLabels {
428
433
  info?: FileTreeInfoLabels;
429
434
  }
430
435
  /**
431
- * 树的插槽。目前只有工具栏,页面层可自行决定内容与交互。
432
- * Slots of the tree. Only the toolbar for now; the page layer owns its content
433
- * and interaction.
436
+ * 树的插槽。宿主可追加工具栏内容或替换加载指示器。
437
+ * Tree slots for additional toolbar content and a custom loading indicator.
434
438
  */
435
439
  export interface FileTreeSlots {
436
440
  /**
@@ -475,6 +479,10 @@ export interface FileTreeHandle {
475
479
  }
476
480
  /** 文件树操作的执行能力。File-tree operation capabilities. */
477
481
  export interface FileTreeOperations {
482
+ /** 打开宿主搜索界面。Opens the host's search interface. */
483
+ search?: () => Promise<void>;
484
+ /** 刷新目录;等待期间自动显示加载态。Refreshes the tree with a pending state. */
485
+ refresh?: () => Promise<void>;
478
486
  /** 选中条目。Selects an entry. */
479
487
  select?: (row: FileTreeEntryRow) => Promise<void>;
480
488
  /** 展开或折叠目录。Expands or collapses a directory. */
@@ -502,6 +510,8 @@ export interface FileTreeProps extends Omit<HTMLAttributes<HTMLDivElement>, 'chi
502
510
  * Visible rows in render order.
503
511
  */
504
512
  rows: readonly FileTreeRow[];
513
+ /** 内置中英文文案的语言。Language of the built-in interface copy. */
514
+ locale: Locale;
505
515
  /**
506
516
  * 操作的执行能力;省略对应方法时禁用该操作。
507
517
  * Operation capabilities; omitting a method disables its operation.
@@ -512,6 +522,21 @@ export interface FileTreeProps extends Omit<HTMLAttributes<HTMLDivElement>, 'chi
512
522
  * Selected row id, owned by the host.
513
523
  */
514
524
  selectedId?: string | null;
525
+ /**
526
+ * 显示内置搜索入口;默认隐藏,未提供 operations.search 时禁用。
527
+ * Shows the built-in search trigger. Hidden by default; disabled without operations.search.
528
+ */
529
+ search?: boolean | {
530
+ disabled?: boolean;
531
+ };
532
+ /**
533
+ * 显示内置刷新按钮;默认隐藏。loading 可表达宿主额外的刷新状态。
534
+ * Shows the refresh button. Hidden by default; loading adds a host-controlled pending state.
535
+ */
536
+ refresh?: boolean | {
537
+ disabled?: boolean;
538
+ loading?: boolean;
539
+ };
515
540
  /**
516
541
  * 首次加载是否已完成。
517
542
  * Whether the tree has finished its first load.
@@ -590,15 +615,18 @@ export interface FileTreeProps extends Omit<HTMLAttributes<HTMLDivElement>, 'chi
590
615
  * Called after retention settings open successfully, with the URI; not called on failure.
591
616
  */
592
617
  onOpenRetentionSettings?: (uri: string) => void;
618
+ /** 搜索界面成功打开后触发。Called after search opens successfully. */
619
+ onSearch?: () => void;
620
+ /** 刷新成功后触发,失败时不触发。Called after a successful refresh only. */
621
+ onRefresh?: () => void;
593
622
  /**
594
- * 树的插槽。工具栏由页面层实现,可以是搜索、导入来源、刷新等任意组合。
595
- * Slots of the tree. The toolbar is implemented by the page layer and can
596
- * hold search, import sources, refresh or any other combination.
623
+ * 自定义工具栏位于内置搜索与刷新上方,可放导入等宿主操作。
624
+ * A custom toolbar above built-in controls, for host actions such as import.
597
625
  */
598
626
  slots?: FileTreeSlots;
599
627
  /**
600
- * 可替换文案,缺省为英文。
601
- * Replaceable copy; English by default.
628
+ * 可替换文案,未提供的项使用当前 locale 的内置文案。
629
+ * Replaceable copy; omitted fields follow locale.
602
630
  */
603
631
  labels?: FileTreeLabels;
604
632
  }
@@ -1,5 +1,5 @@
1
1
  import type { FileTreeEntryRow, FileTreeErrorRow, FileTreeLoadMoreRow, FileTreeProps } from './types.js';
2
- type ActionProps = Pick<FileTreeProps, 'operations' | 'onSelect' | 'onToggleExpand' | 'onLoadMore' | 'onRetry' | 'onOpenRetentionSettings'>;
2
+ type ActionProps = Pick<FileTreeProps, 'operations' | 'onSelect' | 'onToggleExpand' | 'onLoadMore' | 'onRetry' | 'onOpenRetentionSettings' | 'onSearch' | 'onRefresh'>;
3
3
  /**
4
4
  * 把 `operations` 包成带成功通知的回调:同一操作未完成时忽略重复触发,
5
5
  * 失败时不触发通知。
@@ -8,6 +8,9 @@ type ActionProps = Pick<FileTreeProps, 'operations' | 'onSelect' | 'onToggleExpa
8
8
  * pending operation is ignored, and a rejection fires no notification.
9
9
  */
10
10
  export declare function useFileTreeActions(props: ActionProps): {
11
+ refreshing: boolean;
12
+ onSearch: (() => undefined) | undefined;
13
+ onRefresh: (() => void) | undefined;
11
14
  onSelect: ((row: FileTreeEntryRow) => undefined) | undefined;
12
15
  onToggleExpand: ((row: FileTreeEntryRow) => undefined) | undefined;
13
16
  onLoadMore: ((row: FileTreeLoadMoreRow) => undefined) | undefined;
@@ -0,0 +1,3 @@
1
+ import type { ScopeSwitcherLabels } from './types.js';
2
+ import { type Locale } from '../../shared/locale.js';
3
+ export declare function resolveScopeLabels(locale?: Locale, labels?: ScopeSwitcherLabels): Required<ScopeSwitcherLabels>;
@@ -0,0 +1,8 @@
1
+ declare const messages: {
2
+ loading: string;
3
+ searchPlaceholder: string;
4
+ empty: string;
5
+ noMatch: string;
6
+ error: string;
7
+ };
8
+ export default messages;
@@ -0,0 +1,8 @@
1
+ declare const messages: {
2
+ loading: string;
3
+ searchPlaceholder: string;
4
+ empty: string;
5
+ noMatch: string;
6
+ error: string;
7
+ };
8
+ export default messages;
@@ -7,5 +7,5 @@ export declare function ScopePanel({ label, data, state, slots, actions, onSelec
7
7
  slots?: ScopeSwitcherSlots;
8
8
  actions?: ScopeSwitcherActions;
9
9
  onSelect: NonNullable<ScopeSwitcherActions['onSelect']>;
10
- labels?: ScopeSwitcherLabels;
10
+ labels: Required<ScopeSwitcherLabels>;
11
11
  }): import("react").JSX.Element;
@@ -3,4 +3,4 @@ export { ScopeSelector } from './scope-selector.js';
3
3
  export { SCOPE_SWITCHER_SEARCH_THRESHOLD } from './types.js';
4
4
  export type { ScopeSelectorBaseProps, ScopeSelectorFixedProps, ScopeSelectorProps, ScopeSelectorSelectableProps, ScopeSwitcherActions, ScopeSwitcherData, ScopeSwitcherIdentity, ScopeSwitcherLabels, ScopeSwitcherOption, ScopeSwitcherPanelContent, ScopeSwitcherProps, ScopeSwitcherScrollMetrics, ScopeSwitcherSlots, ScopeSwitcherState, ScopeSwitcherTrigger, } from './types.js';
5
5
  /** No shared state, data aggregation or subscription in the layout root. */
6
- export declare function ScopeSwitcher({ children, className, ...props }: ScopeSwitcherProps): import("react").JSX.Element;
6
+ export declare function ScopeSwitcher({ locale, children, className, ...props }: ScopeSwitcherProps): import("react").JSX.Element;
@@ -1,7 +1,11 @@
1
- .ov-agent-connect, .ov-divider, .ov-file-browser, .ov-file-browser-entries, .ov-file-preview, .ov-file-tree, .ov-module-placeholder, .ov-popover, .ov-scope-switcher, .ov-tooltip, .ov-tui, .ov-viking-bot, .ov-viking-bot__interaction {
1
+ .ov-directory-tour, .ov-agent-connect, .ov-console, .ov-divider, .ov-file-browser-entries, .ov-drawer, .ov-file-browser, .ov-file-preview, .ov-file-tree, .ov-module-placeholder, .ov-popover, .ov-scope-switcher, .ov-tooltip, .ov-tui, .ov-viking-bot, .ov-viking-bot__popover, .ov-viking-bot__reference-picker--mention, .ov-viking-bot__interaction {
2
+ --ov-ui-tour-shadow-default: 0 15px 35px #0000000d, 0 5px 15px #0000000d;
3
+ --ov-ui-tour-highlight-default: #5252ff14;
2
4
  --ov-ui-primary-default: #5252ff;
3
5
  --ov-ui-primary-hover-default: #7075ff;
4
6
  --ov-ui-primary-active-default: #3833d2;
7
+ --ov-ui-primary-disabled-default: #acb4ff;
8
+ --ov-ui-text-on-primary-default: #fff;
5
9
  --ov-ui-primary-light-default: #f5f7ff;
6
10
  --ov-ui-connect-glow-warm-default: #ff952b0a;
7
11
  --ov-ui-connect-glow-pink-default: #fb4fbc0f;
@@ -19,18 +23,21 @@
19
23
  --ov-ui-bg-3-default: #f7f8fd;
20
24
  --ov-ui-bg-4-default: #f6f7fa;
21
25
  --ov-ui-bg-5-default: #f1f2f9;
26
+ --ov-ui-code-bg-default: #fbfbfc;
22
27
  --ov-ui-status-success-default: #1f9d55;
23
28
  --ov-ui-shadow-default: #0f172a;
29
+ --ov-ui-shadow-control-default: #0000000d;
24
30
  --ov-ui-focus-default: #5252ff;
25
31
  --ov-ui-fill-hover-default: #f1f2f9;
26
32
  --ov-ui-status-error-default: #c43838;
27
33
  --ov-ui-warning-default: #b26a00;
28
34
  --ov-ui-warning-light-default: #fff0b3;
35
+ --ov-ui-overlay-default: #0006;
29
36
  --ov-ui-tooltip-bg-default: #1f2329;
30
37
  --ov-ui-tooltip-text-default: #fff;
31
38
  }
32
39
 
33
- .dark .ov-agent-connect, .dark .ov-divider, .dark .ov-file-browser, .dark .ov-file-browser-entries, .dark .ov-file-preview, .dark .ov-file-tree, .dark .ov-module-placeholder, .dark .ov-popover, .dark .ov-scope-switcher, .dark .ov-tooltip, .dark .ov-tui, .dark .ov-viking-bot, .dark .ov-viking-bot__interaction {
40
+ .dark .ov-directory-tour, .dark .ov-agent-connect, .dark .ov-console, .dark .ov-divider, .dark .ov-file-browser-entries, .dark .ov-drawer, .dark .ov-file-browser, .dark .ov-file-preview, .dark .ov-file-tree, .dark .ov-module-placeholder, .dark .ov-popover, .dark .ov-scope-switcher, .dark .ov-tooltip, .dark .ov-tui, .dark .ov-viking-bot, .dark .ov-viking-bot__popover, .dark .ov-viking-bot__reference-picker--mention, .dark .ov-viking-bot__interaction {
34
41
  --ov-ui-primary-default: #5f5fff;
35
42
  --ov-ui-primary-hover-default: #7075ff;
36
43
  --ov-ui-primary-active-default: #4242ba;
@@ -56,9 +63,14 @@
56
63
  --ov-ui-warning-default: #e0a04a;
57
64
  --ov-ui-warning-light-default: #3a2f14;
58
65
  --ov-ui-tooltip-bg-default: #2a2d33;
66
+ --ov-ui-overlay-default: #000000a3;
59
67
  --ov-ui-tooltip-text-default: #f0f1f3;
60
68
  }
61
69
 
70
+ .dark .ov-viking-bot {
71
+ --ov-ui-code-bg-default: var(--ov-ui-bg-3-default);
72
+ }
73
+
62
74
  .ov-agent-connect {
63
75
  --ov-ui-connect-card-default: #fbfbfc;
64
76
  --ov-ui-connect-tabs-default: #f7f7f9;