@openviking/react 0.1.3 → 0.1.5

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 (209) hide show
  1. package/LICENSE.arco-design +21 -0
  2. package/README.md +27 -15
  3. package/dist/0~0.js +19 -0
  4. package/dist/28~0.js +15 -0
  5. package/dist/2~0.js +2270 -29
  6. package/dist/2~0.js.LICENSE.txt +23 -0
  7. package/dist/3c~0.js +2208 -0
  8. package/dist/3~0.js +1207 -1982
  9. package/dist/4~0.js +18 -0
  10. package/dist/9~0.js +43 -0
  11. package/dist/{1~0.js → ae~0.js} +11 -26
  12. package/dist/ark-message-list-view~0.js +530 -119
  13. package/dist/a~0.js +1300 -14
  14. package/dist/c7~0.js +38 -2
  15. package/dist/ck~0.js +23 -0
  16. package/dist/client/provider.d.ts +15 -9
  17. package/dist/client/types.d.ts +5 -5
  18. package/dist/client.js +2 -1
  19. package/dist/components/agent-connect/agent-connect-code-block.d.ts +14 -0
  20. package/dist/components/agent-connect/agent-connect-copy.d.ts +22 -33
  21. package/dist/components/agent-connect/agent-connect-design.d.ts +1936 -168
  22. package/dist/components/agent-connect/agent-connect-installer.d.ts +1 -0
  23. package/dist/components/agent-connect/agent-connect-instructions-view.d.ts +4 -6
  24. package/dist/components/agent-connect/agent-connect-instructions.d.ts +148 -0
  25. package/dist/components/agent-connect/agent-connect-markdown.d.ts +8 -2
  26. package/dist/components/agent-connect/agent-connect-mask.d.ts +10 -0
  27. package/dist/components/agent-connect/agent-connect.d.ts +1 -1
  28. package/dist/components/agent-connect/locales/en-US.d.ts +23 -0
  29. package/dist/components/agent-connect/locales/zh-CN.d.ts +3 -0
  30. package/dist/components/agent-connect/style.css +129 -3
  31. package/dist/components/agent-connect/types.d.ts +7 -4
  32. package/dist/components/agent-connect/use-agent-connect-copy.d.ts +6 -0
  33. package/dist/components/directory-tour/directory-tour.d.ts +3 -0
  34. package/dist/components/directory-tour/index.d.ts +3 -0
  35. package/dist/components/directory-tour/locales/en-US.d.ts +3 -0
  36. package/dist/components/directory-tour/locales/zh-CN.d.ts +3 -0
  37. package/dist/components/directory-tour/steps.d.ts +5 -0
  38. package/dist/components/directory-tour/style.css +237 -0
  39. package/dist/components/directory-tour/style.js +0 -0
  40. package/dist/components/directory-tour/types.d.ts +43 -0
  41. package/dist/components/directory-tour/use-tour-anchor.d.ts +5 -0
  42. package/dist/components/directory-tour/use-tour-position.d.ts +12 -0
  43. package/dist/components/directory-tour.js +40 -0
  44. package/dist/components/file-browser-entries/file-browser-entries.d.ts +5 -5
  45. package/dist/components/file-browser-entries/labels.d.ts +3 -0
  46. package/dist/components/file-browser-entries/locales/en-US.d.ts +6 -0
  47. package/dist/components/file-browser-entries/locales/zh-CN.d.ts +6 -0
  48. package/dist/components/file-browser-entries/style.css +866 -2
  49. package/dist/components/file-browser-entries/types.d.ts +34 -16
  50. package/dist/components/file-preview/file-preview-adapters.d.ts +2 -1
  51. package/dist/components/file-preview/file-preview-body.d.ts +2 -1
  52. package/dist/components/file-preview/file-preview-breadcrumb-menu.d.ts +2 -1
  53. package/dist/components/file-preview/file-preview-breadcrumb.d.ts +2 -1
  54. package/dist/components/file-preview/file-preview-directory.d.ts +2 -1
  55. package/dist/components/file-preview/file-preview-handle-adapters.d.ts +2 -1
  56. package/dist/components/file-preview/file-preview-header.d.ts +6 -2
  57. package/dist/components/file-preview/file-preview-image-frame.d.ts +5 -0
  58. package/dist/components/file-preview/file-preview-labels.d.ts +2 -14
  59. package/dist/components/file-preview/file-preview-level-tabs.d.ts +7 -0
  60. package/dist/components/file-preview/file-preview-markdown-images.d.ts +13 -0
  61. package/dist/components/file-preview/file-preview-panels.d.ts +5 -2
  62. package/dist/components/file-preview/file-preview-viewer.d.ts +2 -1
  63. package/dist/components/file-preview/file-preview.d.ts +0 -1
  64. package/dist/components/file-preview/index.d.ts +2 -1
  65. package/dist/components/file-preview/locales/en-US.d.ts +16 -0
  66. package/dist/components/file-preview/locales/zh-CN.d.ts +16 -0
  67. package/dist/components/file-preview/style.css +160 -2
  68. package/dist/components/file-preview/types.d.ts +34 -10
  69. package/dist/components/file-preview/use-file-preview-levels.d.ts +7 -0
  70. package/dist/components/file-preview/use-file-preview-view-state.d.ts +15 -0
  71. package/dist/components/file-preview.js +1 -1
  72. package/dist/components/file-tree/file-tree-info-labels.d.ts +0 -15
  73. package/dist/components/file-tree/file-tree-labels.d.ts +4 -0
  74. package/dist/components/file-tree/file-tree-row-shared.d.ts +2 -12
  75. package/dist/components/file-tree/file-tree-toolbar.d.ts +11 -0
  76. package/dist/components/file-tree/locales/en-US.d.ts +69 -0
  77. package/dist/components/file-tree/locales/zh-CN.d.ts +69 -0
  78. package/dist/components/file-tree/style.css +143 -15
  79. package/dist/components/file-tree/types.d.ts +38 -10
  80. package/dist/components/file-tree/use-file-tree-actions.d.ts +4 -1
  81. package/dist/components/scope-switcher/labels.d.ts +3 -0
  82. package/dist/components/scope-switcher/locales/en-US.d.ts +8 -0
  83. package/dist/components/scope-switcher/locales/zh-CN.d.ts +8 -0
  84. package/dist/components/scope-switcher/scope-panel.d.ts +1 -1
  85. package/dist/components/scope-switcher/scope-switcher.d.ts +2 -2
  86. package/dist/components/scope-switcher/style.css +14 -2
  87. package/dist/components/scope-switcher/types.d.ts +12 -6
  88. package/dist/components/style.css +10030 -6763
  89. package/dist/components/tui/locales/en-US.d.ts +35 -0
  90. package/dist/components/tui/locales/zh-CN.d.ts +35 -0
  91. package/dist/components/tui/style.css +310 -18
  92. package/dist/components/tui/tui-copy-button.d.ts +1 -1
  93. package/dist/components/tui/tui-empty.d.ts +25 -0
  94. package/dist/components/tui/tui-labels.d.ts +2 -2
  95. package/dist/components/tui/tui.d.ts +1 -1
  96. package/dist/components/tui/types.d.ts +35 -12
  97. package/dist/components/tui.js +1 -1
  98. package/dist/components/viking-bot/ark-adapter.d.ts +2 -0
  99. package/dist/components/viking-bot/ark-message-body.d.ts +1 -7
  100. package/dist/components/viking-bot/ark-message-list-view.d.ts +4 -1
  101. package/dist/components/viking-bot/ark-message-row.d.ts +3 -1
  102. package/dist/components/viking-bot/bot-popover.d.ts +9 -0
  103. package/dist/components/viking-bot/capabilities.d.ts +49 -0
  104. package/dist/components/viking-bot/composer-attachments.d.ts +13 -0
  105. package/dist/components/viking-bot/composer-controls.d.ts +10 -0
  106. package/dist/components/viking-bot/composer-footer.d.ts +17 -0
  107. package/dist/components/viking-bot/composer-references.d.ts +20 -0
  108. package/dist/components/viking-bot/composer-text.d.ts +10 -0
  109. package/dist/components/viking-bot/index.d.ts +3 -1
  110. package/dist/components/viking-bot/interaction/ask-human-fields.d.ts +1 -1
  111. package/dist/components/viking-bot/interaction/labels.d.ts +2 -1
  112. package/dist/components/viking-bot/interaction/locales/en-US.d.ts +17 -0
  113. package/dist/components/viking-bot/interaction/locales/zh-CN.d.ts +17 -0
  114. package/dist/components/viking-bot/interaction/types.d.ts +8 -3
  115. package/dist/components/viking-bot/interaction/viking-bot-interaction.d.ts +1 -1
  116. package/dist/components/viking-bot/labels.d.ts +2 -0
  117. package/dist/components/viking-bot/locales/en-US.d.ts +40 -0
  118. package/dist/components/viking-bot/locales/zh-CN.d.ts +40 -0
  119. package/dist/components/viking-bot/markdown-links.d.ts +27 -0
  120. package/dist/components/viking-bot/message-activity.d.ts +7 -0
  121. package/dist/components/viking-bot/message-code-block.d.ts +8 -0
  122. package/dist/components/viking-bot/message-footer.d.ts +8 -0
  123. package/dist/components/viking-bot/message-markdown.d.ts +9 -0
  124. package/dist/components/viking-bot/model.d.ts +37 -3
  125. package/dist/components/viking-bot/quick-input-tracker.d.ts +16 -0
  126. package/dist/components/viking-bot/quick-inputs.d.ts +6 -0
  127. package/dist/components/viking-bot/reference-picker.d.ts +16 -0
  128. package/dist/components/viking-bot/session-actions.d.ts +11 -0
  129. package/dist/components/viking-bot/style.css +1486 -48
  130. package/dist/components/viking-bot/tool-activity.d.ts +9 -0
  131. package/dist/components/viking-bot/tool-result-links.d.ts +6 -0
  132. package/dist/components/viking-bot/types.d.ts +20 -8
  133. package/dist/components/viking-bot/use-quick-input.d.ts +17 -0
  134. package/dist/components/viking-bot/viking-bot.d.ts +1 -6
  135. package/dist/components/viking-bot/welcome.d.ts +8 -0
  136. package/dist/components/viking-bot.js +1 -1
  137. package/dist/c~0.js +550 -69
  138. package/dist/e~0.js +335 -0
  139. package/dist/file-preview-viewer~0.js +90 -8
  140. package/dist/f~0.js +49 -51
  141. package/dist/h~0.js +5 -1
  142. package/dist/icons/console-icons.d.ts +12 -0
  143. package/dist/icons/index.d.ts +2 -0
  144. package/dist/icons/viking-bot-icons.d.ts +6 -0
  145. package/dist/icons.js +1 -0
  146. package/dist/index.d.ts +2 -0
  147. package/dist/index.js +2 -1
  148. package/dist/k~0.js +1 -0
  149. package/dist/lg~0.js +155 -0
  150. package/dist/lk~0.js +40 -8
  151. package/dist/l~0.js +170 -181
  152. package/dist/modules/console/command-messages.d.ts +19 -0
  153. package/dist/modules/console/command-parser.d.ts +15 -0
  154. package/dist/modules/console/command-specs.d.ts +15 -0
  155. package/dist/modules/console/commands.d.ts +6 -0
  156. package/dist/modules/console/console-history.d.ts +10 -0
  157. package/dist/modules/console/console-toolbar.d.ts +18 -0
  158. package/dist/modules/console/console.d.ts +1 -3
  159. package/dist/modules/console/controller.d.ts +17 -0
  160. package/dist/modules/console/index.d.ts +2 -0
  161. package/dist/modules/console/labels.d.ts +61 -0
  162. package/dist/modules/console/locales/en-US.d.ts +49 -0
  163. package/dist/modules/console/locales/zh-CN.d.ts +3 -0
  164. package/dist/modules/console/localize-records.d.ts +11 -0
  165. package/dist/modules/console/results.d.ts +2 -0
  166. package/dist/modules/console/style.css +10905 -15
  167. package/dist/modules/console/types.d.ts +59 -80
  168. package/dist/modules/console/use-console.d.ts +3 -0
  169. package/dist/modules/console.js +1 -1
  170. package/dist/modules/file-browser/file-browser-detail.d.ts +2 -1
  171. package/dist/modules/file-browser/file-browser-labels.d.ts +11 -12
  172. package/dist/modules/file-browser/file-browser-toolbar.d.ts +3 -4
  173. package/dist/modules/file-browser/file-browser-tree-pane.d.ts +7 -5
  174. package/dist/modules/file-browser/file-browser.d.ts +1 -1
  175. package/dist/modules/file-browser/fs-read-directory.d.ts +2 -6
  176. package/dist/modules/file-browser/locales/en-US.d.ts +25 -0
  177. package/dist/modules/file-browser/locales/zh-CN.d.ts +25 -0
  178. package/dist/modules/file-browser/style.css +1695 -126
  179. package/dist/modules/file-browser/types.d.ts +38 -29
  180. package/dist/modules/file-browser/use-file-browser.d.ts +6 -1
  181. package/dist/modules/file-browser/use-fs-preview.d.ts +15 -1
  182. package/dist/modules/scope-cascade/labels.d.ts +6 -0
  183. package/dist/modules/scope-cascade/locales/en-US.d.ts +6 -0
  184. package/dist/modules/scope-cascade/locales/zh-CN.d.ts +3 -0
  185. package/dist/modules/scope-cascade/scope-cascade.d.ts +2 -2
  186. package/dist/modules/scope-cascade/style.css +14 -2
  187. package/dist/modules/scope-cascade/types.d.ts +3 -0
  188. package/dist/modules/style.css +15938 -3455
  189. package/dist/nx~0.js +15 -0
  190. package/dist/n~0.js +240 -83
  191. package/dist/o~0.js +10 -7
  192. package/dist/p~0.js +27 -0
  193. package/dist/rslib-runtime~0.js +42 -0
  194. package/dist/r~0.js +152 -0
  195. package/dist/shared/components/drawer/drawer.d.ts +13 -0
  196. package/dist/shared/components/drawer/index.d.ts +1 -0
  197. package/dist/shared/components/overlay/use-overlay-position.d.ts +2 -2
  198. package/dist/shared/components/tooltip/use-portal-theme.d.ts +3 -0
  199. package/dist/shared/locale-context.d.ts +8 -0
  200. package/dist/shared/locale.d.ts +6 -0
  201. package/dist/style.css +26339 -10577
  202. package/dist/u~0.js +397 -152
  203. package/dist/viking-bot-composer~0.js +436 -77
  204. package/dist/viking-bot-interaction~0.js +13 -11
  205. package/package.json +15 -4
  206. package/dist/30~0.js +0 -1332
  207. package/dist/components/tui/tui-labels-zh.d.ts +0 -2
  208. package/dist/modules/file-browser/tree-info-copy.d.ts +0 -15
  209. package/dist/modules/file-browser/tree-info-copy.zh-CN.d.ts +0 -15
