keepwork-sdk 1.0.0

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 (146) hide show
  1. package/README.md +21 -0
  2. package/dist-npm/keepwork-sdk.js +37514 -0
  3. package/dist-npm/keepwork-sdk.js.map +1 -0
  4. package/dist-npm/md5-CZ0vz1_S.js +240 -0
  5. package/dist-npm/md5-CZ0vz1_S.js.map +1 -0
  6. package/dist-npm/types/index.d.ts +42 -0
  7. package/dist-npm/types/index.d.ts.map +1 -0
  8. package/dist-npm/types/src/ai-chat/AIChat.core.d.ts +218 -0
  9. package/dist-npm/types/src/ai-chat/AIChat.core.d.ts.map +1 -0
  10. package/dist-npm/types/src/ai-chat/AIChat.d.ts +18 -0
  11. package/dist-npm/types/src/ai-chat/AIChat.d.ts.map +1 -0
  12. package/dist-npm/types/src/ai-chat/AIChat.session.d.ts +201 -0
  13. package/dist-npm/types/src/ai-chat/AIChat.session.d.ts.map +1 -0
  14. package/dist-npm/types/src/ai-chat/AIGenerators.base.d.ts +297 -0
  15. package/dist-npm/types/src/ai-chat/AIGenerators.base.d.ts.map +1 -0
  16. package/dist-npm/types/src/ai-chat/AIGenerators.d.ts +15 -0
  17. package/dist-npm/types/src/ai-chat/AIGenerators.d.ts.map +1 -0
  18. package/dist-npm/types/src/ai-chat/AIGenerators.media.d.ts +208 -0
  19. package/dist-npm/types/src/ai-chat/AIGenerators.media.d.ts.map +1 -0
  20. package/dist-npm/types/src/ai-chat/ChildSessionMixin.d.ts +153 -0
  21. package/dist-npm/types/src/ai-chat/ChildSessionMixin.d.ts.map +1 -0
  22. package/dist-npm/types/src/ai-chat/CopilotTools.d.ts +150 -0
  23. package/dist-npm/types/src/ai-chat/CopilotTools.d.ts.map +1 -0
  24. package/dist-npm/types/src/ai-chat/MqttManager.d.ts +123 -0
  25. package/dist-npm/types/src/ai-chat/MqttManager.d.ts.map +1 -0
  26. package/dist-npm/types/src/ai-chat/SandboxToolEnv.d.ts +210 -0
  27. package/dist-npm/types/src/ai-chat/SandboxToolEnv.d.ts.map +1 -0
  28. package/dist-npm/types/src/audio/AudioEngine.d.ts +272 -0
  29. package/dist-npm/types/src/audio/AudioEngine.d.ts.map +1 -0
  30. package/dist-npm/types/src/audio/AudioEngine.utils.d.ts +72 -0
  31. package/dist-npm/types/src/audio/AudioEngine.utils.d.ts.map +1 -0
  32. package/dist-npm/types/src/audio/Speech.d.ts +247 -0
  33. package/dist-npm/types/src/audio/Speech.d.ts.map +1 -0
  34. package/dist-npm/types/src/core/AgentConfig.d.ts +104 -0
  35. package/dist-npm/types/src/core/AgentConfig.d.ts.map +1 -0
  36. package/dist-npm/types/src/core/AgentRouter.d.ts +342 -0
  37. package/dist-npm/types/src/core/AgentRouter.d.ts.map +1 -0
  38. package/dist-npm/types/src/core/NPL.d.ts +251 -0
  39. package/dist-npm/types/src/core/NPL.d.ts.map +1 -0
  40. package/dist-npm/types/src/core/RemoteLog.d.ts +132 -0
  41. package/dist-npm/types/src/core/RemoteLog.d.ts.map +1 -0
  42. package/dist-npm/types/src/core/keepworkSDK.core.d.ts +84 -0
  43. package/dist-npm/types/src/core/keepworkSDK.core.d.ts.map +1 -0
  44. package/dist-npm/types/src/core/keepworkSDK.d.ts +129 -0
  45. package/dist-npm/types/src/core/keepworkSDK.d.ts.map +1 -0
  46. package/dist-npm/types/src/core/keepworkSDK.pages.d.ts +101 -0
  47. package/dist-npm/types/src/core/keepworkSDK.pages.d.ts.map +1 -0
  48. package/dist-npm/types/src/core/keepworkSDK.utils.d.ts +40 -0
  49. package/dist-npm/types/src/core/keepworkSDK.utils.d.ts.map +1 -0
  50. package/dist-npm/types/src/digital-human/DigitalHuman.d.ts +1316 -0
  51. package/dist-npm/types/src/digital-human/DigitalHuman.d.ts.map +1 -0
  52. package/dist-npm/types/src/digital-human/DigitalHumanBridge.d.ts +54 -0
  53. package/dist-npm/types/src/digital-human/DigitalHumanBridge.d.ts.map +1 -0
  54. package/dist-npm/types/src/digital-human/DigitalHumanConfig.d.ts +104 -0
  55. package/dist-npm/types/src/digital-human/DigitalHumanConfig.d.ts.map +1 -0
  56. package/dist-npm/types/src/digital-human/DigitalHumanFrame.d.ts +390 -0
  57. package/dist-npm/types/src/digital-human/DigitalHumanFrame.d.ts.map +1 -0
  58. package/dist-npm/types/src/digital-human/DigitalHumanFrameMessages.d.ts +59 -0
  59. package/dist-npm/types/src/digital-human/DigitalHumanFrameMessages.d.ts.map +1 -0
  60. package/dist-npm/types/src/digital-human/DigitalHumanSubtitleOverlay.d.ts +114 -0
  61. package/dist-npm/types/src/digital-human/DigitalHumanSubtitleOverlay.d.ts.map +1 -0
  62. package/dist-npm/types/src/digital-human/DigitalHumanUtils.d.ts +53 -0
  63. package/dist-npm/types/src/digital-human/DigitalHumanUtils.d.ts.map +1 -0
  64. package/dist-npm/types/src/rtc/AIChatRTC.constants.d.ts +65 -0
  65. package/dist-npm/types/src/rtc/AIChatRTC.constants.d.ts.map +1 -0
  66. package/dist-npm/types/src/rtc/AIChatRTC.d.ts +91 -0
  67. package/dist-npm/types/src/rtc/AIChatRTC.d.ts.map +1 -0
  68. package/dist-npm/types/src/rtc/AIChatRTC.session.d.ts +268 -0
  69. package/dist-npm/types/src/rtc/AIChatRTC.session.d.ts.map +1 -0
  70. package/dist-npm/types/src/rtc/AIChatRTCLocal.backends.d.ts +232 -0
  71. package/dist-npm/types/src/rtc/AIChatRTCLocal.backends.d.ts.map +1 -0
  72. package/dist-npm/types/src/rtc/AIChatRTCLocal.core.d.ts +92 -0
  73. package/dist-npm/types/src/rtc/AIChatRTCLocal.core.d.ts.map +1 -0
  74. package/dist-npm/types/src/rtc/AIChatRTCLocal.d.ts +15 -0
  75. package/dist-npm/types/src/rtc/AIChatRTCLocal.d.ts.map +1 -0
  76. package/dist-npm/types/src/rtc/AIChatRTCLocal.session.d.ts +127 -0
  77. package/dist-npm/types/src/rtc/AIChatRTCLocal.session.d.ts.map +1 -0
  78. package/dist-npm/types/src/rtc/LocalRTC.d.ts +91 -0
  79. package/dist-npm/types/src/rtc/LocalRTC.d.ts.map +1 -0
  80. package/dist-npm/types/src/rtc/SpeechRTC.d.ts +156 -0
  81. package/dist-npm/types/src/rtc/SpeechRTC.d.ts.map +1 -0
  82. package/dist-npm/types/src/rtc/SpeechRTC.transport.d.ts +191 -0
  83. package/dist-npm/types/src/rtc/SpeechRTC.transport.d.ts.map +1 -0
  84. package/dist-npm/types/src/store/CloudDrive.d.ts +140 -0
  85. package/dist-npm/types/src/store/CloudDrive.d.ts.map +1 -0
  86. package/dist-npm/types/src/store/LocalStorageUtil.d.ts +136 -0
  87. package/dist-npm/types/src/store/LocalStorageUtil.d.ts.map +1 -0
  88. package/dist-npm/types/src/store/PersonalPageStore.base.d.ts +267 -0
  89. package/dist-npm/types/src/store/PersonalPageStore.base.d.ts.map +1 -0
  90. package/dist-npm/types/src/store/PersonalPageStore.d.ts +13 -0
  91. package/dist-npm/types/src/store/PersonalPageStore.d.ts.map +1 -0
  92. package/dist-npm/types/src/store/PersonalPageStore.data.d.ts +198 -0
  93. package/dist-npm/types/src/store/PersonalPageStore.data.d.ts.map +1 -0
  94. package/dist-npm/types/src/store/PersonalPageStore.sync.d.ts +171 -0
  95. package/dist-npm/types/src/store/PersonalPageStore.sync.d.ts.map +1 -0
  96. package/dist-npm/types/src/store/PersonalPageStore.types.d.ts +92 -0
  97. package/dist-npm/types/src/store/PersonalPageStore.types.d.ts.map +1 -0
  98. package/dist-npm/types/src/store/YMLParser.d.ts +96 -0
  99. package/dist-npm/types/src/store/YMLParser.d.ts.map +1 -0
  100. package/dist-npm/types/src/tools/AgentTool.d.ts +110 -0
  101. package/dist-npm/types/src/tools/AgentTool.d.ts.map +1 -0
  102. package/dist-npm/types/src/tools/AppTools.d.ts +122 -0
  103. package/dist-npm/types/src/tools/AppTools.d.ts.map +1 -0
  104. package/dist-npm/types/src/tools/ExecuteTool.d.ts +96 -0
  105. package/dist-npm/types/src/tools/ExecuteTool.d.ts.map +1 -0
  106. package/dist-npm/types/src/tools/FileTools.d.ts +77 -0
  107. package/dist-npm/types/src/tools/FileTools.d.ts.map +1 -0
  108. package/dist-npm/types/src/tools/MinigameTools.d.ts +234 -0
  109. package/dist-npm/types/src/tools/MinigameTools.d.ts.map +1 -0
  110. package/dist-npm/types/src/tools/MqttTool.d.ts +53 -0
  111. package/dist-npm/types/src/tools/MqttTool.d.ts.map +1 -0
  112. package/dist-npm/types/src/tools/PersonalPageTool.d.ts +57 -0
  113. package/dist-npm/types/src/tools/PersonalPageTool.d.ts.map +1 -0
  114. package/dist-npm/types/src/tools/SummarizeTool.d.ts +279 -0
  115. package/dist-npm/types/src/tools/SummarizeTool.d.ts.map +1 -0
  116. package/dist-npm/types/src/tools/WebTool.d.ts +106 -0
  117. package/dist-npm/types/src/tools/WebTool.d.ts.map +1 -0
  118. package/dist-npm/types/src/types/common.d.ts +164 -0
  119. package/dist-npm/types/src/types/common.d.ts.map +1 -0
  120. package/dist-npm/types/src/ui/LocalAPIKeySettings.d.ts +229 -0
  121. package/dist-npm/types/src/ui/LocalAPIKeySettings.d.ts.map +1 -0
  122. package/dist-npm/types/src/ui/LoginWindow.d.ts +163 -0
  123. package/dist-npm/types/src/ui/LoginWindow.d.ts.map +1 -0
  124. package/dist-npm/types/src/ui/ProfileWindow.d.ts +75 -0
  125. package/dist-npm/types/src/ui/ProfileWindow.d.ts.map +1 -0
  126. package/dist-npm/types/src/ui/VerifyHuman.d.ts +23 -0
  127. package/dist-npm/types/src/ui/VerifyHuman.d.ts.map +1 -0
  128. package/dist-npm/types/src/ui/WorkspaceViewer.d.ts +184 -0
  129. package/dist-npm/types/src/ui/WorkspaceViewer.d.ts.map +1 -0
  130. package/dist-npm/types/src/user/SocialFriends.d.ts +173 -0
  131. package/dist-npm/types/src/user/SocialFriends.d.ts.map +1 -0
  132. package/dist-npm/types/src/user/UserWorks.d.ts +187 -0
  133. package/dist-npm/types/src/user/UserWorks.d.ts.map +1 -0
  134. package/dist-npm/types/src/utils/ImageUtils.d.ts +107 -0
  135. package/dist-npm/types/src/utils/ImageUtils.d.ts.map +1 -0
  136. package/dist-npm/types/src/utils/SDKLogger.d.ts +111 -0
  137. package/dist-npm/types/src/utils/SDKLogger.d.ts.map +1 -0
  138. package/dist-npm/types/src/utils/translation.d.ts +95 -0
  139. package/dist-npm/types/src/utils/translation.d.ts.map +1 -0
  140. package/dist-npm/types/src/wechat/WxAuth.d.ts +126 -0
  141. package/dist-npm/types/src/wechat/WxAuth.d.ts.map +1 -0
  142. package/dist-npm/types/src/wechat/WxLaunchApp.d.ts +96 -0
  143. package/dist-npm/types/src/wechat/WxLaunchApp.d.ts.map +1 -0
  144. package/dist-npm/types/src/wechat/WxUtils.d.ts +145 -0
  145. package/dist-npm/types/src/wechat/WxUtils.d.ts.map +1 -0
  146. package/package.json +52 -0
