@researai/deepscientist 1.5.15 → 1.5.17

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 (202) hide show
  1. package/README.md +385 -104
  2. package/bin/ds.js +1241 -110
  3. package/docs/en/00_QUICK_START.md +100 -19
  4. package/docs/en/01_SETTINGS_REFERENCE.md +34 -1
  5. package/docs/en/02_START_RESEARCH_GUIDE.md +7 -0
  6. package/docs/en/05_TUI_GUIDE.md +6 -0
  7. package/docs/en/06_RUNTIME_AND_CANVAS.md +4 -3
  8. package/docs/en/09_DOCTOR.md +25 -8
  9. package/docs/en/14_PROMPT_SKILLS_AND_MCP_GUIDE.md +63 -13
  10. package/docs/en/15_CODEX_PROVIDER_SETUP.md +37 -11
  11. package/docs/en/19_EXTERNAL_CONTROLLER_GUIDE.md +226 -0
  12. package/docs/en/19_LOCAL_BROWSER_AUTH.md +70 -0
  13. package/docs/en/20_WORKSPACE_MODES_GUIDE.md +250 -0
  14. package/docs/en/21_LOCAL_MODEL_BACKENDS_GUIDE.md +283 -0
  15. package/docs/en/91_DEVELOPMENT.md +237 -0
  16. package/docs/en/README.md +24 -2
  17. package/docs/zh/00_QUICK_START.md +89 -19
  18. package/docs/zh/01_SETTINGS_REFERENCE.md +34 -1
  19. package/docs/zh/02_START_RESEARCH_GUIDE.md +7 -0
  20. package/docs/zh/05_TUI_GUIDE.md +6 -0
  21. package/docs/zh/09_DOCTOR.md +26 -9
  22. package/docs/zh/14_PROMPT_SKILLS_AND_MCP_GUIDE.md +63 -13
  23. package/docs/zh/15_CODEX_PROVIDER_SETUP.md +37 -11
  24. package/docs/zh/19_EXTERNAL_CONTROLLER_GUIDE.md +226 -0
  25. package/docs/zh/19_LOCAL_BROWSER_AUTH.md +68 -0
  26. package/docs/zh/20_WORKSPACE_MODES_GUIDE.md +251 -0
  27. package/docs/zh/21_LOCAL_MODEL_BACKENDS_GUIDE.md +281 -0
  28. package/docs/zh/README.md +24 -2
  29. package/install.sh +46 -4
  30. package/package.json +2 -1
  31. package/pyproject.toml +1 -1
  32. package/src/deepscientist/__init__.py +1 -1
  33. package/src/deepscientist/acp/envelope.py +6 -0
  34. package/src/deepscientist/artifact/service.py +647 -22
  35. package/src/deepscientist/bash_exec/service.py +234 -9
  36. package/src/deepscientist/bridges/connectors.py +8 -2
  37. package/src/deepscientist/cli.py +115 -19
  38. package/src/deepscientist/codex_cli_compat.py +367 -22
  39. package/src/deepscientist/config/models.py +2 -1
  40. package/src/deepscientist/config/service.py +183 -13
  41. package/src/deepscientist/daemon/api/handlers.py +255 -31
  42. package/src/deepscientist/daemon/api/router.py +9 -0
  43. package/src/deepscientist/daemon/app.py +1146 -105
  44. package/src/deepscientist/diagnostics/__init__.py +6 -0
  45. package/src/deepscientist/diagnostics/runner_failures.py +130 -0
  46. package/src/deepscientist/doctor.py +207 -3
  47. package/src/deepscientist/gitops/__init__.py +10 -1
  48. package/src/deepscientist/gitops/diff.py +129 -0
  49. package/src/deepscientist/gitops/service.py +4 -1
  50. package/src/deepscientist/mcp/server.py +39 -0
  51. package/src/deepscientist/prompts/builder.py +275 -34
  52. package/src/deepscientist/quest/layout.py +15 -2
  53. package/src/deepscientist/quest/service.py +707 -55
  54. package/src/deepscientist/quest/stage_views.py +6 -1
  55. package/src/deepscientist/runners/codex.py +143 -43
  56. package/src/deepscientist/shared.py +19 -0
  57. package/src/deepscientist/skills/__init__.py +2 -2
  58. package/src/deepscientist/skills/installer.py +196 -5
  59. package/src/deepscientist/skills/registry.py +66 -0
  60. package/src/prompts/connectors/qq.md +18 -8
  61. package/src/prompts/connectors/weixin.md +16 -6
  62. package/src/prompts/contracts/shared_interaction.md +14 -2
  63. package/src/prompts/system.md +23 -5
  64. package/src/prompts/system_copilot.md +56 -0
  65. package/src/skills/analysis-campaign/SKILL.md +1 -0
  66. package/src/skills/baseline/SKILL.md +8 -0
  67. package/src/skills/decision/SKILL.md +8 -0
  68. package/src/skills/experiment/SKILL.md +8 -0
  69. package/src/skills/figure-polish/SKILL.md +1 -0
  70. package/src/skills/finalize/SKILL.md +1 -0
  71. package/src/skills/idea/SKILL.md +1 -0
  72. package/src/skills/intake-audit/SKILL.md +8 -0
  73. package/src/skills/mentor/SKILL.md +217 -0
  74. package/src/skills/mentor/references/correction-rules.md +210 -0
  75. package/src/skills/mentor/references/knowledge-profile.md +91 -0
  76. package/src/skills/mentor/references/persona-profile.md +138 -0
  77. package/src/skills/mentor/references/taste-profile.md +128 -0
  78. package/src/skills/mentor/references/thought-style-profile.md +138 -0
  79. package/src/skills/mentor/references/work-profile.md +289 -0
  80. package/src/skills/mentor/references/workflow-profile.md +240 -0
  81. package/src/skills/optimize/SKILL.md +1 -0
  82. package/src/skills/rebuttal/SKILL.md +1 -0
  83. package/src/skills/review/SKILL.md +1 -0
  84. package/src/skills/scout/SKILL.md +8 -0
  85. package/src/skills/write/SKILL.md +1 -0
  86. package/src/tui/dist/app/AppContainer.js +19 -11
  87. package/src/tui/dist/index.js +4 -1
  88. package/src/tui/dist/lib/api.js +33 -3
  89. package/src/tui/package.json +1 -1
  90. package/src/ui/dist/assets/AiManusChatView-Bv-Z8YpU.js +204 -0
  91. package/src/ui/dist/assets/AnalysisPlugin-BCKAfjba.js +1 -0
  92. package/src/ui/dist/assets/CliPlugin-BCKcpc35.js +109 -0
  93. package/src/ui/dist/assets/CodeEditorPlugin-DbOfSJ8K.js +2 -0
  94. package/src/ui/dist/assets/CodeViewerPlugin-CbaFRrUU.js +270 -0
  95. package/src/ui/dist/assets/DocViewerPlugin-DAjLVeQD.js +7 -0
  96. package/src/ui/dist/assets/GitCommitViewerPlugin-CIUqbUDO.js +1 -0
  97. package/src/ui/dist/assets/GitDiffViewerPlugin-CQACjoAA.js +6 -0
  98. package/src/ui/dist/assets/GitSnapshotViewer-0r4nLPke.js +30 -0
  99. package/src/ui/dist/assets/ImageViewerPlugin-nBOmI2v_.js +26 -0
  100. package/src/ui/dist/assets/LabCopilotPanel-BHxOxF4z.js +14 -0
  101. package/src/ui/dist/assets/LabPlugin-BKoZGs95.js +22 -0
  102. package/src/ui/dist/assets/LatexPlugin-ZwtV8pIp.js +25 -0
  103. package/src/ui/dist/assets/MarkdownViewerPlugin-DKqVfKyW.js +128 -0
  104. package/src/ui/dist/assets/MarketplacePlugin-BwxStZ9D.js +13 -0
  105. package/src/ui/dist/assets/NotebookEditor-BEQhaQbt.js +81 -0
  106. package/src/ui/dist/assets/{NotebookEditor-CccQYZjX.css → NotebookEditor-BHH8rdGj.css} +1 -1
  107. package/src/ui/dist/assets/NotebookEditor-BOr3x3Ej.css +1 -0
  108. package/src/ui/dist/assets/NotebookEditor-DB9N_T9q.js +361 -0
  109. package/src/ui/dist/assets/PdfLoader-Cy5jtWrr.css +1 -0
  110. package/src/ui/dist/assets/PdfLoader-eWBONbQP.js +16 -0
  111. package/src/ui/dist/assets/PdfMarkdownPlugin-D22YOZL3.js +1 -0
  112. package/src/ui/dist/assets/PdfViewerPlugin-c-RK9DLM.js +17 -0
  113. package/src/ui/dist/assets/PdfViewerPlugin-nwwE-fjJ.css +1 -0
  114. package/src/ui/dist/assets/SearchPlugin-CxF9ytAx.js +16 -0
  115. package/src/ui/dist/assets/SearchPlugin-DA4en4hK.css +1 -0
  116. package/src/ui/dist/assets/TextViewerPlugin-C5xqeeUH.js +54 -0
  117. package/src/ui/dist/assets/VNCViewer-BoLGLnHz.js +11 -0
  118. package/src/ui/dist/assets/bot-DREQOxzP.js +6 -0
  119. package/src/ui/dist/assets/browser-CTB2jwNe.js +8 -0
  120. package/src/ui/dist/assets/chevron-up-C9Qpx4DE.js +6 -0
  121. package/src/ui/dist/assets/code-WlFHE7z_.js +6 -0
  122. package/src/ui/dist/assets/file-content-BZMz3RYp.js +1 -0
  123. package/src/ui/dist/assets/file-diff-panel-CQhw0jS2.js +1 -0
  124. package/src/ui/dist/assets/file-jump-queue-DA-SdG__.js +1 -0
  125. package/src/ui/dist/assets/file-socket-CfQPKQKj.js +1 -0
  126. package/src/ui/dist/assets/git-commit-horizontal-DxZ8DCZh.js +6 -0
  127. package/src/ui/dist/assets/image-Bgl4VIyx.js +6 -0
  128. package/src/ui/dist/assets/index-BpV6lusQ.css +33 -0
  129. package/src/ui/dist/assets/index-CBNVuWcP.js +2496 -0
  130. package/src/ui/dist/assets/index-CwNu1aH4.js +11 -0
  131. package/src/ui/dist/assets/index-DrUnlf6K.js +1 -0
  132. package/src/ui/dist/assets/index-NW-h8VzN.js +1 -0
  133. package/src/ui/dist/assets/monaco-CiHMMNH_.js +1 -0
  134. package/src/ui/dist/assets/pdf-effect-queue-J8OnM0jE.js +6 -0
  135. package/src/ui/dist/assets/plugin-monaco-C8UgLomw.js +19 -0
  136. package/src/ui/dist/assets/plugin-notebook-HbW2K-1c.js +169 -0
  137. package/src/ui/dist/assets/plugin-pdf-CR8hgQBV.js +357 -0
  138. package/src/ui/dist/assets/plugin-terminal-MXFIPun8.js +227 -0
  139. package/src/ui/dist/assets/popover-CLc0pPP8.js +1 -0
  140. package/src/ui/dist/assets/project-sync-C9IdzdZW.js +1 -0
  141. package/src/ui/dist/assets/select-Cs2PmzwL.js +11 -0
  142. package/src/ui/dist/assets/sigma-ClKcHAXm.js +6 -0
  143. package/src/ui/dist/assets/trash-DwpbFr3w.js +11 -0
  144. package/src/ui/dist/assets/useCliAccess-NQ8m0Let.js +1 -0
  145. package/src/ui/dist/assets/useFileDiffOverlay-FuhcnKiw.js +1 -0
  146. package/src/ui/dist/assets/wrap-text-BC-Hltpd.js +11 -0
  147. package/src/ui/dist/assets/zoom-out-E_gaeAxL.js +11 -0
  148. package/src/ui/dist/index.html +5 -2
  149. package/src/ui/dist/assets/AiManusChatView-DDjbFnbt.js +0 -26597
  150. package/src/ui/dist/assets/AnalysisPlugin-Yb5IdmaU.js +0 -123
  151. package/src/ui/dist/assets/CliPlugin-e64sreyu.js +0 -31037
  152. package/src/ui/dist/assets/CodeEditorPlugin-C4D2TIkU.js +0 -427
  153. package/src/ui/dist/assets/CodeViewerPlugin-BVoNZIvC.js +0 -905
  154. package/src/ui/dist/assets/DocViewerPlugin-CLChbllo.js +0 -278
  155. package/src/ui/dist/assets/GitDiffViewerPlugin-C4xeFyFQ.js +0 -2661
  156. package/src/ui/dist/assets/ImageViewerPlugin-OiMUAcLi.js +0 -500
  157. package/src/ui/dist/assets/LabCopilotPanel-BjD2ThQF.js +0 -4104
  158. package/src/ui/dist/assets/LabPlugin-DQPg-NrB.js +0 -2677
  159. package/src/ui/dist/assets/LatexPlugin-CI05XAV9.js +0 -1792
  160. package/src/ui/dist/assets/MarkdownViewerPlugin-DpeBLYZf.js +0 -308
  161. package/src/ui/dist/assets/MarketplacePlugin-DolE58Q2.js +0 -413
  162. package/src/ui/dist/assets/NotebookEditor-7Qm2rSWD.js +0 -4214
  163. package/src/ui/dist/assets/NotebookEditor-C1kWaxKi.js +0 -84873
  164. package/src/ui/dist/assets/NotebookEditor-C3VQ7ylN.css +0 -1405
  165. package/src/ui/dist/assets/PdfLoader-BfOHw8Zw.js +0 -25468
  166. package/src/ui/dist/assets/PdfLoader-C-Y707R3.css +0 -49
  167. package/src/ui/dist/assets/PdfMarkdownPlugin-BulDREv1.js +0 -409
  168. package/src/ui/dist/assets/PdfViewerPlugin-C-daaOaL.js +0 -3095
  169. package/src/ui/dist/assets/PdfViewerPlugin-DQ11QcSf.css +0 -3627
  170. package/src/ui/dist/assets/SearchPlugin-CjpaiJ3A.js +0 -741
  171. package/src/ui/dist/assets/SearchPlugin-DDMrGDkh.css +0 -379
  172. package/src/ui/dist/assets/TextViewerPlugin-BxIyqPQC.js +0 -472
  173. package/src/ui/dist/assets/VNCViewer-HAg9mF7M.js +0 -18821
  174. package/src/ui/dist/assets/awareness-C0NPR2Dj.js +0 -292
  175. package/src/ui/dist/assets/bot-0DYntytV.js +0 -21
  176. package/src/ui/dist/assets/browser-BAcuE0Xj.js +0 -2895
  177. package/src/ui/dist/assets/code-B20Slj_w.js +0 -17
  178. package/src/ui/dist/assets/file-content-DT24KFma.js +0 -377
  179. package/src/ui/dist/assets/file-diff-panel-DK13YPql.js +0 -92
  180. package/src/ui/dist/assets/file-jump-queue-r5XKgJEV.js +0 -16
  181. package/src/ui/dist/assets/file-socket-B4T2o4nR.js +0 -58
  182. package/src/ui/dist/assets/function-B5QZkkHC.js +0 -1895
  183. package/src/ui/dist/assets/image-DSeR_sDS.js +0 -18
  184. package/src/ui/dist/assets/index-BrFje2Uk.js +0 -120
  185. package/src/ui/dist/assets/index-BwRJaoTl.js +0 -25
  186. package/src/ui/dist/assets/index-D_E4281X.js +0 -221322
  187. package/src/ui/dist/assets/index-DnYB3xb1.js +0 -159
  188. package/src/ui/dist/assets/index-G7AcWcMu.css +0 -12594
  189. package/src/ui/dist/assets/monaco-LExaAN3Y.js +0 -623
  190. package/src/ui/dist/assets/pdf-effect-queue-BJk5okWJ.js +0 -47
  191. package/src/ui/dist/assets/pdf_viewer-e0g1is2C.js +0 -8206
  192. package/src/ui/dist/assets/popover-D3Gg_FoV.js +0 -476
  193. package/src/ui/dist/assets/project-sync-C_ygLlVU.js +0 -297
  194. package/src/ui/dist/assets/select-CpAK6uWm.js +0 -1690
  195. package/src/ui/dist/assets/sigma-DEccaSgk.js +0 -22
  196. package/src/ui/dist/assets/square-check-big-uUfyVsbD.js +0 -17
  197. package/src/ui/dist/assets/trash-CXvwwSe8.js +0 -32
  198. package/src/ui/dist/assets/useCliAccess-Bnop4mgR.js +0 -957
  199. package/src/ui/dist/assets/useFileDiffOverlay-B8eUAX0I.js +0 -53
  200. package/src/ui/dist/assets/wrap-text-9vbOBpkW.js +0 -35
  201. package/src/ui/dist/assets/yjs-DncrqiZ8.js +0 -11243
  202. package/src/ui/dist/assets/zoom-out-BgVMmOW4.js +0 -34
