studiograph 1.3.48-next.13 → 1.3.48-next.130

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 (1008) hide show
  1. package/README.md +7 -7
  2. package/dist/agent/agent-pool.d.ts +14 -1
  3. package/dist/agent/agent-pool.js +37 -12
  4. package/dist/agent/agent-pool.js.map +1 -1
  5. package/dist/agent/followups.d.ts +34 -0
  6. package/dist/agent/followups.js +52 -0
  7. package/dist/agent/followups.js.map +1 -0
  8. package/dist/agent/orchestrator.d.ts +29 -2
  9. package/dist/agent/orchestrator.js +239 -38
  10. package/dist/agent/orchestrator.js.map +1 -1
  11. package/dist/agent/prompts/entity-types-section.d.ts +30 -0
  12. package/dist/agent/prompts/entity-types-section.js +83 -0
  13. package/dist/agent/prompts/entity-types-section.js.map +1 -0
  14. package/dist/agent/prompts/system.md +106 -47
  15. package/dist/agent/skill-loader.d.ts +30 -17
  16. package/dist/agent/skill-loader.js +63 -30
  17. package/dist/agent/skill-loader.js.map +1 -1
  18. package/dist/agent/skills/entity-schema.md +79 -343
  19. package/dist/agent/skills/interview/entity-templates.md +38 -37
  20. package/dist/agent/skills/interview/question-domains.md +54 -49
  21. package/dist/agent/skills/interview/skill.md +89 -14
  22. package/dist/agent/tools/capture-tools.d.ts +31 -0
  23. package/dist/agent/tools/capture-tools.js +40 -0
  24. package/dist/agent/tools/capture-tools.js.map +1 -0
  25. package/dist/agent/tools/folder-tools.d.ts +47 -0
  26. package/dist/agent/tools/folder-tools.js +249 -0
  27. package/dist/agent/tools/folder-tools.js.map +1 -0
  28. package/dist/agent/tools/fs-tools.d.ts +6 -5
  29. package/dist/agent/tools/fs-tools.js +5 -5
  30. package/dist/agent/tools/fs-tools.js.map +1 -1
  31. package/dist/agent/tools/graph-tools.d.ts +25 -72
  32. package/dist/agent/tools/graph-tools.js +362 -366
  33. package/dist/agent/tools/graph-tools.js.map +1 -1
  34. package/dist/agent/tools/history-tools.d.ts +95 -0
  35. package/dist/agent/tools/history-tools.js +461 -0
  36. package/dist/agent/tools/history-tools.js.map +1 -0
  37. package/dist/agent/tools/load-skill.d.ts +6 -5
  38. package/dist/agent/tools/load-skill.js +3 -3
  39. package/dist/agent/tools/load-skill.js.map +1 -1
  40. package/dist/agent/tools/message-tools.d.ts +13 -11
  41. package/dist/agent/tools/message-tools.js +31 -39
  42. package/dist/agent/tools/message-tools.js.map +1 -1
  43. package/dist/agent/tools/ops-tools.d.ts +5 -4
  44. package/dist/agent/tools/ops-tools.js +99 -212
  45. package/dist/agent/tools/ops-tools.js.map +1 -1
  46. package/dist/agent/tools/permission-tools.d.ts +39 -16
  47. package/dist/agent/tools/permission-tools.js +66 -41
  48. package/dist/agent/tools/permission-tools.js.map +1 -1
  49. package/dist/agent/tools/tool-loader.js +5 -4
  50. package/dist/agent/tools/tool-loader.js.map +1 -1
  51. package/dist/agent/tools/web-tools.js +58 -9
  52. package/dist/agent/tools/web-tools.js.map +1 -1
  53. package/dist/cli/commands/about.d.ts +1 -0
  54. package/dist/cli/commands/about.js +55 -3
  55. package/dist/cli/commands/about.js.map +1 -1
  56. package/dist/cli/commands/audit.d.ts +21 -0
  57. package/dist/cli/commands/audit.js +174 -0
  58. package/dist/cli/commands/audit.js.map +1 -0
  59. package/dist/cli/commands/clear.d.ts +5 -0
  60. package/dist/cli/commands/clear.js +144 -1
  61. package/dist/cli/commands/clear.js.map +1 -1
  62. package/dist/cli/commands/clone.d.ts +1 -1
  63. package/dist/cli/commands/clone.js +47 -12
  64. package/dist/cli/commands/clone.js.map +1 -1
  65. package/dist/cli/commands/deploy.js +79 -18
  66. package/dist/cli/commands/deploy.js.map +1 -1
  67. package/dist/cli/commands/folder.d.ts +11 -0
  68. package/dist/cli/commands/folder.js +186 -0
  69. package/dist/cli/commands/folder.js.map +1 -0
  70. package/dist/cli/commands/index.js +2 -2
  71. package/dist/cli/commands/index.js.map +1 -1
  72. package/dist/cli/commands/init.js +16 -14
  73. package/dist/cli/commands/init.js.map +1 -1
  74. package/dist/cli/commands/join.d.ts +1 -1
  75. package/dist/cli/commands/join.js +26 -14
  76. package/dist/cli/commands/join.js.map +1 -1
  77. package/dist/cli/commands/mcp.js +12 -4
  78. package/dist/cli/commands/mcp.js.map +1 -1
  79. package/dist/cli/commands/r2.d.ts +3 -0
  80. package/dist/cli/commands/r2.js +196 -1
  81. package/dist/cli/commands/r2.js.map +1 -1
  82. package/dist/cli/commands/redeploy.js +41 -1
  83. package/dist/cli/commands/redeploy.js.map +1 -1
  84. package/dist/cli/commands/secrets.d.ts +23 -0
  85. package/dist/cli/commands/secrets.js +256 -0
  86. package/dist/cli/commands/secrets.js.map +1 -0
  87. package/dist/cli/commands/serve.js +143 -24
  88. package/dist/cli/commands/serve.js.map +1 -1
  89. package/dist/cli/commands/start.js +140 -71
  90. package/dist/cli/commands/start.js.map +1 -1
  91. package/dist/cli/commands/sync.d.ts +1 -1
  92. package/dist/cli/commands/sync.js +509 -163
  93. package/dist/cli/commands/sync.js.map +1 -1
  94. package/dist/cli/commands/user.js +8 -24
  95. package/dist/cli/commands/user.js.map +1 -1
  96. package/dist/cli/index.js +8 -7
  97. package/dist/cli/index.js.map +1 -1
  98. package/dist/cli/railway-provisioning.d.ts +53 -0
  99. package/dist/cli/railway-provisioning.js +85 -0
  100. package/dist/cli/railway-provisioning.js.map +1 -0
  101. package/dist/cli/scaffolding.d.ts +4 -2
  102. package/dist/cli/scaffolding.js +42 -47
  103. package/dist/cli/scaffolding.js.map +1 -1
  104. package/dist/cli/setup-wizard.d.ts +30 -49
  105. package/dist/cli/setup-wizard.js +35 -38
  106. package/dist/cli/setup-wizard.js.map +1 -1
  107. package/dist/core/accent-palette.d.ts +22 -0
  108. package/dist/core/accent-palette.js +47 -0
  109. package/dist/core/accent-palette.js.map +1 -0
  110. package/dist/core/entity-body-templates.d.ts +21 -0
  111. package/dist/core/entity-body-templates.js +48 -0
  112. package/dist/core/entity-body-templates.js.map +1 -0
  113. package/dist/core/entity-types-catalog.d.ts +65 -0
  114. package/dist/core/entity-types-catalog.js +136 -0
  115. package/dist/core/entity-types-catalog.js.map +1 -0
  116. package/dist/core/feature-flags.d.ts +22 -0
  117. package/dist/core/feature-flags.js +15 -0
  118. package/dist/core/feature-flags.js.map +1 -0
  119. package/dist/core/features.d.ts +16 -0
  120. package/dist/core/features.js +48 -0
  121. package/dist/core/features.js.map +1 -0
  122. package/dist/core/folder-paths.d.ts +41 -0
  123. package/dist/core/folder-paths.js +95 -0
  124. package/dist/core/folder-paths.js.map +1 -0
  125. package/dist/core/folder-sidecar.d.ts +16 -0
  126. package/dist/core/folder-sidecar.js +45 -0
  127. package/dist/core/folder-sidecar.js.map +1 -0
  128. package/dist/core/graph.d.ts +471 -19
  129. package/dist/core/graph.js +1411 -284
  130. package/dist/core/graph.js.map +1 -1
  131. package/dist/core/schema-registry.js +1 -19
  132. package/dist/core/schema-registry.js.map +1 -1
  133. package/dist/core/schemas/connector.d.ts +67 -0
  134. package/dist/core/schemas/connector.js +100 -0
  135. package/dist/core/schemas/connector.js.map +1 -0
  136. package/dist/core/schemas/workspace.d.ts +122 -0
  137. package/dist/core/schemas/workspace.js +211 -0
  138. package/dist/core/schemas/workspace.js.map +1 -0
  139. package/dist/core/secrets/SecretStore.d.ts +77 -0
  140. package/dist/core/secrets/SecretStore.js +13 -0
  141. package/dist/core/secrets/SecretStore.js.map +1 -0
  142. package/dist/core/secrets/SettingsResolver.d.ts +54 -0
  143. package/dist/core/secrets/SettingsResolver.js +80 -0
  144. package/dist/core/secrets/SettingsResolver.js.map +1 -0
  145. package/dist/core/secrets/SettingsStore.d.ts +30 -0
  146. package/dist/core/secrets/SettingsStore.js +9 -0
  147. package/dist/core/secrets/SettingsStore.js.map +1 -0
  148. package/dist/core/secrets/SqliteEncryptedStore.d.ts +78 -0
  149. package/dist/core/secrets/SqliteEncryptedStore.js +581 -0
  150. package/dist/core/secrets/SqliteEncryptedStore.js.map +1 -0
  151. package/dist/core/secrets/audit.d.ts +36 -0
  152. package/dist/core/secrets/audit.js +60 -0
  153. package/dist/core/secrets/audit.js.map +1 -0
  154. package/dist/core/secrets/auth-db-migration.d.ts +129 -0
  155. package/dist/core/secrets/auth-db-migration.js +653 -0
  156. package/dist/core/secrets/auth-db-migration.js.map +1 -0
  157. package/dist/core/secrets/bundle.d.ts +141 -0
  158. package/dist/core/secrets/bundle.js +435 -0
  159. package/dist/core/secrets/bundle.js.map +1 -0
  160. package/dist/core/secrets/dual-write.d.ts +76 -0
  161. package/dist/core/secrets/dual-write.js +236 -0
  162. package/dist/core/secrets/dual-write.js.map +1 -0
  163. package/dist/core/secrets/encryption.d.ts +44 -0
  164. package/dist/core/secrets/encryption.js +97 -0
  165. package/dist/core/secrets/encryption.js.map +1 -0
  166. package/dist/core/secrets/importer.d.ts +94 -0
  167. package/dist/core/secrets/importer.js +319 -0
  168. package/dist/core/secrets/importer.js.map +1 -0
  169. package/dist/core/secrets/index.d.ts +35 -0
  170. package/dist/core/secrets/index.js +59 -0
  171. package/dist/core/secrets/index.js.map +1 -0
  172. package/dist/core/secrets/master-key.d.ts +38 -0
  173. package/dist/core/secrets/master-key.js +122 -0
  174. package/dist/core/secrets/master-key.js.map +1 -0
  175. package/dist/core/secrets/probes/anthropic.d.ts +98 -0
  176. package/dist/core/secrets/probes/anthropic.js +300 -0
  177. package/dist/core/secrets/probes/anthropic.js.map +1 -0
  178. package/dist/core/secrets/probes/brave.d.ts +9 -0
  179. package/dist/core/secrets/probes/brave.js +15 -0
  180. package/dist/core/secrets/probes/brave.js.map +1 -0
  181. package/dist/core/secrets/probes/r2.d.ts +15 -0
  182. package/dist/core/secrets/probes/r2.js +14 -0
  183. package/dist/core/secrets/probes/r2.js.map +1 -0
  184. package/dist/core/secrets/probes/voyage.d.ts +13 -0
  185. package/dist/core/secrets/probes/voyage.js +52 -0
  186. package/dist/core/secrets/probes/voyage.js.map +1 -0
  187. package/dist/core/secrets/read-flip.d.ts +59 -0
  188. package/dist/core/secrets/read-flip.js +87 -0
  189. package/dist/core/secrets/read-flip.js.map +1 -0
  190. package/dist/core/secrets/registry.d.ts +188 -0
  191. package/dist/core/secrets/registry.js +539 -0
  192. package/dist/core/secrets/registry.js.map +1 -0
  193. package/dist/core/types.d.ts +70 -483
  194. package/dist/core/types.js +6 -3
  195. package/dist/core/types.js.map +1 -1
  196. package/dist/core/user-config.d.ts +52 -12
  197. package/dist/core/user-config.js +119 -14
  198. package/dist/core/user-config.js.map +1 -1
  199. package/dist/core/validation.d.ts +603 -1409
  200. package/dist/core/validation.js +248 -146
  201. package/dist/core/validation.js.map +1 -1
  202. package/dist/core/workspace-manager.d.ts +35 -14
  203. package/dist/core/workspace-manager.js +105 -56
  204. package/dist/core/workspace-manager.js.map +1 -1
  205. package/dist/core/workspace.d.ts +19 -5
  206. package/dist/core/workspace.js +66 -39
  207. package/dist/core/workspace.js.map +1 -1
  208. package/dist/mcp/connector-manager.d.ts +16 -1
  209. package/dist/mcp/connector-manager.js +44 -5
  210. package/dist/mcp/connector-manager.js.map +1 -1
  211. package/dist/mcp/server.d.ts +11 -3
  212. package/dist/mcp/server.js +30 -5
  213. package/dist/mcp/server.js.map +1 -1
  214. package/dist/mcp/tools.d.ts +27 -2
  215. package/dist/mcp/tools.js +544 -113
  216. package/dist/mcp/tools.js.map +1 -1
  217. package/dist/server/__tests__/helpers/graph-api.d.ts +18 -0
  218. package/dist/server/__tests__/helpers/graph-api.js +16 -0
  219. package/dist/server/__tests__/helpers/graph-api.js.map +1 -0
  220. package/dist/server/commit-audit.d.ts +26 -0
  221. package/dist/server/commit-audit.js +30 -0
  222. package/dist/server/commit-audit.js.map +1 -0
  223. package/dist/server/index.d.ts +14 -3
  224. package/dist/server/index.js +388 -177
  225. package/dist/server/index.js.map +1 -1
  226. package/dist/server/middleware/sanitize.d.ts +46 -0
  227. package/dist/server/middleware/sanitize.js +171 -0
  228. package/dist/server/middleware/sanitize.js.map +1 -0
  229. package/dist/server/routes/asset-api.js +217 -65
  230. package/dist/server/routes/asset-api.js.map +1 -1
  231. package/dist/server/routes/audit-api.d.ts +24 -0
  232. package/dist/server/routes/audit-api.js +117 -0
  233. package/dist/server/routes/audit-api.js.map +1 -0
  234. package/dist/server/routes/auth-api.js +220 -44
  235. package/dist/server/routes/auth-api.js.map +1 -1
  236. package/dist/server/routes/capture-api.d.ts +10 -3
  237. package/dist/server/routes/capture-api.js +180 -24
  238. package/dist/server/routes/capture-api.js.map +1 -1
  239. package/dist/server/routes/chat.d.ts +4 -1
  240. package/dist/server/routes/chat.js +178 -46
  241. package/dist/server/routes/chat.js.map +1 -1
  242. package/dist/server/routes/config-api.d.ts +21 -0
  243. package/dist/server/routes/config-api.js +256 -0
  244. package/dist/server/routes/config-api.js.map +1 -0
  245. package/dist/server/routes/connectors-api.js +24 -18
  246. package/dist/server/routes/connectors-api.js.map +1 -1
  247. package/dist/server/routes/event-ingest-api.d.ts +15 -0
  248. package/dist/server/routes/event-ingest-api.js +125 -0
  249. package/dist/server/routes/event-ingest-api.js.map +1 -0
  250. package/dist/server/routes/features-api.d.ts +19 -0
  251. package/dist/server/routes/features-api.js +28 -0
  252. package/dist/server/routes/features-api.js.map +1 -0
  253. package/dist/server/routes/git-http.d.ts +2 -2
  254. package/dist/server/routes/git-http.js +69 -34
  255. package/dist/server/routes/git-http.js.map +1 -1
  256. package/dist/server/routes/graph-api-access.d.ts +35 -0
  257. package/dist/server/routes/graph-api-access.js +93 -0
  258. package/dist/server/routes/graph-api-access.js.map +1 -0
  259. package/dist/server/routes/graph-api.d.ts +3 -2
  260. package/dist/server/routes/graph-api.js +1014 -315
  261. package/dist/server/routes/graph-api.js.map +1 -1
  262. package/dist/server/routes/health.d.ts +18 -0
  263. package/dist/server/routes/health.js +74 -0
  264. package/dist/server/routes/health.js.map +1 -0
  265. package/dist/server/routes/insights-api.js +156 -33
  266. package/dist/server/routes/insights-api.js.map +1 -1
  267. package/dist/server/routes/mcp.d.ts +6 -3
  268. package/dist/server/routes/mcp.js +22 -6
  269. package/dist/server/routes/mcp.js.map +1 -1
  270. package/dist/server/routes/messages-api.d.ts +3 -3
  271. package/dist/server/routes/messages-api.js +308 -120
  272. package/dist/server/routes/messages-api.js.map +1 -1
  273. package/dist/server/routes/permissions-api.d.ts +9 -2
  274. package/dist/server/routes/permissions-api.js +87 -31
  275. package/dist/server/routes/permissions-api.js.map +1 -1
  276. package/dist/server/routes/secrets-api.d.ts +36 -0
  277. package/dist/server/routes/secrets-api.js +303 -0
  278. package/dist/server/routes/secrets-api.js.map +1 -0
  279. package/dist/server/routes/settings-api.d.ts +29 -0
  280. package/dist/server/routes/settings-api.js +177 -0
  281. package/dist/server/routes/settings-api.js.map +1 -0
  282. package/dist/server/routes/workspace-api.d.ts +2 -1
  283. package/dist/server/routes/workspace-api.js +131 -20
  284. package/dist/server/routes/workspace-api.js.map +1 -1
  285. package/dist/server/routes/ws.d.ts +3 -2
  286. package/dist/server/routes/ws.js +68 -18
  287. package/dist/server/routes/ws.js.map +1 -1
  288. package/dist/server/session-manager.d.ts +48 -5
  289. package/dist/server/session-manager.js +175 -11
  290. package/dist/server/session-manager.js.map +1 -1
  291. package/dist/server/ws-hub.d.ts +134 -22
  292. package/dist/server/ws-hub.js +0 -0
  293. package/dist/server/ws-hub.js.map +1 -1
  294. package/dist/server/yjs-manager.d.ts +107 -7
  295. package/dist/server/yjs-manager.js +444 -38
  296. package/dist/server/yjs-manager.js.map +1 -1
  297. package/dist/server/yjs-persistence.d.ts +143 -0
  298. package/dist/server/yjs-persistence.js +543 -0
  299. package/dist/server/yjs-persistence.js.map +1 -0
  300. package/dist/server/yjs-text-diff.d.ts +32 -0
  301. package/dist/server/yjs-text-diff.js +61 -0
  302. package/dist/server/yjs-text-diff.js.map +1 -0
  303. package/dist/services/access-control.d.ts +53 -0
  304. package/dist/services/access-control.js +132 -0
  305. package/dist/services/access-control.js.map +1 -0
  306. package/dist/services/asset-upload-service.d.ts +53 -0
  307. package/dist/services/asset-upload-service.js +200 -0
  308. package/dist/services/asset-upload-service.js.map +1 -0
  309. package/dist/services/assets/base.d.ts +38 -0
  310. package/dist/services/assets/base.js +55 -0
  311. package/dist/services/assets/base.js.map +1 -1
  312. package/dist/services/assets/index.d.ts +41 -1
  313. package/dist/services/assets/index.js +65 -0
  314. package/dist/services/assets/index.js.map +1 -1
  315. package/dist/services/assets/local.d.ts +7 -1
  316. package/dist/services/assets/local.js +83 -0
  317. package/dist/services/assets/local.js.map +1 -1
  318. package/dist/services/assets/r2.d.ts +28 -1
  319. package/dist/services/assets/r2.js +75 -1
  320. package/dist/services/assets/r2.js.map +1 -1
  321. package/dist/services/auth-service.d.ts +184 -36
  322. package/dist/services/auth-service.js +763 -138
  323. package/dist/services/auth-service.js.map +1 -1
  324. package/dist/services/briefing.d.ts +1 -1
  325. package/dist/services/briefing.js +12 -35
  326. package/dist/services/briefing.js.map +1 -1
  327. package/dist/services/event-processor.d.ts +104 -0
  328. package/dist/services/event-processor.js +443 -0
  329. package/dist/services/event-processor.js.map +1 -0
  330. package/dist/services/folder-creation.d.ts +33 -0
  331. package/dist/services/folder-creation.js +103 -0
  332. package/dist/services/folder-creation.js.map +1 -0
  333. package/dist/services/git.d.ts +44 -0
  334. package/dist/services/git.js +162 -55
  335. package/dist/services/git.js.map +1 -1
  336. package/dist/services/heartbeat.d.ts +19 -12
  337. package/dist/services/heartbeat.js +162 -107
  338. package/dist/services/heartbeat.js.map +1 -1
  339. package/dist/services/import-service.d.ts +37 -2
  340. package/dist/services/import-service.js +222 -123
  341. package/dist/services/import-service.js.map +1 -1
  342. package/dist/services/lint-service.js +7 -14
  343. package/dist/services/lint-service.js.map +1 -1
  344. package/dist/services/markdown.js +6 -2
  345. package/dist/services/markdown.js.map +1 -1
  346. package/dist/services/message-service.d.ts +62 -21
  347. package/dist/services/message-service.js +160 -43
  348. package/dist/services/message-service.js.map +1 -1
  349. package/dist/services/personal-folder.d.ts +40 -0
  350. package/dist/services/personal-folder.js +101 -0
  351. package/dist/services/personal-folder.js.map +1 -0
  352. package/dist/services/vector-service.d.ts +73 -3
  353. package/dist/services/vector-service.js +106 -7
  354. package/dist/services/vector-service.js.map +1 -1
  355. package/dist/services/workspace-access.d.ts +106 -0
  356. package/dist/services/workspace-access.js +149 -0
  357. package/dist/services/workspace-access.js.map +1 -0
  358. package/dist/utils/git.js +3 -3
  359. package/dist/utils/git.js.map +1 -1
  360. package/dist/utils/log.d.ts +42 -0
  361. package/dist/utils/log.js +137 -0
  362. package/dist/utils/log.js.map +1 -0
  363. package/dist/utils/preflight.js +2 -2
  364. package/dist/utils/preflight.js.map +1 -1
  365. package/dist/utils/version-checker.d.ts +4 -1
  366. package/dist/utils/version-checker.js +8 -8
  367. package/dist/utils/version-checker.js.map +1 -1
  368. package/dist/web/_app/immutable/assets/0.Bp6xXZUi.css +2 -0
  369. package/dist/web/_app/immutable/assets/11.DlIf1mKh.css +1 -0
  370. package/dist/web/_app/immutable/assets/12.Dmlt28l2.css +1 -0
  371. package/dist/web/_app/immutable/assets/13.CmLrbzZp.css +1 -0
  372. package/dist/web/_app/immutable/assets/2.oo1ac0x_.css +1 -0
  373. package/dist/web/_app/immutable/assets/3.DJJsQzDb.css +1 -0
  374. package/dist/web/_app/immutable/assets/4.CZ-fNJ91.css +1 -0
  375. package/dist/web/_app/immutable/assets/AgentOverlay.BfWESlQU.css +1 -0
  376. package/dist/web/_app/immutable/assets/AssetManagerModal.ZfasE2L3.css +1 -0
  377. package/dist/web/_app/immutable/assets/CalendarView.CeNagvyK.css +1 -0
  378. package/dist/web/_app/immutable/assets/ChatPanel.po0gYtVH.css +1 -0
  379. package/dist/web/_app/immutable/assets/FolderMembersPanel.Bepw-r0F.css +1 -0
  380. package/dist/web/_app/immutable/assets/FolderMutationDialogs.BMRF6Z3z.css +1 -0
  381. package/dist/web/_app/immutable/assets/FolderPicker.B5KdvRYl.css +1 -0
  382. package/dist/web/_app/immutable/assets/GalleryView.Dy-qQjEc.css +1 -0
  383. package/dist/web/_app/immutable/assets/GraphView.BHnGIltS.css +1 -0
  384. package/dist/web/_app/immutable/assets/KanbanView.G3NZ0uHb.css +1 -0
  385. package/dist/web/_app/immutable/assets/SettingsDialog.tBn8y9DD.css +1 -0
  386. package/dist/web/_app/immutable/assets/Spinner.UBfl0pab.css +1 -0
  387. package/dist/web/_app/immutable/assets/TagFilter.DNipjifq.css +1 -0
  388. package/dist/web/_app/immutable/assets/TagPickerSheet.DJPuqnTg.css +1 -0
  389. package/dist/web/_app/immutable/assets/WorkspaceView.B9zA92UB.css +1 -0
  390. package/dist/web/_app/immutable/assets/button.BlLm4Dg1.css +1 -0
  391. package/dist/web/_app/immutable/assets/dialog.BxVal_19.css +1 -0
  392. package/dist/web/_app/immutable/assets/dist.B5hGjnfj.css +1 -0
  393. package/dist/web/_app/immutable/assets/dist.DDCWxn3B.css +1 -0
  394. package/dist/web/_app/immutable/assets/dropdown-menu.BSsUUQ3o.css +1 -0
  395. package/dist/web/_app/immutable/assets/entity-row.Bl5FyNCt.css +1 -0
  396. package/dist/web/_app/immutable/assets/greeting.Bm7lTneV.css +1 -0
  397. package/dist/web/_app/immutable/assets/ibm-plex-mono-latin-400-normal.CvHOgSBP.woff +0 -0
  398. package/dist/web/_app/immutable/assets/ibm-plex-mono-latin-400-normal.DMJ8VG8y.woff2 +0 -0
  399. package/dist/web/_app/immutable/assets/ibm-plex-mono-latin-500-normal.CB9ihrfo.woff +0 -0
  400. package/dist/web/_app/immutable/assets/ibm-plex-mono-latin-500-normal.DSY6xOcd.woff2 +0 -0
  401. package/dist/web/_app/immutable/assets/ibm-plex-sans-latin-400-italic.CZTNEAuW.woff2 +0 -0
  402. package/dist/web/_app/immutable/assets/ibm-plex-sans-latin-400-italic.CsGl1sm0.woff +0 -0
  403. package/dist/web/_app/immutable/assets/ibm-plex-sans-latin-400-normal.CDDApCn2.woff2 +0 -0
  404. package/dist/web/_app/immutable/assets/ibm-plex-sans-latin-400-normal.CYLoc0-x.woff +0 -0
  405. package/dist/web/_app/immutable/assets/ibm-plex-sans-latin-500-italic.BNK2_mGO.woff2 +0 -0
  406. package/dist/web/_app/immutable/assets/ibm-plex-sans-latin-500-italic.DpEwFAQM.woff +0 -0
  407. package/dist/web/_app/immutable/assets/ibm-plex-sans-latin-500-normal.6ng42L7E.woff2 +0 -0
  408. package/dist/web/_app/immutable/assets/ibm-plex-sans-latin-500-normal.BgVn5rGT.woff +0 -0
  409. package/dist/web/_app/immutable/assets/ibm-plex-sans-latin-600-normal.Cu4Hd6ag.woff +0 -0
  410. package/dist/web/_app/immutable/assets/ibm-plex-sans-latin-600-normal.CuJfVYMP.woff2 +0 -0
  411. package/dist/web/_app/immutable/assets/inline-list.DORLo4xF.css +1 -0
  412. package/dist/web/_app/immutable/assets/notifications.clodJdp5.css +1 -0
  413. package/dist/web/_app/immutable/assets/radio-group.GJJRVPUJ.css +1 -0
  414. package/dist/web/_app/immutable/assets/select.D_AV992j.css +1 -0
  415. package/dist/web/_app/immutable/chunks/-KAQXGuI2.js +1 -0
  416. package/dist/web/_app/immutable/chunks/-wzwcH00.js +1 -0
  417. package/dist/web/_app/immutable/chunks/07l_1Zpm2.js +1 -0
  418. package/dist/web/_app/immutable/chunks/1i1V0Z172.js +2 -0
  419. package/dist/web/_app/immutable/chunks/38oWKNzM2.js +6 -0
  420. package/dist/web/_app/immutable/chunks/54VmiJfH.js +1 -0
  421. package/dist/web/_app/immutable/chunks/6LRpFvjo.js +185 -0
  422. package/dist/web/_app/immutable/chunks/9bCTHkeS.js +1 -0
  423. package/dist/web/_app/immutable/chunks/B-822WnD2.js +22 -0
  424. package/dist/web/_app/immutable/chunks/B0HUvliX2.js +2 -0
  425. package/dist/web/_app/immutable/chunks/B12eXGpE.js +1 -0
  426. package/dist/web/_app/immutable/chunks/B2-Cx5XA.js +1 -0
  427. package/dist/web/_app/immutable/chunks/B5af0X0p2.js +1 -0
  428. package/dist/web/_app/immutable/chunks/B6iYNwo72.js +1 -0
  429. package/dist/web/_app/immutable/chunks/B7EMtoAB.js +1 -0
  430. package/dist/web/_app/immutable/chunks/B9qBGxh62.js +3 -0
  431. package/dist/web/_app/immutable/chunks/B9rVXblv.js +1 -0
  432. package/dist/web/_app/immutable/chunks/BEpMEjHO.js +1 -0
  433. package/dist/web/_app/immutable/chunks/BErNpj-S2.js +1 -0
  434. package/dist/web/_app/immutable/chunks/BHBk4zfV.js +1 -0
  435. package/dist/web/_app/immutable/chunks/BHH-JGNF.js +1 -0
  436. package/dist/web/_app/immutable/chunks/BNTlsKDJ.js +1 -0
  437. package/dist/web/_app/immutable/chunks/BOgcXgis2.js +1 -0
  438. package/dist/web/_app/immutable/chunks/BOyyDrjn2.js +1 -0
  439. package/dist/web/_app/immutable/chunks/BPR_ufQ0.js +41 -0
  440. package/dist/web/_app/immutable/chunks/BRcFsc6v.js +5 -0
  441. package/dist/web/_app/immutable/chunks/BT3KAag_.js +3 -0
  442. package/dist/web/_app/immutable/chunks/BX2T6xiZ.js +224 -0
  443. package/dist/web/_app/immutable/chunks/BZnJ8tbJ.js +1 -0
  444. package/dist/web/_app/immutable/chunks/Ba1Yzb7u.js +1 -0
  445. package/dist/web/_app/immutable/chunks/BcsvgA3B2.js +1 -0
  446. package/dist/web/_app/immutable/chunks/BfbS7rGT.js +1 -0
  447. package/dist/web/_app/immutable/chunks/BgagL41Z.js +1 -0
  448. package/dist/web/_app/immutable/chunks/Bk-AcswV.js +1 -0
  449. package/dist/web/_app/immutable/chunks/Bl9Pzopy.js +1 -0
  450. package/dist/web/_app/immutable/chunks/BmcU05mO.js +1 -0
  451. package/dist/web/_app/immutable/chunks/Bmgp0jlT.js +1 -0
  452. package/dist/web/_app/immutable/chunks/BpDONXUo.js +8 -0
  453. package/dist/web/_app/immutable/chunks/BpTXLx8I2.js +5 -0
  454. package/dist/web/_app/immutable/chunks/Bq0-jBGC2.js +1 -0
  455. package/dist/web/_app/immutable/chunks/BqGj0_GS.js +1 -0
  456. package/dist/web/_app/immutable/chunks/Bsc9K3Pz.js +1 -0
  457. package/dist/web/_app/immutable/chunks/Bssb691Q.js +1 -0
  458. package/dist/web/_app/immutable/chunks/BuzQceOn.js +1 -0
  459. package/dist/web/_app/immutable/chunks/BzeVNab0.js +1 -0
  460. package/dist/web/_app/immutable/chunks/C-OaypFN.js +1 -0
  461. package/dist/web/_app/immutable/chunks/C0fjDjvE2.js +1 -0
  462. package/dist/web/_app/immutable/chunks/C0pTXwEX.js +2 -0
  463. package/dist/web/_app/immutable/chunks/C3Enww9L2.js +1 -0
  464. package/dist/web/_app/immutable/chunks/C3oa0Cks.js +1 -0
  465. package/dist/web/_app/immutable/chunks/C7GIvT8T.js +2 -0
  466. package/dist/web/_app/immutable/chunks/CC-YWp-f.js +1 -0
  467. package/dist/web/_app/immutable/chunks/CGdKvXV92.js +1 -0
  468. package/dist/web/_app/immutable/chunks/CH0siYFL.js +1 -0
  469. package/dist/web/_app/immutable/chunks/CIc2MMme2.js +1 -0
  470. package/dist/web/_app/immutable/chunks/CIchr8Tk2.js +1 -0
  471. package/dist/web/_app/immutable/chunks/CK_yXDQI.js +1 -0
  472. package/dist/web/_app/immutable/chunks/CLSxJmTj.js +2 -0
  473. package/dist/web/_app/immutable/chunks/CMhHc1Bq2.js +2 -0
  474. package/dist/web/_app/immutable/chunks/CNGba6T4.js +1 -0
  475. package/dist/web/_app/immutable/chunks/CPt2D5aU.js +1 -0
  476. package/dist/web/_app/immutable/chunks/CQ-2yccd.js +7 -0
  477. package/dist/web/_app/immutable/chunks/CS6VEwn7.js +1 -0
  478. package/dist/web/_app/immutable/chunks/CSsDOIrk.js +1 -0
  479. package/dist/web/_app/immutable/chunks/CVXvEWhv2.js +1 -0
  480. package/dist/web/_app/immutable/chunks/CaChtuYU2.js +1 -0
  481. package/dist/web/_app/immutable/chunks/CbiwvM3R2.js +1 -0
  482. package/dist/web/_app/immutable/chunks/CdCuBMLm.js +156 -0
  483. package/dist/web/_app/immutable/chunks/CiyqPsJo.js +1 -0
  484. package/dist/web/_app/immutable/chunks/CjGzUnEF2.js +1 -0
  485. package/dist/web/_app/immutable/chunks/Cjgbiel7.js +1 -0
  486. package/dist/web/_app/immutable/chunks/CnqSKqA62.js +1 -0
  487. package/dist/web/_app/immutable/chunks/CqyqKPuh2.js +1 -0
  488. package/dist/web/_app/immutable/chunks/CrnX-oFV.js +1 -0
  489. package/dist/web/_app/immutable/chunks/CsGahE3a.js +1 -0
  490. package/dist/web/_app/immutable/chunks/Ct3quP0F.js +1 -0
  491. package/dist/web/_app/immutable/chunks/CtlAYPxw.js +1 -0
  492. package/dist/web/_app/immutable/chunks/CvZaxjRC.js +1 -0
  493. package/dist/web/_app/immutable/chunks/CwD4G56R.js +5 -0
  494. package/dist/web/_app/immutable/chunks/CwROuREs.js +1 -0
  495. package/dist/web/_app/immutable/chunks/CxalqrMB.js +1 -0
  496. package/dist/web/_app/immutable/chunks/D7qgUfnr.js +2487 -0
  497. package/dist/web/_app/immutable/chunks/D9-_Euza2.js +1 -0
  498. package/dist/web/_app/immutable/chunks/DC69SASj.js +2 -0
  499. package/dist/web/_app/immutable/chunks/DCCaoKt42.js +1 -0
  500. package/dist/web/_app/immutable/chunks/DDKweOZr2.js +23 -0
  501. package/dist/web/_app/immutable/chunks/DEY60osH.js +1 -0
  502. package/dist/web/_app/immutable/chunks/DG3QZPgI.js +1 -0
  503. package/dist/web/_app/immutable/chunks/DHepUItL.js +1 -0
  504. package/dist/web/_app/immutable/chunks/DNtqqgv32.js +1 -0
  505. package/dist/web/_app/immutable/chunks/DRl7vwNC2.js +184 -0
  506. package/dist/web/_app/immutable/chunks/DTc5W_V6.js +1 -0
  507. package/dist/web/_app/immutable/chunks/DaiJs3St.js +1 -0
  508. package/dist/web/_app/immutable/chunks/DfITyMKh2.js +1 -0
  509. package/dist/web/_app/immutable/chunks/DhuJRrEX2.js +1 -0
  510. package/dist/web/_app/immutable/chunks/DiP2EplP.js +3 -0
  511. package/dist/web/_app/immutable/chunks/DjlDV2JG.js +1 -0
  512. package/dist/web/_app/immutable/chunks/Dm25ot5x2.js +1 -0
  513. package/dist/web/_app/immutable/chunks/DpuSt-SO.js +2 -0
  514. package/dist/web/_app/immutable/chunks/DqOcb9RX2.js +83 -0
  515. package/dist/web/_app/immutable/chunks/DrbUJCAE.js +1 -0
  516. package/dist/web/_app/immutable/chunks/Du2-B3c8.js +1 -0
  517. package/dist/web/_app/immutable/chunks/DwdkE4UD2.js +1 -0
  518. package/dist/web/_app/immutable/chunks/DxWesPbn.js +1 -0
  519. package/dist/web/_app/immutable/chunks/DyYZqUV72.js +1 -0
  520. package/dist/web/_app/immutable/chunks/HfUnhvrv2.js +1 -0
  521. package/dist/web/_app/immutable/chunks/Je8-BtCk2.js +1 -0
  522. package/dist/web/_app/immutable/chunks/MSB7eA4_.js +1 -0
  523. package/dist/web/_app/immutable/chunks/NPe9WyW1.js +1 -0
  524. package/dist/web/_app/immutable/chunks/O6IzcxXJ.js +2 -0
  525. package/dist/web/_app/immutable/chunks/SXhc9rJW.js +1 -0
  526. package/dist/web/_app/immutable/chunks/SbWhkPMt.js +6 -0
  527. package/dist/web/_app/immutable/chunks/U40J2SnU.js +1 -0
  528. package/dist/web/_app/immutable/chunks/VS3l21Gu.js +1 -0
  529. package/dist/web/_app/immutable/chunks/YEPEvlbU2.js +1 -0
  530. package/dist/web/_app/immutable/chunks/Z7TNRcgK.js +11 -0
  531. package/dist/web/_app/immutable/chunks/ZCekGjo6.js +5 -0
  532. package/dist/web/_app/immutable/chunks/_rnxQ655.js +4 -0
  533. package/dist/web/_app/immutable/chunks/aALpjBW2.js +1 -0
  534. package/dist/web/_app/immutable/chunks/gNXLhsdy.js +1 -0
  535. package/dist/web/_app/immutable/chunks/hKSTEN36.js +1 -0
  536. package/dist/web/_app/immutable/chunks/jZZTbzL5.js +1 -0
  537. package/dist/web/_app/immutable/chunks/l4FIBKss.js +1 -0
  538. package/dist/web/_app/immutable/chunks/l_4snZnh2.js +1 -0
  539. package/dist/web/_app/immutable/chunks/mz-cgRgP.js +3 -0
  540. package/dist/web/_app/immutable/chunks/qgprkMcL.js +1 -0
  541. package/dist/web/_app/immutable/chunks/rOisBLC62.js +14 -0
  542. package/dist/web/_app/immutable/chunks/t08TznXc2.js +1 -0
  543. package/dist/web/_app/immutable/chunks/t62M88qj.js +1 -0
  544. package/dist/web/_app/immutable/chunks/uCohGWC42.js +1 -0
  545. package/dist/web/_app/immutable/chunks/uqxmB78b.js +1 -0
  546. package/dist/web/_app/immutable/chunks/vJkT0IPN.js +1 -0
  547. package/dist/web/_app/immutable/chunks/vwTMEIJQ.js +1 -0
  548. package/dist/web/_app/immutable/chunks/w1FCELam.js +64 -0
  549. package/dist/web/_app/immutable/chunks/xEzUlKaR2.js +1 -0
  550. package/dist/web/_app/immutable/chunks/zumDjcgJ.js +1 -0
  551. package/dist/web/_app/immutable/entry/app.DtdPIxaY.js +2 -0
  552. package/dist/web/_app/immutable/entry/start.Cqf8YmDj.js +1 -0
  553. package/dist/web/_app/immutable/nodes/0.CktqlAe7.js +2 -0
  554. package/dist/web/_app/immutable/nodes/1.Bs7cz_ba.js +1 -0
  555. package/dist/web/_app/immutable/nodes/10.CAQtOBqO.js +1 -0
  556. package/dist/web/_app/immutable/nodes/11.l9TQGnJm.js +1 -0
  557. package/dist/web/_app/immutable/nodes/12.CttDoIpY.js +1 -0
  558. package/dist/web/_app/immutable/nodes/13.E5fh69kS.js +1 -0
  559. package/dist/web/_app/immutable/nodes/2.DnLSJfx-.js +106 -0
  560. package/dist/web/_app/immutable/nodes/3.Bw8R0Jw5.js +2 -0
  561. package/dist/web/_app/immutable/nodes/4.Cl0HgeTG.js +2 -0
  562. package/dist/web/_app/immutable/nodes/5.BpIWwWi9.js +1 -0
  563. package/dist/web/_app/immutable/nodes/6.jpx6ZgOI.js +1 -0
  564. package/dist/web/_app/immutable/nodes/7.YTFykZQe.js +1 -0
  565. package/dist/web/_app/immutable/nodes/8.Chy0HNU1.js +1 -0
  566. package/dist/web/_app/immutable/nodes/9.D10JpFt2.js +1 -0
  567. package/dist/web/_app/version.json +1 -1
  568. package/dist/web/favicon-16.png +0 -0
  569. package/dist/web/favicon-180.png +0 -0
  570. package/dist/web/favicon-32.png +0 -0
  571. package/dist/web/favicon-48.png +0 -0
  572. package/dist/web/favicon-512.png +0 -0
  573. package/dist/web/favicon.ico +0 -0
  574. package/dist/web/favicon.svg +8 -0
  575. package/dist/web/index.html +64 -21
  576. package/dist/web/studiograph-logomark.svg +29 -0
  577. package/package.json +28 -14
  578. package/dist/agent/role-loader.d.ts +0 -24
  579. package/dist/agent/role-loader.js +0 -67
  580. package/dist/agent/role-loader.js.map +0 -1
  581. package/dist/agent/skills/enrich-entities.md +0 -136
  582. package/dist/agent/skills/obsidian-source-setup.md +0 -246
  583. package/dist/agent/skills/skill-loader.d.ts +0 -48
  584. package/dist/agent/skills/skill-loader.js +0 -166
  585. package/dist/agent/skills/skill-loader.js.map +0 -1
  586. package/dist/agent/skills/sync-configuration.md +0 -119
  587. package/dist/agent/skills/sync-setup.md +0 -82
  588. package/dist/agent/tools/sync-tools.d.ts +0 -35
  589. package/dist/agent/tools/sync-tools.js +0 -992
  590. package/dist/agent/tools/sync-tools.js.map +0 -1
  591. package/dist/auth/github.d.ts +0 -56
  592. package/dist/auth/github.js +0 -169
  593. package/dist/auth/github.js.map +0 -1
  594. package/dist/cli/commands/access.d.ts +0 -11
  595. package/dist/cli/commands/access.js +0 -156
  596. package/dist/cli/commands/access.js.map +0 -1
  597. package/dist/cli/commands/app.d.ts +0 -7
  598. package/dist/cli/commands/app.js +0 -268
  599. package/dist/cli/commands/app.js.map +0 -1
  600. package/dist/cli/commands/auth.d.ts +0 -10
  601. package/dist/cli/commands/auth.js +0 -79
  602. package/dist/cli/commands/auth.js.map +0 -1
  603. package/dist/cli/commands/collection.d.ts +0 -10
  604. package/dist/cli/commands/collection.js +0 -185
  605. package/dist/cli/commands/collection.js.map +0 -1
  606. package/dist/cli/commands/enrich.d.ts +0 -11
  607. package/dist/cli/commands/enrich.js +0 -135
  608. package/dist/cli/commands/enrich.js.map +0 -1
  609. package/dist/cli/commands/graphrag.d.ts +0 -12
  610. package/dist/cli/commands/graphrag.js +0 -122
  611. package/dist/cli/commands/graphrag.js.map +0 -1
  612. package/dist/cli/commands/members.d.ts +0 -11
  613. package/dist/cli/commands/members.js +0 -230
  614. package/dist/cli/commands/members.js.map +0 -1
  615. package/dist/cli/commands/org.d.ts +0 -10
  616. package/dist/cli/commands/org.js +0 -132
  617. package/dist/cli/commands/org.js.map +0 -1
  618. package/dist/cli/commands/provision.d.ts +0 -8
  619. package/dist/cli/commands/provision.js +0 -116
  620. package/dist/cli/commands/provision.js.map +0 -1
  621. package/dist/cli/commands/resolve.d.ts +0 -8
  622. package/dist/cli/commands/resolve.js +0 -85
  623. package/dist/cli/commands/resolve.js.map +0 -1
  624. package/dist/cli/commands/review.d.ts +0 -19
  625. package/dist/cli/commands/review.js +0 -128
  626. package/dist/cli/commands/review.js.map +0 -1
  627. package/dist/cli/commands/source.d.ts +0 -16
  628. package/dist/cli/commands/source.js +0 -159
  629. package/dist/cli/commands/source.js.map +0 -1
  630. package/dist/cli/commands/sync-collection.d.ts +0 -14
  631. package/dist/cli/commands/sync-collection.js +0 -355
  632. package/dist/cli/commands/sync-collection.js.map +0 -1
  633. package/dist/cli/commands/sync-entities.d.ts +0 -13
  634. package/dist/cli/commands/sync-entities.js +0 -242
  635. package/dist/cli/commands/sync-entities.js.map +0 -1
  636. package/dist/cli/commands/team.d.ts +0 -12
  637. package/dist/cli/commands/team.js +0 -185
  638. package/dist/cli/commands/team.js.map +0 -1
  639. package/dist/cli/sync-review-interactive.d.ts +0 -31
  640. package/dist/cli/sync-review-interactive.js +0 -393
  641. package/dist/cli/sync-review-interactive.js.map +0 -1
  642. package/dist/core/migration-runner.d.ts +0 -42
  643. package/dist/core/migration-runner.js +0 -232
  644. package/dist/core/migration-runner.js.map +0 -1
  645. package/dist/core/migration-types.d.ts +0 -101
  646. package/dist/core/migration-types.js +0 -21
  647. package/dist/core/migration-types.js.map +0 -1
  648. package/dist/core/migrations/20260219-formalize-memory-location.d.ts +0 -2
  649. package/dist/core/migrations/20260219-formalize-memory-location.js +0 -35
  650. package/dist/core/migrations/20260219-formalize-memory-location.js.map +0 -1
  651. package/dist/core/migrations/20260220-add-workspace-metadata.d.ts +0 -12
  652. package/dist/core/migrations/20260220-add-workspace-metadata.js +0 -65
  653. package/dist/core/migrations/20260220-add-workspace-metadata.js.map +0 -1
  654. package/dist/core/migrations/20260220-add-workspace-readme.d.ts +0 -11
  655. package/dist/core/migrations/20260220-add-workspace-readme.js +0 -82
  656. package/dist/core/migrations/20260220-add-workspace-readme.js.map +0 -1
  657. package/dist/core/migrations/20260220-migrate-yaml-to-json.d.ts +0 -9
  658. package/dist/core/migrations/20260220-migrate-yaml-to-json.js +0 -64
  659. package/dist/core/migrations/20260220-migrate-yaml-to-json.js.map +0 -1
  660. package/dist/core/migrations/index.d.ts +0 -11
  661. package/dist/core/migrations/index.js +0 -23
  662. package/dist/core/migrations/index.js.map +0 -1
  663. package/dist/integrations/asana.d.ts +0 -26
  664. package/dist/integrations/asana.js +0 -78
  665. package/dist/integrations/asana.js.map +0 -1
  666. package/dist/integrations/figma-local.d.ts +0 -16
  667. package/dist/integrations/figma-local.js +0 -10
  668. package/dist/integrations/figma-local.js.map +0 -1
  669. package/dist/integrations/figma.d.ts +0 -17
  670. package/dist/integrations/figma.js +0 -17
  671. package/dist/integrations/figma.js.map +0 -1
  672. package/dist/integrations/granola.d.ts +0 -24
  673. package/dist/integrations/granola.js +0 -60
  674. package/dist/integrations/granola.js.map +0 -1
  675. package/dist/integrations/linear.d.ts +0 -14
  676. package/dist/integrations/linear.js +0 -80
  677. package/dist/integrations/linear.js.map +0 -1
  678. package/dist/integrations/paper-local.d.ts +0 -14
  679. package/dist/integrations/paper-local.js +0 -10
  680. package/dist/integrations/paper-local.js.map +0 -1
  681. package/dist/integrations/paper.d.ts +0 -2
  682. package/dist/integrations/paper.js +0 -10
  683. package/dist/integrations/paper.js.map +0 -1
  684. package/dist/integrations/pipedrive.d.ts +0 -26
  685. package/dist/integrations/pipedrive.js +0 -97
  686. package/dist/integrations/pipedrive.js.map +0 -1
  687. package/dist/integrations/registry.d.ts +0 -8
  688. package/dist/integrations/registry.js +0 -7
  689. package/dist/integrations/registry.js.map +0 -1
  690. package/dist/integrations/types.d.ts +0 -43
  691. package/dist/integrations/types.js +0 -5
  692. package/dist/integrations/types.js.map +0 -1
  693. package/dist/lib/lib/utils.d.ts +0 -2
  694. package/dist/lib/lib/utils.js +0 -6
  695. package/dist/lib/lib/utils.js.map +0 -1
  696. package/dist/mcp/connectors/asana.d.ts +0 -2
  697. package/dist/mcp/connectors/asana.js +0 -20
  698. package/dist/mcp/connectors/asana.js.map +0 -1
  699. package/dist/mcp/connectors/definitions.d.ts +0 -45
  700. package/dist/mcp/connectors/definitions.js +0 -32
  701. package/dist/mcp/connectors/definitions.js.map +0 -1
  702. package/dist/mcp/connectors/figma.d.ts +0 -5
  703. package/dist/mcp/connectors/figma.js +0 -21
  704. package/dist/mcp/connectors/figma.js.map +0 -1
  705. package/dist/mcp/connectors/gdrive.d.ts +0 -2
  706. package/dist/mcp/connectors/gdrive.js +0 -20
  707. package/dist/mcp/connectors/gdrive.js.map +0 -1
  708. package/dist/mcp/connectors/granola.d.ts +0 -2
  709. package/dist/mcp/connectors/granola.js +0 -12
  710. package/dist/mcp/connectors/granola.js.map +0 -1
  711. package/dist/mcp/connectors/linear.d.ts +0 -2
  712. package/dist/mcp/connectors/linear.js +0 -19
  713. package/dist/mcp/connectors/linear.js.map +0 -1
  714. package/dist/mcp/connectors/obsidian.d.ts +0 -2
  715. package/dist/mcp/connectors/obsidian.js +0 -19
  716. package/dist/mcp/connectors/obsidian.js.map +0 -1
  717. package/dist/mcp/connectors/pipedrive.d.ts +0 -2
  718. package/dist/mcp/connectors/pipedrive.js +0 -20
  719. package/dist/mcp/connectors/pipedrive.js.map +0 -1
  720. package/dist/mcp/connectors/slack.d.ts +0 -2
  721. package/dist/mcp/connectors/slack.js +0 -21
  722. package/dist/mcp/connectors/slack.js.map +0 -1
  723. package/dist/mcp/server-oauth-provider.d.ts +0 -56
  724. package/dist/mcp/server-oauth-provider.js +0 -142
  725. package/dist/mcp/server-oauth-provider.js.map +0 -1
  726. package/dist/server/agents/agent-loader.d.ts +0 -16
  727. package/dist/server/agents/agent-loader.js +0 -175
  728. package/dist/server/agents/agent-loader.js.map +0 -1
  729. package/dist/server/agents/agent-runner.d.ts +0 -33
  730. package/dist/server/agents/agent-runner.js +0 -187
  731. package/dist/server/agents/agent-runner.js.map +0 -1
  732. package/dist/server/agents/agent-runtime.d.ts +0 -39
  733. package/dist/server/agents/agent-runtime.js +0 -214
  734. package/dist/server/agents/agent-runtime.js.map +0 -1
  735. package/dist/server/agents/base-agent.d.ts +0 -30
  736. package/dist/server/agents/base-agent.js +0 -88
  737. package/dist/server/agents/base-agent.js.map +0 -1
  738. package/dist/server/agents/executive-digest.d.ts +0 -16
  739. package/dist/server/agents/executive-digest.js +0 -115
  740. package/dist/server/agents/executive-digest.js.map +0 -1
  741. package/dist/server/agents/graph-steward.d.ts +0 -16
  742. package/dist/server/agents/graph-steward.js +0 -59
  743. package/dist/server/agents/graph-steward.js.map +0 -1
  744. package/dist/server/agents/meeting-followup.d.ts +0 -16
  745. package/dist/server/agents/meeting-followup.js +0 -88
  746. package/dist/server/agents/meeting-followup.js.map +0 -1
  747. package/dist/server/agents/pipeline-monitor.d.ts +0 -15
  748. package/dist/server/agents/pipeline-monitor.js +0 -86
  749. package/dist/server/agents/pipeline-monitor.js.map +0 -1
  750. package/dist/server/agents/types.d.ts +0 -81
  751. package/dist/server/agents/types.js +0 -41
  752. package/dist/server/agents/types.js.map +0 -1
  753. package/dist/server/chrome/chrome.css +0 -691
  754. package/dist/server/chrome/chrome.js +0 -374
  755. package/dist/server/collab-authority.d.ts +0 -70
  756. package/dist/server/collab-authority.js +0 -218
  757. package/dist/server/collab-authority.js.map +0 -1
  758. package/dist/server/collab.d.ts +0 -29
  759. package/dist/server/collab.js +0 -195
  760. package/dist/server/collab.js.map +0 -1
  761. package/dist/server/commit-scheduler.d.ts +0 -39
  762. package/dist/server/commit-scheduler.js +0 -113
  763. package/dist/server/commit-scheduler.js.map +0 -1
  764. package/dist/server/plugin-loader.d.ts +0 -53
  765. package/dist/server/plugin-loader.js +0 -155
  766. package/dist/server/plugin-loader.js.map +0 -1
  767. package/dist/server/routes/agents-api.d.ts +0 -10
  768. package/dist/server/routes/agents-api.js +0 -25
  769. package/dist/server/routes/agents-api.js.map +0 -1
  770. package/dist/server/routes/collab.d.ts +0 -6
  771. package/dist/server/routes/collab.js +0 -10
  772. package/dist/server/routes/collab.js.map +0 -1
  773. package/dist/server/routes/git-api.d.ts +0 -9
  774. package/dist/server/routes/git-api.js +0 -82
  775. package/dist/server/routes/git-api.js.map +0 -1
  776. package/dist/server/routes/meeting-ingest-api.d.ts +0 -14
  777. package/dist/server/routes/meeting-ingest-api.js +0 -98
  778. package/dist/server/routes/meeting-ingest-api.js.map +0 -1
  779. package/dist/server/routes/sync-api.d.ts +0 -26
  780. package/dist/server/routes/sync-api.js +0 -848
  781. package/dist/server/routes/sync-api.js.map +0 -1
  782. package/dist/server/routes/webhook.d.ts +0 -14
  783. package/dist/server/routes/webhook.js +0 -102
  784. package/dist/server/routes/webhook.js.map +0 -1
  785. package/dist/services/batch-processor.d.ts +0 -49
  786. package/dist/services/batch-processor.js +0 -166
  787. package/dist/services/batch-processor.js.map +0 -1
  788. package/dist/services/csv-service.d.ts +0 -36
  789. package/dist/services/csv-service.js +0 -143
  790. package/dist/services/csv-service.js.map +0 -1
  791. package/dist/services/github-provisioner.d.ts +0 -36
  792. package/dist/services/github-provisioner.js +0 -126
  793. package/dist/services/github-provisioner.js.map +0 -1
  794. package/dist/services/github-service.d.ts +0 -99
  795. package/dist/services/github-service.js +0 -310
  796. package/dist/services/github-service.js.map +0 -1
  797. package/dist/services/image-import-service.d.ts +0 -24
  798. package/dist/services/image-import-service.js +0 -108
  799. package/dist/services/image-import-service.js.map +0 -1
  800. package/dist/services/insights.d.ts +0 -38
  801. package/dist/services/insights.js +0 -269
  802. package/dist/services/insights.js.map +0 -1
  803. package/dist/services/meeting-processor.d.ts +0 -91
  804. package/dist/services/meeting-processor.js +0 -331
  805. package/dist/services/meeting-processor.js.map +0 -1
  806. package/dist/services/sync/collection-sync.d.ts +0 -60
  807. package/dist/services/sync/collection-sync.js +0 -509
  808. package/dist/services/sync/collection-sync.js.map +0 -1
  809. package/dist/services/sync/commit.d.ts +0 -60
  810. package/dist/services/sync/commit.js +0 -354
  811. package/dist/services/sync/commit.js.map +0 -1
  812. package/dist/services/sync/context-index.d.ts +0 -69
  813. package/dist/services/sync/context-index.js +0 -280
  814. package/dist/services/sync/context-index.js.map +0 -1
  815. package/dist/services/sync/data-fetcher.d.ts +0 -31
  816. package/dist/services/sync/data-fetcher.js +0 -12
  817. package/dist/services/sync/data-fetcher.js.map +0 -1
  818. package/dist/services/sync/derive.d.ts +0 -34
  819. package/dist/services/sync/derive.js +0 -164
  820. package/dist/services/sync/derive.js.map +0 -1
  821. package/dist/services/sync/enrichment-state.d.ts +0 -31
  822. package/dist/services/sync/enrichment-state.js +0 -63
  823. package/dist/services/sync/enrichment-state.js.map +0 -1
  824. package/dist/services/sync/enrichment.d.ts +0 -25
  825. package/dist/services/sync/enrichment.js +0 -121
  826. package/dist/services/sync/enrichment.js.map +0 -1
  827. package/dist/services/sync/entity-refresh.d.ts +0 -30
  828. package/dist/services/sync/entity-refresh.js +0 -275
  829. package/dist/services/sync/entity-refresh.js.map +0 -1
  830. package/dist/services/sync/frontmatter-extractor.d.ts +0 -40
  831. package/dist/services/sync/frontmatter-extractor.js +0 -279
  832. package/dist/services/sync/frontmatter-extractor.js.map +0 -1
  833. package/dist/services/sync/graph-match-state.d.ts +0 -33
  834. package/dist/services/sync/graph-match-state.js +0 -61
  835. package/dist/services/sync/graph-match-state.js.map +0 -1
  836. package/dist/services/sync/graph-match.d.ts +0 -53
  837. package/dist/services/sync/graph-match.js +0 -316
  838. package/dist/services/sync/graph-match.js.map +0 -1
  839. package/dist/services/sync/graphrag-client.d.ts +0 -43
  840. package/dist/services/sync/graphrag-client.js +0 -94
  841. package/dist/services/sync/graphrag-client.js.map +0 -1
  842. package/dist/services/sync/graphrag-config.d.ts +0 -16
  843. package/dist/services/sync/graphrag-config.js +0 -39
  844. package/dist/services/sync/graphrag-config.js.map +0 -1
  845. package/dist/services/sync/graphrag-context.d.ts +0 -14
  846. package/dist/services/sync/graphrag-context.js +0 -109
  847. package/dist/services/sync/graphrag-context.js.map +0 -1
  848. package/dist/services/sync/graphrag-indexer.d.ts +0 -30
  849. package/dist/services/sync/graphrag-indexer.js +0 -358
  850. package/dist/services/sync/graphrag-indexer.js.map +0 -1
  851. package/dist/services/sync/llm.d.ts +0 -32
  852. package/dist/services/sync/llm.js +0 -115
  853. package/dist/services/sync/llm.js.map +0 -1
  854. package/dist/services/sync/mcp-client.d.ts +0 -71
  855. package/dist/services/sync/mcp-client.js +0 -299
  856. package/dist/services/sync/mcp-client.js.map +0 -1
  857. package/dist/services/sync/model-factory.d.ts +0 -13
  858. package/dist/services/sync/model-factory.js +0 -38
  859. package/dist/services/sync/model-factory.js.map +0 -1
  860. package/dist/services/sync/name-quality.d.ts +0 -31
  861. package/dist/services/sync/name-quality.js +0 -60
  862. package/dist/services/sync/name-quality.js.map +0 -1
  863. package/dist/services/sync/output-schemas.d.ts +0 -92
  864. package/dist/services/sync/output-schemas.js +0 -43
  865. package/dist/services/sync/output-schemas.js.map +0 -1
  866. package/dist/services/sync/prompts.d.ts +0 -19
  867. package/dist/services/sync/prompts.js +0 -128
  868. package/dist/services/sync/prompts.js.map +0 -1
  869. package/dist/services/sync/reconciler.d.ts +0 -48
  870. package/dist/services/sync/reconciler.js +0 -294
  871. package/dist/services/sync/reconciler.js.map +0 -1
  872. package/dist/services/sync/rest-client.d.ts +0 -40
  873. package/dist/services/sync/rest-client.js +0 -100
  874. package/dist/services/sync/rest-client.js.map +0 -1
  875. package/dist/services/sync/source-config.d.ts +0 -67
  876. package/dist/services/sync/source-config.js +0 -304
  877. package/dist/services/sync/source-config.js.map +0 -1
  878. package/dist/services/sync/source-definitions/asana.d.ts +0 -14
  879. package/dist/services/sync/source-definitions/asana.js +0 -42
  880. package/dist/services/sync/source-definitions/asana.js.map +0 -1
  881. package/dist/services/sync/source-definitions/definitions.d.ts +0 -8
  882. package/dist/services/sync/source-definitions/definitions.js +0 -8
  883. package/dist/services/sync/source-definitions/definitions.js.map +0 -1
  884. package/dist/services/sync/source-definitions/gdrive.d.ts +0 -16
  885. package/dist/services/sync/source-definitions/gdrive.js +0 -68
  886. package/dist/services/sync/source-definitions/gdrive.js.map +0 -1
  887. package/dist/services/sync/source-definitions/granola.d.ts +0 -2
  888. package/dist/services/sync/source-definitions/granola.js +0 -21
  889. package/dist/services/sync/source-definitions/granola.js.map +0 -1
  890. package/dist/services/sync/source-definitions/linear.d.ts +0 -2
  891. package/dist/services/sync/source-definitions/linear.js +0 -62
  892. package/dist/services/sync/source-definitions/linear.js.map +0 -1
  893. package/dist/services/sync/source-definitions/obsidian.d.ts +0 -2
  894. package/dist/services/sync/source-definitions/obsidian.js +0 -55
  895. package/dist/services/sync/source-definitions/obsidian.js.map +0 -1
  896. package/dist/services/sync/source-definitions/pipedrive.d.ts +0 -2
  897. package/dist/services/sync/source-definitions/pipedrive.js +0 -43
  898. package/dist/services/sync/source-definitions/pipedrive.js.map +0 -1
  899. package/dist/services/sync/staging.d.ts +0 -53
  900. package/dist/services/sync/staging.js +0 -130
  901. package/dist/services/sync/staging.js.map +0 -1
  902. package/dist/services/sync/structured-extractor.d.ts +0 -57
  903. package/dist/services/sync/structured-extractor.js +0 -584
  904. package/dist/services/sync/structured-extractor.js.map +0 -1
  905. package/dist/services/sync/sync-runner.d.ts +0 -32
  906. package/dist/services/sync/sync-runner.js +0 -195
  907. package/dist/services/sync/sync-runner.js.map +0 -1
  908. package/dist/services/sync/sync-state.d.ts +0 -43
  909. package/dist/services/sync/sync-state.js +0 -154
  910. package/dist/services/sync/sync-state.js.map +0 -1
  911. package/dist/services/sync/types.d.ts +0 -381
  912. package/dist/services/sync/types.js +0 -8
  913. package/dist/services/sync/types.js.map +0 -1
  914. package/dist/services/sync/unstructured-extractor.d.ts +0 -27
  915. package/dist/services/sync/unstructured-extractor.js +0 -185
  916. package/dist/services/sync/unstructured-extractor.js.map +0 -1
  917. package/dist/utils/merge-resolver.d.ts +0 -59
  918. package/dist/utils/merge-resolver.js +0 -303
  919. package/dist/utils/merge-resolver.js.map +0 -1
  920. package/dist/utils/workspace-config.d.ts +0 -8
  921. package/dist/utils/workspace-config.js +0 -22
  922. package/dist/utils/workspace-config.js.map +0 -1
  923. package/dist/web/_app/immutable/assets/0.QUqBcyuu.css +0 -1
  924. package/dist/web/_app/immutable/assets/11.2jzI3cZY.css +0 -1
  925. package/dist/web/_app/immutable/assets/12.CT4xL4K3.css +0 -1
  926. package/dist/web/_app/immutable/assets/13.BUrHkYry.css +0 -1
  927. package/dist/web/_app/immutable/assets/2.5jNm7Pm1.css +0 -1
  928. package/dist/web/_app/immutable/assets/3.BxdqT7zi.css +0 -1
  929. package/dist/web/_app/immutable/assets/4.BjPwtpNd.css +0 -1
  930. package/dist/web/_app/immutable/assets/5.DFeGxLYf.css +0 -1
  931. package/dist/web/_app/immutable/assets/6.DXZr_rI_.css +0 -1
  932. package/dist/web/_app/immutable/assets/GraphView.D9ePpZez.css +0 -1
  933. package/dist/web/_app/immutable/assets/Toaster.rN8r_Hzv.css +0 -1
  934. package/dist/web/_app/immutable/assets/ViewToolbar.CZjsdjy4.css +0 -1
  935. package/dist/web/_app/immutable/assets/WorkspaceView.B-1DbivC.css +0 -1
  936. package/dist/web/_app/immutable/assets/wikilinks.CtSydmQl.css +0 -1
  937. package/dist/web/_app/immutable/chunks/3--t-YNA.js +0 -1
  938. package/dist/web/_app/immutable/chunks/5OU-4caN.js +0 -1
  939. package/dist/web/_app/immutable/chunks/7S2LGqoP.js +0 -2
  940. package/dist/web/_app/immutable/chunks/B6FUcAv5.js +0 -1
  941. package/dist/web/_app/immutable/chunks/B9gDgSlp.js +0 -1
  942. package/dist/web/_app/immutable/chunks/BB_5th5W.js +0 -3383
  943. package/dist/web/_app/immutable/chunks/BFtIWl5z.js +0 -1
  944. package/dist/web/_app/immutable/chunks/BHKpz6_7.js +0 -1
  945. package/dist/web/_app/immutable/chunks/BNfrhBeA.js +0 -1
  946. package/dist/web/_app/immutable/chunks/BgO5HlCg.js +0 -2
  947. package/dist/web/_app/immutable/chunks/BqnODQDb.js +0 -1
  948. package/dist/web/_app/immutable/chunks/BrebtJNG.js +0 -18
  949. package/dist/web/_app/immutable/chunks/BvIFhEn7.js +0 -2
  950. package/dist/web/_app/immutable/chunks/BvfdTHv8.js +0 -1
  951. package/dist/web/_app/immutable/chunks/BxGm65PH.js +0 -1
  952. package/dist/web/_app/immutable/chunks/BxyxnEKw.js +0 -1
  953. package/dist/web/_app/immutable/chunks/BygFIGq4.js +0 -1
  954. package/dist/web/_app/immutable/chunks/Bz0ZjVQE.js +0 -2
  955. package/dist/web/_app/immutable/chunks/C0LVZhvn.js +0 -1
  956. package/dist/web/_app/immutable/chunks/CIb_hHMy.js +0 -1
  957. package/dist/web/_app/immutable/chunks/CNKK6nZb.js +0 -1
  958. package/dist/web/_app/immutable/chunks/CQ5FjHZK.js +0 -1
  959. package/dist/web/_app/immutable/chunks/CSVbGg_b.js +0 -5
  960. package/dist/web/_app/immutable/chunks/CX_61fY8.js +0 -5
  961. package/dist/web/_app/immutable/chunks/CYrVHOHA.js +0 -1
  962. package/dist/web/_app/immutable/chunks/CaEaeeKb.js +0 -1
  963. package/dist/web/_app/immutable/chunks/Ch6e_wpP.js +0 -1
  964. package/dist/web/_app/immutable/chunks/Ci4zzCVB.js +0 -2
  965. package/dist/web/_app/immutable/chunks/CknqBVQE.js +0 -1
  966. package/dist/web/_app/immutable/chunks/Cmfiirqp.js +0 -4
  967. package/dist/web/_app/immutable/chunks/CqkleIqs.js +0 -1
  968. package/dist/web/_app/immutable/chunks/CrFpCC6p.js +0 -1
  969. package/dist/web/_app/immutable/chunks/CxX8hcT6.js +0 -1
  970. package/dist/web/_app/immutable/chunks/D0T1ps1G.js +0 -1
  971. package/dist/web/_app/immutable/chunks/D2ZEj9xD.js +0 -1
  972. package/dist/web/_app/immutable/chunks/D3sy0IkA.js +0 -2
  973. package/dist/web/_app/immutable/chunks/DFYOFE3o.js +0 -1
  974. package/dist/web/_app/immutable/chunks/DHWoAC4y.js +0 -1
  975. package/dist/web/_app/immutable/chunks/DYYBfXU3.js +0 -1
  976. package/dist/web/_app/immutable/chunks/DiNPRA8T.js +0 -1
  977. package/dist/web/_app/immutable/chunks/DkjsqHkM.js +0 -1
  978. package/dist/web/_app/immutable/chunks/DnL9f0lc.js +0 -7
  979. package/dist/web/_app/immutable/chunks/DpMCynC3.js +0 -1
  980. package/dist/web/_app/immutable/chunks/DqrybUuA.js +0 -1
  981. package/dist/web/_app/immutable/chunks/DsnmJJEf.js +0 -1
  982. package/dist/web/_app/immutable/chunks/KyjzlWRN.js +0 -2
  983. package/dist/web/_app/immutable/chunks/O9MAeAgV.js +0 -5
  984. package/dist/web/_app/immutable/chunks/PPVm8Dsz.js +0 -1
  985. package/dist/web/_app/immutable/chunks/SKSQ4m85.js +0 -2
  986. package/dist/web/_app/immutable/chunks/WEBTyD-H.js +0 -1
  987. package/dist/web/_app/immutable/chunks/WSUKABI_.js +0 -1
  988. package/dist/web/_app/immutable/chunks/bBXT5iJP.js +0 -1
  989. package/dist/web/_app/immutable/chunks/vxEtkL8z.js +0 -1
  990. package/dist/web/_app/immutable/chunks/wDIGUaoU.js +0 -3
  991. package/dist/web/_app/immutable/chunks/xkNhbnff.js +0 -1
  992. package/dist/web/_app/immutable/chunks/zoVX1Zab.js +0 -1
  993. package/dist/web/_app/immutable/entry/app.GfE4z2GO.js +0 -2
  994. package/dist/web/_app/immutable/entry/start.H-LFJK9u.js +0 -1
  995. package/dist/web/_app/immutable/nodes/0.Bwi7tTNC.js +0 -2
  996. package/dist/web/_app/immutable/nodes/1.DgNJPEWk.js +0 -1
  997. package/dist/web/_app/immutable/nodes/10.BW_XCD2O.js +0 -1
  998. package/dist/web/_app/immutable/nodes/11.DM7RX3Ms.js +0 -1
  999. package/dist/web/_app/immutable/nodes/12.DKgssZo8.js +0 -1
  1000. package/dist/web/_app/immutable/nodes/13.DCdmTre-.js +0 -1
  1001. package/dist/web/_app/immutable/nodes/2.DOA5QBVG.js +0 -266
  1002. package/dist/web/_app/immutable/nodes/3.bpoHQwAI.js +0 -5
  1003. package/dist/web/_app/immutable/nodes/4.ye0Vy7A1.js +0 -11
  1004. package/dist/web/_app/immutable/nodes/5.rxpnYrx_.js +0 -4
  1005. package/dist/web/_app/immutable/nodes/6.DP8HSxtc.js +0 -1
  1006. package/dist/web/_app/immutable/nodes/7.C1h4Bf-E.js +0 -1
  1007. package/dist/web/_app/immutable/nodes/8.BzmQ7S7Y.js +0 -1
  1008. package/dist/web/_app/immutable/nodes/9.CEakpXpF.js +0 -1