@@ -0,0 +1,267 @@
1
+ /**
2
+ * PersonalPageStore.base.ts — 基础层(构造/事件/缓存/WorkSpace/SearchPath/MountedFolder/路径工具)
3
+ *
4
+ * 包含:
5
+ * - 构造函数与字段声明
6
+ * - 事件总线(on / off / emit)
7
+ * - reset / clearMemoryCache
8
+ * - withConfig / withWorkspace(Proxy 作用域)
9
+ * - _normalizeMountedFolder
10
+ * - SearchPath(addSearchPath / removeSearchPath / _readFromSearchPath / _doReadFromSearchPath)
11
+ * - getAbsUrl / _getMountedPagePath / _getMountedTreeParams
12
+ * - _isAbsolutePath / _readAbsoluteFile / _readMountedFile / _listMountedDir / _fetchMountedTree
13
+ * - sanitizePageName / getEffectivePageName / _stripSpuriousWorkspaceSegment
14
+ * - _toInternalPageKey / _toCurrentWorkspaceRelative
15
+ * - setUsername / getUsername
16
+ * - checkInitSyncTimers / destroy
17
+ * - ensureUserProfile
18
+ */
19
+ import type { MountedFolder, SearchPath, PageSyncOptions, IPersonalPageSDK } from './PersonalPageStore.types';
20
+ /**
21
+ * PersonalPageStore 基础层。
22
+ * 不直接实例化 — 由 PersonalPageStore.ts 主类继承并扩展。
23
+ */
24
+ export declare class PersonalPageStoreBase {
25
+ static debug: boolean;
26
+ static _log(..._args: unknown[]): void;
27
+ sdk: IPersonalPageSDK;
28
+ /** L1 内存缓存:pageKey → 页面数据对象 */
29
+ personalPageData: Record<string, Record<string, unknown>>;
30
+ /** 待写入(已修改未保存)的数据 */
31
+ personalPageDataUpdated: Record<string, Record<string, unknown>>;
32
+ /** 已标记删除的 key 列表 */
33
+ personalPageDataDeleted: Record<string, string[]>;
34
+ /** 各页面的状态标志(版本检查等) */
35
+ pageStatus: Record<string, Record<string, unknown>>;
36
+ /** 待磁盘写入的页面集合 */
37
+ pendingDiskPages: Set<string>;
38
+ /** 待远端同步的页面集合 */
39
+ pendingSync: Set<string>;
40
+ /** 各页面的同步选项 */
41
+ pageSyncOptions: Record<string, PageSyncOptions>;
42
+ isSyncing: boolean;
43
+ _batchSavePromise: Promise<number> | null;
44
+ _batchSyncPromise: Promise<number> | null;
45
+ pageMutationVersion: Record<string, number>;
46
+ userProfileLoaded: boolean;
47
+ overrideUsername: string | null;
48
+ workspace: string | null;
49
+ mountedFolder: MountedFolder | null;
50
+ _searchPaths: SearchPath[];
51
+ /** 远端同步间隔(ms),默认 5 秒 */
52
+ remoteSyncInterval: number;
53
+ remoteStorePath: string;
54
+ /** 事件监听器映射 */
55
+ _eventListeners: Record<string, Array<(...args: unknown[]) => void>>;
56
+ /** 定时同步 timer */
57
+ gitSyncTimer: ReturnType<typeof setInterval> | null;
58
+ /** 防抖磁盘写入 timer */
59
+ _diskSaveTimeout: ReturnType<typeof setTimeout> | null;
60
+ _searchPathNotFound?: Set<string>;
61
+ _searchPathInflight?: Map<string, Promise<string | null>>;
62
+ _remoteTreeCache: string[] | null;
63
+ _remoteTreeCacheTime: number;
64
+ constructor(sdk: IPersonalPageSDK);
65
+ /**
66
+ * 注册事件监听器。
67
+ * 已知事件:
68
+ * - `'versionConflict'`:本地与远端版本冲突时触发,携带冲突详情
69
+ *
70
+ * @param event - 事件名
71
+ * @param handler - 回调函数
72
+ */
73
+ on(event: string, handler: (...args: unknown[]) => void): void;
74
+ /**
75
+ * 取消注册事件监听器。
76
+ * @param event - 事件名
77
+ * @param handler - 要取消的回调
78
+ */
79
+ off(event: string, handler: (...args: unknown[]) => void): void;
80
+ /**
81
+ * 触发事件,依次调用所有已注册监听器。
82
+ * @param event - 事件名
83
+ * @param args - 传递给监听器的参数
84
+ */
85
+ emit(event: string, ...args: unknown[]): void;
86
+ /**
87
+ * 重置所有内存状态(数据/定时器/缓存),但不清除 IndexedDB 和远端数据。
88
+ * 认证变更(setToken)后由 keepworkSDK 调用。
89
+ */
90
+ reset(): void;
91
+ /**
92
+ * 清除内存缓存(认证变更后由 keepworkSDK 调用)。
93
+ * 等同于 reset(),不清除持久化层。
94
+ */
95
+ clearMemoryCache(): void;
96
+ /**
97
+ * 从工具/会话 config 对象创建作用域 store 实例。
98
+ * 自动解析 workspace 和 mountFolder,回退到当前值或 'workspace_default'。
99
+ *
100
+ * @param config - 包含可选 workspace / mountFolder 字段的配置对象
101
+ * @returns 作用域 store 代理
102
+ */
103
+ withConfig(config?: Record<string, unknown>): this;
104
+ /**
105
+ * 创建覆盖了 workspace 和/或 mountedFolder 的轻量代理实例。
106
+ * 代理的所有方法调用使用指定的作用域,不会修改共享 store —
107
+ * 对并发异步操作安全。
108
+ * 共享可变状态(Promise/定时器/缓存/同步标志/数据 map)会写穿到父 store,
109
+ * 保持所有代理状态一致。
110
+ *
111
+ * @param workspace - 工作空间名称覆盖(null 表示无工作空间)
112
+ * @param mountedFolder - 挂载文件夹覆盖
113
+ */
114
+ withWorkspace(workspace: string | null, mountedFolder?: MountedFolder | null): this;
115
+ /**
116
+ * 将 mountedFolder 输入(路径字符串或对象)规范化为标准对象格式。
117
+ * 路径字符串格式:`"username/remoteStorePath.../workspace"`(至少 2 段)
118
+ * 返回 null 表示无效输入,undefined 表示未传入。
119
+ *
120
+ * @param mountedFolder - 路径字符串、MountedFolder 对象或 null
121
+ */
122
+ _normalizeMountedFolder(mountedFolder: unknown): MountedFolder | null | undefined;
123
+ /**
124
+ * 注册 URL 搜索路径,作为 readFile 的 URL 回退。
125
+ * 当本地和 mountedFolder 均找不到文件时,按前缀匹配 baseUrl 拼接路径并 fetch。
126
+ *
127
+ * @param prefix - 路径前缀(含 workspace,如 "myws/skills")
128
+ * @param baseUrl - 基础 URL(末尾应含 /)
129
+ * @param options - isReadonly(默认 true):只读路径在 readFile 中优先级最高
130
+ */
131
+ addSearchPath(prefix: string, baseUrl: string, options?: {
132
+ isReadonly?: boolean;
133
+ }): void;
134
+ /**
135
+ * 移除已注册的搜索路径。
136
+ * @param prefix - 要移除的路径前缀
137
+ */
138
+ removeSearchPath(prefix: string): void;
139
+ /**
140
+ * 从已注册搜索路径中读取文件(URL 回退)。
141
+ * 命中内存缓存时直接返回;否则发起 fetch 并将结果缓存到内存。
142
+ * 使用 inflight Map 合并并发重复请求。
143
+ *
144
+ * @param pageName - 相对于 workspace 的页面名(不含 workspace 前缀)
145
+ * @param readonlyOnly - true=仅搜索只读路径;false=仅搜索非只读路径;undefined=全部
146
+ */
147
+ _readFromSearchPath(pageName: string, readonlyOnly?: boolean): Promise<string | null>;
148
+ /** @private 实际 fetch 逻辑(_readFromSearchPath 去重后调用一次)。 */
149
+ private _doReadFromSearchPath;
150
+ /**
151
+ * 获取文件的绝对 URL。
152
+ * 优先匹配注册的搜索路径;回退到 Keepwork raw API URL。
153
+ *
154
+ * @param filename - 文件名(相对于 workspace,不含 .md)
155
+ */
156
+ getAbsUrl(filename: string): string;
157
+ /**
158
+ * 构建 mountedFolder 中文件的远端路径。
159
+ * 格式:`username/remoteStorePath/workspace/pageName`
160
+ */
161
+ _getMountedPagePath(pageName: string): string;
162
+ /**
163
+ * 获取 mountedFolder 的远端树参数。
164
+ * @returns `{ sitePath, remotePrefix, folderBase }`
165
+ */
166
+ _getMountedTreeParams(): {
167
+ sitePath: string;
168
+ remotePrefix: string;
169
+ folderBase: string;
170
+ };
171
+ /**
172
+ * 检查路径是否为绝对路径(以 `//` 开头)。
173
+ * 绝对路径格式:`//username/sitename/relative_path`
174
+ */
175
+ _isAbsolutePath(pageName: string): boolean;
176
+ /**
177
+ * 通过绝对路径(//username/sitename/...)读取文件内容。
178
+ * 结果缓存到内存中,后续调用直接返回缓存。
179
+ *
180
+ * @param absolutePath - `//` 开头的路径
181
+ * @param bUseCache - 是否使用 API 缓存(默认 true)
182
+ */
183
+ _readAbsoluteFile(absolutePath: string, bUseCache?: boolean): Promise<string | null>;
184
+ /**
185
+ * 从 mountedFolder(只读)读取文件内容。
186
+ * @param pageName - 相对于 workspace 的页面名
187
+ * @param bUseCache - 是否使用 API 缓存(默认 true)
188
+ */
189
+ _readMountedFile(pageName: string, bUseCache?: boolean): Promise<string | null>;
190
+ /**
191
+ * 列出 mountedFolder(只读)中的目录内容。
192
+ * @returns 子项名称集合(目录以 `/` 结尾)
193
+ */
194
+ _listMountedDir(dirPath: string, isRoot: boolean, _normalizedDir: string, recursive?: boolean): Promise<Set<string>>;
195
+ /**
196
+ * 获取 mountedFolder 的完整远端文件树(非递归,内部调用 sdk.getSiteTree)。
197
+ * @returns 页面名数组(相对于 mounted workspace,不含 .md)
198
+ */
199
+ _fetchMountedTree(): Promise<string[]>;
200
+ /**
201
+ * 规范化页面名:移除前导 `./` / `/`、workspace 前缀和 `.md` 扩展名。
202
+ * 绝对路径(`//...`)不做任何处理。
203
+ *
204
+ * @param pageName - 原始页面名
205
+ */
206
+ sanitizePageName(pageName: string): string;
207
+ /**
208
+ * 获取含 workspace 前缀的有效页面名(用于 IndexedDB / 远端路径)。
209
+ *
210
+ * @param pageName - 相对页面名
211
+ */
212
+ getEffectivePageName(pageName: string): string;
213
+ /**
214
+ * 去除 LLM 工具调用有时注入的多余 "workspace/" 路径段。
215
+ * 如 "silvermind/workspace/memory/x" → "silvermind/memory/x"
216
+ * @private
217
+ */
218
+ _stripSpuriousWorkspaceSegment(name: string): string;
219
+ /**
220
+ * 将页面名转换为规范的内部存储 key。
221
+ * 非绝对路径始终以 `workspace/pageName` 形式存储。
222
+ */
223
+ _toInternalPageKey(pageName: string): string;
224
+ /**
225
+ * 将内部 key 转换为当前 workspace 的相对名称。
226
+ * 若 key 属于其他 workspace,返回 null。
227
+ */
228
+ _toCurrentWorkspaceRelative(pageKey: string): string | null;
229
+ /**
230
+ * 设置 override 用户名(用于访问其他用户的页面数据)。
231
+ * 用户名变更时自动重置所有缓存。
232
+ * 传入 null 或 '' 表示使用当前登录用户。
233
+ *
234
+ * @param username - 要覆盖的用户名,或 null/'' 恢复当前用户
235
+ */
236
+ setUsername(username: string | null): void;
237
+ /**
238
+ * 获取当前使用的用户名(override 或当前登录用户)。
239
+ * @returns 用户名字符串,未登录时返回 null
240
+ */
241
+ getUsername(): string | null;
242
+ /**
243
+ * 初始化远端同步定时器(若尚未初始化)。
244
+ * 由 savePageData 在有数据变更时自动调用。
245
+ */
246
+ checkInitSyncTimers(): void;
247
+ /**
248
+ * 销毁 store,清除所有定时器(页面卸载时调用)。
249
+ */
250
+ destroy(): void;
251
+ /**
252
+ * 确保用户档案已加载(若已有 token)。
253
+ * 无 token 时允许匿名模式正常运行,不阻塞操作。
254
+ */
255
+ ensureUserProfile(): Promise<void>;
256
+ /** @internal 由 data 层实现 */
257
+ getValueByPath(_obj: Record<string, unknown> | null | undefined, _path: string): unknown;
258
+ /** @internal 由 data 层实现 */
259
+ setValueByPath(_obj: Record<string, unknown>, _path: string, _value: unknown): boolean;
260
+ /** @internal 由 data 层实现 */
261
+ isValidValue(_value: unknown): boolean;
262
+ /** @internal 由 sync 层实现 */
263
+ getRemotePagePath(_pageName: string): string;
264
+ /** @internal 由 sync 层实现 */
265
+ getLocalPagePath(_pageName: string): string;
266
+ }
267
+ //# sourceMappingURL=PersonalPageStore.base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PersonalPageStore.base.d.ts","sourceRoot":"","sources":["../../../../src/store/PersonalPageStore.base.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { PersonalPageStoreSync } from './PersonalPageStore.sync';
2
+ import { StorageUtil } from './LocalStorageUtil';
3
+ import type { IPersonalPageSDK } from './PersonalPageStore.types';
4
+ declare class PersonalPageStore extends PersonalPageStoreSync {
5
+ static debug: boolean;
6
+ static _log(...args: unknown[]): void;
7
+ constructor(sdk: IPersonalPageSDK);
8
+ }
9
+ export default PersonalPageStore;
10
+ export { StorageUtil };
11
+ export type { IPersonalPageSDK } from './PersonalPageStore.types';
12
+ export type { MountedFolder, SearchPath, PageMetadata, VersionConflictEvent } from './PersonalPageStore.types';
13
+ //# sourceMappingURL=PersonalPageStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PersonalPageStore.d.ts","sourceRoot":"","sources":["../../../../src/store/PersonalPageStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAClE,cAAM,iBAAkB,SAAQ,qBAAqB;IACnD,OAAgB,KAAK,UAAS;WACd,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;gBAGlC,GAAG,EAAE,gBAAgB;CAClC;AAID,eAAe,iBAAiB,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,CAAC;AACvB,YAAY,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAClE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,198 @@
1
+ /**
2
+ * PersonalPageStore.data.ts — 数据层(工具方法 + CRUD 核心)
3
+ *
4
+ * 包含:
5
+ * - getValueByPath / setValueByPath / deleteValueByPath(dot notation 路径操作)
6
+ * - isValidValue / isValueEqual(值校验/比较)
7
+ * - deepClone / mergeData(数据复制/合并)
8
+ * - getLocalPagePath / getRemotePagePath / isUseLocal
9
+ * - getMetadata / setMetadata / _getTimestamp / generateVersion
10
+ * - savePageDataTimeSeries(时序数据追加)
11
+ * - loadPageDataAsNumber
12
+ * - savePageData / deletePageData(核心 CRUD)
13
+ * - checkMergeRemoteData(版本合并,含冲突解决)
14
+ * - isRemotePageVersionChecked / setRemotePageVersionChecked
15
+ * - _markPageMutation / _getPageMutationVersion
16
+ * - loadPageDataFromRemote / loadPageData(读取入口)
17
+ */
18
+ import type { PageMetadata, TimeSeriesKeyValue } from './PersonalPageStore.types';
19
+ import { PersonalPageStoreBase } from './PersonalPageStore.base';
20
+ export declare class PersonalPageStoreData extends PersonalPageStoreBase {
21
+ /**
22
+ * 通过 dot notation 路径读取对象中的值。
23
+ * 路径不存在时返回 null。
24
+ *
25
+ * @param obj - 源对象
26
+ * @param path - 如 `"user.profile.name"`;空路径返回整个对象
27
+ */
28
+ getValueByPath(obj: Record<string, unknown> | null | undefined, path: string): unknown;
29
+ /**
30
+ * 通过 dot notation 路径在对象中写入值。
31
+ * 路径中间节点不存在时自动创建空对象。
32
+ *
33
+ * @param obj - 目标对象
34
+ * @param path - dot notation 路径;空路径时将 value 对象合并到 obj
35
+ * @param value - 要写入的值
36
+ * @returns 是否写入成功
37
+ */
38
+ setValueByPath(obj: Record<string, unknown>, path: string, value: unknown): boolean;
39
+ /**
40
+ * 通过 dot notation 路径删除对象中的值。
41
+ * @returns 是否成功删除
42
+ */
43
+ deleteValueByPath(obj: Record<string, unknown>, path: string): boolean;
44
+ /**
45
+ * 检查值是否有效(非 null / 非空字符串 / 非空对象)。
46
+ * @param value - 要检查的值
47
+ */
48
+ isValidValue(value: unknown): boolean;
49
+ /**
50
+ * 深度相等性比较(支持数组和嵌套对象)。
51
+ * @param v1 - 第一个值
52
+ * @param v2 - 第二个值
53
+ */
54
+ isValueEqual(v1: unknown, v2: unknown): boolean;
55
+ /**
56
+ * 深度克隆值(防止外部修改内部数据)。
57
+ * 支持:null / 原始类型 / Date / Array / 普通对象;
58
+ * 正确处理循环引用(WeakMap 追踪)。
59
+ *
60
+ * @param value - 要克隆的值
61
+ * @param seen - 循环引用追踪(内部参数,请勿手动传入)
62
+ */
63
+ deepClone<T>(value: T, seen?: WeakMap<object, unknown>): T;
64
+ /**
65
+ * 深度合并 source 到 target(数组替换,对象递归合并)。
66
+ * @param target - 目标对象(会被原地修改)
67
+ * @param source - 源对象
68
+ */
69
+ mergeData(target: Record<string, unknown>, source: Record<string, unknown>): Record<string, unknown>;
70
+ /**
71
+ * 计算页面在 IndexedDB / localStorage 中的存储 key。
72
+ * 格式:`personal_page_{username}_{effectiveName}`
73
+ */
74
+ getLocalPagePath(pageName: string): string;
75
+ /**
76
+ * 计算页面在 Keepwork 远端的完整路径。
77
+ * 格式:`username/remoteStorePath/effectiveName`
78
+ * @throws 未登录且无 override 用户名时抛出错误
79
+ */
80
+ getRemotePagePath(pageName: string): string;
81
+ /**
82
+ * 检查是否处于本地模式(无 token 且无 override 用户名,仅使用本地存储)。
83
+ */
84
+ isUseLocal(): boolean;
85
+ /**
86
+ * 读取页面数据对象的版本元数据(向后兼容 `metadata` 和 `_metadata` 字段)。
87
+ */
88
+ getMetadata(data: Record<string, unknown> | null | undefined): PageMetadata;
89
+ /**
90
+ * 写入页面数据对象的版本元数据(使用新字段名 `_metadata`)。
91
+ */
92
+ setMetadata(data: Record<string, unknown>, metadata: PageMetadata): void;
93
+ /**
94
+ * 生成当前时间戳字符串(格式:`YYYY-MM-DD-HH:MM:SS`)。
95
+ * 用于版本元数据的 created_at / updated_at 字段。
96
+ */
97
+ _getTimestamp(): string;
98
+ /**
99
+ * 生成自增版本元数据。
100
+ * 若远端版本比本地新,基于远端版本自增;否则基于本地版本自增。
101
+ *
102
+ * @param localData - 当前本地数据对象
103
+ * @param remoteData - 最新远端数据对象(可选)
104
+ */
105
+ generateVersion(localData?: Record<string, unknown>, remoteData?: Record<string, unknown>): PageMetadata;
106
+ /**
107
+ * 保存时序数据(数组形式,新数据插入头部,超过 maxKeyCount 时截断)。
108
+ *
109
+ * 支持 unique 类型(相同值时更新而非追加)、addictive(累加)、mean(均值)。
110
+ *
111
+ * @param pageName - 页面名
112
+ * @param keyValues - 数据键值数组,每项含 `key / value / type`
113
+ * @param maxKeyCount - 每个 key 最多保留的元素数(默认 10)
114
+ * @param bFlush - 是否立即写盘
115
+ * @param bUseCache - 是否使用缓存
116
+ */
117
+ savePageDataTimeSeries(pageName: string, keyValues: TimeSeriesKeyValue[], maxKeyCount?: number, bFlush?: boolean, bUseCache?: boolean): Promise<void>;
118
+ /**
119
+ * 读取数值型页面数据(数组时返回第一个元素)。
120
+ *
121
+ * @param pageName - 页面名
122
+ * @param key - 数据键
123
+ * @param forceRemote - 是否强制从远端加载
124
+ */
125
+ loadPageDataAsNumber(pageName: string, key: string, forceRemote?: boolean): Promise<number | null>;
126
+ /**
127
+ * 保存页面数据(核心写入入口)。
128
+ *
129
+ * 写入流程:
130
+ * 1. 检查并加载本地磁盘 + 远端数据(版本合并)
131
+ * 2. 比较新旧值,相同则跳过
132
+ * 3. 将变更写入 `personalPageDataUpdated`
133
+ * 4. 标记 pending 并触发防抖磁盘写入
134
+ *
135
+ * @param pageName - 页面名
136
+ * @param key - dot notation 数据键(`_metadata` 保留,不可直接写)
137
+ * @param value - 要保存的值;null 表示删除该键
138
+ * @param bFlush - 是否立即写盘并触发同步
139
+ * @param bUseCache - 是否使用远端缓存
140
+ */
141
+ savePageData(pageName: string, key: string, value: unknown, bFlush?: boolean, bUseCache?: boolean): Promise<void>;
142
+ /**
143
+ * 删除页面数据的指定键。
144
+ *
145
+ * @param pageName - 页面名
146
+ * @param key - dot notation 数据键(不能为 'metadata' / '_metadata')
147
+ * @param bFlush - 是否立即触发同步
148
+ * @returns 是否成功删除
149
+ */
150
+ deletePageData(pageName: string, key: string, bFlush?: boolean): Promise<boolean>;
151
+ /**
152
+ * 检查并合并远端数据(版本比较 + 冲突解决)。
153
+ *
154
+ * 合并策略:
155
+ * - 远端版本更新 → 使用远端数据
156
+ * - 本地版本更新 + bUseCache → 可能是缓存陈旧,触发冲突解决逻辑并发出 versionConflict 事件
157
+ * - 版本相同且本地为空 → 使用远端数据
158
+ *
159
+ * @param pageName - 页面名
160
+ * @param bForceMerge - 强制重新检查(忽略已检查标志)
161
+ * @param bUseCache - 是否使用远端缓存
162
+ */
163
+ checkMergeRemoteData(pageName: string, bForceMerge?: boolean, bUseCache?: boolean): Promise<void>;
164
+ isRemotePageVersionChecked(pageName: string): boolean;
165
+ setRemotePageVersionChecked(pageName: string, bChecked: boolean): void;
166
+ _markPageMutation(pageName: string): number;
167
+ _getPageMutationVersion(pageName: string): number;
168
+ /**
169
+ * 直接从远端加载页面数据(绕过版本检查)。
170
+ * 结果同步到本地缓存并写盘,下次读取直接命中缓存。
171
+ *
172
+ * @param pageName - 页面名
173
+ * @param key - dot notation 数据键
174
+ * @param bUseCache - 是否使用 API 缓存
175
+ */
176
+ loadPageDataFromRemote(pageName: string, key: string, bUseCache?: boolean): Promise<unknown>;
177
+ /**
178
+ * 加载页面数据(含版本合并,主读取入口)。
179
+ *
180
+ * 读取顺序:
181
+ * 1. `forceRemote=true` → 直接调用 loadPageDataFromRemote
182
+ * 2. 检查本地磁盘(checkLoadPageFromDisk)
183
+ * 3. 检查远端版本(checkMergeRemoteData)
184
+ * 4. 读取 personalPageDataUpdated(最高优先级)
185
+ * 5. 读取 personalPageData(原始/合并后数据)
186
+ *
187
+ * @param pageName - 页面名
188
+ * @param key - dot notation 数据键(空字符串返回整个页面对象)
189
+ * @param forceRemote - 强制从远端加载(默认 false)
190
+ * @param bUseCache - 是否使用远端缓存
191
+ */
192
+ loadPageData(pageName: string, key: string, forceRemote?: boolean, bUseCache?: boolean): Promise<unknown>;
193
+ /**
194
+ * 确保页面数据已从磁盘加载并与远端合并(懒加载门卫)。
195
+ */
196
+ checkLoadData(pageName: string, bUseCache?: boolean): Promise<void>;
197
+ }
198
+ //# sourceMappingURL=PersonalPageStore.data.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PersonalPageStore.data.d.ts","sourceRoot":"","sources":["../../../../src/store/PersonalPageStore.data.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,171 @@
1
+ /**
2
+ * PersonalPageStore.sync.ts — 同步层(磁盘读写 + 远端同步 + 文件操作 API)
3
+ *
4
+ * 包含:
5
+ * - clearLocalDisk / clearRemotePage / clearPageData
6
+ * - listPages
7
+ * - _getRemoteTreeParams / _fetchRemoteTree
8
+ * - checkLoadData / checkLoadPageFromDisk
9
+ * - saveToDisk / syncToGit / batchSaveToDisk / batchSyncToGit / batchSyncToRemote
10
+ * - debouncedDiskSave
11
+ * - 文件操作 API:readFile / replaceStringInFile / grepSearch / createFile / listDir
12
+ * - 辅助:_isFileOpScoped / _globToRegex
13
+ */
14
+ import type { ListDirOptions } from './PersonalPageStore.types';
15
+ import { PersonalPageStoreData } from './PersonalPageStore.data';
16
+ export declare class PersonalPageStoreSync extends PersonalPageStoreData {
17
+ /**
18
+ * 清除指定页面的本地磁盘(IndexedDB)数据和内存缓存。
19
+ * 同时清理 `.md` 扩展名变体,兼容旧版存储格式。
20
+ *
21
+ * @param pageName - 页面名
22
+ * @returns 是否成功清除至少一条记录
23
+ */
24
+ clearLocalDisk(pageName: string): Promise<boolean>;
25
+ /**
26
+ * 删除远端页面文件(调用 sdk.deleteMarkdownByFullPath)。
27
+ * 本地模式下跳过远端操作,直接返回 true。
28
+ *
29
+ * @param pageName - 页面名
30
+ */
31
+ clearRemotePage(pageName: string): Promise<boolean>;
32
+ /**
33
+ * 同时清除本地磁盘和远端页面。
34
+ * @param pageName - 页面名
35
+ */
36
+ clearPageData(pageName: string): Promise<void>;
37
+ /**
38
+ * 列出所有已知页面名(内存 + IndexedDB + 远端 API)。
39
+ * 委托给 `listDir('.', true)` 并去除 `.md` 扩展名。
40
+ */
41
+ listPages(): Promise<string[]>;
42
+ /**
43
+ * 获取当前 workspace 在远端的站点路径和目录参数。
44
+ * @returns `{ sitePath, remotePrefix, folderBase }`
45
+ */
46
+ _getRemoteTreeParams(): {
47
+ sitePath: string;
48
+ remotePrefix: string;
49
+ folderBase: string;
50
+ };
51
+ /**
52
+ * 获取当前 workspace 的完整远端文件树(30 秒内存缓存)。
53
+ * @returns 页面名数组(相对于 workspace,不含 .md)
54
+ */
55
+ _fetchRemoteTree(): Promise<string[]>;
56
+ /**
57
+ * 从 IndexedDB 加载页面数据(懒加载,已加载则跳过)。
58
+ * 同步迁移 localStorage 旧版数据到 IndexedDB。
59
+ *
60
+ * @param pageName - 页面名
61
+ * @param forceRefresh - 强制重新从磁盘读取
62
+ */
63
+ checkLoadPageFromDisk(pageName: string, forceRefresh?: boolean): Promise<void>;
64
+ /**
65
+ * 将内存中的最新数据序列化并写入 IndexedDB(同步调用,立即返回)。
66
+ *
67
+ * 流程:
68
+ * 1. 合并 personalPageDataUpdated 到 personalPageData
69
+ * 2. 处理 personalPageDataDeleted 中的删除 key
70
+ * 3. 更新版本元数据
71
+ * 4. 序列化为 YAML 并调用 StorageUtil.setItem
72
+ *
73
+ * @param pageName - 页面名
74
+ * @param forceSave - 即使无更新也强制保存(用于版本冲突解决)
75
+ */
76
+ saveToDisk(pageName: string, forceSave?: boolean): Promise<boolean>;
77
+ /**
78
+ * 将页面数据同步到远端 Git(editMarkdownByFullPath)。
79
+ *
80
+ * 同步前先合并最新远端版本(防止覆盖他人更改)。
81
+ * 同步成功后清除 pending 状态。
82
+ *
83
+ * @param pageName - 页面名
84
+ * @param bUseCache - 是否使用 API 缓存
85
+ */
86
+ syncToGit(pageName: string, bUseCache?: boolean): Promise<boolean>;
87
+ /**
88
+ * 防抖磁盘写入(500ms 后执行 batchSaveToDisk)。
89
+ * 写入完成后若还有待保存页面则继续递归调度。
90
+ */
91
+ debouncedDiskSave(): void;
92
+ /**
93
+ * 批量写入所有 pendingDiskPages 到 IndexedDB。
94
+ * 调用方若已在进行中,直接复用同一 Promise(合并并发)。
95
+ *
96
+ * @returns 成功保存的页面数
97
+ */
98
+ batchSaveToDisk(): Promise<number>;
99
+ /**
100
+ * 批量同步所有 pendingSync 到远端(每批并发执行,循环直到队列清空)。
101
+ * 调用方若已在进行中,直接复用同一 Promise。
102
+ *
103
+ * @param forceSync - 强制同步(当前未使用,预留参数)
104
+ * @returns 成功同步的页面数
105
+ */
106
+ batchSyncToGit(forceSync?: boolean): Promise<number>;
107
+ /**
108
+ * batchSyncToGit 的别名(兼容旧调用约定)。
109
+ */
110
+ batchSyncToRemote(forceSync?: boolean): Promise<number>;
111
+ /**
112
+ * 校验文件操作是否在 workspace 作用域内(未设置 workspace 时拒绝执行)。
113
+ * @private
114
+ */
115
+ _isFileOpScoped(callerName: string): boolean;
116
+ /**
117
+ * 将 glob 模式转换为 RegExp(支持 * / ** / ?)。
118
+ * @private
119
+ */
120
+ _globToRegex(glob: string): RegExp;
121
+ /**
122
+ * 按行范围读取文件内容。
123
+ * 文件内容存储在页面数据的 `"content"` 键下。
124
+ * 读取顺序:只读搜索路径 → 本地存储 → mountedFolder → 非只读搜索路径。
125
+ *
126
+ * @param pageName - 页面名(相当于文件路径)
127
+ * @param startLine - 起始行(1-based,默认 1)
128
+ * @param endLine - 终止行(1-based,包含,默认最后一行)
129
+ * @returns 指定行范围的内容字符串
130
+ */
131
+ readFile(pageName: string, startLine?: number, endLine?: number): Promise<string>;
132
+ /**
133
+ * 精确替换文件中的一处字符串(仅替换首次出现,若多处匹配则报错)。
134
+ * mountedFolder 中的文件走 copy-on-write:读取后写入本地。
135
+ *
136
+ * @param pageName - 页面名
137
+ * @param oldString - 要精确匹配的原始字符串
138
+ * @param newString - 替换后的字符串
139
+ * @returns 操作结果描述字符串
140
+ */
141
+ replaceStringInFile(pageName: string, oldString: string, newString: string): Promise<string>;
142
+ /**
143
+ * 在已加载页面的内容中全文搜索(text / regex)。
144
+ * 当 `includePattern` 为精确文件名时,还会从磁盘/远端加载该文件。
145
+ *
146
+ * @param query - 搜索字符串或正则模式
147
+ * @param isRegexp - 是否将 query 视为正则表达式
148
+ * @param includePattern - Glob 模式,用于过滤搜索范围
149
+ * @param maxResults - 最大返回结果数(默认 100)
150
+ * @returns 格式化的搜索结果字符串
151
+ */
152
+ grepSearch(query: string, isRegexp?: boolean, includePattern?: string, maxResults?: number): Promise<string>;
153
+ /**
154
+ * 创建或覆盖文件(将内容存储到页面的 `"content"` 键)。
155
+ *
156
+ * @param pageName - 页面名(文件路径)
157
+ * @param content - 文件内容(undefined/null 写入空字符串)
158
+ */
159
+ createFile(pageName: string, content?: string): Promise<string>;
160
+ /**
161
+ * 列出目录内容(本地 + 远端 + mountedFolder 三源合并)。
162
+ * 目录以 `/` 结尾,文件不加后缀(但内部用 `.md` 标识)。
163
+ *
164
+ * @param dirPath - 目录路径;`"."` / `""` / `"/"` 表示 workspace 根
165
+ * @param recursive - 是否递归列出(默认 false)
166
+ * @param options - showInvisibleFiles / remoteOnly / skipLocalOnlyFile
167
+ * @returns 换行分隔的子项名称字符串
168
+ */
169
+ listDir(dirPath: string, recursive?: boolean, options?: ListDirOptions | null): Promise<string>;
170
+ }
171
+ //# sourceMappingURL=PersonalPageStore.sync.d.ts.map