@@ -1,292 +0,0 @@
1
- import { O as Observable, f as floor, g as getUnixTime, e as equalityDeep, r as readVarUint, a as readVarString, w as writeVarUint, b as writeVarString, t as toUint8Array, c as createEncoder, d as createDecoder } from './function-B5QZkkHC.js';
2
-
3
- /**
4
- * @module awareness-protocol
5
- */
6
-
7
-
8
- const outdatedTimeout = 30000;
9
-
10
- /**
11
- * @typedef {Object} MetaClientState
12
- * @property {number} MetaClientState.clock
13
- * @property {number} MetaClientState.lastUpdated unix timestamp
14
- */
15
-
16
- /**
17
- * The Awareness class implements a simple shared state protocol that can be used for non-persistent data like awareness information
18
- * (cursor, username, status, ..). Each client can update its own local state and listen to state changes of
19
- * remote clients. Every client may set a state of a remote peer to `null` to mark the client as offline.
20
- *
21
- * Each client is identified by a unique client id (something we borrow from `doc.clientID`). A client can override
22
- * its own state by propagating a message with an increasing timestamp (`clock`). If such a message is received, it is
23
- * applied if the known state of that client is older than the new state (`clock < newClock`). If a client thinks that
24
- * a remote client is offline, it may propagate a message with
25
- * `{ clock: currentClientClock, state: null, client: remoteClient }`. If such a
26
- * message is received, and the known clock of that client equals the received clock, it will override the state with `null`.
27
- *
28
- * Before a client disconnects, it should propagate a `null` state with an updated clock.
29
- *
30
- * Awareness states must be updated every 30 seconds. Otherwise the Awareness instance will delete the client state.
31
- *
32
- * @extends {Observable<string>}
33
- */
34
- class Awareness extends Observable {
35
- /**
36
- * @param {Y.Doc} doc
37
- */
38
- constructor (doc) {
39
- super();
40
- this.doc = doc;
41
- /**
42
- * @type {number}
43
- */
44
- this.clientID = doc.clientID;
45
- /**
46
- * Maps from client id to client state
47
- * @type {Map<number, Object<string, any>>}
48
- */
49
- this.states = new Map();
50
- /**
51
- * @type {Map<number, MetaClientState>}
52
- */
53
- this.meta = new Map();
54
- this._checkInterval = /** @type {any} */ (setInterval(() => {
55
- const now = getUnixTime();
56
- if (this.getLocalState() !== null && (outdatedTimeout / 2 <= now - /** @type {{lastUpdated:number}} */ (this.meta.get(this.clientID)).lastUpdated)) {
57
- // renew local clock
58
- this.setLocalState(this.getLocalState());
59
- }
60
- /**
61
- * @type {Array<number>}
62
- */
63
- const remove = [];
64
- this.meta.forEach((meta, clientid) => {
65
- if (clientid !== this.clientID && outdatedTimeout <= now - meta.lastUpdated && this.states.has(clientid)) {
66
- remove.push(clientid);
67
- }
68
- });
69
- if (remove.length > 0) {
70
- removeAwarenessStates(this, remove, 'timeout');
71
- }
72
- }, floor(outdatedTimeout / 10)));
73
- doc.on('destroy', () => {
74
- this.destroy();
75
- });
76
- this.setLocalState({});
77
- }
78
-
79
- destroy () {
80
- this.emit('destroy', [this]);
81
- this.setLocalState(null);
82
- super.destroy();
83
- clearInterval(this._checkInterval);
84
- }
85
-
86
- /**
87
- * @return {Object<string,any>|null}
88
- */
89
- getLocalState () {
90
- return this.states.get(this.clientID) || null
91
- }
92
-
93
- /**
94
- * @param {Object<string,any>|null} state
95
- */
96
- setLocalState (state) {
97
- const clientID = this.clientID;
98
- const currLocalMeta = this.meta.get(clientID);
99
- const clock = currLocalMeta === undefined ? 0 : currLocalMeta.clock + 1;
100
- const prevState = this.states.get(clientID);
101
- if (state === null) {
102
- this.states.delete(clientID);
103
- } else {
104
- this.states.set(clientID, state);
105
- }
106
- this.meta.set(clientID, {
107
- clock,
108
- lastUpdated: getUnixTime()
109
- });
110
- const added = [];
111
- const updated = [];
112
- const filteredUpdated = [];
113
- const removed = [];
114
- if (state === null) {
115
- removed.push(clientID);
116
- } else if (prevState == null) {
117
- if (state != null) {
118
- added.push(clientID);
119
- }
120
- } else {
121
- updated.push(clientID);
122
- if (!equalityDeep(prevState, state)) {
123
- filteredUpdated.push(clientID);
124
- }
125
- }
126
- if (added.length > 0 || filteredUpdated.length > 0 || removed.length > 0) {
127
- this.emit('change', [{ added, updated: filteredUpdated, removed }, 'local']);
128
- }
129
- this.emit('update', [{ added, updated, removed }, 'local']);
130
- }
131
-
132
- /**
133
- * @param {string} field
134
- * @param {any} value
135
- */
136
- setLocalStateField (field, value) {
137
- const state = this.getLocalState();
138
- if (state !== null) {
139
- this.setLocalState({
140
- ...state,
141
- [field]: value
142
- });
143
- }
144
- }
145
-
146
- /**
147
- * @return {Map<number,Object<string,any>>}
148
- */
149
- getStates () {
150
- return this.states
151
- }
152
- }
153
-
154
- /**
155
- * Mark (remote) clients as inactive and remove them from the list of active peers.
156
- * This change will be propagated to remote clients.
157
- *
158
- * @param {Awareness} awareness
159
- * @param {Array<number>} clients
160
- * @param {any} origin
161
- */
162
- const removeAwarenessStates = (awareness, clients, origin) => {
163
- const removed = [];
164
- for (let i = 0; i < clients.length; i++) {
165
- const clientID = clients[i];
166
- if (awareness.states.has(clientID)) {
167
- awareness.states.delete(clientID);
168
- if (clientID === awareness.clientID) {
169
- const curMeta = /** @type {MetaClientState} */ (awareness.meta.get(clientID));
170
- awareness.meta.set(clientID, {
171
- clock: curMeta.clock + 1,
172
- lastUpdated: getUnixTime()
173
- });
174
- }
175
- removed.push(clientID);
176
- }
177
- }
178
- if (removed.length > 0) {
179
- awareness.emit('change', [{ added: [], updated: [], removed }, origin]);
180
- awareness.emit('update', [{ added: [], updated: [], removed }, origin]);
181
- }
182
- };
183
-
184
- /**
185
- * @param {Awareness} awareness
186
- * @param {Array<number>} clients
187
- * @return {Uint8Array}
188
- */
189
- const encodeAwarenessUpdate = (awareness, clients, states = awareness.states) => {
190
- const len = clients.length;
191
- const encoder = createEncoder();
192
- writeVarUint(encoder, len);
193
- for (let i = 0; i < len; i++) {
194
- const clientID = clients[i];
195
- const state = states.get(clientID) || null;
196
- const clock = /** @type {MetaClientState} */ (awareness.meta.get(clientID)).clock;
197
- writeVarUint(encoder, clientID);
198
- writeVarUint(encoder, clock);
199
- writeVarString(encoder, JSON.stringify(state));
200
- }
201
- return toUint8Array(encoder)
202
- };
203
-
204
- /**
205
- * Modify the content of an awareness update before re-encoding it to an awareness update.
206
- *
207
- * This might be useful when you have a central server that wants to ensure that clients
208
- * cant hijack somebody elses identity.
209
- *
210
- * @param {Uint8Array} update
211
- * @param {function(any):any} modify
212
- * @return {Uint8Array}
213
- */
214
- const modifyAwarenessUpdate = (update, modify) => {
215
- const decoder = createDecoder(update);
216
- const encoder = createEncoder();
217
- const len = readVarUint(decoder);
218
- writeVarUint(encoder, len);
219
- for (let i = 0; i < len; i++) {
220
- const clientID = readVarUint(decoder);
221
- const clock = readVarUint(decoder);
222
- const state = JSON.parse(readVarString(decoder));
223
- const modifiedState = modify(state);
224
- writeVarUint(encoder, clientID);
225
- writeVarUint(encoder, clock);
226
- writeVarString(encoder, JSON.stringify(modifiedState));
227
- }
228
- return toUint8Array(encoder)
229
- };
230
-
231
- /**
232
- * @param {Awareness} awareness
233
- * @param {Uint8Array} update
234
- * @param {any} origin This will be added to the emitted change event
235
- */
236
- const applyAwarenessUpdate = (awareness, update, origin) => {
237
- const decoder = createDecoder(update);
238
- const timestamp = getUnixTime();
239
- const added = [];
240
- const updated = [];
241
- const filteredUpdated = [];
242
- const removed = [];
243
- const len = readVarUint(decoder);
244
- for (let i = 0; i < len; i++) {
245
- const clientID = readVarUint(decoder);
246
- let clock = readVarUint(decoder);
247
- const state = JSON.parse(readVarString(decoder));
248
- const clientMeta = awareness.meta.get(clientID);
249
- const prevState = awareness.states.get(clientID);
250
- const currClock = clientMeta === undefined ? 0 : clientMeta.clock;
251
- if (currClock < clock || (currClock === clock && state === null && awareness.states.has(clientID))) {
252
- if (state === null) {
253
- // never let a remote client remove this local state
254
- if (clientID === awareness.clientID && awareness.getLocalState() != null) {
255
- // remote client removed the local state. Do not remote state. Broadcast a message indicating
256
- // that this client still exists by increasing the clock
257
- clock++;
258
- } else {
259
- awareness.states.delete(clientID);
260
- }
261
- } else {
262
- awareness.states.set(clientID, state);
263
- }
264
- awareness.meta.set(clientID, {
265
- clock,
266
- lastUpdated: timestamp
267
- });
268
- if (clientMeta === undefined && state !== null) {
269
- added.push(clientID);
270
- } else if (clientMeta !== undefined && state === null) {
271
- removed.push(clientID);
272
- } else if (state !== null) {
273
- if (!equalityDeep(state, prevState)) {
274
- filteredUpdated.push(clientID);
275
- }
276
- updated.push(clientID);
277
- }
278
- }
279
- }
280
- if (added.length > 0 || filteredUpdated.length > 0 || removed.length > 0) {
281
- awareness.emit('change', [{
282
- added, updated: filteredUpdated, removed
283
- }, origin]);
284
- }
285
- if (added.length > 0 || updated.length > 0 || removed.length > 0) {
286
- awareness.emit('update', [{
287
- added, updated, removed
288
- }, origin]);
289
- }
290
- };
291
-
292
- export { Awareness, applyAwarenessUpdate, encodeAwarenessUpdate, modifyAwarenessUpdate, outdatedTimeout, removeAwarenessStates };
@@ -1,21 +0,0 @@
1
- import { w as createLucideIcon } from './index-D_E4281X.js';
2
-
3
- /**
4
- * @license lucide-react v0.511.0 - ISC
5
- *
6
- * This source code is licensed under the ISC license.
7
- * See the LICENSE file in the root directory of this source tree.
8
- */
9
-
10
-
11
- const __iconNode = [
12
- ["path", { d: "M12 8V4H8", key: "hb8ula" }],
13
- ["rect", { width: "16", height: "12", x: "4", y: "8", rx: "2", key: "enze0r" }],
14
- ["path", { d: "M2 14h2", key: "vft8re" }],
15
- ["path", { d: "M20 14h2", key: "4cs60a" }],
16
- ["path", { d: "M15 13v2", key: "1xurst" }],
17
- ["path", { d: "M9 13v2", key: "rq6x2g" }]
18
- ];
19
- const Bot = createLucideIcon("bot", __iconNode);
20
-
21
- export { Bot as B };