package/dist/nx~0.js ADDED
@@ -0,0 +1,15 @@
1
+ function mergeLabels(defaults, overrides) {
2
+ const result = {
3
+ ...defaults
4
+ };
5
+ for (const key of Object.keys(overrides ?? {})){
6
+ const value = overrides?.[key];
7
+ if (null != value) result[key] = value;
8
+ }
9
+ return result;
10
+ }
11
+ function resolveLocale(messages, locale = 'en-US', overrides) {
12
+ const defaults = messages[locale] ?? messages['en-US'];
13
+ return overrides ? mergeLabels(defaults, overrides) : defaults;
14
+ }
15
+ export { mergeLabels, resolveLocale };
package/dist/n~0.js CHANGED
@@ -1,8 +1,164 @@
1
1
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
2
2
  import { cloneElement, forwardRef, useCallback, useEffect, useId, useImperativeHandle, useRef, useState } from "react";
3
3
  import { createPortal } from "react-dom";
4
+ import { resolveLocale, mergeLabels } from "./nx~0.js";
4
5
  import { FolderOpenIcon, FolderIcon, ChevronRightIcon, DocumentIcon } from "./k~0.js";
5
6
  import { useOverlayPosition } from "./o~0.js";
7
+ import { searchreact } from "./p~0.js";
8
+ import { useLocale } from "./28~0.js";
9
+ const messages = {
10
+ search: 'Search files…',
11
+ refresh: 'Refresh file tree',
12
+ empty: 'No files yet',
13
+ error: 'Failed to load',
14
+ retry: 'Retry',
15
+ loadMore: 'Load more',
16
+ loading: 'Loading…',
17
+ expand: 'Expand {name}',
18
+ collapse: 'Collapse {name}',
19
+ info: {
20
+ description: {
21
+ userRoot: 'Context data for the current user',
22
+ memories: 'Long-term memory accumulated across sessions',
23
+ peers: 'Context isolated per application or workspace',
24
+ privacy: 'Keys and other sensitive configuration',
25
+ userResources: 'Private knowledge of this user',
26
+ sessions: 'Conversation and task execution records',
27
+ skills: 'Skills and tools available to the agent',
28
+ profile: 'User identity and background',
29
+ preferences: 'Personalized user preferences',
30
+ entities: 'People, projects, organizations and other entities',
31
+ events: 'Key events archived by date',
32
+ identity: 'Agent name and persona',
33
+ soul: 'Agent behaviour guidelines and boundaries',
34
+ cases: 'Interaction cases used to train experience',
35
+ trajectories: 'Reusable task execution trajectories',
36
+ experiences: 'Execution experience distilled automatically',
37
+ sharedResources: 'External resources the agent can reference',
38
+ agentRoot: 'Agent capabilities, tools and experience',
39
+ agentEndpoints: 'Communication endpoints shared across the account',
40
+ agentPayments: 'Payment capabilities shared across the account',
41
+ agentSkills: 'Skill definitions callable across the account',
42
+ agentTools: 'Tool configuration shared across the account',
43
+ memoryRoot: 'Long-term memory and accumulated information',
44
+ resourceRoot: 'External knowledge the agent can reference',
45
+ sessionRoot: 'Raw session records of the user',
46
+ systemRoot: 'Built-in system resources'
47
+ },
48
+ triggerBehavior: {
49
+ userRoot: 'Created from the current user identity; no manual setup needed',
50
+ memories: 'Committed sessions, explicit requests to remember, or continuous extraction from sessions',
51
+ peers: 'Created when connecting as a specific peer, isolating memory and material per peer_id',
52
+ userResources: 'Imported material, uploaded to this user’s private resource directory',
53
+ sessions: 'Created when a session calls OpenViking; messages, tool calls and archives are saved continuously',
54
+ skills: 'Created, installed or imported as a personal skill',
55
+ profile: 'A stable, explicit user background or working style appears in conversation',
56
+ preferences: 'The user explicitly states a specific preference, habit or style',
57
+ entities: 'A person, project or organization worth keeping appears in conversation',
58
+ events: 'An important decision, commitment, arrangement, progress or result appears in dialogue',
59
+ identity: 'Initialized on the first memory extraction run; later updated by write operations',
60
+ soul: 'Initialized on the first memory extraction run; later adjusted by write operations',
61
+ cases: 'A session with a clear task and an evaluable execution result is committed',
62
+ trajectories: 'A task containing decisions, tool calls or multi-step execution is committed',
63
+ experiences: 'Distilled from task cases and execution trajectories',
64
+ sharedResources: 'Imported material, uploaded to a shared resource space',
65
+ agentEndpoints: 'Configured when an integration endpoint is registered for the account',
66
+ agentPayments: 'Configured when a payment capability is enabled for the account',
67
+ agentSkills: 'Installed or imported as a shared skill available to every agent',
68
+ agentTools: 'Configured when a tool is registered for the account'
69
+ },
70
+ field: {
71
+ description: "Description",
72
+ triggerBehavior: 'Trigger',
73
+ path: 'Path'
74
+ }
75
+ }
76
+ };
77
+ const en_US = messages;
78
+ const zh_CN_messages = {
79
+ search: '搜索文件…',
80
+ refresh: '刷新文件树',
81
+ empty: '暂无文件',
82
+ error: '加载失败',
83
+ retry: '重试',
84
+ loadMore: '加载更多',
85
+ loading: '加载中…',
86
+ expand: '展开 {name}',
87
+ collapse: '收起 {name}',
88
+ info: {
89
+ description: {
90
+ userRoot: '当前用户的上下文数据',
91
+ memories: '跨会话沉淀的长期记忆',
92
+ peers: '按应用或工作区隔离的上下文',
93
+ privacy: '密钥等敏感配置',
94
+ userResources: '该用户的私有知识资料',
95
+ sessions: '对话与任务运行记录',
96
+ skills: 'Agent 可用的技能与工具',
97
+ profile: '用户身份与背景',
98
+ preferences: '个性化偏好',
99
+ entities: '人物、项目、组织等实体',
100
+ events: '按日期归档的关键事件',
101
+ identity: 'Agent 名称与人设',
102
+ soul: 'Agent 行为准则与边界',
103
+ cases: '用于训练经验的交互案例',
104
+ trajectories: '可复用的任务执行轨迹',
105
+ experiences: '自动提炼的执行经验',
106
+ sharedResources: 'Agent 可引用的外部资料',
107
+ agentRoot: 'Agent 的能力、工具与经验',
108
+ agentEndpoints: '账号内共享的通信端点配置',
109
+ agentPayments: '账号内共享的支付能力配置',
110
+ agentSkills: '账号内可调用的技能定义',
111
+ agentTools: '账号内共享的工具配置',
112
+ memoryRoot: '长期记忆与累积信息',
113
+ resourceRoot: 'Agent 可引用的外部知识',
114
+ sessionRoot: '用户的原始会话记录',
115
+ systemRoot: '系统内置资源'
116
+ },
117
+ triggerBehavior: {
118
+ userRoot: '根据当前用户身份自动建立,无需手动创建',
119
+ memories: '提交会话、主动要求记住信息,或从会话中持续抽取',
120
+ peers: '以特定 peer 身份连接时建立,按 peer_id 隔离记忆与资料',
121
+ userResources: '导入资料时上传到该用户的私有资源目录',
122
+ sessions: '会话调用 OpenViking 时建立,消息、工具调用与归档持续写入',
123
+ skills: '作为个人技能被创建、安装或导入',
124
+ profile: '对话中出现稳定、明确的用户背景或工作方式',
125
+ preferences: '用户明确表达某个偏好、习惯或风格',
126
+ entities: '对话中出现值得保留的人物、项目或组织',
127
+ events: '对话中出现重要决定、承诺、安排、进展或结果',
128
+ identity: '首次记忆抽取时初始化,之后由写入操作更新',
129
+ soul: '首次记忆抽取时初始化,之后由写入操作调整',
130
+ cases: '提交了任务明确、执行结果可评估的会话',
131
+ trajectories: '提交了包含决策、工具调用或多步执行的任务',
132
+ experiences: '从任务案例与执行轨迹中提炼',
133
+ sharedResources: '导入资料时上传到共享资源空间',
134
+ agentEndpoints: '为账号注册集成端点时配置',
135
+ agentPayments: '为账号开通支付能力时配置',
136
+ agentSkills: '作为共享技能安装或导入,供所有 Agent 使用',
137
+ agentTools: '为账号注册工具时配置'
138
+ },
139
+ field: {
140
+ description: '说明',
141
+ triggerBehavior: '触发行为',
142
+ path: '路径'
143
+ }
144
+ }
145
+ };
146
+ const zh_CN = zh_CN_messages;
147
+ const LOCALES = {
148
+ 'en-US': en_US,
149
+ 'zh-CN': zh_CN
150
+ };
151
+ function resolveFileTreeLabels(locale = 'en-US', labels) {
152
+ const defaults = resolveLocale(LOCALES, locale);
153
+ return {
154
+ ...mergeLabels(defaults, labels),
155
+ info: {
156
+ description: mergeLabels(defaults.info.description, labels?.info?.description),
157
+ triggerBehavior: mergeLabels(defaults.info.triggerBehavior, labels?.info?.triggerBehavior),
158
+ field: mergeLabels(defaults.info.field, labels?.info?.field)
159
+ }
160
+ };
161
+ }
6
162
  function FileTreeFolderIcon({ open }) {
7
163
  return /*#__PURE__*/ jsxs("span", {
8
164
  className: "ov-file-tree__folder",
@@ -113,68 +269,10 @@ function resolveFileTreeInfoKey(uri) {
113
269
  function showsInlineDescription(key) {
114
270
  return null !== key && !TOOLTIP_ONLY_KEYS.has(key);
115
271
  }
116
- const DESCRIPTION = {
117
- userRoot: 'Context data for the current user',
118
- memories: 'Long-term memory accumulated across sessions',
119
- peers: 'Context isolated per application or workspace',
120
- privacy: 'Keys and other sensitive configuration',
121
- userResources: 'Private knowledge of this user',
122
- sessions: 'Conversation and task execution records',
123
- skills: 'Skills and tools available to the agent',
124
- profile: 'User identity and background',
125
- preferences: 'Personalized user preferences',
126
- entities: 'People, projects, organizations and other entities',
127
- events: 'Key events archived by date',
128
- identity: 'Agent name and persona',
129
- soul: 'Agent behaviour guidelines and boundaries',
130
- cases: 'Interaction cases used to train experience',
131
- trajectories: 'Reusable task execution trajectories',
132
- experiences: 'Execution experience distilled automatically',
133
- sharedResources: 'External resources the agent can reference',
134
- agentRoot: 'Agent capabilities, tools and experience',
135
- agentEndpoints: 'Communication endpoints shared across the account',
136
- agentPayments: 'Payment capabilities shared across the account',
137
- agentSkills: 'Skill definitions callable across the account',
138
- agentTools: 'Tool configuration shared across the account',
139
- memoryRoot: 'Long-term memory and accumulated information',
140
- resourceRoot: 'External knowledge the agent can reference',
141
- sessionRoot: 'Raw session records of the user',
142
- systemRoot: 'Built-in system resources'
143
- };
144
- const TRIGGER_BEHAVIOR = {
145
- userRoot: 'Created from the current user identity; no manual setup needed',
146
- memories: 'Committed sessions, explicit requests to remember, or continuous extraction from sessions',
147
- peers: 'Created when connecting as a specific peer, isolating memory and material per peer_id',
148
- userResources: 'Imported material, uploaded to this user’s private resource directory',
149
- sessions: 'Created when a session calls OpenViking; messages, tool calls and archives are saved continuously',
150
- skills: 'Created, installed or imported as a personal skill',
151
- profile: 'A stable, explicit user background or working style appears in conversation',
152
- preferences: 'The user explicitly states a specific preference, habit or style',
153
- entities: 'A person, project or organization worth keeping appears in conversation',
154
- events: 'An important decision, commitment, arrangement, progress or result appears in dialogue',
155
- identity: 'Initialized on the first memory extraction run; later updated by write operations',
156
- soul: 'Initialized on the first memory extraction run; later adjusted by write operations',
157
- cases: 'A session with a clear task and an evaluable execution result is committed',
158
- trajectories: 'A task containing decisions, tool calls or multi-step execution is committed',
159
- experiences: 'Distilled from task cases and execution trajectories',
160
- sharedResources: 'Imported material, uploaded to a shared resource space',
161
- agentEndpoints: 'Configured when an integration endpoint is registered for the account',
162
- agentPayments: 'Configured when a payment capability is enabled for the account',
163
- agentSkills: 'Installed or imported as a shared skill available to every agent',
164
- agentTools: 'Configured when a tool is registered for the account'
165
- };
166
- const DEFAULT_INFO_LABELS = {
167
- description: DESCRIPTION,
168
- triggerBehavior: TRIGGER_BEHAVIOR,
169
- field: {
170
- description: "Description",
171
- triggerBehavior: 'Trigger',
172
- path: 'Path'
173
- }
174
- };
272
+ const DEFAULT_INFO_LABELS = en_US.info;
175
273
  function resolveInfoCopy(key, hostLabels) {
176
- const description = hostLabels?.description?.[key] ?? DESCRIPTION[key] ?? void 0;
177
- const triggerBehavior = hostLabels?.triggerBehavior?.[key] ?? TRIGGER_BEHAVIOR[key] ?? void 0;
274
+ const description = hostLabels?.description?.[key] ?? DEFAULT_INFO_LABELS.description?.[key] ?? void 0;
275
+ const triggerBehavior = hostLabels?.triggerBehavior?.[key] ?? DEFAULT_INFO_LABELS.triggerBehavior?.[key] ?? void 0;
178
276
  return {
179
277
  description: description || void 0,
180
278
  triggerBehavior: triggerBehavior || void 0
@@ -390,11 +488,10 @@ function FileTreeTooltipContent({ row, infoLabels, renderRowTooltip }) {
390
488
  copy: copy
391
489
  });
392
490
  }
393
- const INDENT = 16;
394
- const CHEVRON_SIZE = 16;
491
+ const INDENT = 'var(--ov-ui-file-tree-indent, 20px)';
395
492
  function rowStyle(depth) {
396
493
  return {
397
- paddingLeft: depth * INDENT
494
+ paddingLeft: `calc(2px + ${depth} * ${INDENT})`
398
495
  };
399
496
  }
400
497
  function Guides({ depth }) {
@@ -405,7 +502,7 @@ function Guides({ depth }) {
405
502
  "aria-hidden": "true",
406
503
  className: "ov-file-tree__guide",
407
504
  style: {
408
- left: level * INDENT + CHEVRON_SIZE / 2
505
+ left: `calc(10px + ${level} * ${INDENT})`
409
506
  }
410
507
  }, level))
411
508
  });
@@ -482,6 +579,7 @@ function FileTreeRowView({ row, ctx }) {
482
579
  }),