@@ -18,15 +18,57 @@ import * as syncProtocol from 'y-protocols/sync.js';
18
18
  import * as awarenessProtocol from 'y-protocols/awareness.js';
19
19
  import * as encoding from 'lib0/encoding';
20
20
  import * as decoding from 'lib0/decoding';
21
+ import { createHash } from 'node:crypto';
22
+ import { applyTextDiff } from './yjs-text-diff.js';
23
+ function sha256(s) {
24
+ return createHash('sha256').update(s, 'utf-8').digest('hex');
25
+ }
21
26
  const MSG_SYNC = 0;
22
27
  const MSG_AWARENESS = 1;
23
- /** Grace period before destroying an idle Y.Doc (ms). Allows reconnecting clients to resume. */
24
- const DOC_IDLE_TIMEOUT = 30_000;
28
+ /**
29
+ * MSG_CHUNK wraps a fragment of a larger logical message. Chunked frames
30
+ * have layout: [4B msgId][2B seq][2B total][1B origMsgType][chunkPayload].
31
+ * Used to keep individual WS frames under Safari/WebKit's binary-frame
32
+ * threshold (~4KB after deflate), where larger frames get truncated and
33
+ * blow up Yjs's varint decoder with `RangeError: Length out of range of
34
+ * buffer`. The client reassembles chunks and dispatches as if the
35
+ * original `origMsgType` frame had arrived intact.
36
+ */
37
+ const MSG_CHUNK = 2;
38
+ /** Threshold above which an outbound payload is split into MSG_CHUNK
39
+ * frames. 4KB stays well under the smallest reported Safari WebSocket
40
+ * binary-frame failure size, while keeping the common keystroke/awareness
41
+ * traffic on the single-frame fast path. */
42
+ const MAX_CHUNK_PAYLOAD = 4096;
43
+ /**
44
+ * Grace period before destroying an idle Y.Doc (ms).
45
+ * Keep long enough that async server-side processing (LLM meeting summary,
46
+ * agent mutations, etc.) can push updates into the Y.Doc via syncDocFromDisk
47
+ * while the client is transiently disconnected.
48
+ */
49
+ const DOC_IDLE_TIMEOUT = 120_000;
50
+ /**
51
+ * After a client connects to a fresh (server-restart or first-open) Y.Doc,
52
+ * wait this long for the client's sync-step-2 to arrive before seeding
53
+ * from disk. If the client has state (reconnect after server restart),
54
+ * their sync populates the Y.Doc and we skip the disk seed — preventing
55
+ * the CRDT merge that would otherwise produce duplicated content when
56
+ * two origins insert the same bytes.
57
+ */
58
+ const SEED_WAIT_MS = 500;
25
59
  export class YjsManager {
26
60
  workspaceManager;
61
+ persistence;
27
62
  docs = new Map();
28
- constructor(workspaceManager) {
63
+ /**
64
+ * In-flight `getOrCreate` promises, keyed by docName. Concurrent calls for
65
+ * the same docName await the same promise instead of building two Y.Docs
66
+ * (which would race on the persistence file and split client traffic).
67
+ */
68
+ loadingPromises = new Map();
69
+ constructor(workspaceManager, persistence) {
29
70
  this.workspaceManager = workspaceManager;
71
+ this.persistence = persistence;
30
72
  }
31
73
  /**
32
74
  * Parse a docName ("repo/entityType/entityId") into its components.
@@ -38,70 +80,275 @@ export class YjsManager {
38
80
  return { repo: parts[0], entityType: parts[1], entityId: parts.slice(2).join('/') };
39
81
  }
40
82
  /**
41
- * Get or create a Y.Doc for an entity. Seeds from disk on first access.
83
+ * Get or create a Y.Doc for an entity.
84
+ *
85
+ * Async because persistence loads from disk. Concurrent calls for the same
86
+ * docName await the same in-flight promise so we don't build two Y.Docs.
87
+ *
88
+ * If a persisted snapshot exists, applies it to the fresh Y.Doc and marks
89
+ * `seeded = true` immediately — reconnecting clients then see a server
90
+ * state vector that already includes their pre-restart ops, so sync-step-2
91
+ * is a no-op and the duplication race is closed.
92
+ *
93
+ * If no snapshot exists (first-ever open of this entity, or persistence
94
+ * disabled), leaves `seeded = false`. The existing deferred-seed path in
95
+ * addClient + handleMessage will populate the Y.Doc from the .md file.
42
96
  */
43
- getOrCreate(docName) {
97
+ async getOrCreate(docName) {
44
98
  const existing = this.docs.get(docName);
45
99
  if (existing)
46
100
  return existing;
47
- // Load entity content from disk
101
+ const inFlight = this.loadingPromises.get(docName);
102
+ if (inFlight)
103
+ return inFlight;
104
+ const promise = this.doLoad(docName);
105
+ this.loadingPromises.set(docName, promise);
106
+ try {
107
+ return await promise;
108
+ }
109
+ finally {
110
+ this.loadingPromises.delete(docName);
111
+ }
112
+ }
113
+ async doLoad(docName) {
48
114
  const parsed = this.parseDocName(docName);
49
115
  if (!parsed)
50
116
  return null;
51
- const graph = this.workspaceManager.getGraph(parsed.repo);
52
- if (!graph)
117
+ // Repo must exist before we allocate anything.
118
+ if (!this.workspaceManager.getGraph(parsed.repo))
53
119
  return null;
54
- let diskContent = '';
55
- try {
56
- const entity = graph.get(parsed.entityType, parsed.entityId);
57
- diskContent = entity?.document?.content ?? '';
58
- }
59
- catch {
60
- // Entity not found — start with empty doc
61
- }
62
120
  const ydoc = new Y.Doc();
63
- const ytext = ydoc.getText('content');
64
121
  const awareness = new awarenessProtocol.Awareness(ydoc);
65
- // Seed Y.Doc with disk content (server is the single seeding authority)
66
- if (diskContent.length > 0) {
67
- ydoc.transact(() => {
68
- ytext.insert(0, diskContent);
69
- }, 'server-seed');
122
+ let seeded = false;
123
+ let mdRevisionHash = '';
124
+ if (this.persistence) {
125
+ try {
126
+ const loaded = await this.persistence.load(docName);
127
+ if (loaded) {
128
+ // Tag the load with a known origin so the persistence-write observer
129
+ // (registered below) doesn't re-encode and re-write what we just read.
130
+ Y.applyUpdate(ydoc, loaded.state, 'persistence-load');
131
+ seeded = true;
132
+ mdRevisionHash = loaded.meta.mdRevisionHash;
133
+ // Reconcile snapshot vs current .md. If the .md was rewritten while
134
+ // the server was down (agent script, git pull, manual edit), the
135
+ // snapshot is stale relative to disk — smart-merge brings the Y.Doc
136
+ // forward, preserving op continuity in unchanged regions.
137
+ const diskContent = this.readDiskContent(parsed);
138
+ const diskHash = sha256(diskContent);
139
+ if (diskHash !== mdRevisionHash) {
140
+ applyTextDiff(ydoc, ydoc.getText('content'), diskContent, 'startup-reconcile');
141
+ mdRevisionHash = diskHash;
142
+ }
143
+ }
144
+ }
145
+ catch (err) {
146
+ console.warn(`[yjs] persistence.load(${docName}) failed; falling back to .md seed`, err);
147
+ }
148
+ }
149
+ const entry = {
150
+ ydoc,
151
+ awareness,
152
+ clients: new Set(),
153
+ wsClientIds: new Map(),
154
+ seeded,
155
+ mdRevisionHash,
156
+ };
157
+ // Snapshot writer: any non-load update schedules a debounced flush. The
158
+ // closure looks up `entry.mdRevisionHash` at call time so it picks up the
159
+ // latest hash (updated by smart-merge / disk-seed paths).
160
+ if (this.persistence) {
161
+ const persistence = this.persistence;
162
+ ydoc.on('update', (_update, origin) => {
163
+ if (origin === 'persistence-load')
164
+ return;
165
+ const e = this.docs.get(docName);
166
+ if (!e)
167
+ return;
168
+ persistence.scheduleWrite(docName, ydoc, e.mdRevisionHash);
169
+ });
70
170
  }
71
- const entry = { ydoc, awareness, clients: new Set(), wsClientIds: new Map() };
72
171
  this.docs.set(docName, entry);
73
172
  return entry;
74
173
  }
174
+ readDiskContent(parsed) {
175
+ try {
176
+ const graph = this.workspaceManager.getGraph(parsed.repo);
177
+ if (!graph)
178
+ return '';
179
+ const entity = graph.get(parsed.entityType, parsed.entityId);
180
+ return entity?.document?.content ?? '';
181
+ }
182
+ catch {
183
+ return '';
184
+ }
185
+ }
75
186
  /**
76
- * Add a client to a document. Sends initial sync state to the client.
187
+ * Send a JSON `doc_ready` notice to every connected client of `docName`,
188
+ * carrying the authoritative ytext length the client should match before
189
+ * unlocking its editor. This is the seed-success heartbeat the client
190
+ * uses to confirm its local apply actually landed — without it, a frame
191
+ * that arrived but failed to decode (e.g. Safari/WebKit fragmentation
192
+ * issue) would silently leave the editor unlocked on an empty Y.Doc and
193
+ * the next keystroke + autosave would overwrite the disk file.
77
194
  */
78
- addClient(docName, ws) {
79
- const entry = this.getOrCreate(docName);
195
+ broadcastDocReady(docName) {
196
+ const entry = this.docs.get(docName);
80
197
  if (!entry)
81
198
  return;
82
- // Cancel idle destruction timer — a client is joining
199
+ const expectedLength = entry.ydoc.getText('content').length;
200
+ const msg = JSON.stringify({ type: 'doc_ready', docName, expectedLength });
201
+ for (const client of entry.clients) {
202
+ if (client.readyState !== 1)
203
+ continue;
204
+ try {
205
+ client.send(msg);
206
+ }
207
+ catch { /* non-fatal */ }
208
+ }
209
+ }
210
+ /**
211
+ * Send `doc_ready` to a single client. Used in addClient when the entry
212
+ * is already seeded — the new joiner needs the heartbeat to unlock its
213
+ * editor without waiting for the next state transition.
214
+ */
215
+ sendDocReadyToClient(docName, ws) {
216
+ const entry = this.docs.get(docName);
217
+ if (!entry || ws.readyState !== 1)
218
+ return;
219
+ const expectedLength = entry.ydoc.getText('content').length;
220
+ try {
221
+ ws.send(JSON.stringify({ type: 'doc_ready', docName, expectedLength }));
222
+ }
223
+ catch { /* non-fatal */ }
224
+ }
225
+ /**
226
+ * If the Y.Doc is still empty (no client sync has populated it), load
227
+ * content from disk and mark the entry as seeded. Broadcast the seeded
228
+ * state to all connected clients as a sync-step-2 so they see it.
229
+ *
230
+ * Runs ~SEED_WAIT_MS after a client connects. Short-circuits if any
231
+ * earlier sync already flipped the `seeded` flag.
232
+ */
233
+ maybeSeedFromDisk(docName) {
234
+ const entry = this.docs.get(docName);
235
+ if (!entry || entry.seeded)
236
+ return;
237
+ const ytext = entry.ydoc.getText('content');
238
+ if (ytext.length > 0) {
239
+ // A client sync populated the doc during the wait — nothing to do.
240
+ entry.seeded = true;
241
+ this.broadcastDocReady(docName);
242
+ return;
243
+ }
244
+ const parsed = this.parseDocName(docName);
245
+ if (!parsed)
246
+ return;
247
+ const diskContent = this.readDiskContent(parsed);
248
+ if (diskContent.length === 0) {
249
+ entry.seeded = true;
250
+ entry.mdRevisionHash = sha256('');
251
+ this.broadcastDocReady(docName);
252
+ return;
253
+ }
254
+ entry.ydoc.transact(() => {
255
+ ytext.insert(0, diskContent);
256
+ }, 'server-seed');
257
+ entry.seeded = true;
258
+ entry.mdRevisionHash = sha256(diskContent);
259
+ // Broadcast the newly-seeded state to every connected client so they
260
+ // see the content. Writing sync-step-2 from the now-populated Y.Doc
261
+ // sends the delta (the characters we just inserted).
262
+ const encoder = encoding.createEncoder();
263
+ syncProtocol.writeSyncStep2(encoder, entry.ydoc);
264
+ const payload = encoding.toUint8Array(encoder);
265
+ for (const client of entry.clients) {
266
+ if (client.readyState !== 1)
267
+ continue;
268
+ this.sendToClient(client, docName, MSG_SYNC, payload);
269
+ }
270
+ // Heartbeat: tell clients the authoritative length so they only unlock
271
+ // their editor if their local apply matches. Without this, a client that
272
+ // received the broadcast but failed to decode it (Safari fragmentation
273
+ // bug) would unlock on an empty Y.Doc and overwrite disk on next save.
274
+ this.broadcastDocReady(docName);
275
+ }
276
+ /**
277
+ * Add a client to a document. Async because `getOrCreate` may need to load a
278
+ * persisted snapshot from disk.
279
+ *
280
+ * Protocol (ordered carefully to make first paint resilient):
281
+ * 1. Server: load doc (snapshot or fresh) — `getOrCreate`.
282
+ * 2. Server: send sync-step-1 + sync-step-2 (full state) + awareness
283
+ * FIRST. The client's editor populates and unlocks the moment the
284
+ * sync-step-2 lands; it doesn't need to wait for the ack to render.
285
+ * 3. Server: send `collab:joined` ack JSON LAST. This tells the client
286
+ * it's safe to send its own sync-step-1 + awareness, the load-race
287
+ * protection codex flagged. Sending content before the ack means a
288
+ * delayed/dropped ack still leaves the editor populated — only the
289
+ * client's outbound state vector is gated.
290
+ * 4. Client: receives sync-step-2 → editor renders. Then `collab:joined`
291
+ * → client sends its own sync-step-1 + awareness.
292
+ * 5. Server: applies client sync, relays to peers.
293
+ */
294
+ async addClient(docName, ws) {
295
+ const entry = await this.getOrCreate(docName);
296
+ if (!entry) {
297
+ // Couldn't find or create the doc (unknown repo, etc). Don't ack —
298
+ // client will time out waiting and remain in its readonly seed-gate state.
299
+ return;
300
+ }
301
+ // Cancel idle destruction timer — a client is joining.
83
302
  if (entry.idleTimer) {
84
303
  clearTimeout(entry.idleTimer);
85
304
  entry.idleTimer = undefined;
86
305
  }
87
306
  entry.clients.add(ws);
88
- // Send sync-step-1 to the new client (our state vector)
89
- // so the client can respond with what we're missing (sync-step-2)
307
+ // Send sync-step-1 (our state vector) so the client can reply with what
308
+ // we're missing.
90
309
  const encoder = encoding.createEncoder();
91
310
  syncProtocol.writeSyncStep1(encoder, entry.ydoc);
92
311
  this.sendToClient(ws, docName, MSG_SYNC, encoding.toUint8Array(encoder));
93
- // Also send sync-step-2 immediately (our full state)
94
- // so the client gets our content without a round trip
312
+ // Send sync-step-2 (our full state) so the client gets our content
313
+ // without a round trip this is what unlocks the editor on the client.
95
314
  const encoder2 = encoding.createEncoder();
96
315
  syncProtocol.writeSyncStep2(encoder2, entry.ydoc);
97
316
  this.sendToClient(ws, docName, MSG_SYNC, encoding.toUint8Array(encoder2));
98
- // Send current awareness states to the new client
317
+ // Existing peer cursors.
99
318
  const awarenessStates = entry.awareness.getStates();
100
319
  if (awarenessStates.size > 0) {
101
320
  const clients = Array.from(awarenessStates.keys());
102
321
  const update = awarenessProtocol.encodeAwarenessUpdate(entry.awareness, clients);
103
322
  this.sendToClient(ws, docName, MSG_AWARENESS, update);
104
323
  }
324
+ // If we're joining an already-seeded doc (a peer is already editing),
325
+ // the new client needs the doc_ready heartbeat right away so it can
326
+ // unlock once the sync-step-2 we just sent lands locally. Without this,
327
+ // a late joiner would stay readonly forever waiting for a transition
328
+ // that already happened.
329
+ if (entry.seeded) {
330
+ this.sendDocReadyToClient(docName, ws);
331
+ }
332
+ // Ack the join AFTER content + heartbeat. The ack is what tells the
333
+ // client it's safe to send its own sync-step-1 + awareness. Sending
334
+ // content before the ack means editor first-paint can survive a
335
+ // delayed or lost ack. (doc_ready above unlocks the editor; this ack
336
+ // unlocks outbound traffic.)
337
+ try {
338
+ ws.send(JSON.stringify({ type: 'collab:joined', docName }));
339
+ }
340
+ catch { /* WS might have closed mid-load — non-fatal */ }
341
+ // Deferred disk seed. If the client has its own state (reconnect after
342
+ // server restart but before persistence existed, or persistence disabled),
343
+ // their sync-step-2 will populate the Y.Doc before this timer fires and
344
+ // maybeSeedFromDisk becomes a no-op. If they don't (first-ever open),
345
+ // we seed and broadcast.
346
+ if (!entry.seeded && !entry.seedTimer) {
347
+ entry.seedTimer = setTimeout(() => {
348
+ entry.seedTimer = undefined;
349
+ this.maybeSeedFromDisk(docName);
350
+ }, SEED_WAIT_MS);
351
+ }
105
352
  }
106
353
  /**
107
354
  * Remove a client from a document. Destroys Y.Doc when last client leaves.
@@ -137,9 +384,26 @@ export class YjsManager {
137
384
  entry.idleTimer = setTimeout(() => {
138
385
  // Only destroy if still idle (no new clients joined)
139
386
  if (entry.clients.size === 0) {
140
- entry.awareness.destroy();
141
- entry.ydoc.destroy();
387
+ if (entry.seedTimer) {
388
+ clearTimeout(entry.seedTimer);
389
+ entry.seedTimer = undefined;
390
+ }
142
391
  this.docs.delete(docName);
392
+ // Drain pending persistence writes BEFORE destroying the Y.Doc — a
393
+ // debounced flush could still be holding a reference and we want
394
+ // its bytes to land on disk. Destroy is async, but we don't await
395
+ // here (the timer callback is fire-and-forget); the persistence
396
+ // layer's per-doc chain serializes writes anyway.
397
+ if (this.persistence) {
398
+ this.persistence.drain(docName).finally(() => {
399
+ entry.awareness.destroy();
400
+ entry.ydoc.destroy();
401
+ });
402
+ }
403
+ else {
404
+ entry.awareness.destroy();
405
+ entry.ydoc.destroy();
406
+ }
143
407
  }
144
408
  }, DOC_IDLE_TIMEOUT);
145
409
  }
@@ -164,10 +428,32 @@ export class YjsManager {
164
428
  if (!entry)
165
429
  return;
166
430
  if (msgType === MSG_SYNC) {
167
- // Apply sync message to server Y.Doc
431
+ // Apply sync message to server Y.Doc. The client is gated readonly
432
+ // until it receives our doc_ready (with expectedLength matching the
433
+ // seeded ytext.length), so a keystroke can't race the deferred-seed
434
+ // window into the server. Reconnect clients with retained state push
435
+ // it via sync-step-2 here, which marks `seeded = true` below and the
436
+ // deferred-seed timer becomes a no-op.
168
437
  const decoder = decoding.createDecoder(payload);
169
438
  const encoder = encoding.createEncoder();
170
439
  syncProtocol.readSyncMessage(decoder, encoder, entry.ydoc, 'ws-client');
440
+ // If a client's sync populated the Y.Doc, suppress the deferred
441
+ // disk seed — otherwise we'd double-insert the same content via
442
+ // the CRDT. Record the current disk hash so the persistence snapshot
443
+ // has a baseline for future divergence detection.
444
+ if (!entry.seeded && entry.ydoc.getText('content').length > 0) {
445
+ entry.seeded = true;
446
+ if (entry.seedTimer) {
447
+ clearTimeout(entry.seedTimer);
448
+ entry.seedTimer = undefined;
449
+ }
450
+ const parsed = this.parseDocName(docName);
451
+ if (parsed)
452
+ entry.mdRevisionHash = sha256(this.readDiskContent(parsed));
453
+ // Tell every client (including the sender) the new authoritative
454
+ // length so their editors can unlock on a verified seed.
455
+ this.broadcastDocReady(docName);
456
+ }
171
457
  // If the sync produced a response, send it back to the sender
172
458
  if (encoding.length(encoder) > 0) {
173
459
  this.sendToClient(sender, docName, MSG_SYNC, encoding.toUint8Array(encoder));
@@ -212,9 +498,18 @@ export class YjsManager {
212
498
  }
213
499
  }
214
500
  /**
215
- * Encode and send a framed binary message to a client.
501
+ * Encode and send a framed binary message to a client. Payloads above
502
+ * `MAX_CHUNK_PAYLOAD` are split into MSG_CHUNK frames; smaller ones go
503
+ * through the single-frame fast path unchanged.
216
504
  */
217
505
  sendToClient(ws, docName, msgType, payload) {
506
+ if (payload.length <= MAX_CHUNK_PAYLOAD) {
507
+ this.sendSingleFrame(ws, docName, msgType, payload);
508
+ return;
509
+ }
510
+ this.sendChunkedFrames(ws, docName, msgType, payload);
511
+ }
512
+ sendSingleFrame(ws, docName, msgType, payload) {
218
513
  const nameBytes = Buffer.from(docName, 'utf8');
219
514
  const frame = Buffer.alloc(2 + nameBytes.length + 1 + payload.length);
220
515
  frame.writeUInt16BE(nameBytes.length, 0);
@@ -226,6 +521,54 @@ export class YjsManager {
226
521
  }
227
522
  catch { /* non-fatal */ }
228
523
  }
524
+ sendChunkedFrames(ws, docName, msgType, payload) {
525
+ const total = Math.ceil(payload.length / MAX_CHUNK_PAYLOAD);
526
+ if (total > 0xFFFF) {
527
+ // Logical message larger than 65535 chunks (~256MB at 4KB chunks).
528
+ // Falling back to a single frame is no worse than the pre-chunking
529
+ // behavior, and we'd rather not silently truncate.
530
+ console.warn(`[yjs] payload too large to chunk (${payload.length} bytes, ${total} chunks); sending single frame`);
531
+ this.sendSingleFrame(ws, docName, msgType, payload);
532
+ return;
533
+ }
534
+ // 4-byte random message ID — collision risk is negligible within the
535
+ // ~30s reassembly window the client tolerates.
536
+ const msgId = Buffer.from([
537
+ Math.floor(Math.random() * 256),
538
+ Math.floor(Math.random() * 256),
539
+ Math.floor(Math.random() * 256),
540
+ Math.floor(Math.random() * 256),
541
+ ]);
542
+ const nameBytes = Buffer.from(docName, 'utf8');
543
+ for (let seq = 0; seq < total; seq++) {
544
+ const start = seq * MAX_CHUNK_PAYLOAD;
545
+ const end = Math.min(start + MAX_CHUNK_PAYLOAD, payload.length);
546
+ const chunk = payload.subarray(start, end);
547
+ // Frame: [2B nameLen][docName][1B MSG_CHUNK][4B msgId][2B seq][2B total][1B origMsgType][chunk]
548
+ const headerLen = 2 + nameBytes.length + 1 + 4 + 2 + 2 + 1;
549
+ const frame = Buffer.alloc(headerLen + chunk.length);
550
+ let off = 0;
551
+ frame.writeUInt16BE(nameBytes.length, off);
552
+ off += 2;
553
+ nameBytes.copy(frame, off);
554
+ off += nameBytes.length;
555
+ frame[off] = MSG_CHUNK;
556
+ off += 1;
557
+ msgId.copy(frame, off);
558
+ off += 4;
559
+ frame.writeUInt16BE(seq, off);
560
+ off += 2;
561
+ frame.writeUInt16BE(total, off);
562
+ off += 2;
563
+ frame[off] = msgType;
564
+ off += 1;
565
+ Buffer.from(chunk).copy(frame, off);
566
+ try {
567
+ ws.send(frame);
568
+ }
569
+ catch { /* non-fatal */ }
570
+ }
571
+ }
229
572
  /**
230
573
  * Get current Y.Doc text content for a document (for debugging/autosave).
231
574
  */
@@ -236,10 +579,73 @@ export class YjsManager {
236
579
  return entry.ydoc.getText('content').toString();
237
580
  }
238
581
  /**
239
- * Destroy all Y.Docs (server shutdown).
582
+ * Reconcile an active Y.Doc with the latest .md file on disk. Used by the
583
+ * agent write path (`update_entity`) and the event processor (AI summary
584
+ * generation) — paths that mutate the .md file out-of-band while clients
585
+ * may have it open.
586
+ *
587
+ * Uses Yjs-aware text diffing (see {@link applyTextDiff}). Chars in
588
+ * UNCHANGED regions retain their original `(clientID, clock)`. Cursor
589
+ * anchors via `Y.createRelativePositionFromTypeIndex` in unchanged regions
590
+ * stay valid. Y.UndoManager stacks referencing those chars stay coherent.
591
+ *
592
+ * KNOWN LIMIT: chars in CHANGED regions are still discarded. If a user has
593
+ * typed `world ` into a "Hello " doc but autosave hasn't fired yet, the
594
+ * Y.Doc has "Hello world " while disk still has "Hello ". When an agent
595
+ * writes "Hi " to disk and we run smart-merge, the diff becomes
596
+ * `[delete "Hello "][insert "Hi "][equal "world "]`. The user's "world "
597
+ * survives because it's an unchanged region; their typing in the head is
598
+ * gone because that's the changed region. There's no way around this for
599
+ * any "make ytext match target" semantics — the architectural fix is for
600
+ * agents to write through Yjs (mutate the Y.Text directly) instead of
601
+ * writing the .md file and letting us reconcile.
602
+ *
603
+ * The previous blind delete-then-insert path was strictly worse: it
604
+ * (a) destroyed ALL live edits, including unchanged regions, (b) invalidated
605
+ * every cursor anchor and undo entry, and (c) doubled the document when
606
+ * reconciling against a peer that retained the same content under a
607
+ * different clientID. Smart-merge fixes all three; the changed-region
608
+ * limit is the irreducible residue.
609
+ *
610
+ * No-ops when no Y.Doc is currently active for docName — clients that open
611
+ * later will pick up the .md content via fresh seeding in `getOrCreate`.
612
+ */
613
+ syncDocFromDisk(docName) {
614
+ const entry = this.docs.get(docName);
615
+ if (!entry) {
616
+ console.log(`[yjs] syncDocFromDisk: no active doc for ${docName} — client will seed from disk on next visit`);
617
+ return;
618
+ }
619
+ const parsed = this.parseDocName(docName);
620
+ if (!parsed)
621
+ return;
622
+ const diskContent = this.readDiskContent(parsed);
623
+ const ytext = entry.ydoc.getText('content');
624
+ if (ytext.toString() === diskContent) {
625
+ // Still want to keep mdRevisionHash in sync even on a no-op so the
626
+ // persistence layer's divergence-detection logic doesn't false-fire.
627
+ entry.mdRevisionHash = sha256(diskContent);
628
+ return;
629
+ }
630
+ console.log(`[yjs] syncDocFromDisk: smart-merging ${docName} (${diskContent.length} chars, ${entry.clients.size} clients)`);
631
+ applyTextDiff(entry.ydoc, ytext, diskContent, 'server-sync-disk-merge');
632
+ entry.mdRevisionHash = sha256(diskContent);
633
+ // Refresh clients' expected-length heartbeat so editors that were locked
634
+ // due to a previous failed seed can unlock on the broadcast update.
635
+ this.broadcastDocReady(docName);
636
+ }
637
+ /**
638
+ * Destroy all Y.Docs (server shutdown). Drains pending persistence writes
639
+ * before tearing down so a debounced snapshot can't be lost on shutdown.
240
640
  */
241
- destroy() {
641
+ async destroy() {
642
+ if (this.persistence)
643
+ await this.persistence.destroy();
242
644
  for (const [, entry] of this.docs) {
645
+ if (entry.idleTimer)
646
+ clearTimeout(entry.idleTimer);
647
+ if (entry.seedTimer)
648
+ clearTimeout(entry.seedTimer);
243
649
  entry.awareness.destroy();
244
650
  entry.ydoc.destroy();
245
651
  }
@@ -1 +1 @@
1
- {"version":3,"file":"yjs-manager.js","sourceRoot":"","sources":["../../src/server/yjs-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"yjs-manager.js","sourceRoot":"","sources":["../../src/server/yjs-manager.ts"],"names":[],"mappings":"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"}