ocean-brain 0.7.5 → 0.8.1

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 (263) hide show
  1. package/dist/index.js +3 -3
  2. package/dist/mcp.js +180 -736
  3. package/package.json +6 -2
  4. package/server/client/dist/assets/ArrowRight.es-CbA8ey6a.js +1 -0
  5. package/server/client/dist/assets/{Calendar-Bc2zJueR.js → Calendar-CgWgr1BV.js} +2 -2
  6. package/server/client/dist/assets/Callout-DKruIT0f.js +1 -0
  7. package/server/client/dist/assets/Copy.es-DFbgpaNJ.js +1 -0
  8. package/server/client/dist/assets/Graph-kCltGRlY.js +1 -0
  9. package/server/client/dist/assets/{Image-DxWhlIDG.js → Image-7W0DZwMo.js} +1 -1
  10. package/server/client/dist/assets/Image.es-5pXLx9TU.js +1 -0
  11. package/server/client/dist/assets/Note-BW6Np_5g.js +20 -0
  12. package/server/client/dist/assets/Plus.es-B0sg64VJ.js +1 -0
  13. package/server/client/dist/assets/Reminders-C10fHQcl.js +1 -0
  14. package/server/client/dist/assets/Search-tf2nV4v0.js +1 -0
  15. package/server/client/dist/assets/{SurfaceCard-CkAVMLPs.js → SurfaceCard-pydtvHfu.js} +1 -1
  16. package/server/client/dist/assets/Tag-uCoYbISy.js +1 -0
  17. package/server/client/dist/assets/TagNotes-CqOcQiRw.js +1 -0
  18. package/server/client/dist/assets/Trash.es-w32Goxfa.js +1 -0
  19. package/server/client/dist/assets/ViewNotes-slPXXoOY.js +1 -0
  20. package/server/client/dist/assets/ViewSectionDialog-brTrsF6G.js +102 -0
  21. package/server/client/dist/assets/Views-B_wsb-XJ.js +1 -0
  22. package/server/client/dist/assets/{graph-vendor-CUxe67Lr.js → graph-vendor-BAF95C0g.js} +2 -2
  23. package/server/client/dist/assets/image.api-CYsjXiMr.js +17 -0
  24. package/server/client/dist/assets/index-BR05aSXr.js +342 -0
  25. package/server/client/dist/assets/{index-D3BfroIT.js → index-D83QbOcw.js} +1 -1
  26. package/server/client/dist/assets/{index-C5BGzDgt.css → index-DPI6YoDt.css} +1 -1
  27. package/server/client/dist/assets/manage-image-BYIhWu56.js +1 -0
  28. package/server/client/dist/assets/{manage-image-detail-C8Q7K7I3.js → manage-image-detail-6KgmQvbN.js} +1 -1
  29. package/server/client/dist/assets/mcp-Dd98N9Hq.js +4 -0
  30. package/server/client/dist/assets/mcp-admin-adapter-DOgBsYpl.js +1 -0
  31. package/server/client/dist/assets/note-core-CMGUaW1v.js +176 -0
  32. package/server/client/dist/assets/note-vendor-Hoz9Q4-4.js +54 -0
  33. package/server/client/dist/assets/{placeholder-Cr_nI8UI.js → placeholder-siHGg9aK.js} +4 -4
  34. package/server/client/dist/assets/{properties-CvYWJWUM.js → properties-CyVRKgcT.js} +1 -1
  35. package/server/client/dist/assets/tag.api-CwmC8crB.js +21 -0
  36. package/server/client/dist/assets/trash-wojQBK9Z.js +1 -0
  37. package/server/client/dist/assets/{useReminderMutate-CDmIEwsw.js → useReminderMutate-DuVKxpBh.js} +1 -1
  38. package/server/client/dist/index.html +5 -5
  39. package/server/dist/app.js +0 -1
  40. package/server/dist/features/auth/http/api.js +0 -1
  41. package/server/dist/features/auth/http/login-page.js +272 -5
  42. package/server/dist/features/auth/http/pages.js +20 -3
  43. package/server/dist/features/auth/service.js +3 -2
  44. package/server/dist/features/cache/graphql/cache.field.resolver.js +0 -1
  45. package/server/dist/features/cache/graphql/cache.mutation.resolver.js +0 -1
  46. package/server/dist/features/cache/graphql/cache.query.resolver.js +0 -1
  47. package/server/dist/features/cache/graphql/cache.resolver.js +0 -1
  48. package/server/dist/features/cache/graphql/cache.type-defs.js +0 -1
  49. package/server/dist/features/cache/graphql/index.js +0 -1
  50. package/server/dist/features/image/graphql/image.field.resolver.js +0 -1
  51. package/server/dist/features/image/graphql/image.mutation.resolver.js +0 -1
  52. package/server/dist/features/image/graphql/image.query.resolver.js +0 -1
  53. package/server/dist/features/image/graphql/image.resolver.js +0 -1
  54. package/server/dist/features/image/graphql/image.type-defs.js +0 -1
  55. package/server/dist/features/image/graphql/index.js +0 -1
  56. package/server/dist/features/image/http/upload.js +34 -24
  57. package/server/dist/features/image/services/delete.js +0 -1
  58. package/server/dist/features/image/services/upload.js +0 -1
  59. package/server/dist/features/image/services/validation.js +110 -0
  60. package/server/dist/features/mcp-admin/http/handlers.js +11 -4
  61. package/server/dist/features/mcp-admin/service.js +0 -1
  62. package/server/dist/features/note/graphql/index.js +0 -1
  63. package/server/dist/features/note/graphql/note.field.resolver.js +0 -1
  64. package/server/dist/features/note/graphql/note.mutation.resolver.js +0 -1
  65. package/server/dist/features/note/graphql/note.query.resolver.js +0 -1
  66. package/server/dist/features/note/graphql/note.resolver.js +0 -1
  67. package/server/dist/features/note/graphql/note.type-defs.js +0 -1
  68. package/server/dist/features/note/http/mcp.js +8 -44
  69. package/server/dist/features/note/services/authoring.js +0 -1
  70. package/server/dist/features/note/services/cleanup.js +2 -3
  71. package/server/dist/features/note/services/content-blocks.js +0 -1
  72. package/server/dist/features/note/services/markdown-intent-write.js +11 -44
  73. package/server/dist/features/note/services/markdown-patch.js +4 -124
  74. package/server/dist/features/note/services/properties.js +0 -1
  75. package/server/dist/features/note/services/search-backfill.js +0 -1
  76. package/server/dist/features/note/services/search.js +0 -1
  77. package/server/dist/features/note/services/snapshot.js +0 -1
  78. package/server/dist/features/note/services/tag-filter.js +0 -1
  79. package/server/dist/features/note/services/trash.js +0 -1
  80. package/server/dist/features/note/services/write-conflict.js +0 -1
  81. package/server/dist/features/note/services/write.js +13 -14
  82. package/server/dist/features/placeholder/graphql/index.js +0 -1
  83. package/server/dist/features/placeholder/graphql/placeholder.field.resolver.js +0 -1
  84. package/server/dist/features/placeholder/graphql/placeholder.mutation.resolver.js +0 -1
  85. package/server/dist/features/placeholder/graphql/placeholder.query.resolver.js +0 -1
  86. package/server/dist/features/placeholder/graphql/placeholder.resolver.js +0 -1
  87. package/server/dist/features/placeholder/graphql/placeholder.type-defs.js +0 -1
  88. package/server/dist/features/reminder/graphql/index.js +0 -1
  89. package/server/dist/features/reminder/graphql/reminder.field.resolver.js +0 -1
  90. package/server/dist/features/reminder/graphql/reminder.mutation.resolver.js +0 -1
  91. package/server/dist/features/reminder/graphql/reminder.query.resolver.js +0 -1
  92. package/server/dist/features/reminder/graphql/reminder.resolver.js +0 -1
  93. package/server/dist/features/reminder/graphql/reminder.type-defs.js +0 -1
  94. package/server/dist/features/tag/graphql/index.js +0 -1
  95. package/server/dist/features/tag/graphql/tag.field.resolver.js +0 -1
  96. package/server/dist/features/tag/graphql/tag.mutation.resolver.js +0 -1
  97. package/server/dist/features/tag/graphql/tag.query.resolver.js +16 -2
  98. package/server/dist/features/tag/graphql/tag.resolver.js +0 -1
  99. package/server/dist/features/tag/graphql/tag.type-defs.js +2 -1
  100. package/server/dist/features/tag/http/mcp.js +0 -1
  101. package/server/dist/features/tag/services/organization.js +0 -1
  102. package/server/dist/features/view/graphql/index.js +0 -1
  103. package/server/dist/features/view/graphql/view.mutation.resolver.js +0 -1
  104. package/server/dist/features/view/graphql/view.query.resolver.js +0 -1
  105. package/server/dist/features/view/graphql/view.resolver.js +0 -1
  106. package/server/dist/features/view/graphql/view.type-defs.js +0 -1
  107. package/server/dist/features/view/services/workspace.js +0 -1
  108. package/server/dist/main.js +0 -1
  109. package/server/dist/models.js +0 -1
  110. package/server/dist/modules/app-version.js +104 -0
  111. package/server/dist/modules/auth-guard.js +0 -1
  112. package/server/dist/modules/auth-mode.js +0 -1
  113. package/server/dist/modules/auth-redirect.js +0 -1
  114. package/server/dist/modules/blocknote-markdown-editor.js +53 -0
  115. package/server/dist/modules/blocknote-tree.js +0 -1
  116. package/server/dist/modules/blocknote.js +10 -4
  117. package/server/dist/modules/data-maintenance.js +0 -1
  118. package/server/dist/modules/error-handler.js +0 -1
  119. package/server/dist/modules/graphql.js +0 -1
  120. package/server/dist/modules/logger.js +0 -1
  121. package/server/dist/modules/mcp-auth.js +62 -2
  122. package/server/dist/modules/mcp-token.js +0 -1
  123. package/server/dist/modules/prisma-runtime.js +0 -1
  124. package/server/dist/modules/rate-limit.js +0 -1
  125. package/server/dist/modules/recovery-retention.js +0 -1
  126. package/server/dist/modules/server-events-handler.js +0 -1
  127. package/server/dist/modules/server-events.js +0 -1
  128. package/server/dist/modules/session-store.js +0 -1
  129. package/server/dist/modules/use-async.js +0 -1
  130. package/server/dist/paths.js +1 -1
  131. package/server/dist/routes/api.js +2 -9
  132. package/server/dist/routes/auth-pages.js +0 -1
  133. package/server/dist/routes/client.js +51 -2
  134. package/server/dist/routes/graphql.js +0 -1
  135. package/server/dist/routes/index.js +0 -1
  136. package/server/dist/routes/mcp.js +0 -1
  137. package/server/dist/schema/index.js +0 -1
  138. package/server/dist/start.js +0 -1
  139. package/server/dist/types/index.js +0 -1
  140. package/server/dist/types/input.js +0 -1
  141. package/server/client/dist/assets/Callout-B4kA_Cvr.js +0 -1
  142. package/server/client/dist/assets/Graph-uq5jfJgt.js +0 -1
  143. package/server/client/dist/assets/Image.es-BpAOJjJT.js +0 -1
  144. package/server/client/dist/assets/Note-Bo8ZYRP-.js +0 -22
  145. package/server/client/dist/assets/Plus.es-Dc_js8AC.js +0 -1
  146. package/server/client/dist/assets/Reminders-lj7Equld.js +0 -1
  147. package/server/client/dist/assets/Search-1wcRO5--.js +0 -1
  148. package/server/client/dist/assets/Tag-CeygwFfv.js +0 -1
  149. package/server/client/dist/assets/TagNotes-B8DqItxw.js +0 -1
  150. package/server/client/dist/assets/Trash.es-OuQVb_SX.js +0 -1
  151. package/server/client/dist/assets/ViewNotes-BH7PbdOD.js +0 -1
  152. package/server/client/dist/assets/ViewSectionTableRenderer-BJwhd5be.js +0 -102
  153. package/server/client/dist/assets/Views-eYFtsdFj.js +0 -1
  154. package/server/client/dist/assets/image.api-C0eYGCeH.js +0 -17
  155. package/server/client/dist/assets/index-jIfkRdY_.js +0 -361
  156. package/server/client/dist/assets/manage-image-C0YwkLIP.js +0 -1
  157. package/server/client/dist/assets/mcp-DHHhTLC8.js +0 -1
  158. package/server/client/dist/assets/note-core-Z6kqulGB.js +0 -180
  159. package/server/client/dist/assets/note-vendor-i1M2FSI2.js +0 -54
  160. package/server/client/dist/assets/trash-DA27aW7L.js +0 -1
  161. package/server/client/dist/fonts/Pretendard-Bold.woff +0 -0
  162. package/server/client/dist/fonts/Pretendard-Regular.woff +0 -0
  163. package/server/dist/app.js.map +0 -1
  164. package/server/dist/features/auth/http/api.js.map +0 -1
  165. package/server/dist/features/auth/http/login-page.js.map +0 -1
  166. package/server/dist/features/auth/http/pages.js.map +0 -1
  167. package/server/dist/features/auth/service.js.map +0 -1
  168. package/server/dist/features/cache/graphql/cache.field.resolver.js.map +0 -1
  169. package/server/dist/features/cache/graphql/cache.mutation.resolver.js.map +0 -1
  170. package/server/dist/features/cache/graphql/cache.query.resolver.js.map +0 -1
  171. package/server/dist/features/cache/graphql/cache.resolver.js.map +0 -1
  172. package/server/dist/features/cache/graphql/cache.type-defs.js.map +0 -1
  173. package/server/dist/features/cache/graphql/index.js.map +0 -1
  174. package/server/dist/features/image/graphql/image.field.resolver.js.map +0 -1
  175. package/server/dist/features/image/graphql/image.mutation.resolver.js.map +0 -1
  176. package/server/dist/features/image/graphql/image.query.resolver.js.map +0 -1
  177. package/server/dist/features/image/graphql/image.resolver.js.map +0 -1
  178. package/server/dist/features/image/graphql/image.type-defs.js.map +0 -1
  179. package/server/dist/features/image/graphql/index.js.map +0 -1
  180. package/server/dist/features/image/http/upload.js.map +0 -1
  181. package/server/dist/features/image/services/delete.js.map +0 -1
  182. package/server/dist/features/image/services/remote-fetch.js +0 -176
  183. package/server/dist/features/image/services/remote-fetch.js.map +0 -1
  184. package/server/dist/features/image/services/upload.js.map +0 -1
  185. package/server/dist/features/mcp-admin/http/handlers.js.map +0 -1
  186. package/server/dist/features/mcp-admin/service.js.map +0 -1
  187. package/server/dist/features/note/graphql/index.js.map +0 -1
  188. package/server/dist/features/note/graphql/note.field.resolver.js.map +0 -1
  189. package/server/dist/features/note/graphql/note.mutation.resolver.js.map +0 -1
  190. package/server/dist/features/note/graphql/note.query.resolver.js.map +0 -1
  191. package/server/dist/features/note/graphql/note.resolver.js.map +0 -1
  192. package/server/dist/features/note/graphql/note.type-defs.js.map +0 -1
  193. package/server/dist/features/note/http/mcp.js.map +0 -1
  194. package/server/dist/features/note/services/authoring.js.map +0 -1
  195. package/server/dist/features/note/services/cleanup.js.map +0 -1
  196. package/server/dist/features/note/services/content-blocks.js.map +0 -1
  197. package/server/dist/features/note/services/markdown-intent-write.js.map +0 -1
  198. package/server/dist/features/note/services/markdown-patch.js.map +0 -1
  199. package/server/dist/features/note/services/properties.js.map +0 -1
  200. package/server/dist/features/note/services/search-backfill.js.map +0 -1
  201. package/server/dist/features/note/services/search.js.map +0 -1
  202. package/server/dist/features/note/services/snapshot.js.map +0 -1
  203. package/server/dist/features/note/services/tag-filter.js.map +0 -1
  204. package/server/dist/features/note/services/trash.js.map +0 -1
  205. package/server/dist/features/note/services/write-conflict.js.map +0 -1
  206. package/server/dist/features/note/services/write.js.map +0 -1
  207. package/server/dist/features/placeholder/graphql/index.js.map +0 -1
  208. package/server/dist/features/placeholder/graphql/placeholder.field.resolver.js.map +0 -1
  209. package/server/dist/features/placeholder/graphql/placeholder.mutation.resolver.js.map +0 -1
  210. package/server/dist/features/placeholder/graphql/placeholder.query.resolver.js.map +0 -1
  211. package/server/dist/features/placeholder/graphql/placeholder.resolver.js.map +0 -1
  212. package/server/dist/features/placeholder/graphql/placeholder.type-defs.js.map +0 -1
  213. package/server/dist/features/reminder/graphql/index.js.map +0 -1
  214. package/server/dist/features/reminder/graphql/reminder.field.resolver.js.map +0 -1
  215. package/server/dist/features/reminder/graphql/reminder.mutation.resolver.js.map +0 -1
  216. package/server/dist/features/reminder/graphql/reminder.query.resolver.js.map +0 -1
  217. package/server/dist/features/reminder/graphql/reminder.resolver.js.map +0 -1
  218. package/server/dist/features/reminder/graphql/reminder.type-defs.js.map +0 -1
  219. package/server/dist/features/tag/graphql/index.js.map +0 -1
  220. package/server/dist/features/tag/graphql/tag.field.resolver.js.map +0 -1
  221. package/server/dist/features/tag/graphql/tag.mutation.resolver.js.map +0 -1
  222. package/server/dist/features/tag/graphql/tag.query.resolver.js.map +0 -1
  223. package/server/dist/features/tag/graphql/tag.resolver.js.map +0 -1
  224. package/server/dist/features/tag/graphql/tag.type-defs.js.map +0 -1
  225. package/server/dist/features/tag/http/mcp.js.map +0 -1
  226. package/server/dist/features/tag/services/organization.js.map +0 -1
  227. package/server/dist/features/view/graphql/index.js.map +0 -1
  228. package/server/dist/features/view/graphql/view.mutation.resolver.js.map +0 -1
  229. package/server/dist/features/view/graphql/view.query.resolver.js.map +0 -1
  230. package/server/dist/features/view/graphql/view.resolver.js.map +0 -1
  231. package/server/dist/features/view/graphql/view.type-defs.js.map +0 -1
  232. package/server/dist/features/view/services/workspace.js.map +0 -1
  233. package/server/dist/main.js.map +0 -1
  234. package/server/dist/models.js.map +0 -1
  235. package/server/dist/modules/auth-guard.js.map +0 -1
  236. package/server/dist/modules/auth-mode.js.map +0 -1
  237. package/server/dist/modules/auth-redirect.js.map +0 -1
  238. package/server/dist/modules/blocknote-tree.js.map +0 -1
  239. package/server/dist/modules/blocknote.js.map +0 -1
  240. package/server/dist/modules/data-maintenance.js.map +0 -1
  241. package/server/dist/modules/error-handler.js.map +0 -1
  242. package/server/dist/modules/graphql.js.map +0 -1
  243. package/server/dist/modules/logger.js.map +0 -1
  244. package/server/dist/modules/mcp-auth.js.map +0 -1
  245. package/server/dist/modules/mcp-token.js.map +0 -1
  246. package/server/dist/modules/prisma-runtime.js.map +0 -1
  247. package/server/dist/modules/rate-limit.js.map +0 -1
  248. package/server/dist/modules/recovery-retention.js.map +0 -1
  249. package/server/dist/modules/server-events-handler.js.map +0 -1
  250. package/server/dist/modules/server-events.js.map +0 -1
  251. package/server/dist/modules/session-store.js.map +0 -1
  252. package/server/dist/modules/use-async.js.map +0 -1
  253. package/server/dist/paths.js.map +0 -1
  254. package/server/dist/routes/api.js.map +0 -1
  255. package/server/dist/routes/auth-pages.js.map +0 -1
  256. package/server/dist/routes/client.js.map +0 -1
  257. package/server/dist/routes/graphql.js.map +0 -1
  258. package/server/dist/routes/index.js.map +0 -1
  259. package/server/dist/routes/mcp.js.map +0 -1
  260. package/server/dist/schema/index.js.map +0 -1
  261. package/server/dist/start.js.map +0 -1
  262. package/server/dist/types/index.js.map +0 -1
  263. package/server/dist/types/input.js.map +0 -1
