wiki-viewer 1.14.1 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (559) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/build-manifest.json +3 -3
  3. package/.next/standalone/.next/server/app/_global-error.html +1 -1
  4. package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
  5. package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  6. package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  7. package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  8. package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  9. package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  10. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  11. package/.next/standalone/.next/server/app/_not-found.html +1 -1
  12. package/.next/standalone/.next/server/app/_not-found.rsc +2 -2
  13. package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  14. package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  15. package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  16. package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  17. package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  18. package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  19. package/.next/standalone/.next/server/app/api/agent/activity/route.js +6 -6
  20. package/.next/standalone/.next/server/app/api/agent/activity/route.js.nft.json +1 -1
  21. package/.next/standalone/.next/server/app/api/agent/events/[...path]/route.js +8 -8
  22. package/.next/standalone/.next/server/app/api/agent/events/[...path]/route.js.nft.json +1 -1
  23. package/.next/standalone/.next/server/app/api/agent/files/[...path]/route.js +9 -9
  24. package/.next/standalone/.next/server/app/api/agent/files/[...path]/route.js.nft.json +1 -1
  25. package/.next/standalone/.next/server/app/api/agent/fs/file/[...path]/route.js +8 -8
  26. package/.next/standalone/.next/server/app/api/agent/fs/file/[...path]/route.js.nft.json +1 -1
  27. package/.next/standalone/.next/server/app/api/agent/fs/ls/[[...path]]/route.js +8 -8
  28. package/.next/standalone/.next/server/app/api/agent/fs/ls/[[...path]]/route.js.nft.json +1 -1
  29. package/.next/standalone/.next/server/app/api/agent/fs/move/route.js +8 -8
  30. package/.next/standalone/.next/server/app/api/agent/fs/move/route.js.nft.json +1 -1
  31. package/.next/standalone/.next/server/app/api/agent/fs/search/route.js +9 -9
  32. package/.next/standalone/.next/server/app/api/agent/fs/search/route.js.nft.json +1 -1
  33. package/.next/standalone/.next/server/app/api/agent/internal/span/route.js +8 -8
  34. package/.next/standalone/.next/server/app/api/agent/internal/span/route.js.nft.json +1 -1
  35. package/.next/standalone/.next/server/app/api/agent/settings/route.js +7 -7
  36. package/.next/standalone/.next/server/app/api/agent/settings/route.js.nft.json +1 -1
  37. package/.next/standalone/.next/server/app/api/agent/sidecar/[...path]/route.js +6 -6
  38. package/.next/standalone/.next/server/app/api/agent/sidecar/[...path]/route.js.nft.json +1 -1
  39. package/.next/standalone/.next/server/app/api/app-proxy/[...path]/route.js.nft.json +1 -1
  40. package/.next/standalone/.next/server/app/api/assets/[...path]/route.js +5 -5
  41. package/.next/standalone/.next/server/app/api/assets/[...path]/route.js.nft.json +1 -1
  42. package/.next/standalone/.next/server/app/api/share/[token]/route.js +6 -5
  43. package/.next/standalone/.next/server/app/api/share/[token]/route.js.nft.json +1 -1
  44. package/.next/standalone/.next/server/app/api/share/route.js +4 -4
  45. package/.next/standalone/.next/server/app/api/share/route.js.nft.json +1 -1
  46. package/.next/standalone/.next/server/app/api/system/browse/route.js.nft.json +1 -1
  47. package/.next/standalone/.next/server/app/api/system/clear-root/route.js.nft.json +1 -1
  48. package/.next/standalone/.next/server/app/api/system/reveal/route.js +6 -6
  49. package/.next/standalone/.next/server/app/api/system/reveal/route.js.nft.json +1 -1
  50. package/.next/standalone/.next/server/app/api/system/root-status/route.js.nft.json +1 -1
  51. package/.next/standalone/.next/server/app/api/system/set-root/route.js +6 -5
  52. package/.next/standalone/.next/server/app/api/system/set-root/route.js.nft.json +1 -1
  53. package/.next/standalone/.next/server/app/api/system/workspaces/[id]/open/route.js +5 -4
  54. package/.next/standalone/.next/server/app/api/system/workspaces/[id]/open/route.js.nft.json +1 -1
  55. package/.next/standalone/.next/server/app/api/system/workspaces/[id]/refresh/route.js +6 -5
  56. package/.next/standalone/.next/server/app/api/system/workspaces/[id]/refresh/route.js.nft.json +1 -1
  57. package/.next/standalone/.next/server/app/api/system/workspaces/[id]/route.js +5 -4
  58. package/.next/standalone/.next/server/app/api/system/workspaces/[id]/route.js.nft.json +1 -1
  59. package/.next/standalone/.next/server/app/api/system/workspaces/route.js +7 -6
  60. package/.next/standalone/.next/server/app/api/system/workspaces/route.js.nft.json +1 -1
  61. package/.next/standalone/.next/server/app/api/upload/[...path]/route.js +5 -5
  62. package/.next/standalone/.next/server/app/api/upload/[...path]/route.js.nft.json +1 -1
  63. package/.next/standalone/.next/server/app/api/wiki/app/route.js +7 -7
  64. package/.next/standalone/.next/server/app/api/wiki/app/route.js.nft.json +1 -1
  65. package/.next/standalone/.next/server/app/api/wiki/backlinks/route.js +7 -7
  66. package/.next/standalone/.next/server/app/api/wiki/backlinks/route.js.nft.json +1 -1
  67. package/.next/standalone/.next/server/app/api/wiki/content/route.js +7 -7
  68. package/.next/standalone/.next/server/app/api/wiki/content/route.js.nft.json +1 -1
  69. package/.next/standalone/.next/server/app/api/wiki/download/route.js +6 -6
  70. package/.next/standalone/.next/server/app/api/wiki/download/route.js.nft.json +1 -1
  71. package/.next/standalone/.next/server/app/api/wiki/file/route.js +5 -5
  72. package/.next/standalone/.next/server/app/api/wiki/file/route.js.nft.json +1 -1
  73. package/.next/standalone/.next/server/app/api/wiki/folder/route.js +5 -5
  74. package/.next/standalone/.next/server/app/api/wiki/folder/route.js.nft.json +1 -1
  75. package/.next/standalone/.next/server/app/api/wiki/git-branches/route.js +4 -4
  76. package/.next/standalone/.next/server/app/api/wiki/git-branches/route.js.nft.json +1 -1
  77. package/.next/standalone/.next/server/app/api/wiki/git-checkout/route.js +6 -6
  78. package/.next/standalone/.next/server/app/api/wiki/git-checkout/route.js.nft.json +1 -1
  79. package/.next/standalone/.next/server/app/api/wiki/git-diff/route.js +4 -4
  80. package/.next/standalone/.next/server/app/api/wiki/git-diff/route.js.nft.json +1 -1
  81. package/.next/standalone/.next/server/app/api/wiki/git-file-info/route.js +4 -4
  82. package/.next/standalone/.next/server/app/api/wiki/git-file-info/route.js.nft.json +1 -1
  83. package/.next/standalone/.next/server/app/api/wiki/git-history/route.js +4 -4
  84. package/.next/standalone/.next/server/app/api/wiki/git-history/route.js.nft.json +1 -1
  85. package/.next/standalone/.next/server/app/api/wiki/git-pull/route.js +8 -8
  86. package/.next/standalone/.next/server/app/api/wiki/git-pull/route.js.nft.json +1 -1
  87. package/.next/standalone/.next/server/app/api/wiki/move/route.js +6 -6
  88. package/.next/standalone/.next/server/app/api/wiki/move/route.js.nft.json +1 -1
  89. package/.next/standalone/.next/server/app/api/wiki/new-file/route.js +5 -5
  90. package/.next/standalone/.next/server/app/api/wiki/new-file/route.js.nft.json +1 -1
  91. package/.next/standalone/.next/server/app/api/wiki/outlinks/route.js +7 -7
  92. package/.next/standalone/.next/server/app/api/wiki/outlinks/route.js.nft.json +1 -1
  93. package/.next/standalone/.next/server/app/api/wiki/page/route.js +5 -5
  94. package/.next/standalone/.next/server/app/api/wiki/page/route.js.nft.json +1 -1
  95. package/.next/standalone/.next/server/app/api/wiki/presence/route.js +6 -6
  96. package/.next/standalone/.next/server/app/api/wiki/presence/route.js.nft.json +1 -1
  97. package/.next/standalone/.next/server/app/api/wiki/route.js +5 -5
  98. package/.next/standalone/.next/server/app/api/wiki/route.js.nft.json +1 -1
  99. package/.next/standalone/.next/server/app/api/wiki/search/route.js +5 -5
  100. package/.next/standalone/.next/server/app/api/wiki/search/route.js.nft.json +1 -1
  101. package/.next/standalone/.next/server/app/api/wiki/slugs/route.js +5 -5
  102. package/.next/standalone/.next/server/app/api/wiki/slugs/route.js.nft.json +1 -1
  103. package/.next/standalone/.next/server/app/api/wiki/upload/route.js +5 -5
  104. package/.next/standalone/.next/server/app/api/wiki/upload/route.js.nft.json +1 -1
  105. package/.next/standalone/.next/server/app/api/wiki/watch/route.js +5 -5
  106. package/.next/standalone/.next/server/app/api/wiki/watch/route.js.nft.json +1 -1
  107. package/.next/standalone/.next/server/app/index.html +1 -1
  108. package/.next/standalone/.next/server/app/index.rsc +3 -3
  109. package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  110. package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +3 -3
  111. package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  112. package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +2 -2
  113. package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  114. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  115. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  116. package/.next/standalone/.next/server/app/s/[token]/page_client-reference-manifest.js +1 -1
  117. package/.next/standalone/.next/server/app/signin/page_client-reference-manifest.js +1 -1
  118. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0-jzw2_._.js +3 -0
  119. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0.-oq-7._.js +3 -0
  120. package/.next/standalone/.next/server/chunks/[root-of-the-server]__000spch._.js +3 -0
  121. package/.next/standalone/.next/server/chunks/[root-of-the-server]__01oin-a._.js +3 -0
  122. package/.next/standalone/.next/server/chunks/[root-of-the-server]__01qcera._.js +16 -0
  123. package/.next/standalone/.next/server/chunks/[root-of-the-server]__02.uul~._.js +3 -0
  124. package/.next/standalone/.next/server/chunks/[root-of-the-server]__024967n._.js +3 -0
  125. package/.next/standalone/.next/server/chunks/[root-of-the-server]__06booxp._.js +3 -0
  126. package/.next/standalone/.next/server/chunks/[root-of-the-server]__071_pmz._.js +3 -0
  127. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0_0bqpg._.js +3 -0
  128. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0_1f2cw._.js +3 -0
  129. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0a6j6r4._.js +3 -0
  130. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0aoqat-._.js +3 -0
  131. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0as-u6z._.js +3 -0
  132. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0bvtbax._.js +3 -0
  133. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0c-ee48._.js +5 -0
  134. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0e_9pc5._.js +3 -0
  135. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0esmskc._.js +3 -0
  136. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0fshk._._.js +20 -0
  137. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0fu72o7._.js +3 -0
  138. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0k9mili._.js +3 -0
  139. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0l-wu5u._.js +3 -0
  140. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0lvz22t._.js +20 -0
  141. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0n-chxk._.js +16 -0
  142. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0n9zdf0._.js +3 -0
  143. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0nmx3k2._.js +12 -0
  144. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0nzlmkb._.js +3 -0
  145. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0o0v6hf._.js +3 -0
  146. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0s38pid._.js +3 -0
  147. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0s_8poz._.js +3 -0
  148. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0sfrx~.._.js +3 -0
  149. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0sggstu._.js +3 -0
  150. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0u81k~2._.js +3 -0
  151. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0uibxf_._.js +3 -0
  152. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0wfv_by._.js +3 -0
  153. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0wlj-yw._.js +3 -0
  154. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0w~__xz._.js +3 -0
  155. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0yat~ul._.js +3 -0
  156. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0yxauu6._.js +3 -0
  157. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0zbkgnr._.js +3 -0
  158. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0zv_j05._.js +3 -0
  159. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0~rntxj._.js +3 -0
  160. package/.next/standalone/.next/server/chunks/src_lib_search_0d-_j3u._.js +4 -4
  161. package/.next/standalone/.next/server/chunks/src_lib_search_0ymmp0c._.js +3 -3
  162. package/.next/standalone/.next/server/chunks/src_lib_workspaces_ts_0qon40u._.js +4 -0
  163. package/.next/standalone/.next/server/chunks/ssr/{0~w0_katex_dist_katex_mjs_029cdbg._.js → 0~w0_katex_dist_katex_mjs_0s4yb1t._.js} +1 -1
  164. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0z41nrr._.js → [root-of-the-server]__10te1ye._.js} +2 -2
  165. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_13p348f._.js → node_modules__pnpm_0-a_zjq._.js} +1 -1
  166. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0gos._c._.js → node_modules__pnpm_02l_1_8._.js} +1 -1
  167. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0ru1i2-._.js → node_modules__pnpm_03rzttw._.js} +2 -2
  168. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_08xpp3w._.js → node_modules__pnpm_04frxp9._.js} +1 -1
  169. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0b8odbc._.js → node_modules__pnpm_057-t6m._.js} +1 -1
  170. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0f_n_zp._.js → node_modules__pnpm_05_oahi._.js} +1 -1
  171. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0~i3a.i._.js → node_modules__pnpm_05ans~m._.js} +1 -1
  172. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0i2m0b.._.js → node_modules__pnpm_06-2ia.._.js} +2 -2
  173. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0aha1~u._.js → node_modules__pnpm_086.ow4._.js} +1 -1
  174. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0w.kwue._.js → node_modules__pnpm_0cahog3._.js} +1 -1
  175. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0e0r_qk._.js → node_modules__pnpm_0cxanql._.js} +2 -2
  176. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0ajqqlq._.js → node_modules__pnpm_0e09gmf._.js} +1 -1
  177. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0hzzx9d._.js → node_modules__pnpm_0eqjo2f._.js} +1 -1
  178. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_02bje_g._.js → node_modules__pnpm_0f-yazg._.js} +1 -1
  179. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0xk042~._.js → node_modules__pnpm_0iu44jv._.js} +1 -1
  180. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_11ede0p._.js → node_modules__pnpm_0jh8q66._.js} +2 -2
  181. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0k-7uzm._.js → node_modules__pnpm_0m39f~t._.js} +1 -1
  182. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0xr.ztu._.js → node_modules__pnpm_0ma-8l.._.js} +1 -1
  183. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0i6_kfe._.js → node_modules__pnpm_0met6sx._.js} +2 -2
  184. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_04v1_ty._.js → node_modules__pnpm_0mtrsi0._.js} +2 -2
  185. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0607~kg._.js → node_modules__pnpm_0n_swwn._.js} +2 -2
  186. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0t4l89_._.js → node_modules__pnpm_0ndyy93._.js} +1 -1
  187. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0-_58b8._.js → node_modules__pnpm_0s-cj7c._.js} +1 -1
  188. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0y2h_cz._.js → node_modules__pnpm_0tr41-t._.js} +1 -1
  189. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_08edl1n._.js → node_modules__pnpm_0u.uija._.js} +1 -1
  190. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0026mgr._.js → node_modules__pnpm_0wiyn6d._.js} +1 -1
  191. package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_09o_spj._.js → node_modules__pnpm_0ygzt82._.js} +1 -1
  192. package/.next/standalone/.next/server/chunks/ssr/src_app_page_tsx_0ss2.w7._.js +2 -2
  193. package/.next/standalone/.next/server/middleware-build-manifest.js +3 -3
  194. package/.next/standalone/.next/server/middleware-manifest.json +1 -1
  195. package/.next/standalone/.next/server/pages/404.html +1 -1
  196. package/.next/standalone/.next/server/pages/500.html +1 -1
  197. package/.next/standalone/.next/static/chunks/0ci7khnv7i~7_.js +17 -0
  198. package/.next/standalone/.next/static/chunks/0sx~65~lg4mgl.css +5 -0
  199. package/.next/standalone/package.json +1 -1
  200. package/README.md +88 -17
  201. package/bin/postbuild.js +21 -0
  202. package/bin/wiki-viewer.js +198 -6
  203. package/package.json +1 -1
  204. package/.next/standalone/.github/workflows/publish.yml +0 -37
  205. package/.next/standalone/.handoffs/archive/handoff-20260612-113332.md +0 -98
  206. package/.next/standalone/.handoffs/archive/handoff-20260612-141032.md +0 -73
  207. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0-.y6im._.js +0 -3
  208. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0-3_t2y._.js +0 -3
  209. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0-kjkzt._.js +0 -3
  210. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0-puax4._.js +0 -4
  211. package/.next/standalone/.next/server/chunks/[root-of-the-server]__01h996g._.js +0 -3
  212. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0329ktu._.js +0 -3
  213. package/.next/standalone/.next/server/chunks/[root-of-the-server]__03_xj4r._.js +0 -3
  214. package/.next/standalone/.next/server/chunks/[root-of-the-server]__05398dt._.js +0 -4
  215. package/.next/standalone/.next/server/chunks/[root-of-the-server]__06lfvxh._.js +0 -3
  216. package/.next/standalone/.next/server/chunks/[root-of-the-server]__06w0aet._.js +0 -3
  217. package/.next/standalone/.next/server/chunks/[root-of-the-server]__070_p2a._.js +0 -4
  218. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0905hi1._.js +0 -21
  219. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0aa63~j._.js +0 -5
  220. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0avcplk._.js +0 -4
  221. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0b8_kyo._.js +0 -16
  222. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0bticq1._.js +0 -3
  223. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0bwevvu._.js +0 -3
  224. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0c__k3q._.js +0 -4
  225. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0cp~z4x._.js +0 -3
  226. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0fmdv9h._.js +0 -20
  227. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0h0qbwr._.js +0 -3
  228. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0jk~oyi._.js +0 -3
  229. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ndq77b._.js +0 -3
  230. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0nvgpuk._.js +0 -3
  231. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ocvng2._.js +0 -3
  232. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ps4h~.._.js +0 -3
  233. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0q7jqwp._.js +0 -12
  234. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0qew~6p._.js +0 -3
  235. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0s_9f-a._.js +0 -3
  236. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0uv7b8u._.js +0 -3
  237. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0uv8.9i._.js +0 -3
  238. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0vfe2io._.js +0 -4
  239. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0w11kjy._.js +0 -3
  240. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0wc-.e4._.js +0 -3
  241. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ymovmp._.js +0 -3
  242. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0~c6ouv._.js +0 -3
  243. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0~rhs0u._.js +0 -16
  244. package/.next/standalone/.next/server/chunks/[root-of-the-server]__10h9tid._.js +0 -3
  245. package/.next/standalone/.next/server/chunks/[root-of-the-server]__10yk-u1._.js +0 -3
  246. package/.next/standalone/.next/server/chunks/[root-of-the-server]__11105ew._.js +0 -3
  247. package/.next/standalone/.next/server/chunks/[root-of-the-server]__11a3dhw._.js +0 -3
  248. package/.next/standalone/.next/server/chunks/[root-of-the-server]__13420tt._.js +0 -3
  249. package/.next/standalone/.next/server/chunks/[root-of-the-server]__13h~pdf._.js +0 -3
  250. package/.next/standalone/.next/static/chunks/02kg.lbkfi1yc.css +0 -5
  251. package/.next/standalone/.next/static/chunks/0rcwd6-.iu~nd.js +0 -17
  252. package/.next/standalone/.pi/ownership.json +0 -3
  253. package/.next/standalone/AGENTS.md +0 -114
  254. package/.next/standalone/DESIGN.md +0 -521
  255. package/.next/standalone/README.md +0 -821
  256. package/.next/standalone/TODO.md +0 -20
  257. package/.next/standalone/agents/bootstrap-prompt.md +0 -14
  258. package/.next/standalone/agents/wiki-viewer-skill/SKILL.md +0 -456
  259. package/.next/standalone/bin/postbuild.js +0 -78
  260. package/.next/standalone/bin/wiki-viewer.js +0 -922
  261. package/.next/standalone/certificates/localhost-key.pem +0 -28
  262. package/.next/standalone/certificates/localhost.pem +0 -24
  263. package/.next/standalone/docs/agent-collab-plan.md +0 -1615
  264. package/.next/standalone/docs/agent-collab-v2-plan.md +0 -771
  265. package/.next/standalone/docs/agent-fs-plan.md +0 -232
  266. package/.next/standalone/docs/editorial-skin-spec.md +0 -242
  267. package/.next/standalone/docs/file-vs-collab-authority.md +0 -124
  268. package/.next/standalone/docs/mobile-readiness-spec.md +0 -229
  269. package/.next/standalone/docs/workspacing-plan.md +0 -364
  270. package/.next/standalone/packages/wiki-viewer-mcp/README.md +0 -195
  271. package/.next/standalone/packages/wiki-viewer-mcp/bench-e2e.mjs +0 -166
  272. package/.next/standalone/packages/wiki-viewer-mcp/bench-latency.mjs +0 -87
  273. package/.next/standalone/packages/wiki-viewer-mcp/bench-payload.mjs +0 -45
  274. package/.next/standalone/packages/wiki-viewer-mcp/dist/http-client.js +0 -331
  275. package/.next/standalone/packages/wiki-viewer-mcp/dist/index.js +0 -531
  276. package/.next/standalone/packages/wiki-viewer-mcp/dist/register.js +0 -94
  277. package/.next/standalone/packages/wiki-viewer-mcp/dist/state-cache.js +0 -28
  278. package/.next/standalone/packages/wiki-viewer-mcp/package-lock.json +0 -1716
  279. package/.next/standalone/packages/wiki-viewer-mcp/package.json +0 -41
  280. package/.next/standalone/packages/wiki-viewer-mcp/src/http-client.ts +0 -459
  281. package/.next/standalone/packages/wiki-viewer-mcp/src/index.ts +0 -638
  282. package/.next/standalone/packages/wiki-viewer-mcp/src/register.ts +0 -144
  283. package/.next/standalone/packages/wiki-viewer-mcp/src/state-cache.ts +0 -55
  284. package/.next/standalone/packages/wiki-viewer-mcp/tsconfig.json +0 -19
  285. package/.next/standalone/pnpm-lock.yaml +0 -6697
  286. package/.next/standalone/pnpm-workspace.yaml +0 -8
  287. package/.next/standalone/postcss.config.mjs +0 -2
  288. package/.next/standalone/src/app/api/agent/activity/route.ts +0 -59
  289. package/.next/standalone/src/app/api/agent/admin/agents/[agentId]/revoke/route.ts +0 -40
  290. package/.next/standalone/src/app/api/agent/admin/agents/route.ts +0 -33
  291. package/.next/standalone/src/app/api/agent/admin/registrations/[regId]/approve/route.ts +0 -83
  292. package/.next/standalone/src/app/api/agent/admin/registrations/[regId]/deny/route.ts +0 -36
  293. package/.next/standalone/src/app/api/agent/admin/registrations/route.ts +0 -27
  294. package/.next/standalone/src/app/api/agent/events/[...path]/route.ts +0 -148
  295. package/.next/standalone/src/app/api/agent/files/[...path]/route.ts +0 -219
  296. package/.next/standalone/src/app/api/agent/fs/file/[...path]/route.ts +0 -446
  297. package/.next/standalone/src/app/api/agent/fs/ls/[[...path]]/route.ts +0 -152
  298. package/.next/standalone/src/app/api/agent/fs/move/route.ts +0 -130
  299. package/.next/standalone/src/app/api/agent/fs/search/route.ts +0 -272
  300. package/.next/standalone/src/app/api/agent/internal/span/route.ts +0 -121
  301. package/.next/standalone/src/app/api/agent/register/[regId]/route.ts +0 -50
  302. package/.next/standalone/src/app/api/agent/register/route.ts +0 -118
  303. package/.next/standalone/src/app/api/agent/settings/route.ts +0 -34
  304. package/.next/standalone/src/app/api/agent/settings/token/regenerate/route.ts +0 -20
  305. package/.next/standalone/src/app/api/agent/sidecar/[...path]/route.ts +0 -53
  306. package/.next/standalone/src/app/api/agents/install/route.ts +0 -143
  307. package/.next/standalone/src/app/api/agents/skill/route.ts +0 -20
  308. package/.next/standalone/src/app/api/agents/skill.tar.gz/route.ts +0 -87
  309. package/.next/standalone/src/app/api/app-proxy/[...path]/route.ts +0 -247
  310. package/.next/standalone/src/app/api/assets/[...path]/route.ts +0 -75
  311. package/.next/standalone/src/app/api/auth/[...all]/route.ts +0 -7
  312. package/.next/standalone/src/app/api/owner/init/route.ts +0 -14
  313. package/.next/standalone/src/app/api/share/[token]/route.ts +0 -269
  314. package/.next/standalone/src/app/api/share/route.ts +0 -127
  315. package/.next/standalone/src/app/api/system/admins/route.ts +0 -103
  316. package/.next/standalone/src/app/api/system/auth-config/route.ts +0 -22
  317. package/.next/standalone/src/app/api/system/auth-settings/route.ts +0 -86
  318. package/.next/standalone/src/app/api/system/browse/route.ts +0 -82
  319. package/.next/standalone/src/app/api/system/clear-root/route.ts +0 -16
  320. package/.next/standalone/src/app/api/system/config/route.ts +0 -14
  321. package/.next/standalone/src/app/api/system/pins/route.ts +0 -38
  322. package/.next/standalone/src/app/api/system/reveal/route.ts +0 -36
  323. package/.next/standalone/src/app/api/system/root-status/route.ts +0 -13
  324. package/.next/standalone/src/app/api/system/set-root/route.ts +0 -53
  325. package/.next/standalone/src/app/api/system/users/route.ts +0 -120
  326. package/.next/standalone/src/app/api/system/workspaces/[id]/open/route.ts +0 -34
  327. package/.next/standalone/src/app/api/system/workspaces/[id]/refresh/route.ts +0 -32
  328. package/.next/standalone/src/app/api/system/workspaces/[id]/route.ts +0 -78
  329. package/.next/standalone/src/app/api/system/workspaces/route.ts +0 -128
  330. package/.next/standalone/src/app/api/upload/[...path]/route.ts +0 -85
  331. package/.next/standalone/src/app/api/wiki/app/route.ts +0 -60
  332. package/.next/standalone/src/app/api/wiki/backlinks/route.ts +0 -29
  333. package/.next/standalone/src/app/api/wiki/content/route.ts +0 -159
  334. package/.next/standalone/src/app/api/wiki/download/route.ts +0 -100
  335. package/.next/standalone/src/app/api/wiki/file/route.ts +0 -57
  336. package/.next/standalone/src/app/api/wiki/folder/route.ts +0 -34
  337. package/.next/standalone/src/app/api/wiki/git-branches/route.ts +0 -32
  338. package/.next/standalone/src/app/api/wiki/git-checkout/route.ts +0 -45
  339. package/.next/standalone/src/app/api/wiki/git-diff/route.ts +0 -33
  340. package/.next/standalone/src/app/api/wiki/git-file-info/route.ts +0 -27
  341. package/.next/standalone/src/app/api/wiki/git-history/route.ts +0 -27
  342. package/.next/standalone/src/app/api/wiki/git-pull/route.ts +0 -48
  343. package/.next/standalone/src/app/api/wiki/move/route.ts +0 -61
  344. package/.next/standalone/src/app/api/wiki/new-file/route.ts +0 -56
  345. package/.next/standalone/src/app/api/wiki/outlinks/route.ts +0 -76
  346. package/.next/standalone/src/app/api/wiki/page/route.ts +0 -92
  347. package/.next/standalone/src/app/api/wiki/presence/route.ts +0 -56
  348. package/.next/standalone/src/app/api/wiki/route.ts +0 -116
  349. package/.next/standalone/src/app/api/wiki/search/route.ts +0 -44
  350. package/.next/standalone/src/app/api/wiki/slugs/route.ts +0 -54
  351. package/.next/standalone/src/app/api/wiki/upload/route.ts +0 -95
  352. package/.next/standalone/src/app/api/wiki/watch/route.ts +0 -67
  353. package/.next/standalone/src/app/globals.css +0 -1249
  354. package/.next/standalone/src/app/icon.svg +0 -11
  355. package/.next/standalone/src/app/layout.tsx +0 -78
  356. package/.next/standalone/src/app/manifest.ts +0 -30
  357. package/.next/standalone/src/app/page.tsx +0 -3260
  358. package/.next/standalone/src/app/s/[token]/page.tsx +0 -357
  359. package/.next/standalone/src/app/signin/page.tsx +0 -16
  360. package/.next/standalone/src/app/signin/signin-form.tsx +0 -238
  361. package/.next/standalone/src/components/ai-panel/activity-row.tsx +0 -284
  362. package/.next/standalone/src/components/ai-panel/ai-panel.tsx +0 -311
  363. package/.next/standalone/src/components/ai-panel/token-section.tsx +0 -313
  364. package/.next/standalone/src/components/auth-settings-sheet.tsx +0 -474
  365. package/.next/standalone/src/components/confirm-dialog.tsx +0 -56
  366. package/.next/standalone/src/components/dir-picker.tsx +0 -606
  367. package/.next/standalone/src/components/editor/backlinks-panel.tsx +0 -139
  368. package/.next/standalone/src/components/editor/bubble-menu.tsx +0 -346
  369. package/.next/standalone/src/components/editor/callout-extension.ts +0 -36
  370. package/.next/standalone/src/components/editor/comment-pip.tsx +0 -56
  371. package/.next/standalone/src/components/editor/comment-thread.tsx +0 -254
  372. package/.next/standalone/src/components/editor/csv-viewer.tsx +0 -379
  373. package/.next/standalone/src/components/editor/document-outline.tsx +0 -230
  374. package/.next/standalone/src/components/editor/editor-toolbar.tsx +0 -564
  375. package/.next/standalone/src/components/editor/editor.tsx +0 -1327
  376. package/.next/standalone/src/components/editor/extensions/drag-handle.ts +0 -325
  377. package/.next/standalone/src/components/editor/extensions/heading-anchors.ts +0 -55
  378. package/.next/standalone/src/components/editor/extensions/proof-span.ts +0 -60
  379. package/.next/standalone/src/components/editor/extensions/resizable-image.tsx +0 -159
  380. package/.next/standalone/src/components/editor/extensions.ts +0 -150
  381. package/.next/standalone/src/components/editor/file-fallback-viewer.tsx +0 -75
  382. package/.next/standalone/src/components/editor/folder-index.tsx +0 -236
  383. package/.next/standalone/src/components/editor/google-doc-viewer.tsx +0 -73
  384. package/.next/standalone/src/components/editor/image-viewer.tsx +0 -57
  385. package/.next/standalone/src/components/editor/large-file-gate.tsx +0 -108
  386. package/.next/standalone/src/components/editor/link-popover.tsx +0 -111
  387. package/.next/standalone/src/components/editor/media-popover.tsx +0 -212
  388. package/.next/standalone/src/components/editor/media-viewer.tsx +0 -70
  389. package/.next/standalone/src/components/editor/mermaid-viewer.tsx +0 -286
  390. package/.next/standalone/src/components/editor/node-app-viewer.tsx +0 -328
  391. package/.next/standalone/src/components/editor/notebook-viewer.tsx +0 -371
  392. package/.next/standalone/src/components/editor/office/docx-viewer.tsx +0 -93
  393. package/.next/standalone/src/components/editor/office/office-chrome.tsx +0 -83
  394. package/.next/standalone/src/components/editor/office/pptx-viewer.tsx +0 -104
  395. package/.next/standalone/src/components/editor/office/xlsx-viewer.tsx +0 -192
  396. package/.next/standalone/src/components/editor/pdf-viewer.tsx +0 -32
  397. package/.next/standalone/src/components/editor/proof-span-popover.tsx +0 -162
  398. package/.next/standalone/src/components/editor/slash-commands.tsx +0 -629
  399. package/.next/standalone/src/components/editor/source-viewer.tsx +0 -289
  400. package/.next/standalone/src/components/editor/suggest-edit-popover.tsx +0 -229
  401. package/.next/standalone/src/components/editor/suggestion-card.tsx +0 -206
  402. package/.next/standalone/src/components/editor/table-menu.tsx +0 -232
  403. package/.next/standalone/src/components/editor/view-mode-comment-button.tsx +0 -77
  404. package/.next/standalone/src/components/editor/website-viewer.tsx +0 -75
  405. package/.next/standalone/src/components/editor/wiki-link-create-dialog.tsx +0 -189
  406. package/.next/standalone/src/components/editor/wiki-link-decorator.ts +0 -79
  407. package/.next/standalone/src/components/editor/wiki-link-extension.ts +0 -120
  408. package/.next/standalone/src/components/editor/wiki-link-picker.tsx +0 -250
  409. package/.next/standalone/src/components/layout/viewer-toolbar.tsx +0 -54
  410. package/.next/standalone/src/components/search/search-command-dialog.tsx +0 -246
  411. package/.next/standalone/src/components/search/sidebar-search-box.tsx +0 -121
  412. package/.next/standalone/src/components/search/snippet-text.tsx +0 -48
  413. package/.next/standalone/src/components/share-dialog.tsx +0 -307
  414. package/.next/standalone/src/components/theme-provider.tsx +0 -16
  415. package/.next/standalone/src/components/theme-toggle.tsx +0 -24
  416. package/.next/standalone/src/components/ui/badge.tsx +0 -35
  417. package/.next/standalone/src/components/ui/button.tsx +0 -56
  418. package/.next/standalone/src/components/ui/card.tsx +0 -63
  419. package/.next/standalone/src/components/ui/collapsible.tsx +0 -9
  420. package/.next/standalone/src/components/ui/command.tsx +0 -151
  421. package/.next/standalone/src/components/ui/context-menu.tsx +0 -191
  422. package/.next/standalone/src/components/ui/dialog.tsx +0 -119
  423. package/.next/standalone/src/components/ui/dropdown-menu.tsx +0 -194
  424. package/.next/standalone/src/components/ui/input.tsx +0 -22
  425. package/.next/standalone/src/components/ui/label.tsx +0 -25
  426. package/.next/standalone/src/components/ui/popover.tsx +0 -33
  427. package/.next/standalone/src/components/ui/scroll-area.tsx +0 -47
  428. package/.next/standalone/src/components/ui/select.tsx +0 -156
  429. package/.next/standalone/src/components/ui/separator.tsx +0 -30
  430. package/.next/standalone/src/components/ui/sheet.tsx +0 -140
  431. package/.next/standalone/src/components/ui/skeleton.tsx +0 -15
  432. package/.next/standalone/src/components/ui/switch.tsx +0 -28
  433. package/.next/standalone/src/components/ui/tabs.tsx +0 -54
  434. package/.next/standalone/src/components/ui/textarea.tsx +0 -21
  435. package/.next/standalone/src/components/ui/tip.tsx +0 -23
  436. package/.next/standalone/src/components/ui/toggle-group.tsx +0 -41
  437. package/.next/standalone/src/components/ui/tooltip.tsx +0 -27
  438. package/.next/standalone/src/components/view-width-toggle.tsx +0 -70
  439. package/.next/standalone/src/components/wiki/frontmatter-header.tsx +0 -164
  440. package/.next/standalone/src/hooks/use-is-mobile.ts +0 -14
  441. package/.next/standalone/src/lib/app-runner.ts +0 -272
  442. package/.next/standalone/src/lib/auth/admin.ts +0 -120
  443. package/.next/standalone/src/lib/auth/allowlist.ts +0 -50
  444. package/.next/standalone/src/lib/auth/client.ts +0 -4
  445. package/.next/standalone/src/lib/auth/csrf.ts +0 -68
  446. package/.next/standalone/src/lib/auth/server.ts +0 -215
  447. package/.next/standalone/src/lib/cabinets/tree.ts +0 -75
  448. package/.next/standalone/src/lib/config.ts +0 -114
  449. package/.next/standalone/src/lib/embeds/detect.ts +0 -142
  450. package/.next/standalone/src/lib/git-secrets.ts +0 -65
  451. package/.next/standalone/src/lib/git.ts +0 -503
  452. package/.next/standalone/src/lib/google/detect.ts +0 -107
  453. package/.next/standalone/src/lib/markdown/parse-frontmatter.ts +0 -104
  454. package/.next/standalone/src/lib/markdown/remark-wikilinks.ts +0 -100
  455. package/.next/standalone/src/lib/markdown/sanitize-schema.ts +0 -106
  456. package/.next/standalone/src/lib/markdown/to-html.ts +0 -282
  457. package/.next/standalone/src/lib/markdown/to-markdown.ts +0 -252
  458. package/.next/standalone/src/lib/proof/activity-shared.ts +0 -31
  459. package/.next/standalone/src/lib/proof/activity.ts +0 -74
  460. package/.next/standalone/src/lib/proof/audit.ts +0 -88
  461. package/.next/standalone/src/lib/proof/auth.ts +0 -143
  462. package/.next/standalone/src/lib/proof/block-refs.ts +0 -133
  463. package/.next/standalone/src/lib/proof/blocks.ts +0 -73
  464. package/.next/standalone/src/lib/proof/client-auth.ts +0 -23
  465. package/.next/standalone/src/lib/proof/collab-state.ts +0 -81
  466. package/.next/standalone/src/lib/proof/event-bus.ts +0 -47
  467. package/.next/standalone/src/lib/proof/file-lock.ts +0 -43
  468. package/.next/standalone/src/lib/proof/glob.ts +0 -51
  469. package/.next/standalone/src/lib/proof/idempotency.ts +0 -37
  470. package/.next/standalone/src/lib/proof/lease.ts +0 -117
  471. package/.next/standalone/src/lib/proof/mutex.ts +0 -36
  472. package/.next/standalone/src/lib/proof/ops-applier.ts +0 -727
  473. package/.next/standalone/src/lib/proof/owner-auth.ts +0 -2
  474. package/.next/standalone/src/lib/proof/pending.ts +0 -97
  475. package/.next/standalone/src/lib/proof/proof-span.ts +0 -141
  476. package/.next/standalone/src/lib/proof/rate-limit.ts +0 -53
  477. package/.next/standalone/src/lib/proof/raw-fs.ts +0 -197
  478. package/.next/standalone/src/lib/proof/register-rate-limit.ts +0 -53
  479. package/.next/standalone/src/lib/proof/registry.ts +0 -195
  480. package/.next/standalone/src/lib/proof/sidecar.ts +0 -103
  481. package/.next/standalone/src/lib/proof/suggest-capture.ts +0 -69
  482. package/.next/standalone/src/lib/proof/types.ts +0 -182
  483. package/.next/standalone/src/lib/proof-config.ts +0 -14
  484. package/.next/standalone/src/lib/root-dir.ts +0 -35
  485. package/.next/standalone/src/lib/search/indexable-exts.ts +0 -25
  486. package/.next/standalone/src/lib/search/indexer.ts +0 -634
  487. package/.next/standalone/src/lib/search/sanitize.ts +0 -35
  488. package/.next/standalone/src/lib/search/search-db.ts +0 -57
  489. package/.next/standalone/src/lib/search/watcher-pool.ts +0 -79
  490. package/.next/standalone/src/lib/shared-docs/db.ts +0 -177
  491. package/.next/standalone/src/lib/toast.ts +0 -9
  492. package/.next/standalone/src/lib/utils.ts +0 -6
  493. package/.next/standalone/src/lib/wiki-helpers.ts +0 -36
  494. package/.next/standalone/src/lib/workspace-client.ts +0 -82
  495. package/.next/standalone/src/lib/workspace-context.ts +0 -173
  496. package/.next/standalone/src/lib/workspaces.ts +0 -400
  497. package/.next/standalone/src/middleware.ts +0 -44
  498. package/.next/standalone/src/stores/ai-panel-store.ts +0 -79
  499. package/.next/standalone/src/stores/editor-store.ts +0 -439
  500. package/.next/standalone/src/stores/pin-store.ts +0 -56
  501. package/.next/standalone/src/stores/proof-store.ts +0 -124
  502. package/.next/standalone/src/stores/recent-store.ts +0 -51
  503. package/.next/standalone/src/stores/search-store.ts +0 -104
  504. package/.next/standalone/src/stores/show-hidden-store.ts +0 -26
  505. package/.next/standalone/src/stores/sidebar-width-store.ts +0 -39
  506. package/.next/standalone/src/stores/skin-store.ts +0 -42
  507. package/.next/standalone/src/stores/tree-store.ts +0 -52
  508. package/.next/standalone/src/stores/view-width-store.ts +0 -101
  509. package/.next/standalone/src/stores/wiki-slugs-store.ts +0 -75
  510. package/.next/standalone/src/tests/proof/activity-aggregator.test.ts +0 -146
  511. package/.next/standalone/src/tests/proof/admin-create-user.test.ts +0 -43
  512. package/.next/standalone/src/tests/proof/agent-fs.test.ts +0 -973
  513. package/.next/standalone/src/tests/proof/agent-ownership.test.ts +0 -140
  514. package/.next/standalone/src/tests/proof/agent-workspace-scope.test.ts +0 -134
  515. package/.next/standalone/src/tests/proof/agents-install.test.ts +0 -110
  516. package/.next/standalone/src/tests/proof/bench-write.ts +0 -179
  517. package/.next/standalone/src/tests/proof/better-auth.test.ts +0 -68
  518. package/.next/standalone/src/tests/proof/block-refs.test.ts +0 -108
  519. package/.next/standalone/src/tests/proof/blocks.test.ts +0 -92
  520. package/.next/standalone/src/tests/proof/collab-state.test.ts +0 -501
  521. package/.next/standalone/src/tests/proof/comments-ops.test.ts +0 -177
  522. package/.next/standalone/src/tests/proof/editor-roundtrip.test.ts +0 -85
  523. package/.next/standalone/src/tests/proof/external-edit.test.ts +0 -58
  524. package/.next/standalone/src/tests/proof/file-lock.test.ts +0 -80
  525. package/.next/standalone/src/tests/proof/git-branches-checkout.test.ts +0 -136
  526. package/.next/standalone/src/tests/proof/git-read-features.test.ts +0 -473
  527. package/.next/standalone/src/tests/proof/git-secrets.test.ts +0 -138
  528. package/.next/standalone/src/tests/proof/git-sparse.test.ts +0 -257
  529. package/.next/standalone/src/tests/proof/git-workspace.test.ts +0 -135
  530. package/.next/standalone/src/tests/proof/git.test.ts +0 -243
  531. package/.next/standalone/src/tests/proof/glob.test.ts +0 -82
  532. package/.next/standalone/src/tests/proof/helpers/auth-session.ts +0 -27
  533. package/.next/standalone/src/tests/proof/markdown-to-html.test.ts +0 -46
  534. package/.next/standalone/src/tests/proof/ops-applier.test.ts +0 -368
  535. package/.next/standalone/src/tests/proof/owner-init.test.ts +0 -2
  536. package/.next/standalone/src/tests/proof/parse-frontmatter.test.ts +0 -60
  537. package/.next/standalone/src/tests/proof/preload.ts +0 -21
  538. package/.next/standalone/src/tests/proof/proof-span.test.ts +0 -98
  539. package/.next/standalone/src/tests/proof/rate-limit.test.ts +0 -54
  540. package/.next/standalone/src/tests/proof/readonly-enforcement.test.ts +0 -161
  541. package/.next/standalone/src/tests/proof/reconcile-sidecar.test.ts +0 -195
  542. package/.next/standalone/src/tests/proof/registration-flow.test.ts +0 -330
  543. package/.next/standalone/src/tests/proof/registry.test.ts +0 -169
  544. package/.next/standalone/src/tests/proof/routes.test.ts +0 -516
  545. package/.next/standalone/src/tests/proof/search-index.test.ts +0 -376
  546. package/.next/standalone/src/tests/proof/sidecar-lifecycle.test.ts +0 -177
  547. package/.next/standalone/src/tests/proof/sidecar-trim.test.ts +0 -58
  548. package/.next/standalone/src/tests/proof/suggestion-ops.test.ts +0 -280
  549. package/.next/standalone/src/tests/proof/wiki-content-put.test.ts +0 -140
  550. package/.next/standalone/src/tests/proof/wiki-routes-auth.test.ts +0 -208
  551. package/.next/standalone/src/tests/proof/workspace-isolation.test.ts +0 -87
  552. package/.next/standalone/src/tests/proof/workspaces-api.test.ts +0 -227
  553. package/.next/standalone/src/types/index.ts +0 -47
  554. package/.next/standalone/tailwind.config.ts +0 -191
  555. package/.next/standalone/tsconfig.json +0 -41
  556. package/.next/standalone/tsconfig.tsbuildinfo +0 -1
  557. /package/.next/standalone/.next/static/{WMOTgfV82apmdovxzgbMx → ecpoWt_SP3WkUTh0NsnuT}/_buildManifest.js +0 -0
  558. /package/.next/standalone/.next/static/{WMOTgfV82apmdovxzgbMx → ecpoWt_SP3WkUTh0NsnuT}/_clientMiddlewareManifest.js +0 -0
  559. /package/.next/standalone/.next/static/{WMOTgfV82apmdovxzgbMx → ecpoWt_SP3WkUTh0NsnuT}/_ssgManifest.js +0 -0