483
580
  /*#__PURE__*/ jsxs("span", {
484
581
  className: "ov-file-tree__label-group",
582
+ "data-description": Boolean(description) || void 0,
485
583
  children: [
486
584
  /*#__PURE__*/ jsx("span", {
487
585
  className: "ov-file-tree__label",
@@ -710,9 +808,63 @@ function handleRowKeyDown(event, { root, row, onSelect, onToggleExpand }) {
710
808
  return;
711
809
  }
712
810
  }
811
+ function FileTreeToolbar({ search, refresh, text, refreshing, onSearch, onRefresh }) {
812
+ if (!search && !refresh) return null;
813
+ const searchDisabled = !onSearch || 'object' == typeof search && search.disabled;
814
+ const refreshDisabled = !onRefresh || 'object' == typeof refresh && refresh.disabled;
815
+ const busy = refreshing || 'object' == typeof refresh && refresh.loading;
816
+ return /*#__PURE__*/ jsxs("div", {
817
+ className: "ov-file-tree__controls",
818
+ children: [
819
+ search ? /*#__PURE__*/ jsxs("button", {
820
+ type: "button",
821
+ className: "ov-file-tree__search",
822
+ disabled: Boolean(searchDisabled),
823
+ onClick: onSearch,
824
+ title: text.search,
825
+ children: [
826
+ /*#__PURE__*/ jsx(searchreact, {
827
+ width: 16,
828
+ height: 16,
829
+ "aria-hidden": "true"
830
+ }),
831
+ /*#__PURE__*/ jsx("span", {
832
+ className: "ov-file-tree__search-label",
833
+ children: text.search
834
+ })
835
+ ]
836
+ }) : null,
837
+ refresh ? /*#__PURE__*/ jsx("button", {
838
+ type: "button",
839
+ className: "ov-file-tree__refresh",
840
+ "aria-label": text.refresh,
841
+ title: text.refresh,
842
+ "aria-busy": Boolean(busy),
843
+ disabled: Boolean(refreshDisabled || busy),
844
+ onClick: onRefresh,
845
+ children: /*#__PURE__*/ jsx("svg", {
846
+ "aria-hidden": "true",
847
+ width: 14,
848
+ height: 14,
849
+ viewBox: "0 0 16 16",
850
+ fill: "none",
851
+ className: busy ? 'ov-file-tree__refresh-spinning' : void 0,
852
+ children: /*#__PURE__*/ jsx("path", {
853
+ d: "M13 6a5.2 5.2 0 1 0 .15 3.5M13 2.5V6H9.5",
854
+ stroke: "currentColor",
855
+ strokeWidth: "1.5",
856
+ strokeLinecap: "round",
857
+ strokeLinejoin: "round"
858
+ })
859
+ })
860
+ }) : null
861
+ ]
862
+ });
863
+ }
713
864
  function useFileTreeActions(props) {
714
865
  const pending = useRef(new Set());
715
- const { select, toggleExpand, loadMore, retry, openRetentionSettings } = props.operations ?? {};
866
+ const [refreshing, setRefreshing] = useState(false);
867
+ const { select, toggleExpand, loadMore, retry, openRetentionSettings, search, refresh } = props.operations ?? {};
716
868
  async function run(key, execute, notify, value) {
717
869
  if (pending.current.has(key)) return;
718
870
  pending.current.add(key);
@@ -726,6 +878,13 @@ function useFileTreeActions(props) {
726
878
  notify?.(value);
727
879
  }
728
880
  return {
881
+ refreshing,
882
+ onSearch: search ? ()=>void run('search', search, props.onSearch, void 0) : void 0,
883
+ onRefresh: refresh ? ()=>{
884
+ if (pending.current.has('refresh')) return;
885
+ setRefreshing(true);
886
+ run('refresh', refresh, props.onRefresh, void 0).finally(()=>setRefreshing(false));
887
+ } : void 0,
729
888
  onSelect: select ? (row)=>void run(`select:${row.id}`, select, props.onSelect, row) : void 0,
730
889
  onToggleExpand: toggleExpand ? (row)=>void run(`toggle:${row.id}`, toggleExpand, props.onToggleExpand, row) : void 0,
731
890
  onLoadMore: loadMore ? (row)=>void run(`load:${row.id}`, loadMore, props.onLoadMore, row) : void 0,
@@ -743,32 +902,22 @@ function FileTreeSpinner({ className, ...rest }) {
743
902
  ].filter(Boolean).join(' ')
744
903
  });
745
904
  }
746
- const DEFAULT_LABELS = {
747
- empty: 'No files yet',
748
- error: 'Failed to load',
749
- retry: 'Retry',
750
- loadMore: 'Load more',
751
- loading: 'Loading…',
752
- expand: 'Expand {name}',
753
- collapse: 'Collapse {name}'
754
- };
755
905
  function findRow(root, id) {
756
906
  return root?.querySelector(`[${FILE_TREE_ROW_ATTRIBUTE}="${CSS.escape(id)}"]`) ?? null;
757
907
  }
758
- const file_tree_FileTree = /*#__PURE__*/ forwardRef(function({ rows, operations, selectedId, isReady = true, loadingFallback, errorFallback, emptyFallback, slots, labels, getRowAttributes, renderDashboard, renderRowTooltip, renderRowIcon, onSelect, onToggleExpand, onLoadMore, onRetry, onOpenRetentionSettings, className, ...rest }, ref) {
908
+ const file_tree_FileTree = /*#__PURE__*/ forwardRef(function({ rows, locale: localeProp, operations, selectedId, search, refresh, isReady = true, loadingFallback, errorFallback, emptyFallback, slots, labels, getRowAttributes, renderDashboard, renderRowTooltip, renderRowIcon, onSelect, onToggleExpand, onLoadMore, onRetry, onOpenRetentionSettings, onSearch, onRefresh, className, ...rest }, ref) {
909
+ const locale = useLocale(localeProp);
759
910
  const rootRef = useRef(null);
760
- const text = {
761
- ...DEFAULT_LABELS,
762
- ...labels,
763
- info: labels?.info ?? DEFAULT_LABELS.info
764
- };
911
+ const text = resolveFileTreeLabels(locale, labels);
765
912
  const actions = useFileTreeActions({
766
913
  operations,
767
914
  onSelect,
768
915
  onToggleExpand,
769
916
  onLoadMore,
770
917
  onRetry,
771
- onOpenRetentionSettings
918
+ onOpenRetentionSettings,
919
+ onSearch,
920
+ onRefresh
772
921
  });
773
922
  useImperativeHandle(ref, ()=>({
774
923
  getRowElement: (id)=>findRow(rootRef.current, id),
@@ -784,7 +933,7 @@ const file_tree_FileTree = /*#__PURE__*/ forwardRef(function({ rows, operations,
784
933
  }), []);
785
934
  const ctx = {
786
935
  text,
787
- infoLabels: labels?.info,
936
+ infoLabels: text.info,
788
937
  selectedId,
789
938
  getRowAttributes,
790
939
  renderDashboard,
@@ -811,6 +960,14 @@ const file_tree_FileTree = /*#__PURE__*/ forwardRef(function({ rows, operations,
811
960
  className: "ov-file-tree__toolbar",
812
961
  children: slots.toolbar
813
962
  }) : null,
963
+ /*#__PURE__*/ jsx(FileTreeToolbar, {
964
+ search: search,
965
+ refresh: refresh,
966
+ text: text,
967
+ refreshing: actions.refreshing,
968
+ onSearch: actions.onSearch,
969
+ onRefresh: actions.onRefresh
970
+ }),
814
971
  /*#__PURE__*/ jsx("div", {
815
972
  role: "tree",
816
973
  "aria-label": rest['aria-label'],
package/dist/o~0.js CHANGED
@@ -1,4 +1,5 @@
1
- import { useLayoutEffect, useState } from "react";
1
+ import { useEffect, useLayoutEffect, useState } from "react";
2
+ const usePositionEffect = "u" < typeof window ? useEffect : useLayoutEffect;
2
3
  const OVERLAY_OFFSET = 6;
3
4
  const VIEWPORT_MARGIN = 8;
4
5
  const OPPOSITE = {
@@ -7,7 +8,7 @@ const OPPOSITE = {
7
8
  left: 'right',
8
9
  right: 'left'
9
10
  };
10
- function resolvePosition(trigger, surface, placement) {
11
+ function resolvePosition(trigger, surface, placement, alignment = 'center') {
11
12
  const viewportWidth = window.innerWidth;
12
13
  const viewportHeight = window.innerHeight;
13
14
  const fits = (side)=>{
@@ -20,7 +21,7 @@ function resolvePosition(trigger, surface, placement) {
20
21
  const clamp = (value, size, limit)=>Math.min(Math.max(value, VIEWPORT_MARGIN), limit - size - VIEWPORT_MARGIN);
21
22
  if ('top' === side || 'bottom' === side) {
22
23
  const top = 'top' === side ? trigger.top - surface.height - OVERLAY_OFFSET : trigger.bottom + OVERLAY_OFFSET;
23
- const left = trigger.left + trigger.width / 2 - surface.width / 2;
24
+ const left = 'end' === alignment ? trigger.right - surface.width : trigger.left + trigger.width / 2 - surface.width / 2;
24
25
  return {
25
26
  top: clamp(top, surface.height, viewportHeight),
26
27
  left: clamp(left, surface.width, viewportWidth),
@@ -35,13 +36,13 @@ function resolvePosition(trigger, surface, placement) {
35
36
  placement: side
36
37
  };
37
38
  }
38
- function useOverlayPosition(open, triggerRef, surface, placement) {
39
+ function useOverlayPosition(open, triggerRef, surface, placement, alignment = 'center') {
39
40
  const [position, setPosition] = useState({
40
41
  top: 0,
41
42
  left: 0,
42
43
  placement
43
44
  });
44
- useLayoutEffect(()=>{
45
+ usePositionEffect(()=>{
45
46
  if (!open) return;
46
47
  const trigger = triggerRef.current;
47
48
  if (!trigger || !surface) return;
@@ -78,7 +79,7 @@ function useOverlayPosition(open, triggerRef, surface, placement) {
78
79
  const next = resolvePosition(triggerRect, {
79
80
  width: surfaceRect.width,
80
81
  height: surfaceRect.height
81
- }, placement);
82
+ }, placement, alignment);
82
83
  setPosition((previous)=>previous.top === next.top && previous.left === next.left && previous.placement === next.placement ? previous : next);
83
84
  };
84
85
  update();
@@ -89,6 +90,7 @@ function useOverlayPosition(open, triggerRef, surface, placement) {
89
90
  return ()=>{
90
91
  observer.disconnect();
91
92
  themeObserver.disconnect();
93
+ written.forEach((name)=>surface.style.removeProperty(name));
92
94
  window.removeEventListener('scroll', update, true);
93
95
  window.removeEventListener('resize', update);
94
96
  };
@@ -96,7 +98,8 @@ function useOverlayPosition(open, triggerRef, surface, placement) {
96
98
  open,
97
99
  placement,
98
100
  surface,
99
- triggerRef
101
+ triggerRef,
102
+ alignment
100
103
  ]);
101
104
  return position;
102
105
  }
package/dist/p~0.js ADDED
@@ -0,0 +1,27 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import "react";
3
+ const SvgSearch = (props)=>/*#__PURE__*/ jsx("svg", {
4
+ xmlns: "http://www.w3.org/2000/svg",
5
+ width: 16,
6
+ height: 16,
7
+ fill: "none",
8
+ viewBox: "0 0 16 16",
9
+ ...props,
10
+ children: /*#__PURE__*/ jsxs("g", {
11
+ stroke: "currentColor",
12
+ strokeWidth: 1.2,
13
+ children: [
14
+ /*#__PURE__*/ jsx("circle", {
15
+ cx: 7.167,
16
+ cy: 7.167,
17
+ r: 4.667
18
+ }),
19
+ /*#__PURE__*/ jsx("path", {
20
+ strokeLinecap: "round",
21
+ d: "m10.667 10.667 3 3"
22
+ })
23
+ ]
24
+ })
25
+ });
26
+ const searchreact = SvgSearch;
27
+ export { searchreact };
@@ -0,0 +1,42 @@
1
+ var __webpack_modules__ = {};
2
+ var __webpack_module_cache__ = {};
3
+ function __webpack_require__(moduleId) {
4
+ var cachedModule = __webpack_module_cache__[moduleId];
5
+ if (void 0 !== cachedModule) return cachedModule.exports;
6
+ var module = __webpack_module_cache__[moduleId] = {
7
+ exports: {}
8
+ };
9
+ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
10
+ return module.exports;
11
+ }
12
+ __webpack_require__.m = __webpack_modules__;
13
+ (()=>{
14
+ __webpack_require__.n = (module)=>{
15
+ var getter = module && module.__esModule ? ()=>module['default'] : ()=>module;
16
+ __webpack_require__.d(getter, {
17
+ a: getter
18
+ });
19
+ return getter;
20
+ };
21
+ })();
22
+ (()=>{
23
+ __webpack_require__.d = (exports, getters, values)=>{
24
+ var define = (defs, kind)=>{
25
+ for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports, key)) Object.defineProperty(exports, key, {
26
+ enumerable: true,
27
+ [kind]: defs[key]
28
+ });
29
+ };
30
+ define(getters, "get");
31
+ define(values, "value");
32
+ };
33
+ })();
34
+ (()=>{
35
+ __webpack_require__.add = function(modules) {
36
+ Object.assign(__webpack_require__.m, modules);
37
+ };
38
+ })();
39
+ (()=>{
40
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
41
+ })();
42
+ export { __webpack_require__ };