@researai/deepscientist 1.5.14 → 1.5.16

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 (225) hide show
  1. package/README.md +336 -90
  2. package/assets/branding/logo-raster.png +0 -0
  3. package/bin/ds.js +816 -131
  4. package/docs/en/00_QUICK_START.md +36 -15
  5. package/docs/en/01_SETTINGS_REFERENCE.md +53 -4
  6. package/docs/en/02_START_RESEARCH_GUIDE.md +7 -0
  7. package/docs/en/03_QQ_CONNECTOR_GUIDE.md +19 -0
  8. package/docs/en/05_TUI_GUIDE.md +6 -0
  9. package/docs/en/06_RUNTIME_AND_CANVAS.md +4 -3
  10. package/docs/en/09_DOCTOR.md +11 -5
  11. package/docs/en/10_WEIXIN_CONNECTOR_GUIDE.md +20 -0
  12. package/docs/en/14_PROMPT_SKILLS_AND_MCP_GUIDE.md +65 -13
  13. package/docs/en/15_CODEX_PROVIDER_SETUP.md +25 -8
  14. package/docs/en/16_TELEGRAM_CONNECTOR_GUIDE.md +134 -0
  15. package/docs/en/17_WHATSAPP_CONNECTOR_GUIDE.md +126 -0
  16. package/docs/en/18_FEISHU_CONNECTOR_GUIDE.md +136 -0
  17. package/docs/en/19_EXTERNAL_CONTROLLER_GUIDE.md +226 -0
  18. package/docs/en/19_LOCAL_BROWSER_AUTH.md +70 -0
  19. package/docs/en/20_WORKSPACE_MODES_GUIDE.md +250 -0
  20. package/docs/en/README.md +24 -0
  21. package/docs/zh/00_QUICK_START.md +36 -15
  22. package/docs/zh/01_SETTINGS_REFERENCE.md +53 -4
  23. package/docs/zh/02_START_RESEARCH_GUIDE.md +7 -0
  24. package/docs/zh/03_QQ_CONNECTOR_GUIDE.md +19 -0
  25. package/docs/zh/05_TUI_GUIDE.md +6 -0
  26. package/docs/zh/09_DOCTOR.md +11 -5
  27. package/docs/zh/10_WEIXIN_CONNECTOR_GUIDE.md +20 -0
  28. package/docs/zh/14_PROMPT_SKILLS_AND_MCP_GUIDE.md +65 -13
  29. package/docs/zh/15_CODEX_PROVIDER_SETUP.md +25 -8
  30. package/docs/zh/16_TELEGRAM_CONNECTOR_GUIDE.md +134 -0
  31. package/docs/zh/17_WHATSAPP_CONNECTOR_GUIDE.md +126 -0
  32. package/docs/zh/18_FEISHU_CONNECTOR_GUIDE.md +136 -0
  33. package/docs/zh/19_EXTERNAL_CONTROLLER_GUIDE.md +226 -0
  34. package/docs/zh/19_LOCAL_BROWSER_AUTH.md +68 -0
  35. package/docs/zh/20_WORKSPACE_MODES_GUIDE.md +251 -0
  36. package/docs/zh/README.md +24 -0
  37. package/install.sh +2 -0
  38. package/package.json +1 -1
  39. package/pyproject.toml +1 -1
  40. package/src/deepscientist/__init__.py +1 -1
  41. package/src/deepscientist/acp/envelope.py +6 -0
  42. package/src/deepscientist/artifact/charts.py +567 -0
  43. package/src/deepscientist/artifact/guidance.py +50 -10
  44. package/src/deepscientist/artifact/metrics.py +228 -5
  45. package/src/deepscientist/artifact/schemas.py +3 -0
  46. package/src/deepscientist/artifact/service.py +4276 -308
  47. package/src/deepscientist/bash_exec/models.py +23 -0
  48. package/src/deepscientist/bash_exec/monitor.py +147 -67
  49. package/src/deepscientist/bash_exec/runtime.py +218 -156
  50. package/src/deepscientist/bash_exec/service.py +309 -69
  51. package/src/deepscientist/bash_exec/shells.py +87 -0
  52. package/src/deepscientist/bridges/connectors.py +51 -2
  53. package/src/deepscientist/cli.py +115 -19
  54. package/src/deepscientist/codex_cli_compat.py +232 -0
  55. package/src/deepscientist/config/models.py +8 -4
  56. package/src/deepscientist/config/service.py +38 -11
  57. package/src/deepscientist/connector/weixin_support.py +122 -1
  58. package/src/deepscientist/daemon/api/handlers.py +199 -9
  59. package/src/deepscientist/daemon/api/router.py +5 -0
  60. package/src/deepscientist/daemon/app.py +1458 -289
  61. package/src/deepscientist/doctor.py +51 -0
  62. package/src/deepscientist/file_lock.py +48 -0
  63. package/src/deepscientist/gitops/__init__.py +10 -1
  64. package/src/deepscientist/gitops/diff.py +296 -1
  65. package/src/deepscientist/gitops/service.py +4 -1
  66. package/src/deepscientist/mcp/server.py +212 -5
  67. package/src/deepscientist/process_control.py +161 -0
  68. package/src/deepscientist/prompts/builder.py +501 -453
  69. package/src/deepscientist/quest/layout.py +15 -2
  70. package/src/deepscientist/quest/service.py +2539 -195
  71. package/src/deepscientist/quest/stage_views.py +177 -1
  72. package/src/deepscientist/runners/base.py +2 -0
  73. package/src/deepscientist/runners/codex.py +169 -31
  74. package/src/deepscientist/runners/runtime_overrides.py +17 -1
  75. package/src/deepscientist/skills/__init__.py +2 -2
  76. package/src/deepscientist/skills/installer.py +196 -5
  77. package/src/deepscientist/skills/registry.py +66 -0
  78. package/src/prompts/connectors/qq.md +18 -8
  79. package/src/prompts/connectors/weixin.md +16 -6
  80. package/src/prompts/contracts/shared_interaction.md +24 -4
  81. package/src/prompts/system.md +921 -72
  82. package/src/prompts/system_copilot.md +43 -0
  83. package/src/skills/analysis-campaign/SKILL.md +32 -2
  84. package/src/skills/analysis-campaign/references/artifact-orchestration.md +1 -1
  85. package/src/skills/analysis-campaign/references/writing-facing-slice-examples.md +65 -0
  86. package/src/skills/baseline/SKILL.md +10 -0
  87. package/src/skills/decision/SKILL.md +27 -2
  88. package/src/skills/experiment/SKILL.md +16 -2
  89. package/src/skills/figure-polish/SKILL.md +1 -0
  90. package/src/skills/finalize/SKILL.md +19 -0
  91. package/src/skills/idea/SKILL.md +79 -0
  92. package/src/skills/idea/references/idea-generation-playbook.md +100 -0
  93. package/src/skills/idea/references/outline-seeding-example.md +60 -0
  94. package/src/skills/intake-audit/SKILL.md +9 -1
  95. package/src/skills/mentor/SKILL.md +217 -0
  96. package/src/skills/mentor/references/correction-rules.md +210 -0
  97. package/src/skills/mentor/references/knowledge-profile.md +91 -0
  98. package/src/skills/mentor/references/persona-profile.md +138 -0
  99. package/src/skills/mentor/references/taste-profile.md +128 -0
  100. package/src/skills/mentor/references/thought-style-profile.md +138 -0
  101. package/src/skills/mentor/references/work-profile.md +289 -0
  102. package/src/skills/mentor/references/workflow-profile.md +240 -0
  103. package/src/skills/optimize/SKILL.md +1645 -0
  104. package/src/skills/rebuttal/SKILL.md +3 -1
  105. package/src/skills/review/SKILL.md +3 -1
  106. package/src/skills/scout/SKILL.md +8 -0
  107. package/src/skills/write/SKILL.md +81 -12
  108. package/src/skills/write/references/outline-evidence-contract-example.md +107 -0
  109. package/src/tui/dist/app/AppContainer.js +22 -11
  110. package/src/tui/dist/index.js +4 -1
  111. package/src/tui/dist/lib/api.js +33 -3
  112. package/src/tui/package.json +1 -1
  113. package/src/ui/dist/assets/AiManusChatView-COFACy7V.js +204 -0
  114. package/src/ui/dist/assets/AnalysisPlugin-DnSm0GZn.js +1 -0
  115. package/src/ui/dist/assets/CliPlugin-CvwCmDQ5.js +109 -0
  116. package/src/ui/dist/assets/CodeEditorPlugin-cOqSa0xq.js +2 -0
  117. package/src/ui/dist/assets/CodeViewerPlugin-itb0tltR.js +270 -0
  118. package/src/ui/dist/assets/DocViewerPlugin-DqKkiCI6.js +7 -0
  119. package/src/ui/dist/assets/GitCommitViewerPlugin-DVgNHBCS.js +1 -0
  120. package/src/ui/dist/assets/GitDiffViewerPlugin-DxL2ezFG.js +6 -0
  121. package/src/ui/dist/assets/GitSnapshotViewer-B_RQm1YZ.js +30 -0
  122. package/src/ui/dist/assets/ImageViewerPlugin-tHqlXY3n.js +26 -0
  123. package/src/ui/dist/assets/LabCopilotPanel-ClMbq5Yu.js +14 -0
  124. package/src/ui/dist/assets/LabPlugin-L_SuE8ow.js +22 -0
  125. package/src/ui/dist/assets/LatexPlugin-B495DTXC.js +25 -0
  126. package/src/ui/dist/assets/MarkdownViewerPlugin-DG28-61B.js +128 -0
  127. package/src/ui/dist/assets/MarketplacePlugin-BiOGT-Kj.js +13 -0
  128. package/src/ui/dist/assets/{NotebookEditor-CccQYZjX.css → NotebookEditor-BHH8rdGj.css} +1 -1
  129. package/src/ui/dist/assets/NotebookEditor-BOr3x3Ej.css +1 -0
  130. package/src/ui/dist/assets/NotebookEditor-C-4Kt1p9.js +81 -0
  131. package/src/ui/dist/assets/NotebookEditor-CVsj8h_T.js +361 -0
  132. package/src/ui/dist/assets/PdfLoader-CASDQmxJ.js +16 -0
  133. package/src/ui/dist/assets/PdfLoader-Cy5jtWrr.css +1 -0
  134. package/src/ui/dist/assets/PdfMarkdownPlugin-BFhwoKsY.js +1 -0
  135. package/src/ui/dist/assets/PdfViewerPlugin-DcOzU9vd.js +17 -0
  136. package/src/ui/dist/assets/PdfViewerPlugin-nwwE-fjJ.css +1 -0
  137. package/src/ui/dist/assets/SearchPlugin-CHj7M58O.js +16 -0
  138. package/src/ui/dist/assets/SearchPlugin-DA4en4hK.css +1 -0
  139. package/src/ui/dist/assets/TextViewerPlugin-CB4DYfWO.js +54 -0
  140. package/src/ui/dist/assets/VNCViewer-CjlbyCB3.js +11 -0
  141. package/src/ui/dist/assets/bot-CFkZY-JP.js +6 -0
  142. package/src/ui/dist/assets/browser-CTB2jwNe.js +8 -0
  143. package/src/ui/dist/assets/chevron-up-Dq5ofbht.js +6 -0
  144. package/src/ui/dist/assets/code-DLC6G24T.js +6 -0
  145. package/src/ui/dist/assets/file-content-Dv4LoZec.js +1 -0
  146. package/src/ui/dist/assets/file-diff-panel-Denq-lC3.js +1 -0
  147. package/src/ui/dist/assets/file-jump-queue-DA-SdG__.js +1 -0
  148. package/src/ui/dist/assets/file-socket-Cu4Qln7Y.js +1 -0
  149. package/src/ui/dist/assets/git-commit-horizontal-BUh6G52n.js +6 -0
  150. package/src/ui/dist/assets/image-B9HUUddG.js +6 -0
  151. package/src/ui/dist/assets/index-B2B1sg-M.js +1 -0
  152. package/src/ui/dist/assets/index-Cgla8biy.css +33 -0
  153. package/src/ui/dist/assets/index-DRyx7vAc.js +1 -0
  154. package/src/ui/dist/assets/index-Gbl53BNp.js +2496 -0
  155. package/src/ui/dist/assets/index-wQ7RIIRd.js +11 -0
  156. package/src/ui/dist/assets/monaco-CiHMMNH_.js +1 -0
  157. package/src/ui/dist/assets/pdf-effect-queue-ZtnHFCAi.js +6 -0
  158. package/src/ui/dist/assets/plugin-monaco-C8UgLomw.js +19 -0
  159. package/src/ui/dist/assets/plugin-notebook-HbW2K-1c.js +169 -0
  160. package/src/ui/dist/assets/plugin-pdf-CR8hgQBV.js +357 -0
  161. package/src/ui/dist/assets/plugin-terminal-MXFIPun8.js +227 -0
  162. package/src/ui/dist/assets/popover-DL6h35vr.js +1 -0
  163. package/src/ui/dist/assets/project-sync-CsX08Qno.js +1 -0
  164. package/src/ui/dist/assets/select-DvmXt1yY.js +11 -0
  165. package/src/ui/dist/assets/sigma-7jpXazui.js +6 -0
  166. package/src/ui/dist/assets/trash-xA7kFt8i.js +11 -0
  167. package/src/ui/dist/assets/useCliAccess-DsMwDjOp.js +1 -0
  168. package/src/ui/dist/assets/useFileDiffOverlay-FuhcnKiw.js +1 -0
  169. package/src/ui/dist/assets/wrap-text-CwMn-iqb.js +11 -0
  170. package/src/ui/dist/assets/zoom-out-R-GWEhzS.js +11 -0
  171. package/src/ui/dist/index.html +5 -2
  172. package/src/ui/dist/assets/AiManusChatView-DaF9Nge_.js +0 -26597
  173. package/src/ui/dist/assets/AnalysisPlugin-BSVx6dXE.js +0 -123
  174. package/src/ui/dist/assets/CliPlugin-C9gzJX41.js +0 -5905
  175. package/src/ui/dist/assets/CodeEditorPlugin-DU9G0Tox.js +0 -427
  176. package/src/ui/dist/assets/CodeViewerPlugin-DoX_fI9l.js +0 -905
  177. package/src/ui/dist/assets/DocViewerPlugin-C4FWIXuU.js +0 -278
  178. package/src/ui/dist/assets/GitDiffViewerPlugin-BgfFMgtf.js +0 -2661
  179. package/src/ui/dist/assets/ImageViewerPlugin-tcPkfY_x.js +0 -500
  180. package/src/ui/dist/assets/LabCopilotPanel-_dKV60Bf.js +0 -4104
  181. package/src/ui/dist/assets/LabPlugin-Bje0ayoC.js +0 -2677
  182. package/src/ui/dist/assets/LatexPlugin-CVsBzAln.js +0 -1792
  183. package/src/ui/dist/assets/MarkdownViewerPlugin-xjmrqv_8.js +0 -308
  184. package/src/ui/dist/assets/MarketplacePlugin-mMM2A8wP.js +0 -413
  185. package/src/ui/dist/assets/NotebookEditor-3kVDSOBo.js +0 -4214
  186. package/src/ui/dist/assets/NotebookEditor-C3VQ7ylN.css +0 -1405
  187. package/src/ui/dist/assets/NotebookEditor-SoJ8X-MO.js +0 -84873
  188. package/src/ui/dist/assets/PdfLoader-C-Y707R3.css +0 -49
  189. package/src/ui/dist/assets/PdfLoader-DElVuHl9.js +0 -25468
  190. package/src/ui/dist/assets/PdfMarkdownPlugin-Bq88XT4G.js +0 -409
  191. package/src/ui/dist/assets/PdfViewerPlugin-CsCXMo9S.js +0 -3095
  192. package/src/ui/dist/assets/PdfViewerPlugin-DQ11QcSf.css +0 -3627
  193. package/src/ui/dist/assets/SearchPlugin-DDMrGDkh.css +0 -379
  194. package/src/ui/dist/assets/SearchPlugin-oUPvy19k.js +0 -741
  195. package/src/ui/dist/assets/TextViewerPlugin-CRkT9yNy.js +0 -472
  196. package/src/ui/dist/assets/VNCViewer-BgbuvWhR.js +0 -18821
  197. package/src/ui/dist/assets/awareness-C0NPR2Dj.js +0 -292
  198. package/src/ui/dist/assets/bot-v_RASACv.js +0 -21
  199. package/src/ui/dist/assets/browser-BAcuE0Xj.js +0 -2895
  200. package/src/ui/dist/assets/code-5hC9d0VH.js +0 -17
  201. package/src/ui/dist/assets/file-content-D1PxfOrp.js +0 -377
  202. package/src/ui/dist/assets/file-diff-panel-DG1oT_Hj.js +0 -92
  203. package/src/ui/dist/assets/file-jump-queue-r5XKgJEV.js +0 -16
  204. package/src/ui/dist/assets/file-socket-BmdFYQlk.js +0 -58
  205. package/src/ui/dist/assets/function-B5QZkkHC.js +0 -1895
  206. package/src/ui/dist/assets/image-Dqe2X2tW.js +0 -18
  207. package/src/ui/dist/assets/index-BQG-1s2o.css +0 -12553
  208. package/src/ui/dist/assets/index-DVsMKK_y.js +0 -25
  209. package/src/ui/dist/assets/index-Duvz8Ip0.js +0 -159
  210. package/src/ui/dist/assets/index-Nt9hS4ck.js +0 -244829
  211. package/src/ui/dist/assets/index-RDlNXXx1.js +0 -120
  212. package/src/ui/dist/assets/monaco-DIXge1CP.js +0 -623
  213. package/src/ui/dist/assets/pdf-effect-queue-BBTTQaO-.js +0 -47
  214. package/src/ui/dist/assets/pdf_viewer-e0g1is2C.js +0 -8206
  215. package/src/ui/dist/assets/popover-BWlolyxo.js +0 -476
  216. package/src/ui/dist/assets/project-sync-BM5PkFH4.js +0 -297
  217. package/src/ui/dist/assets/select-D4dAtrA8.js +0 -1690
  218. package/src/ui/dist/assets/sigma-CKbE5jJT.js +0 -22
  219. package/src/ui/dist/assets/square-check-big-CZNGMgiB.js +0 -17
  220. package/src/ui/dist/assets/trash-DaB37xAz.js +0 -32
  221. package/src/ui/dist/assets/useCliAccess-C2OmAcWe.js +0 -957
  222. package/src/ui/dist/assets/useFileDiffOverlay-Dowd1Ij4.js +0 -53
  223. package/src/ui/dist/assets/wrap-text-BGjAhAUq.js +0 -35
  224. package/src/ui/dist/assets/yjs-DncrqiZ8.js +0 -11243
  225. package/src/ui/dist/assets/zoom-out-dMZQMXzc.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-Nt9hS4ck.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 };