@@ -1,150 +0,0 @@
1
- import CodeBlockLowlight from "@tiptap/extension-code-block-lowlight";
2
- import Link from "@tiptap/extension-link";
3
- import Placeholder from "@tiptap/extension-placeholder";
4
- import Subscript from "@tiptap/extension-subscript";
5
- import Superscript from "@tiptap/extension-superscript";
6
- import { Table } from "@tiptap/extension-table";
7
- import { TableCell } from "@tiptap/extension-table-cell";
8
- import { TableHeader } from "@tiptap/extension-table-header";
9
- import { TableRow } from "@tiptap/extension-table-row";
10
- import TaskItem from "@tiptap/extension-task-item";
11
- import TaskList from "@tiptap/extension-task-list";
12
- import TextAlign from "@tiptap/extension-text-align";
13
- import StarterKit from "@tiptap/starter-kit";
14
- import bash from "highlight.js/lib/languages/bash";
15
- import css from "highlight.js/lib/languages/css";
16
- import go from "highlight.js/lib/languages/go";
17
- import javascript from "highlight.js/lib/languages/javascript";
18
- import json from "highlight.js/lib/languages/json";
19
- import markdown from "highlight.js/lib/languages/markdown";
20
- import python from "highlight.js/lib/languages/python";
21
- import rust from "highlight.js/lib/languages/rust";
22
- import shell from "highlight.js/lib/languages/shell";
23
- import sql from "highlight.js/lib/languages/sql";
24
- import typescript from "highlight.js/lib/languages/typescript";
25
- import xml from "highlight.js/lib/languages/xml";
26
- import yaml from "highlight.js/lib/languages/yaml";
27
- import { createLowlight } from "lowlight";
28
- import { CalloutExtension } from "./callout-extension";
29
- import { DragHandle } from "./extensions/drag-handle";
30
- import { HeadingAnchors } from "./extensions/heading-anchors";
31
- import { ProofSpan } from "./extensions/proof-span";
32
- import { ResizableImage } from "./extensions/resizable-image";
33
- import { WikiLink } from "./wiki-link-extension";
34
-
35
- // Curated language set: covers ~95% of real-world snippets. The full `common`
36
- // import bundles 35+ language parsers (~70 kB gzipped) that users
37
- // rarely touch — swapping it for this 13-language list cuts the editor chunk
38
- // meaningfully. Add languages as demand grows.
39
- const lowlight = createLowlight({
40
- bash,
41
- css,
42
- go,
43
- javascript,
44
- json,
45
- markdown,
46
- python,
47
- rust,
48
- shell,
49
- sql,
50
- typescript,
51
- xml,
52
- yaml,
53
- });
54
-
55
- export const editorExtensions = [
56
- StarterKit.configure({
57
- heading: { levels: [1, 2, 3, 4] },
58
- codeBlock: false, // replaced by CodeBlockLowlight
59
- // StarterKit v3 bundles Link + Underline — we register our own customized
60
- // versions below, so disable the bundled copies to avoid duplicate-extension warnings.
61
- link: false,
62
- underline: false,
63
- }),
64
- CodeBlockLowlight.configure({
65
- lowlight,
66
- HTMLAttributes: {
67
- class: "rounded-md bg-muted p-4 font-mono text-sm",
68
- },
69
- }),
70
- Placeholder.configure({
71
- placeholder: "Start writing, or press '/' for commands...",
72
- }),
73
- ResizableImage.configure({
74
- HTMLAttributes: {
75
- class: "rounded-lg max-w-full",
76
- },
77
- allowBase64: false,
78
- }),
79
- Table.configure({
80
- resizable: true,
81
- lastColumnResizable: false,
82
- HTMLAttributes: {
83
- class: "border-collapse w-full",
84
- },
85
- }),
86
- TableRow,
87
- TableCell,
88
- TableHeader,
89
- TaskList.configure({
90
- HTMLAttributes: {
91
- class: "task-list",
92
- },
93
- }),
94
- TaskItem.configure({
95
- nested: true,
96
- }),
97
- Link.configure({
98
- openOnClick: false, // we handle clicks ourselves in the editor
99
- HTMLAttributes: {
100
- class: "text-primary underline cursor-pointer",
101
- },
102
- }).extend({
103
- parseHTML() {
104
- return [
105
- {
106
- tag: 'a[href]:not([data-wiki-link="true"])',
107
- },
108
- ];
109
- },
110
- // Move the link shortcut off Mod-K — that key is owned by the global
111
- // search palette everywhere in the app, including inside the editor.
112
- addKeyboardShortcuts() {
113
- return {
114
- "Mod-e": () => {
115
- const { state } = this.editor;
116
- const { from, to } = state.selection;
117
- if (from === to) return false;
118
- const prevUrl = this.editor.getAttributes("link").href ?? "";
119
- const url =
120
- typeof window !== "undefined"
121
- ? window.prompt("Link URL", prevUrl)
122
- : null;
123
- if (url === null) return false;
124
- if (url === "") {
125
- return this.editor
126
- .chain()
127
- .focus()
128
- .extendMarkRange("link")
129
- .unsetLink()
130
- .run();
131
- }
132
- return this.editor
133
- .chain()
134
- .focus()
135
- .extendMarkRange("link")
136
- .setLink({ href: url })
137
- .run();
138
- },
139
- };
140
- },
141
- }),
142
- CalloutExtension,
143
- ProofSpan,
144
- TextAlign.configure({ types: ["heading", "paragraph"] }),
145
- Subscript,
146
- Superscript,
147
- DragHandle,
148
- HeadingAnchors,
149
- WikiLink,
150
- ];
@@ -1,75 +0,0 @@
1
- "use client";
2
-
3
- import { Download, File, FolderOpen } from "lucide-react";
4
- import { ViewerToolbar } from "@/components/layout/viewer-toolbar";
5
- import { Button } from "@/components/ui/button";
6
- import { withWs, wsFetch } from "@/lib/workspace-client";
7
-
8
- interface FileFallbackViewerProps {
9
- path: string;
10
- title: string;
11
- }
12
-
13
- export function FileFallbackViewer({ path }: FileFallbackViewerProps) {
14
- const assetUrl = withWs(`/api/assets/${path}`);
15
- const filename = path.split("/").pop() || path;
16
- const ext = filename.includes(".")
17
- ? filename.split(".").pop()?.toUpperCase()
18
- : "";
19
-
20
- const revealInFinder = async () => {
21
- try {
22
- await wsFetch("/api/system/reveal", {
23
- method: "POST",
24
- headers: { "Content-Type": "application/json" },
25
- body: JSON.stringify({ path }),
26
- });
27
- } catch {
28
- /* ignore */
29
- }
30
- };
31
-
32
- return (
33
- <div className="flex-1 flex flex-col overflow-hidden">
34
- <ViewerToolbar path={path} badge={ext || undefined} />
35
- <div className="flex-1 flex items-center justify-center">
36
- <div className="flex flex-col items-center gap-4 text-center max-w-sm">
37
- <div className="flex size-16 items-center justify-center rounded-2xl bg-muted">
38
- <File className="size-8 text-muted-foreground/50" />
39
- </div>
40
- <div className="space-y-1">
41
- <p className="text-sm font-medium">{filename}</p>
42
- <p className="text-xs text-muted-foreground">
43
- This file type can&apos;t be previewed in Cabinet.
44
- </p>
45
- </div>
46
- <div className="flex items-center gap-2">
47
- <Button
48
- variant="outline"
49
- size="sm"
50
- className="gap-2"
51
- onClick={revealInFinder}
52
- >
53
- <FolderOpen className="h-4 w-4" />
54
- Open in Finder
55
- </Button>
56
- <Button
57
- variant="outline"
58
- size="sm"
59
- className="gap-2"
60
- onClick={() => {
61
- const a = document.createElement("a");
62
- a.href = assetUrl;
63
- a.download = filename;
64
- a.click();
65
- }}
66
- >
67
- <Download className="h-4 w-4" />
68
- Download
69
- </Button>
70
- </div>
71
- </div>
72
- </div>
73
- </div>
74
- );
75
- }
@@ -1,236 +0,0 @@
1
- "use client";
2
-
3
- import {
4
- AppWindow,
5
- FileAudio,
6
- FileCode2,
7
- FileImage,
8
- FileSpreadsheet,
9
- FileText,
10
- FileVideo,
11
- Folder,
12
- Globe,
13
- LayoutGrid,
14
- List as ListIcon,
15
- } from "lucide-react";
16
- import { useMemo, useState } from "react";
17
- import { useEditorStore } from "@/stores/editor-store";
18
- import { useTreeStore } from "@/stores/tree-store";
19
- import type { TreeNode } from "@/types";
20
- import { withWs } from "@/lib/workspace-client";
21
-
22
- type ViewMode = "list" | "gallery";
23
-
24
- const VIEW_MODE_KEY = "kb-folder-view-mode";
25
-
26
- function loadModePref(path: string): ViewMode | null {
27
- if (typeof window === "undefined") return null;
28
- try {
29
- const raw = localStorage.getItem(VIEW_MODE_KEY);
30
- if (!raw) return null;
31
- const parsed = JSON.parse(raw) as Record<string, ViewMode>;
32
- return parsed[path] ?? null;
33
- } catch {
34
- return null;
35
- }
36
- }
37
-
38
- function saveModePref(path: string, mode: ViewMode) {
39
- if (typeof window === "undefined") return;
40
- try {
41
- const raw = localStorage.getItem(VIEW_MODE_KEY);
42
- const parsed = raw ? (JSON.parse(raw) as Record<string, ViewMode>) : {};
43
- parsed[path] = mode;
44
- localStorage.setItem(VIEW_MODE_KEY, JSON.stringify(parsed));
45
- } catch {
46
- // ignore quota / parse errors
47
- }
48
- }
49
-
50
- function isImageChild(node: TreeNode): boolean {
51
- return node.type === "image";
52
- }
53
-
54
- // A folder is "image-heavy" when it has enough images to make a gallery feel
55
- // useful AND images dominate the child set. Tuned for moodboards and
56
- // screenshot dumps without surprising mixed folders.
57
- function isImageHeavy(children: TreeNode[]): boolean {
58
- if (children.length === 0) return false;
59
- const images = children.filter(isImageChild).length;
60
- return images >= 4 && images / children.length >= 0.6;
61
- }
62
-
63
- function iconFor(node: TreeNode) {
64
- switch (node.type) {
65
- case "directory":
66
- case "cabinet":
67
- return Folder;
68
- case "image":
69
- return FileImage;
70
- case "video":
71
- return FileVideo;
72
- case "audio":
73
- return FileAudio;
74
- case "code":
75
- return FileCode2;
76
- case "csv":
77
- case "xlsx":
78
- return FileSpreadsheet;
79
- case "website":
80
- return Globe;
81
- case "app":
82
- return AppWindow;
83
- default:
84
- return FileText;
85
- }
86
- }
87
-
88
- function navigateTo(path: string) {
89
- const { selectPage, expandPath } = useTreeStore.getState();
90
- const parts = path.split("/");
91
- for (let i = 1; i < parts.length; i++) {
92
- expandPath(parts.slice(0, i).join("/"));
93
- }
94
- selectPage(path);
95
- void useEditorStore.getState().loadPage(path);
96
- }
97
-
98
- interface FolderIndexProps {
99
- folderPath: string;
100
- entries: TreeNode[];
101
- }
102
-
103
- // The parent passes a `key={folderPath}` so this component remounts when the
104
- // folder changes — that's why state can safely seed from the path on mount
105
- // without a re-sync effect.
106
- export function FolderIndex({ folderPath, entries }: FolderIndexProps) {
107
- const imageHeavy = useMemo(() => isImageHeavy(entries), [entries]);
108
-
109
- const [mode, setMode] = useState<ViewMode>(() => {
110
- const saved = loadModePref(folderPath);
111
- if (saved) return saved;
112
- return imageHeavy ? "gallery" : "list";
113
- });
114
-
115
- const onSetMode = (next: ViewMode) => {
116
- setMode(next);
117
- saveModePref(folderPath, next);
118
- };
119
-
120
- // Sort: directories first, then by name. Stable so siblings stay grouped.
121
- const sorted = useMemo(() => {
122
- const copy = [...entries];
123
- copy.sort((a, b) => {
124
- const aDir = a.type === "directory" || a.type === "cabinet";
125
- const bDir = b.type === "directory" || b.type === "cabinet";
126
- if (aDir !== bDir) return aDir ? -1 : 1;
127
- return a.name.localeCompare(b.name);
128
- });
129
- return copy;
130
- }, [entries]);
131
-
132
- return (
133
- <div className="space-y-3">
134
- <div className="flex items-center justify-between">
135
- <p className="text-[11px] uppercase tracking-wider text-muted-foreground/70">
136
- {sorted.length} {sorted.length === 1 ? "item" : "items"}
137
- </p>
138
- <div className="inline-flex items-center rounded-md border border-border p-0.5 text-[11px]">
139
- <button
140
- onClick={() => onSetMode("list")}
141
- className={`flex items-center gap-1 px-2 py-1 rounded transition-colors ${
142
- mode === "list"
143
- ? "bg-accent text-foreground"
144
- : "text-muted-foreground hover:text-foreground"
145
- }`}
146
- aria-pressed={mode === "list"}
147
- title="List view"
148
- >
149
- <ListIcon className="h-3 w-3" />
150
- List
151
- </button>
152
- <button
153
- onClick={() => onSetMode("gallery")}
154
- className={`flex items-center gap-1 px-2 py-1 rounded transition-colors ${
155
- mode === "gallery"
156
- ? "bg-accent text-foreground"
157
- : "text-muted-foreground hover:text-foreground"
158
- }`}
159
- aria-pressed={mode === "gallery"}
160
- title="Gallery view"
161
- >
162
- <LayoutGrid className="h-3 w-3" />
163
- Gallery
164
- </button>
165
- </div>
166
- </div>
167
-
168
- {mode === "list" ? (
169
- <ul className="divide-y divide-border rounded-md border border-border overflow-hidden">
170
- {sorted.map((child) => {
171
- const Icon = iconFor(child);
172
- const title = child.frontmatter?.title || child.name;
173
- return (
174
- <li key={child.path}>
175
- <button
176
- onClick={() => navigateTo(child.path)}
177
- className="w-full flex items-center gap-3 px-3 py-2 text-left text-sm hover:bg-accent/50 transition-colors"
178
- >
179
- <Icon className="h-4 w-4 shrink-0 text-muted-foreground" />
180
- <span className="flex-1 truncate">{title}</span>
181
- <span className="text-[11px] text-muted-foreground/60 capitalize">
182
- {child.type}
183
- </span>
184
- </button>
185
- </li>
186
- );
187
- })}
188
- </ul>
189
- ) : (
190
- <div className="grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-5 gap-3">
191
- {sorted.map((child) => {
192
- const title = child.frontmatter?.title || child.name;
193
- if (isImageChild(child)) {
194
- return (
195
- <button
196
- key={child.path}
197
- onClick={() => navigateTo(child.path)}
198
- className="group flex flex-col gap-1.5 text-left"
199
- title={title}
200
- >
201
- <div className="aspect-square w-full overflow-hidden rounded-md border border-border bg-muted">
202
- <img
203
- src={withWs(`/api/assets/${child.path}`)}
204
- alt={title}
205
- loading="lazy"
206
- className="h-full w-full object-cover transition-transform group-hover:scale-[1.02]"
207
- />
208
- </div>
209
- <span className="truncate text-[12px] text-muted-foreground group-hover:text-foreground">
210
- {title}
211
- </span>
212
- </button>
213
- );
214
- }
215
- const Icon = iconFor(child);
216
- return (
217
- <button
218
- key={child.path}
219
- onClick={() => navigateTo(child.path)}
220
- className="group flex flex-col gap-1.5 text-left"
221
- title={title}
222
- >
223
- <div className="aspect-square w-full flex items-center justify-center rounded-md border border-border bg-muted/40 group-hover:bg-muted transition-colors">
224
- <Icon className="h-8 w-8 text-muted-foreground/60" />
225
- </div>
226
- <span className="truncate text-[12px] text-muted-foreground group-hover:text-foreground">
227
- {title}
228
- </span>
229
- </button>
230
- );
231
- })}
232
- </div>
233
- )}
234
- </div>
235
- );
236
- }
@@ -1,73 +0,0 @@
1
- "use client";
2
-
3
- import { Info } from "lucide-react";
4
- import { useMemo } from "react";
5
- import {
6
- detectGoogle,
7
- type GoogleKind,
8
- googleKindLabel,
9
- } from "@/lib/google/detect";
10
- import type { GoogleFrontmatter } from "@/types";
11
- import { OfficeChrome } from "./office/office-chrome";
12
-
13
- interface Props {
14
- path: string;
15
- title: string;
16
- google: GoogleFrontmatter;
17
- }
18
-
19
- export function GoogleDocViewer({ path, title, google }: Props) {
20
- const resolved = useMemo(() => detectGoogle(google.url || ""), [google.url]);
21
- const embedUrl = google.embedUrl ?? resolved?.embedUrl ?? "";
22
- const openUrl = resolved?.openUrl ?? google.url ?? "";
23
- const kind: GoogleKind =
24
- (google.kind as GoogleKind) ?? resolved?.kind ?? "docs";
25
- const label = googleKindLabel(kind).toUpperCase();
26
-
27
- if (!embedUrl) {
28
- return (
29
- <div className="flex-1 flex flex-col overflow-hidden">
30
- <OfficeChrome path={path} title={title} extLabel="GOOGLE" hideFinder />
31
- <div className="flex-1 flex items-center justify-center p-6">
32
- <div className="max-w-md text-center space-y-2">
33
- <p className="text-sm font-medium">No Google URL set</p>
34
- <p className="text-xs text-muted-foreground">
35
- Add a <code>google.url</code> field to this page&apos;s
36
- frontmatter pointing to a Google Sheets, Slides, Docs or Forms
37
- link.
38
- </p>
39
- </div>
40
- </div>
41
- </div>
42
- );
43
- }
44
-
45
- return (
46
- <div className="flex-1 flex flex-col overflow-hidden">
47
- <OfficeChrome
48
- path={path}
49
- title={title}
50
- extLabel={label}
51
- hideFinder
52
- external={
53
- openUrl ? { label: "Open in Google", href: openUrl } : undefined
54
- }
55
- />
56
- <div className="px-4 py-1.5 border-b border-border bg-muted/30 text-[11px] text-muted-foreground flex items-center gap-1.5">
57
- <Info className="h-3 w-3 shrink-0" />
58
- Embed requires the doc&apos;s sharing to be{" "}
59
- <strong className="text-foreground/80">Anyone with the link</strong> or{" "}
60
- <strong className="text-foreground/80">Published to the web</strong>.
61
- </div>
62
- <div className="flex-1 relative bg-muted/30">
63
- <iframe
64
- key={embedUrl}
65
- src={embedUrl}
66
- className="absolute inset-0 w-full h-full border-0 bg-background"
67
- allow="clipboard-write; fullscreen"
68
- title={title}
69
- />
70
- </div>
71
- </div>
72
- );
73
- }
@@ -1,57 +0,0 @@
1
- "use client";
2
-
3
- import { Download, ExternalLink } from "lucide-react";
4
- import { ViewerToolbar } from "@/components/layout/viewer-toolbar";
5
- import { Button } from "@/components/ui/button";
6
- import { withWs } from "@/lib/workspace-client";
7
-
8
- interface ImageViewerProps {
9
- path: string;
10
- title: string;
11
- }
12
-
13
- export function ImageViewer({ path, title }: ImageViewerProps) {
14
- const src = withWs(`/api/assets/${path}`);
15
- const filename = path.split("/").pop() || path;
16
- const ext = filename.includes(".")
17
- ? filename.split(".").pop()?.toUpperCase()
18
- : "IMG";
19
-
20
- return (
21
- <div className="flex-1 flex flex-col overflow-hidden">
22
- <ViewerToolbar path={path} badge={ext}>
23
- <Button
24
- variant="ghost"
25
- size="sm"
26
- className="h-7 gap-1.5 text-xs"
27
- onClick={() => {
28
- const a = document.createElement("a");
29
- a.href = src;
30
- a.download = filename;
31
- a.click();
32
- }}
33
- >
34
- <Download className="h-3.5 w-3.5" />
35
- Download
36
- </Button>
37
- <Button
38
- variant="ghost"
39
- size="sm"
40
- className="h-7 gap-1.5 text-xs"
41
- onClick={() => window.open(src, "_blank")}
42
- >
43
- <ExternalLink className="h-3.5 w-3.5" />
44
- Open in new tab
45
- </Button>
46
- </ViewerToolbar>
47
- <div className="flex-1 overflow-auto flex items-center justify-center bg-[#1a1a1a] p-8">
48
- <img
49
- src={src}
50
- alt={title}
51
- className="max-w-full max-h-full object-contain rounded-md shadow-lg"
52
- style={{ imageRendering: "auto" }}
53
- />
54
- </div>
55
- </div>
56
- );
57
- }
@@ -1,108 +0,0 @@
1
- "use client";
2
-
3
- import { Download, ExternalLink, FileWarning, FolderOpen } from "lucide-react";
4
- import { ViewerToolbar } from "@/components/layout/viewer-toolbar";
5
- import { Button } from "@/components/ui/button";
6
- import { withWs, wsFetch } from "@/lib/workspace-client";
7
-
8
- interface LargeFileGateProps {
9
- path: string;
10
- size: number;
11
- /** Mount the real viewer. */
12
- onOpen: () => void;
13
- }
14
-
15
- function formatSize(bytes: number): string {
16
- if (bytes >= 1024 * 1024 * 1024)
17
- return `${(bytes / (1024 * 1024 * 1024)).toFixed(1)} GB`;
18
- if (bytes >= 1024 * 1024) return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
19
- if (bytes >= 1024) return `${Math.round(bytes / 1024)} KB`;
20
- return `${bytes} B`;
21
- }
22
-
23
- /**
24
- * Confirmation shown before mounting a viewer that loads and renders a whole
25
- * large file. Sits above the viewer dispatch, so it guards every unsafe viewer
26
- * in one place. The user can open it anyway, download it, or open the raw bytes.
27
- */
28
- export function LargeFileGate({ path, size, onOpen }: LargeFileGateProps) {
29
- const assetUrl = withWs(`/api/assets/${path}`);
30
- const filename = path.split("/").pop() || path;
31
- const ext = filename.includes(".")
32
- ? filename.split(".").pop()?.toUpperCase()
33
- : "";
34
-
35
- const revealInFinder = async () => {
36
- try {
37
- await wsFetch("/api/system/reveal", {
38
- method: "POST",
39
- headers: { "Content-Type": "application/json" },
40
- body: JSON.stringify({ path }),
41
- });
42
- } catch {
43
- /* ignore */
44
- }
45
- };
46
-
47
- return (
48
- <div className="flex-1 flex flex-col overflow-hidden">
49
- <ViewerToolbar path={path} badge={ext || undefined} />
50
- <div className="flex-1 flex items-center justify-center">
51
- <div className="flex flex-col items-center gap-4 text-center max-w-sm">
52
- <div className="flex size-16 items-center justify-center rounded-2xl bg-amber-500/10">
53
- <FileWarning className="size-8 text-amber-500" />
54
- </div>
55
- <div className="space-y-1">
56
- <p className="text-sm font-medium">{filename}</p>
57
- <p className="text-xs text-muted-foreground">
58
- This file is {formatSize(size)}. Opening it in the viewer may
59
- freeze the tab while it loads and renders.
60
- </p>
61
- </div>
62
- <div className="flex flex-wrap items-center justify-center gap-2">
63
- <Button
64
- variant="default"
65
- size="sm"
66
- className="gap-2"
67
- onClick={onOpen}
68
- >
69
- Open anyway
70
- </Button>
71
- <Button
72
- variant="outline"
73
- size="sm"
74
- className="gap-2"
75
- onClick={() => window.open(assetUrl, "_blank")}
76
- >
77
- <ExternalLink className="h-4 w-4" />
78
- Raw
79
- </Button>
80
- <Button
81
- variant="outline"
82
- size="sm"
83
- className="gap-2"
84
- onClick={() => {
85
- const a = document.createElement("a");
86
- a.href = assetUrl;
87
- a.download = filename;
88
- a.click();
89
- }}
90
- >
91
- <Download className="h-4 w-4" />
92
- Download
93
- </Button>
94
- <Button
95
- variant="outline"
96
- size="sm"
97
- className="gap-2"
98
- onClick={revealInFinder}
99
- >
100
- <FolderOpen className="h-4 w-4" />
101
- Open in Finder
102
- </Button>
103
- </div>
104
- </div>
105
- </div>
106
- </div>
107
- );
108
- }