@@ -50,14 +50,6 @@ const serializeSnapshot = (snapshot) => {
50
50
  createdAt: isRecord(snapshot) && typeof snapshot.createdAt === "string" ? snapshot.createdAt : ""
51
51
  };
52
52
  };
53
- const toDryRun = (plan) => ({
54
- status: "dry_run",
55
- note: plan.note,
56
- ...plan.match ? { match: plan.match } : {},
57
- ...plan.placement ? { placement: plan.placement } : {},
58
- proposed: plan.proposed,
59
- warnings: plan.warnings
60
- });
61
53
  const toTagIds = (tagIds) => {
62
54
  return tagIds.map((tagId) => Number(tagId)).filter((tagId) => Number.isSafeInteger(tagId) && tagId > 0);
63
55
  };
@@ -188,12 +180,9 @@ const applyMarkdownPlan = async (deps, input) => {
188
180
  };
189
181
  };
190
182
  const mapPlanResult = async (deps, input) => {
191
- if (input.plan.status !== "dry_run") {
183
+ if (input.plan.status !== "planned") {
192
184
  return input.plan;
193
185
  }
194
- if (input.dryRun ?? true) {
195
- return toDryRun(input.plan);
196
- }
197
186
  return applyMarkdownPlan(deps, {
198
187
  noteId: input.noteId,
199
188
  noteUpdatedAt: input.noteUpdatedAt,
@@ -234,7 +223,6 @@ const createMarkdownIntentWriteService = (deps) => ({
234
223
  noteUpdatedAt: noteSnapshot.updatedAt,
235
224
  beforeContentJson: note.content,
236
225
  plan,
237
- dryRun: input.dryRun,
238
226
  expectedUpdatedAt: input.expectedUpdatedAt,
239
227
  policy: input.policy,
240
228
  summary: input.intent
@@ -269,7 +257,6 @@ const createMarkdownIntentWriteService = (deps) => ({
269
257
  noteUpdatedAt: noteSnapshot.updatedAt,
270
258
  beforeContentJson: note.content,
271
259
  plan,
272
- dryRun: input.dryRun,
273
260
  expectedUpdatedAt: input.expectedUpdatedAt,
274
261
  policy: input.policy,
275
262
  summary: input.intent
@@ -302,7 +289,6 @@ const createMarkdownIntentWriteService = (deps) => ({
302
289
  noteUpdatedAt: noteSnapshot.updatedAt,
303
290
  beforeContentJson: note.content,
304
291
  plan,
305
- dryRun: input.dryRun,
306
292
  expectedUpdatedAt: input.expectedUpdatedAt,
307
293
  policy: input.policy,
308
294
  summary: input.intent
@@ -343,26 +329,11 @@ const createMarkdownIntentWriteService = (deps) => ({
343
329
  message: "The metadata update would not change the note."
344
330
  };
345
331
  }
346
- return {
347
- status: "dry_run",
348
- note: {
349
- id: String(note.id),
350
- title: note.title,
351
- updatedAt: note.updatedAt.toISOString()
352
- },
353
- proposed: {
354
- ...nextTitle !== void 0 ? { title: nextTitle } : {},
355
- ...input.layout !== void 0 ? { layout: input.layout } : {},
356
- ...resolvedPropertyPatch ? { properties: resolvedPropertyPatch } : {}
357
- },
358
- warnings: []
332
+ const proposed = {
333
+ ...nextTitle !== void 0 ? { title: nextTitle } : {},
334
+ ...input.layout !== void 0 ? { layout: input.layout } : {},
335
+ ...resolvedPropertyPatch ? { properties: resolvedPropertyPatch } : {}
359
336
  };
360
- },
361
- applyNoteMetadata: async (input) => {
362
- const preview = await createMarkdownIntentWriteService(deps).updateNoteMetadata(input);
363
- if (preview.status !== "dry_run") {
364
- return preview;
365
- }
366
337
  if (input.properties !== void 0) {
367
338
  if (!deps.updateProperties) {
368
339
  throw new Error("Metadata property write dependency is not configured.");
@@ -371,11 +342,11 @@ const createMarkdownIntentWriteService = (deps) => ({
371
342
  try {
372
343
  updateResult2 = await deps.updateProperties({
373
344
  id: input.id,
374
- patch: preview.proposed.properties ?? { set: [], deleteKeys: [] },
345
+ patch: proposed.properties ?? { set: [], deleteKeys: [] },
375
346
  expectedUpdatedAt: input.expectedUpdatedAt,
376
347
  noteData: {
377
- ...preview.proposed.title !== void 0 ? { title: preview.proposed.title } : {},
378
- ...preview.proposed.layout !== void 0 ? { layout: preview.proposed.layout } : {}
348
+ ...proposed.title !== void 0 ? { title: proposed.title } : {},
349
+ ...proposed.layout !== void 0 ? { layout: proposed.layout } : {}
379
350
  },
380
351
  snapshotMeta: MCP_SNAPSHOT_META
381
352
  });
@@ -412,8 +383,8 @@ const createMarkdownIntentWriteService = (deps) => ({
412
383
  updateResult = await deps.updateNote({
413
384
  id: input.id,
414
385
  data: {
415
- ...preview.proposed.title !== void 0 ? { title: preview.proposed.title } : {},
416
- ...preview.proposed.layout !== void 0 ? { layout: preview.proposed.layout } : {}
386
+ ...proposed.title !== void 0 ? { title: proposed.title } : {},
387
+ ...proposed.layout !== void 0 ? { layout: proposed.layout } : {}
417
388
  },
418
389
  expectedUpdatedAt: input.expectedUpdatedAt,
419
390
  snapshotMeta: MCP_SNAPSHOT_META
@@ -475,10 +446,7 @@ const replaceNoteMarkdown = async (input) => {
475
446
  return defaultMarkdownIntentWriteService.replaceNoteMarkdown(input);
476
447
  };
477
448
  const updateNoteMetadata = async (input) => {
478
- if (input.dryRun ?? true) {
479
- return defaultMarkdownIntentWriteService.updateNoteMetadata(input);
480
- }
481
- return defaultMarkdownIntentWriteService.applyNoteMetadata(input);
449
+ return defaultMarkdownIntentWriteService.updateNoteMetadata(input);
482
450
  };
483
451
  const calculateNoteMarkdownSha256 = (markdown) => {
484
452
  return calculateMarkdownSha256(markdown);
@@ -492,4 +460,3 @@ export {
492
460
  replaceNoteMarkdown,
493
461
  updateNoteMetadata
494
462
  };
495
- //# sourceMappingURL=markdown-intent-write.js.map
@@ -1,7 +1,6 @@
1
1
  import crypto from "crypto";
2
2
  const HASH_ALGORITHM = "sha256";
3
3
  const EXCERPT_CONTEXT_CHARS = 80;
4
- const DIFF_CONTEXT_LINES = 3;
5
4
  const calculateMarkdownSha256 = (value) => {
6
5
  return crypto.createHash(HASH_ALGORITHM).update(value, "utf8").digest("hex");
7
6
  };
@@ -82,41 +81,6 @@ const findSharedLineEdges = (beforeLines, afterLines) => {
82
81
  suffix
83
82
  };
84
83
  };
85
- const formatDiffRange = (lineIndex, lineCount) => {
86
- const lineNumber = lineIndex + 1;
87
- return lineCount === 1 ? String(lineNumber) : `${lineNumber},${lineCount}`;
88
- };
89
- const createUnifiedMarkdownDiff = (beforeMarkdown, afterMarkdown, contextLines = DIFF_CONTEXT_LINES) => {
90
- const beforeLines = splitLines(beforeMarkdown);
91
- const afterLines = splitLines(afterMarkdown);
92
- const { prefix, suffix } = findSharedLineEdges(beforeLines, afterLines);
93
- const changedBeforeStart = prefix;
94
- const changedBeforeEnd = beforeLines.length - suffix;
95
- const changedAfterStart = prefix;
96
- const changedAfterEnd = afterLines.length - suffix;
97
- const displayBeforeStart = contextLines === null ? 0 : Math.max(0, changedBeforeStart - contextLines);
98
- const displayBeforeEnd = contextLines === null ? beforeLines.length : Math.min(beforeLines.length, changedBeforeEnd + contextLines);
99
- const displayAfterStart = contextLines === null ? 0 : Math.max(0, changedAfterStart - contextLines);
100
- const displayAfterEnd = contextLines === null ? afterLines.length : Math.min(afterLines.length, changedAfterEnd + contextLines);
101
- const diffLines = [
102
- "--- before.md",
103
- "+++ after.md",
104
- `@@ -${formatDiffRange(displayBeforeStart, displayBeforeEnd - displayBeforeStart)} +${formatDiffRange(displayAfterStart, displayAfterEnd - displayAfterStart)} @@`
105
- ];
106
- for (let index = displayBeforeStart; index < changedBeforeStart; index += 1) {
107
- diffLines.push(` ${beforeLines[index]}`);
108
- }
109
- for (let index = changedBeforeStart; index < changedBeforeEnd; index += 1) {
110
- diffLines.push(`-${beforeLines[index]}`);
111
- }
112
- for (let index = changedAfterStart; index < changedAfterEnd; index += 1) {
113
- diffLines.push(`+${afterLines[index]}`);
114
- }
115
- for (let index = changedBeforeEnd; index < displayBeforeEnd; index += 1) {
116
- diffLines.push(` ${beforeLines[index]}`);
117
- }
118
- return diffLines.join("\n");
119
- };
120
84
  const countChangedLines = (beforeMarkdown, afterMarkdown) => {
121
85
  const beforeLines = splitLines(beforeMarkdown);
122
86
  const afterLines = splitLines(afterMarkdown);
@@ -235,49 +199,11 @@ const validateBaseline = (note, expectedUpdatedAt, baseMarkdownSha256) => {
235
199
  }
236
200
  return null;
237
201
  };
238
- const validateChangeLimits = (beforeMarkdown, afterMarkdown, changedCharCount, policy) => {
239
- const changedLineCount = countChangedLines(beforeMarkdown, afterMarkdown);
240
- const exceededLines = policy?.maxChangedLines !== void 0 && changedLineCount > policy.maxChangedLines;
241
- const exceededChars = policy?.maxChangedChars !== void 0 && changedCharCount > policy.maxChangedChars;
242
- if (exceededLines || exceededChars) {
243
- return {
244
- status: "failed",
245
- reason: "CHANGE_LIMIT_EXCEEDED",
246
- message: "The markdown write exceeds the configured change limit. Increase maxChangedLines/maxChangedChars to at least the requiredMinimum values or omit them for this write.",
247
- details: {
248
- configured: {
249
- ...policy?.maxChangedLines !== void 0 ? { maxChangedLines: policy.maxChangedLines } : {},
250
- ...policy?.maxChangedChars !== void 0 ? { maxChangedChars: policy.maxChangedChars } : {}
251
- },
252
- requiredMinimum: {
253
- maxChangedLines: changedLineCount,
254
- maxChangedChars: changedCharCount
255
- }
256
- }
257
- };
258
- }
259
- return null;
260
- };
261
- const buildDiffPreview = (diff, policy) => {
262
- const maxChars = policy?.diffPreviewMaxChars;
263
- if (maxChars === void 0 || diff.length <= maxChars) {
264
- return {
265
- diff,
266
- ...maxChars !== void 0 ? { diffCharCount: diff.length } : {}
267
- };
268
- }
269
- return {
270
- diff: diff.slice(0, maxChars),
271
- diffTruncated: true,
272
- diffCharCount: diff.length
273
- };
274
- };
275
202
  const createChangePlan = ({
276
203
  note,
277
204
  afterMarkdown,
278
205
  changedCharCount,
279
206
  policy,
280
- diffContextLines = DIFF_CONTEXT_LINES,
281
207
  match,
282
208
  placement
283
209
  }) => {
@@ -292,16 +218,8 @@ const createChangePlan = ({
292
218
  if (preservationFailure) {
293
219
  return preservationFailure;
294
220
  }
295
- const limitFailure = validateChangeLimits(note.markdown, afterMarkdown, changedCharCount, policy);
296
- if (limitFailure) {
297
- return limitFailure;
298
- }
299
- const diffPreview = buildDiffPreview(
300
- createUnifiedMarkdownDiff(note.markdown, afterMarkdown, diffContextLines),
301
- policy
302
- );
303
221
  return {
304
- status: "dry_run",
222
+ status: "planned",
305
223
  note: {
306
224
  id: note.id,
307
225
  title: note.title,
@@ -313,8 +231,7 @@ const createChangePlan = ({
313
231
  changedLineCount: countChangedLines(note.markdown, afterMarkdown),
314
232
  changedCharCount,
315
233
  beforeMarkdownSha256: calculateMarkdownSha256(note.markdown),
316
- afterMarkdownSha256: calculateMarkdownSha256(afterMarkdown),
317
- ...diffPreview
234
+ afterMarkdownSha256: calculateMarkdownSha256(afterMarkdown)
318
235
  },
319
236
  warnings: collectWarnings(note.markdown, afterMarkdown, policy),
320
237
  afterMarkdown
@@ -581,51 +498,14 @@ const buildMarkdownReplacePlan = (input) => {
581
498
  note: input.note,
582
499
  afterMarkdown: input.replacement,
583
500
  changedCharCount: input.note.markdown.length + input.replacement.length,
584
- policy: input.policy,
585
- diffContextLines: null
501
+ policy: input.policy
586
502
  });
587
503
  };
588
- const toPreviewResult = (plan) => {
589
- return {
590
- status: "dry_run",
591
- note: plan.note,
592
- ...plan.match ? { match: plan.match } : {},
593
- ...plan.placement ? { placement: plan.placement } : {},
594
- proposed: plan.proposed,
595
- warnings: plan.warnings
596
- };
597
- };
598
- const previewMarkdownPatch = (input) => {
599
- const plan = buildMarkdownPatchPlan(input);
600
- if (plan.status !== "dry_run") {
601
- return plan;
602
- }
603
- return toPreviewResult(plan);
604
- };
605
- const previewMarkdownAppend = (input) => {
606
- const plan = buildMarkdownAppendPlan(input);
607
- if (plan.status !== "dry_run") {
608
- return plan;
609
- }
610
- return toPreviewResult(plan);
611
- };
612
- const previewMarkdownReplace = (input) => {
613
- const plan = buildMarkdownReplacePlan(input);
614
- if (plan.status !== "dry_run") {
615
- return plan;
616
- }
617
- return toPreviewResult(plan);
618
- };
619
504
  export {
620
505
  buildMarkdownAppendPlan,
621
506
  buildMarkdownPatchPlan,
622
507
  buildMarkdownReplacePlan,
623
508
  calculateMarkdownSha256,
624
509
  countExplicitTagTokens,
625
- countMarkdownReferenceTokens,
626
- createUnifiedMarkdownDiff,
627
- previewMarkdownAppend,
628
- previewMarkdownPatch,
629
- previewMarkdownReplace
510
+ countMarkdownReferenceTokens
630
511
  };
631
- //# sourceMappingURL=markdown-patch.js.map
@@ -871,4 +871,3 @@ export {
871
871
  updateNotePropertyDefinition,
872
872
  validateNotePropertiesPatchValues
873
873
  };
874
- //# sourceMappingURL=properties.js.map
@@ -81,4 +81,3 @@ export {
81
81
  createNoteSearchBackfillService,
82
82
  runNoteSearchBackfillInBackground
83
83
  };
84
- //# sourceMappingURL=search-backfill.js.map
@@ -175,4 +175,3 @@ export {
175
175
  parseNoteSearchQuery,
176
176
  resetUnknownNoteSearchNodeTypeCountsForTest
177
177
  };
178
- //# sourceMappingURL=search.js.map
@@ -623,4 +623,3 @@ export {
623
623
  resolveRestoredSnapshotTags,
624
624
  restoreNoteSnapshot
625
625
  };
626
- //# sourceMappingURL=snapshot.js.map
@@ -15,4 +15,3 @@ export {
15
15
  buildNoteTagNamesWhere,
16
16
  normalizeNoteTagNames
17
17
  };
18
- //# sourceMappingURL=tag-filter.js.map
@@ -357,4 +357,3 @@ export {
357
357
  restoreTrashedNoteById,
358
358
  trashNoteById
359
359
  };
360
- //# sourceMappingURL=trash.js.map
@@ -84,4 +84,3 @@ export {
84
84
  isNoteVersionConflictError,
85
85
  parseNoteVersion
86
86
  };
87
- //# sourceMappingURL=write-conflict.js.map
@@ -26,19 +26,6 @@ const createNoteWriteService = (deps) => {
26
26
  const nextContent = data.content ?? existingNote.content;
27
27
  const where = force ? { id } : { id, updatedAt: new Date(expectedTimestamp ?? existingNote.updatedAt.getTime()) };
28
28
  try {
29
- const updatedNote = await deps.updateNote({
30
- where,
31
- data: {
32
- ...data.title !== void 0 ? { title: data.title } : {},
33
- ...data.content !== void 0 ? { content: data.content } : {},
34
- ...data.layout !== void 0 ? { layout: data.layout } : {},
35
- ...buildNoteSearchProjection({
36
- title: nextTitle,
37
- content: nextContent
38
- }),
39
- ...data.tagIds ? { tags: { set: data.tagIds.map((tagId) => ({ id: tagId })) } } : {}
40
- }
41
- });
42
29
  const snapshot = await deps.captureBaseline({
43
30
  noteId: id,
44
31
  baseline: {
@@ -53,6 +40,19 @@ const createNoteWriteService = (deps) => {
53
40
  ...snapshotMeta ? { meta: snapshotMeta } : {},
54
41
  ...force ? { force: true } : {}
55
42
  });
43
+ const updatedNote = await deps.updateNote({
44
+ where,
45
+ data: {
46
+ ...data.title !== void 0 ? { title: data.title } : {},
47
+ ...data.content !== void 0 ? { content: data.content } : {},
48
+ ...data.layout !== void 0 ? { layout: data.layout } : {},
49
+ ...buildNoteSearchProjection({
50
+ title: nextTitle,
51
+ content: nextContent
52
+ }),
53
+ ...data.tagIds ? { tags: { set: data.tagIds.map((tagId) => ({ id: tagId })) } } : {}
54
+ }
55
+ });
56
56
  return {
57
57
  note: updatedNote,
58
58
  snapshot
@@ -118,4 +118,3 @@ export {
118
118
  updateNoteWithVersionGuard,
119
119
  updateNoteWithVersionGuardAndSnapshot
120
120
  };
121
- //# sourceMappingURL=write.js.map
@@ -24,4 +24,3 @@ export {
24
24
  placeholderResolvers,
25
25
  placeholderTypeDefs
26
26
  };
27
- //# sourceMappingURL=index.js.map
@@ -2,4 +2,3 @@ const placeholderFieldResolvers = {};
2
2
  export {
3
3
  placeholderFieldResolvers
4
4
  };
5
- //# sourceMappingURL=placeholder.field.resolver.js.map
@@ -69,4 +69,3 @@ export {
69
69
  createUpdatePlaceholderMutationResolver,
70
70
  placeholderMutationResolvers
71
71
  };
72
- //# sourceMappingURL=placeholder.mutation.resolver.js.map
@@ -33,4 +33,3 @@ export {
33
33
  createPlaceholderQueryResolver,
34
34
  placeholderQueryResolvers
35
35
  };
36
- //# sourceMappingURL=placeholder.query.resolver.js.map
@@ -9,4 +9,3 @@ const placeholderResolvers = {
9
9
  export {
10
10
  placeholderResolvers
11
11
  };
12
- //# sourceMappingURL=placeholder.resolver.js.map
@@ -47,4 +47,3 @@ export {
47
47
  placeholderType,
48
48
  placeholderTypeDefs
49
49
  };
50
- //# sourceMappingURL=placeholder.type-defs.js.map
@@ -24,4 +24,3 @@ export {
24
24
  reminderResolvers,
25
25
  reminderTypeDefs
26
26
  };
27
- //# sourceMappingURL=index.js.map
@@ -7,4 +7,3 @@ const reminderFieldResolvers = {
7
7
  export {
8
8
  reminderFieldResolvers
9
9
  };
10
- //# sourceMappingURL=reminder.field.resolver.js.map
@@ -56,4 +56,3 @@ export {
56
56
  createUpdateReminderMutationResolver,
57
57
  reminderMutationResolvers
58
58
  };
59
- //# sourceMappingURL=reminder.mutation.resolver.js.map
@@ -76,4 +76,3 @@ export {
76
76
  createUpcomingRemindersQueryResolver,
77
77
  reminderQueryResolvers
78
78
  };
79
- //# sourceMappingURL=reminder.query.resolver.js.map
@@ -9,4 +9,3 @@ const reminderResolvers = {
9
9
  export {
10
10
  reminderResolvers
11
11
  };
12
- //# sourceMappingURL=reminder.resolver.js.map
@@ -48,4 +48,3 @@ export {
48
48
  reminderType,
49
49
  reminderTypeDefs
50
50
  };
51
- //# sourceMappingURL=reminder.type-defs.js.map
@@ -11,4 +11,3 @@ export {
11
11
  tagResolvers,
12
12
  tagTypeDefs
13
13
  };
14
- //# sourceMappingURL=index.js.map
@@ -7,4 +7,3 @@ const tagFieldResolvers = {
7
7
  export {
8
8
  tagFieldResolvers
9
9
  };
10
- //# sourceMappingURL=tag.field.resolver.js.map
@@ -12,4 +12,3 @@ export {
12
12
  createTagMutationResolver,
13
13
  tagMutationResolvers
14
14
  };
15
- //# sourceMappingURL=tag.mutation.resolver.js.map
@@ -1,4 +1,17 @@
1
1
  import models from "../../../models.js";
2
+ const TAG_SORT_FIELDS = /* @__PURE__ */ new Set(["referenceCount", "name"]);
3
+ const normalizeSortBy = (sortBy) => {
4
+ return TAG_SORT_FIELDS.has(sortBy) ? sortBy : "referenceCount";
5
+ };
6
+ const normalizeSortOrder = (sortOrder) => {
7
+ return sortOrder === "asc" ? "asc" : "desc";
8
+ };
9
+ const getTagOrderBy = (sortBy, sortOrder) => {
10
+ if (sortBy === "referenceCount") {
11
+ return { notes: { _count: sortOrder } };
12
+ }
13
+ return { [sortBy]: sortOrder };
14
+ };
2
15
  const tagQueryResolvers = {
3
16
  allTags: async (_, {
4
17
  searchFilter,
@@ -8,11 +21,13 @@ const tagQueryResolvers = {
8
21
  name: { contains: searchFilter.query },
9
22
  NOT: { notes: { none: {} } }
10
23
  };
24
+ const sortBy = normalizeSortBy(searchFilter.sortBy);
25
+ const sortOrder = normalizeSortOrder(searchFilter.sortOrder);
11
26
  const tags = models.tag.findMany({
12
27
  skip: pagination.offset,
13
28
  take: pagination.limit,
14
29
  where,
15
- orderBy: { notes: { _count: "desc" } }
30
+ orderBy: getTagOrderBy(sortBy, sortOrder)
16
31
  });
17
32
  return {
18
33
  totalCount: await models.tag.count({ where }),
@@ -23,4 +38,3 @@ const tagQueryResolvers = {
23
38
  export {
24
39
  tagQueryResolvers
25
40
  };
26
- //# sourceMappingURL=tag.query.resolver.js.map
@@ -9,4 +9,3 @@ const tagResolvers = {
9
9
  export {
10
10
  tagResolvers
11
11
  };
12
- //# sourceMappingURL=tag.resolver.js.map
@@ -7,6 +7,8 @@ const tagType = gql`
7
7
 
8
8
  input SearchFilterInput {
9
9
  query: String!
10
+ sortBy: String
11
+ sortOrder: String
10
12
  }
11
13
 
12
14
  type Tag {
@@ -43,4 +45,3 @@ export {
43
45
  tagType,
44
46
  tagTypeDefs
45
47
  };
46
- //# sourceMappingURL=tag.type-defs.js.map
@@ -20,4 +20,3 @@ const createMcpCreateTagHandler = (ensureTag = ensureTagByName) => {
20
20
  export {
21
21
  createMcpCreateTagHandler
22
22
  };
23
- //# sourceMappingURL=mcp.js.map
@@ -93,4 +93,3 @@ export {
93
93
  ensureTagByName,
94
94
  normalizeTagName
95
95
  };
96
- //# sourceMappingURL=organization.js.map
@@ -8,4 +8,3 @@ export {
8
8
  viewResolvers,
9
9
  viewTypeDefs
10
10
  };
11
- //# sourceMappingURL=index.js.map
@@ -50,4 +50,3 @@ const viewMutationResolvers = {
50
50
  export {
51
51
  viewMutationResolvers
52
52
  };
53
- //# sourceMappingURL=view.mutation.resolver.js.map
@@ -56,4 +56,3 @@ const viewQueryResolvers = {
56
56
  export {
57
57
  viewQueryResolvers
58
58
  };
59
- //# sourceMappingURL=view.query.resolver.js.map
@@ -7,4 +7,3 @@ const viewResolvers = {
7
7
  export {
8
8
  viewResolvers
9
9
  };
10
- //# sourceMappingURL=view.resolver.js.map
@@ -138,4 +138,3 @@ export {
138
138
  viewType,
139
139
  viewTypeDefs
140
140
  };
141
- //# sourceMappingURL=view.type-defs.js.map
@@ -814,4 +814,3 @@ export {
814
814
  updateViewSection,
815
815
  updateViewTab
816
816
  };
817
- //# sourceMappingURL=workspace.js.map
@@ -30,4 +30,3 @@ try {
30
30
  `);
31
31
  process.exit(1);
32
32
  }
33
- //# sourceMappingURL=main.js.map
@@ -5,4 +5,3 @@ export * from "@prisma/client";
5
5
  export {
6
6
  models_default as default
7
7
  };
8
- //# sourceMappingURL=models.js.map