wiki-viewer 1.14.1 → 1.14.2

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 (384) 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.html +1 -1
  11. package/.next/standalone/.next/server/app/_not-found.rsc +1 -1
  12. package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  13. package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  14. package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  15. package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  16. package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  17. package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  18. package/.next/standalone/.next/server/app/api/agent/activity/route.js.nft.json +1 -1
  19. package/.next/standalone/.next/server/app/api/agent/events/[...path]/route.js.nft.json +1 -1
  20. package/.next/standalone/.next/server/app/api/agent/files/[...path]/route.js.nft.json +1 -1
  21. package/.next/standalone/.next/server/app/api/agent/fs/file/[...path]/route.js.nft.json +1 -1
  22. package/.next/standalone/.next/server/app/api/agent/fs/ls/[[...path]]/route.js.nft.json +1 -1
  23. package/.next/standalone/.next/server/app/api/agent/fs/move/route.js.nft.json +1 -1
  24. package/.next/standalone/.next/server/app/api/agent/fs/search/route.js.nft.json +1 -1
  25. package/.next/standalone/.next/server/app/api/agent/internal/span/route.js.nft.json +1 -1
  26. package/.next/standalone/.next/server/app/api/agent/settings/route.js.nft.json +1 -1
  27. package/.next/standalone/.next/server/app/api/agent/sidecar/[...path]/route.js.nft.json +1 -1
  28. package/.next/standalone/.next/server/app/api/assets/[...path]/route.js.nft.json +1 -1
  29. package/.next/standalone/.next/server/app/api/share/[token]/route.js.nft.json +1 -1
  30. package/.next/standalone/.next/server/app/api/share/route.js.nft.json +1 -1
  31. package/.next/standalone/.next/server/app/api/system/reveal/route.js.nft.json +1 -1
  32. package/.next/standalone/.next/server/app/api/system/set-root/route.js.nft.json +1 -1
  33. package/.next/standalone/.next/server/app/api/system/workspaces/[id]/open/route.js.nft.json +1 -1
  34. package/.next/standalone/.next/server/app/api/system/workspaces/[id]/refresh/route.js.nft.json +1 -1
  35. package/.next/standalone/.next/server/app/api/system/workspaces/[id]/route.js.nft.json +1 -1
  36. package/.next/standalone/.next/server/app/api/system/workspaces/route.js.nft.json +1 -1
  37. package/.next/standalone/.next/server/app/api/upload/[...path]/route.js.nft.json +1 -1
  38. package/.next/standalone/.next/server/app/api/wiki/app/route.js.nft.json +1 -1
  39. package/.next/standalone/.next/server/app/api/wiki/backlinks/route.js.nft.json +1 -1
  40. package/.next/standalone/.next/server/app/api/wiki/content/route.js.nft.json +1 -1
  41. package/.next/standalone/.next/server/app/api/wiki/download/route.js.nft.json +1 -1
  42. package/.next/standalone/.next/server/app/api/wiki/file/route.js.nft.json +1 -1
  43. package/.next/standalone/.next/server/app/api/wiki/folder/route.js.nft.json +1 -1
  44. package/.next/standalone/.next/server/app/api/wiki/git-branches/route.js.nft.json +1 -1
  45. package/.next/standalone/.next/server/app/api/wiki/git-checkout/route.js.nft.json +1 -1
  46. package/.next/standalone/.next/server/app/api/wiki/git-diff/route.js.nft.json +1 -1
  47. package/.next/standalone/.next/server/app/api/wiki/git-file-info/route.js.nft.json +1 -1
  48. package/.next/standalone/.next/server/app/api/wiki/git-history/route.js.nft.json +1 -1
  49. package/.next/standalone/.next/server/app/api/wiki/git-pull/route.js.nft.json +1 -1
  50. package/.next/standalone/.next/server/app/api/wiki/move/route.js.nft.json +1 -1
  51. package/.next/standalone/.next/server/app/api/wiki/new-file/route.js.nft.json +1 -1
  52. package/.next/standalone/.next/server/app/api/wiki/outlinks/route.js.nft.json +1 -1
  53. package/.next/standalone/.next/server/app/api/wiki/page/route.js.nft.json +1 -1
  54. package/.next/standalone/.next/server/app/api/wiki/presence/route.js.nft.json +1 -1
  55. package/.next/standalone/.next/server/app/api/wiki/route.js.nft.json +1 -1
  56. package/.next/standalone/.next/server/app/api/wiki/search/route.js.nft.json +1 -1
  57. package/.next/standalone/.next/server/app/api/wiki/slugs/route.js.nft.json +1 -1
  58. package/.next/standalone/.next/server/app/api/wiki/upload/route.js.nft.json +1 -1
  59. package/.next/standalone/.next/server/app/api/wiki/watch/route.js.nft.json +1 -1
  60. package/.next/standalone/.next/server/app/index.html +1 -1
  61. package/.next/standalone/.next/server/app/index.rsc +1 -1
  62. package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  63. package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +1 -1
  64. package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  65. package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +1 -1
  66. package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  67. package/.next/standalone/.next/server/middleware-build-manifest.js +3 -3
  68. package/.next/standalone/.next/server/middleware-manifest.json +1 -1
  69. package/.next/standalone/.next/server/pages/404.html +1 -1
  70. package/.next/standalone/.next/server/pages/500.html +1 -1
  71. package/.next/standalone/package.json +1 -1
  72. package/bin/postbuild.js +21 -0
  73. package/package.json +1 -1
  74. package/.next/standalone/.github/workflows/publish.yml +0 -37
  75. package/.next/standalone/.handoffs/archive/handoff-20260612-113332.md +0 -98
  76. package/.next/standalone/.handoffs/archive/handoff-20260612-141032.md +0 -73
  77. package/.next/standalone/.pi/ownership.json +0 -3
  78. package/.next/standalone/AGENTS.md +0 -114
  79. package/.next/standalone/DESIGN.md +0 -521
  80. package/.next/standalone/README.md +0 -821
  81. package/.next/standalone/TODO.md +0 -20
  82. package/.next/standalone/agents/bootstrap-prompt.md +0 -14
  83. package/.next/standalone/agents/wiki-viewer-skill/SKILL.md +0 -456
  84. package/.next/standalone/bin/postbuild.js +0 -78
  85. package/.next/standalone/bin/wiki-viewer.js +0 -922
  86. package/.next/standalone/certificates/localhost-key.pem +0 -28
  87. package/.next/standalone/certificates/localhost.pem +0 -24
  88. package/.next/standalone/docs/agent-collab-plan.md +0 -1615
  89. package/.next/standalone/docs/agent-collab-v2-plan.md +0 -771
  90. package/.next/standalone/docs/agent-fs-plan.md +0 -232
  91. package/.next/standalone/docs/editorial-skin-spec.md +0 -242
  92. package/.next/standalone/docs/file-vs-collab-authority.md +0 -124
  93. package/.next/standalone/docs/mobile-readiness-spec.md +0 -229
  94. package/.next/standalone/docs/workspacing-plan.md +0 -364
  95. package/.next/standalone/packages/wiki-viewer-mcp/README.md +0 -195
  96. package/.next/standalone/packages/wiki-viewer-mcp/bench-e2e.mjs +0 -166
  97. package/.next/standalone/packages/wiki-viewer-mcp/bench-latency.mjs +0 -87
  98. package/.next/standalone/packages/wiki-viewer-mcp/bench-payload.mjs +0 -45
  99. package/.next/standalone/packages/wiki-viewer-mcp/dist/http-client.js +0 -331
  100. package/.next/standalone/packages/wiki-viewer-mcp/dist/index.js +0 -531
  101. package/.next/standalone/packages/wiki-viewer-mcp/dist/register.js +0 -94
  102. package/.next/standalone/packages/wiki-viewer-mcp/dist/state-cache.js +0 -28
  103. package/.next/standalone/packages/wiki-viewer-mcp/package-lock.json +0 -1716
  104. package/.next/standalone/packages/wiki-viewer-mcp/package.json +0 -41
  105. package/.next/standalone/packages/wiki-viewer-mcp/src/http-client.ts +0 -459
  106. package/.next/standalone/packages/wiki-viewer-mcp/src/index.ts +0 -638
  107. package/.next/standalone/packages/wiki-viewer-mcp/src/register.ts +0 -144
  108. package/.next/standalone/packages/wiki-viewer-mcp/src/state-cache.ts +0 -55
  109. package/.next/standalone/packages/wiki-viewer-mcp/tsconfig.json +0 -19
  110. package/.next/standalone/pnpm-lock.yaml +0 -6697
  111. package/.next/standalone/pnpm-workspace.yaml +0 -8
  112. package/.next/standalone/postcss.config.mjs +0 -2
  113. package/.next/standalone/src/app/api/agent/activity/route.ts +0 -59
  114. package/.next/standalone/src/app/api/agent/admin/agents/[agentId]/revoke/route.ts +0 -40
  115. package/.next/standalone/src/app/api/agent/admin/agents/route.ts +0 -33
  116. package/.next/standalone/src/app/api/agent/admin/registrations/[regId]/approve/route.ts +0 -83
  117. package/.next/standalone/src/app/api/agent/admin/registrations/[regId]/deny/route.ts +0 -36
  118. package/.next/standalone/src/app/api/agent/admin/registrations/route.ts +0 -27
  119. package/.next/standalone/src/app/api/agent/events/[...path]/route.ts +0 -148
  120. package/.next/standalone/src/app/api/agent/files/[...path]/route.ts +0 -219
  121. package/.next/standalone/src/app/api/agent/fs/file/[...path]/route.ts +0 -446
  122. package/.next/standalone/src/app/api/agent/fs/ls/[[...path]]/route.ts +0 -152
  123. package/.next/standalone/src/app/api/agent/fs/move/route.ts +0 -130
  124. package/.next/standalone/src/app/api/agent/fs/search/route.ts +0 -272
  125. package/.next/standalone/src/app/api/agent/internal/span/route.ts +0 -121
  126. package/.next/standalone/src/app/api/agent/register/[regId]/route.ts +0 -50
  127. package/.next/standalone/src/app/api/agent/register/route.ts +0 -118
  128. package/.next/standalone/src/app/api/agent/settings/route.ts +0 -34
  129. package/.next/standalone/src/app/api/agent/settings/token/regenerate/route.ts +0 -20
  130. package/.next/standalone/src/app/api/agent/sidecar/[...path]/route.ts +0 -53
  131. package/.next/standalone/src/app/api/agents/install/route.ts +0 -143
  132. package/.next/standalone/src/app/api/agents/skill/route.ts +0 -20
  133. package/.next/standalone/src/app/api/agents/skill.tar.gz/route.ts +0 -87
  134. package/.next/standalone/src/app/api/app-proxy/[...path]/route.ts +0 -247
  135. package/.next/standalone/src/app/api/assets/[...path]/route.ts +0 -75
  136. package/.next/standalone/src/app/api/auth/[...all]/route.ts +0 -7
  137. package/.next/standalone/src/app/api/owner/init/route.ts +0 -14
  138. package/.next/standalone/src/app/api/share/[token]/route.ts +0 -269
  139. package/.next/standalone/src/app/api/share/route.ts +0 -127
  140. package/.next/standalone/src/app/api/system/admins/route.ts +0 -103
  141. package/.next/standalone/src/app/api/system/auth-config/route.ts +0 -22
  142. package/.next/standalone/src/app/api/system/auth-settings/route.ts +0 -86
  143. package/.next/standalone/src/app/api/system/browse/route.ts +0 -82
  144. package/.next/standalone/src/app/api/system/clear-root/route.ts +0 -16
  145. package/.next/standalone/src/app/api/system/config/route.ts +0 -14
  146. package/.next/standalone/src/app/api/system/pins/route.ts +0 -38
  147. package/.next/standalone/src/app/api/system/reveal/route.ts +0 -36
  148. package/.next/standalone/src/app/api/system/root-status/route.ts +0 -13
  149. package/.next/standalone/src/app/api/system/set-root/route.ts +0 -53
  150. package/.next/standalone/src/app/api/system/users/route.ts +0 -120
  151. package/.next/standalone/src/app/api/system/workspaces/[id]/open/route.ts +0 -34
  152. package/.next/standalone/src/app/api/system/workspaces/[id]/refresh/route.ts +0 -32
  153. package/.next/standalone/src/app/api/system/workspaces/[id]/route.ts +0 -78
  154. package/.next/standalone/src/app/api/system/workspaces/route.ts +0 -128
  155. package/.next/standalone/src/app/api/upload/[...path]/route.ts +0 -85
  156. package/.next/standalone/src/app/api/wiki/app/route.ts +0 -60
  157. package/.next/standalone/src/app/api/wiki/backlinks/route.ts +0 -29
  158. package/.next/standalone/src/app/api/wiki/content/route.ts +0 -159
  159. package/.next/standalone/src/app/api/wiki/download/route.ts +0 -100
  160. package/.next/standalone/src/app/api/wiki/file/route.ts +0 -57
  161. package/.next/standalone/src/app/api/wiki/folder/route.ts +0 -34
  162. package/.next/standalone/src/app/api/wiki/git-branches/route.ts +0 -32
  163. package/.next/standalone/src/app/api/wiki/git-checkout/route.ts +0 -45
  164. package/.next/standalone/src/app/api/wiki/git-diff/route.ts +0 -33
  165. package/.next/standalone/src/app/api/wiki/git-file-info/route.ts +0 -27
  166. package/.next/standalone/src/app/api/wiki/git-history/route.ts +0 -27
  167. package/.next/standalone/src/app/api/wiki/git-pull/route.ts +0 -48
  168. package/.next/standalone/src/app/api/wiki/move/route.ts +0 -61
  169. package/.next/standalone/src/app/api/wiki/new-file/route.ts +0 -56
  170. package/.next/standalone/src/app/api/wiki/outlinks/route.ts +0 -76
  171. package/.next/standalone/src/app/api/wiki/page/route.ts +0 -92
  172. package/.next/standalone/src/app/api/wiki/presence/route.ts +0 -56
  173. package/.next/standalone/src/app/api/wiki/route.ts +0 -116
  174. package/.next/standalone/src/app/api/wiki/search/route.ts +0 -44
  175. package/.next/standalone/src/app/api/wiki/slugs/route.ts +0 -54
  176. package/.next/standalone/src/app/api/wiki/upload/route.ts +0 -95
  177. package/.next/standalone/src/app/api/wiki/watch/route.ts +0 -67
  178. package/.next/standalone/src/app/globals.css +0 -1249
  179. package/.next/standalone/src/app/icon.svg +0 -11
  180. package/.next/standalone/src/app/layout.tsx +0 -78
  181. package/.next/standalone/src/app/manifest.ts +0 -30
  182. package/.next/standalone/src/app/page.tsx +0 -3260
  183. package/.next/standalone/src/app/s/[token]/page.tsx +0 -357
  184. package/.next/standalone/src/app/signin/page.tsx +0 -16
  185. package/.next/standalone/src/app/signin/signin-form.tsx +0 -238
  186. package/.next/standalone/src/components/ai-panel/activity-row.tsx +0 -284
  187. package/.next/standalone/src/components/ai-panel/ai-panel.tsx +0 -311
  188. package/.next/standalone/src/components/ai-panel/token-section.tsx +0 -313
  189. package/.next/standalone/src/components/auth-settings-sheet.tsx +0 -474
  190. package/.next/standalone/src/components/confirm-dialog.tsx +0 -56
  191. package/.next/standalone/src/components/dir-picker.tsx +0 -606
  192. package/.next/standalone/src/components/editor/backlinks-panel.tsx +0 -139
  193. package/.next/standalone/src/components/editor/bubble-menu.tsx +0 -346
  194. package/.next/standalone/src/components/editor/callout-extension.ts +0 -36
  195. package/.next/standalone/src/components/editor/comment-pip.tsx +0 -56
  196. package/.next/standalone/src/components/editor/comment-thread.tsx +0 -254
  197. package/.next/standalone/src/components/editor/csv-viewer.tsx +0 -379
  198. package/.next/standalone/src/components/editor/document-outline.tsx +0 -230
  199. package/.next/standalone/src/components/editor/editor-toolbar.tsx +0 -564
  200. package/.next/standalone/src/components/editor/editor.tsx +0 -1327
  201. package/.next/standalone/src/components/editor/extensions/drag-handle.ts +0 -325
  202. package/.next/standalone/src/components/editor/extensions/heading-anchors.ts +0 -55
  203. package/.next/standalone/src/components/editor/extensions/proof-span.ts +0 -60
  204. package/.next/standalone/src/components/editor/extensions/resizable-image.tsx +0 -159
  205. package/.next/standalone/src/components/editor/extensions.ts +0 -150
  206. package/.next/standalone/src/components/editor/file-fallback-viewer.tsx +0 -75
  207. package/.next/standalone/src/components/editor/folder-index.tsx +0 -236
  208. package/.next/standalone/src/components/editor/google-doc-viewer.tsx +0 -73
  209. package/.next/standalone/src/components/editor/image-viewer.tsx +0 -57
  210. package/.next/standalone/src/components/editor/large-file-gate.tsx +0 -108
  211. package/.next/standalone/src/components/editor/link-popover.tsx +0 -111
  212. package/.next/standalone/src/components/editor/media-popover.tsx +0 -212
  213. package/.next/standalone/src/components/editor/media-viewer.tsx +0 -70
  214. package/.next/standalone/src/components/editor/mermaid-viewer.tsx +0 -286
  215. package/.next/standalone/src/components/editor/node-app-viewer.tsx +0 -328
  216. package/.next/standalone/src/components/editor/notebook-viewer.tsx +0 -371
  217. package/.next/standalone/src/components/editor/office/docx-viewer.tsx +0 -93
  218. package/.next/standalone/src/components/editor/office/office-chrome.tsx +0 -83
  219. package/.next/standalone/src/components/editor/office/pptx-viewer.tsx +0 -104
  220. package/.next/standalone/src/components/editor/office/xlsx-viewer.tsx +0 -192
  221. package/.next/standalone/src/components/editor/pdf-viewer.tsx +0 -32
  222. package/.next/standalone/src/components/editor/proof-span-popover.tsx +0 -162
  223. package/.next/standalone/src/components/editor/slash-commands.tsx +0 -629
  224. package/.next/standalone/src/components/editor/source-viewer.tsx +0 -289
  225. package/.next/standalone/src/components/editor/suggest-edit-popover.tsx +0 -229
  226. package/.next/standalone/src/components/editor/suggestion-card.tsx +0 -206
  227. package/.next/standalone/src/components/editor/table-menu.tsx +0 -232
  228. package/.next/standalone/src/components/editor/view-mode-comment-button.tsx +0 -77
  229. package/.next/standalone/src/components/editor/website-viewer.tsx +0 -75
  230. package/.next/standalone/src/components/editor/wiki-link-create-dialog.tsx +0 -189
  231. package/.next/standalone/src/components/editor/wiki-link-decorator.ts +0 -79
  232. package/.next/standalone/src/components/editor/wiki-link-extension.ts +0 -120
  233. package/.next/standalone/src/components/editor/wiki-link-picker.tsx +0 -250
  234. package/.next/standalone/src/components/layout/viewer-toolbar.tsx +0 -54
  235. package/.next/standalone/src/components/search/search-command-dialog.tsx +0 -246
  236. package/.next/standalone/src/components/search/sidebar-search-box.tsx +0 -121
  237. package/.next/standalone/src/components/search/snippet-text.tsx +0 -48
  238. package/.next/standalone/src/components/share-dialog.tsx +0 -307
  239. package/.next/standalone/src/components/theme-provider.tsx +0 -16
  240. package/.next/standalone/src/components/theme-toggle.tsx +0 -24
  241. package/.next/standalone/src/components/ui/badge.tsx +0 -35
  242. package/.next/standalone/src/components/ui/button.tsx +0 -56
  243. package/.next/standalone/src/components/ui/card.tsx +0 -63
  244. package/.next/standalone/src/components/ui/collapsible.tsx +0 -9
  245. package/.next/standalone/src/components/ui/command.tsx +0 -151
  246. package/.next/standalone/src/components/ui/context-menu.tsx +0 -191
  247. package/.next/standalone/src/components/ui/dialog.tsx +0 -119
  248. package/.next/standalone/src/components/ui/dropdown-menu.tsx +0 -194
  249. package/.next/standalone/src/components/ui/input.tsx +0 -22
  250. package/.next/standalone/src/components/ui/label.tsx +0 -25
  251. package/.next/standalone/src/components/ui/popover.tsx +0 -33
  252. package/.next/standalone/src/components/ui/scroll-area.tsx +0 -47
  253. package/.next/standalone/src/components/ui/select.tsx +0 -156
  254. package/.next/standalone/src/components/ui/separator.tsx +0 -30
  255. package/.next/standalone/src/components/ui/sheet.tsx +0 -140
  256. package/.next/standalone/src/components/ui/skeleton.tsx +0 -15
  257. package/.next/standalone/src/components/ui/switch.tsx +0 -28
  258. package/.next/standalone/src/components/ui/tabs.tsx +0 -54
  259. package/.next/standalone/src/components/ui/textarea.tsx +0 -21
  260. package/.next/standalone/src/components/ui/tip.tsx +0 -23
  261. package/.next/standalone/src/components/ui/toggle-group.tsx +0 -41
  262. package/.next/standalone/src/components/ui/tooltip.tsx +0 -27
  263. package/.next/standalone/src/components/view-width-toggle.tsx +0 -70
  264. package/.next/standalone/src/components/wiki/frontmatter-header.tsx +0 -164
  265. package/.next/standalone/src/hooks/use-is-mobile.ts +0 -14
  266. package/.next/standalone/src/lib/app-runner.ts +0 -272
  267. package/.next/standalone/src/lib/auth/admin.ts +0 -120
  268. package/.next/standalone/src/lib/auth/allowlist.ts +0 -50
  269. package/.next/standalone/src/lib/auth/client.ts +0 -4
  270. package/.next/standalone/src/lib/auth/csrf.ts +0 -68
  271. package/.next/standalone/src/lib/auth/server.ts +0 -215
  272. package/.next/standalone/src/lib/cabinets/tree.ts +0 -75
  273. package/.next/standalone/src/lib/config.ts +0 -114
  274. package/.next/standalone/src/lib/embeds/detect.ts +0 -142
  275. package/.next/standalone/src/lib/git-secrets.ts +0 -65
  276. package/.next/standalone/src/lib/git.ts +0 -503
  277. package/.next/standalone/src/lib/google/detect.ts +0 -107
  278. package/.next/standalone/src/lib/markdown/parse-frontmatter.ts +0 -104
  279. package/.next/standalone/src/lib/markdown/remark-wikilinks.ts +0 -100
  280. package/.next/standalone/src/lib/markdown/sanitize-schema.ts +0 -106
  281. package/.next/standalone/src/lib/markdown/to-html.ts +0 -282
  282. package/.next/standalone/src/lib/markdown/to-markdown.ts +0 -252
  283. package/.next/standalone/src/lib/proof/activity-shared.ts +0 -31
  284. package/.next/standalone/src/lib/proof/activity.ts +0 -74
  285. package/.next/standalone/src/lib/proof/audit.ts +0 -88
  286. package/.next/standalone/src/lib/proof/auth.ts +0 -143
  287. package/.next/standalone/src/lib/proof/block-refs.ts +0 -133
  288. package/.next/standalone/src/lib/proof/blocks.ts +0 -73
  289. package/.next/standalone/src/lib/proof/client-auth.ts +0 -23
  290. package/.next/standalone/src/lib/proof/collab-state.ts +0 -81
  291. package/.next/standalone/src/lib/proof/event-bus.ts +0 -47
  292. package/.next/standalone/src/lib/proof/file-lock.ts +0 -43
  293. package/.next/standalone/src/lib/proof/glob.ts +0 -51
  294. package/.next/standalone/src/lib/proof/idempotency.ts +0 -37
  295. package/.next/standalone/src/lib/proof/lease.ts +0 -117
  296. package/.next/standalone/src/lib/proof/mutex.ts +0 -36
  297. package/.next/standalone/src/lib/proof/ops-applier.ts +0 -727
  298. package/.next/standalone/src/lib/proof/owner-auth.ts +0 -2
  299. package/.next/standalone/src/lib/proof/pending.ts +0 -97
  300. package/.next/standalone/src/lib/proof/proof-span.ts +0 -141
  301. package/.next/standalone/src/lib/proof/rate-limit.ts +0 -53
  302. package/.next/standalone/src/lib/proof/raw-fs.ts +0 -197
  303. package/.next/standalone/src/lib/proof/register-rate-limit.ts +0 -53
  304. package/.next/standalone/src/lib/proof/registry.ts +0 -195
  305. package/.next/standalone/src/lib/proof/sidecar.ts +0 -103
  306. package/.next/standalone/src/lib/proof/suggest-capture.ts +0 -69
  307. package/.next/standalone/src/lib/proof/types.ts +0 -182
  308. package/.next/standalone/src/lib/proof-config.ts +0 -14
  309. package/.next/standalone/src/lib/root-dir.ts +0 -35
  310. package/.next/standalone/src/lib/search/indexable-exts.ts +0 -25
  311. package/.next/standalone/src/lib/search/indexer.ts +0 -634
  312. package/.next/standalone/src/lib/search/sanitize.ts +0 -35
  313. package/.next/standalone/src/lib/search/search-db.ts +0 -57
  314. package/.next/standalone/src/lib/search/watcher-pool.ts +0 -79
  315. package/.next/standalone/src/lib/shared-docs/db.ts +0 -177
  316. package/.next/standalone/src/lib/toast.ts +0 -9
  317. package/.next/standalone/src/lib/utils.ts +0 -6
  318. package/.next/standalone/src/lib/wiki-helpers.ts +0 -36
  319. package/.next/standalone/src/lib/workspace-client.ts +0 -82
  320. package/.next/standalone/src/lib/workspace-context.ts +0 -173
  321. package/.next/standalone/src/lib/workspaces.ts +0 -400
  322. package/.next/standalone/src/middleware.ts +0 -44
  323. package/.next/standalone/src/stores/ai-panel-store.ts +0 -79
  324. package/.next/standalone/src/stores/editor-store.ts +0 -439
  325. package/.next/standalone/src/stores/pin-store.ts +0 -56
  326. package/.next/standalone/src/stores/proof-store.ts +0 -124
  327. package/.next/standalone/src/stores/recent-store.ts +0 -51
  328. package/.next/standalone/src/stores/search-store.ts +0 -104
  329. package/.next/standalone/src/stores/show-hidden-store.ts +0 -26
  330. package/.next/standalone/src/stores/sidebar-width-store.ts +0 -39
  331. package/.next/standalone/src/stores/skin-store.ts +0 -42
  332. package/.next/standalone/src/stores/tree-store.ts +0 -52
  333. package/.next/standalone/src/stores/view-width-store.ts +0 -101
  334. package/.next/standalone/src/stores/wiki-slugs-store.ts +0 -75
  335. package/.next/standalone/src/tests/proof/activity-aggregator.test.ts +0 -146
  336. package/.next/standalone/src/tests/proof/admin-create-user.test.ts +0 -43
  337. package/.next/standalone/src/tests/proof/agent-fs.test.ts +0 -973
  338. package/.next/standalone/src/tests/proof/agent-ownership.test.ts +0 -140
  339. package/.next/standalone/src/tests/proof/agent-workspace-scope.test.ts +0 -134
  340. package/.next/standalone/src/tests/proof/agents-install.test.ts +0 -110
  341. package/.next/standalone/src/tests/proof/bench-write.ts +0 -179
  342. package/.next/standalone/src/tests/proof/better-auth.test.ts +0 -68
  343. package/.next/standalone/src/tests/proof/block-refs.test.ts +0 -108
  344. package/.next/standalone/src/tests/proof/blocks.test.ts +0 -92
  345. package/.next/standalone/src/tests/proof/collab-state.test.ts +0 -501
  346. package/.next/standalone/src/tests/proof/comments-ops.test.ts +0 -177
  347. package/.next/standalone/src/tests/proof/editor-roundtrip.test.ts +0 -85
  348. package/.next/standalone/src/tests/proof/external-edit.test.ts +0 -58
  349. package/.next/standalone/src/tests/proof/file-lock.test.ts +0 -80
  350. package/.next/standalone/src/tests/proof/git-branches-checkout.test.ts +0 -136
  351. package/.next/standalone/src/tests/proof/git-read-features.test.ts +0 -473
  352. package/.next/standalone/src/tests/proof/git-secrets.test.ts +0 -138
  353. package/.next/standalone/src/tests/proof/git-sparse.test.ts +0 -257
  354. package/.next/standalone/src/tests/proof/git-workspace.test.ts +0 -135
  355. package/.next/standalone/src/tests/proof/git.test.ts +0 -243
  356. package/.next/standalone/src/tests/proof/glob.test.ts +0 -82
  357. package/.next/standalone/src/tests/proof/helpers/auth-session.ts +0 -27
  358. package/.next/standalone/src/tests/proof/markdown-to-html.test.ts +0 -46
  359. package/.next/standalone/src/tests/proof/ops-applier.test.ts +0 -368
  360. package/.next/standalone/src/tests/proof/owner-init.test.ts +0 -2
  361. package/.next/standalone/src/tests/proof/parse-frontmatter.test.ts +0 -60
  362. package/.next/standalone/src/tests/proof/preload.ts +0 -21
  363. package/.next/standalone/src/tests/proof/proof-span.test.ts +0 -98
  364. package/.next/standalone/src/tests/proof/rate-limit.test.ts +0 -54
  365. package/.next/standalone/src/tests/proof/readonly-enforcement.test.ts +0 -161
  366. package/.next/standalone/src/tests/proof/reconcile-sidecar.test.ts +0 -195
  367. package/.next/standalone/src/tests/proof/registration-flow.test.ts +0 -330
  368. package/.next/standalone/src/tests/proof/registry.test.ts +0 -169
  369. package/.next/standalone/src/tests/proof/routes.test.ts +0 -516
  370. package/.next/standalone/src/tests/proof/search-index.test.ts +0 -376
  371. package/.next/standalone/src/tests/proof/sidecar-lifecycle.test.ts +0 -177
  372. package/.next/standalone/src/tests/proof/sidecar-trim.test.ts +0 -58
  373. package/.next/standalone/src/tests/proof/suggestion-ops.test.ts +0 -280
  374. package/.next/standalone/src/tests/proof/wiki-content-put.test.ts +0 -140
  375. package/.next/standalone/src/tests/proof/wiki-routes-auth.test.ts +0 -208
  376. package/.next/standalone/src/tests/proof/workspace-isolation.test.ts +0 -87
  377. package/.next/standalone/src/tests/proof/workspaces-api.test.ts +0 -227
  378. package/.next/standalone/src/types/index.ts +0 -47
  379. package/.next/standalone/tailwind.config.ts +0 -191
  380. package/.next/standalone/tsconfig.json +0 -41
  381. package/.next/standalone/tsconfig.tsbuildinfo +0 -1
  382. /package/.next/standalone/.next/static/{WMOTgfV82apmdovxzgbMx → rRyvFORvJoc5OWbCR2A_P}/_buildManifest.js +0 -0
  383. /package/.next/standalone/.next/static/{WMOTgfV82apmdovxzgbMx → rRyvFORvJoc5OWbCR2A_P}/_clientMiddlewareManifest.js +0 -0
  384. /package/.next/standalone/.next/static/{WMOTgfV82apmdovxzgbMx → rRyvFORvJoc5OWbCR2A_P}/_ssgManifest.js +0 -0
@@ -1,206 +0,0 @@
1
- "use client";
2
-
3
- import { useState } from "react";
4
- import { authHeaders } from "@/lib/proof/client-auth";
5
- import { wsFetch } from "@/lib/workspace-client";
6
- import type { Suggestion } from "@/lib/proof/types";
7
-
8
- interface Props {
9
- suggestion: Suggestion;
10
- currentMarkdown: string; // current block content for replace diff
11
- path: string;
12
- baseRevision: number;
13
- /** Return the freshest known revision (for 409 retry). */
14
- getLatestRevision: () => number;
15
- top: number;
16
- left: number;
17
- width: number;
18
- onSettled: () => void; // called after accept or reject so parent can refresh
19
- readOnly?: boolean;
20
- }
21
-
22
- function kindVerb(kind: Suggestion["kind"]): string {
23
- switch (kind) {
24
- case "replace": return "replacing this block";
25
- case "insertAfter": return "inserting content after this block";
26
- case "insertBefore": return "inserting content before this block";
27
- case "delete": return "deleting this block";
28
- }
29
- }
30
-
31
- async function postOp(
32
- path: string,
33
- baseRevision: number,
34
- opType: "suggestion.accept" | "suggestion.reject",
35
- suggestionId: string,
36
- ): Promise<{ ok: boolean; status: number }> {
37
- const encodedPath = encodeURIComponent(path).replace(/%2F/g, "/");
38
- const res = await wsFetch(`/api/agent/files/${encodedPath}`, {
39
- method: "POST",
40
- headers: {
41
- "Content-Type": "application/json",
42
- "Idempotency-Key": crypto.randomUUID(),
43
- ...authHeaders(),
44
- },
45
- body: JSON.stringify({
46
- baseRevision,
47
- by: "human",
48
- ops: [{ type: opType, suggestionId }],
49
- }),
50
- });
51
- return { ok: res.ok, status: res.status };
52
- }
53
-
54
- /**
55
- * Inline suggestion card rendered as an absolutely-positioned sibling to
56
- * the ProseMirror editor. NOT mounted inside the editor DOM tree.
57
- *
58
- * Phase D coordination: this component uses `top`/`left`/`width` computed by
59
- * the editor's block-ref position tracker. Phase D's comment-pip uses the
60
- * same tracker (see editor.tsx: useBlockRefPositions).
61
- */
62
- export function SuggestionCard({
63
- suggestion,
64
- currentMarkdown,
65
- path,
66
- baseRevision,
67
- getLatestRevision,
68
- top,
69
- left,
70
- width,
71
- onSettled,
72
- readOnly,
73
- }: Props) {
74
- const [busy, setBusy] = useState(false);
75
-
76
- async function handleAccept() {
77
- if (busy) return;
78
- setBusy(true);
79
- try {
80
- let result = await postOp(path, baseRevision, "suggestion.accept", suggestion.id);
81
- // On 409 retry once with latest known revision
82
- if (!result.ok && result.status === 409) {
83
- result = await postOp(path, getLatestRevision(), "suggestion.accept", suggestion.id);
84
- }
85
- } finally {
86
- setBusy(false);
87
- onSettled();
88
- }
89
- }
90
-
91
- async function handleReject() {
92
- if (busy) return;
93
- setBusy(true);
94
- try {
95
- await postOp(path, baseRevision, "suggestion.reject", suggestion.id);
96
- } finally {
97
- setBusy(false);
98
- onSettled();
99
- }
100
- }
101
-
102
- const isDelete = suggestion.kind === "delete";
103
- const isInsert = suggestion.kind === "insertAfter" || suggestion.kind === "insertBefore";
104
-
105
- return (
106
- <div
107
- style={{
108
- position: "absolute",
109
- top,
110
- left,
111
- width: width > 0 ? width : undefined,
112
- zIndex: 30,
113
- }}
114
- className="my-1 rounded-lg border border-border bg-card shadow-md text-[12px] overflow-hidden"
115
- role="region"
116
- aria-label={`Suggestion by ${suggestion.by}`}
117
- >
118
- {/* Header */}
119
- <div className="flex items-center justify-between px-3 py-2 bg-muted/50 border-b border-border">
120
- <span className="font-medium text-foreground">
121
- <span className="text-primary">{suggestion.by}</span>
122
- {" suggests "}
123
- <span className="text-muted-foreground">{kindVerb(suggestion.kind)}</span>
124
- </span>
125
- </div>
126
-
127
- {/* Body */}
128
- <div className="p-3 space-y-2">
129
- {/* replace: two-pane diff */}
130
- {suggestion.kind === "replace" && (
131
- <>
132
- <div>
133
- <p className="text-[10px] uppercase tracking-wider text-muted-foreground/60 mb-1">
134
- ─ current ─
135
- </p>
136
- <pre className="whitespace-pre-wrap font-mono text-[11px] text-muted-foreground bg-destructive/5 rounded px-2 py-1">
137
- {currentMarkdown || "(empty)"}
138
- </pre>
139
- </div>
140
- <div>
141
- <p className="text-[10px] uppercase tracking-wider text-muted-foreground/60 mb-1">
142
- ─ proposed ─
143
- </p>
144
- <pre className="whitespace-pre-wrap font-mono text-[11px] text-foreground bg-primary/5 rounded px-2 py-1">
145
- {suggestion.markdown ?? "(empty)"}
146
- </pre>
147
- </div>
148
- </>
149
- )}
150
-
151
- {/* insert: proposed content with label */}
152
- {isInsert && (
153
- <div>
154
- <p className="text-[10px] uppercase tracking-wider text-muted-foreground/60 mb-1">
155
- ─ will be inserted ─
156
- </p>
157
- <pre className="whitespace-pre-wrap font-mono text-[11px] text-foreground bg-primary/5 rounded px-2 py-1">
158
- {suggestion.markdown ?? "(empty)"}
159
- </pre>
160
- </div>
161
- )}
162
-
163
- {/* delete: current content struck through */}
164
- {isDelete && (
165
- <div>
166
- <p className="text-[10px] uppercase tracking-wider text-muted-foreground/60 mb-1">
167
- ─ will be deleted ─
168
- </p>
169
- <pre className="whitespace-pre-wrap font-mono text-[11px] text-muted-foreground line-through bg-destructive/5 rounded px-2 py-1">
170
- {currentMarkdown || "(empty)"}
171
- </pre>
172
- </div>
173
- )}
174
-
175
- {/* Reason */}
176
- {suggestion.basisDetail && (
177
- <p className="italic text-muted-foreground/70 text-[11px]">
178
- Reason: {suggestion.basisDetail}
179
- </p>
180
- )}
181
- </div>
182
-
183
- {/* Actions */}
184
- {!readOnly && (
185
- <div className="flex items-center gap-2 px-3 py-2 border-t border-border bg-muted/30">
186
- <button
187
- type="button"
188
- disabled={busy}
189
- onClick={() => void handleAccept()}
190
- className="flex-1 py-1 rounded-md bg-primary text-primary-foreground text-[11px] font-medium hover:bg-primary/90 disabled:opacity-50 transition-colors"
191
- >
192
- Accept
193
- </button>
194
- <button
195
- type="button"
196
- disabled={busy}
197
- onClick={() => void handleReject()}
198
- className="flex-1 py-1 rounded-md border border-border text-[11px] font-medium hover:bg-accent disabled:opacity-50 transition-colors"
199
- >
200
- Reject
201
- </button>
202
- </div>
203
- )}
204
- </div>
205
- );
206
- }
@@ -1,232 +0,0 @@
1
- "use client";
2
-
3
- import {
4
- cellAround,
5
- isInTable,
6
- moveTableColumn,
7
- moveTableRow,
8
- selectedRect,
9
- } from "@tiptap/pm/tables";
10
- import type { Editor } from "@tiptap/react";
11
- import { BubbleMenu } from "@tiptap/react/menus";
12
- import {
13
- ArrowDown,
14
- ArrowLeft,
15
- ArrowRight,
16
- ArrowUp,
17
- Columns3,
18
- PanelLeft,
19
- PanelTop,
20
- Rows3,
21
- Table,
22
- Trash2,
23
- } from "lucide-react";
24
- import { cn } from "@/lib/utils";
25
-
26
- interface TableMenuProps {
27
- editor: Editor | null;
28
- }
29
-
30
- interface TableButtonProps {
31
- label: string;
32
- icon: React.ComponentType<{ className?: string }>;
33
- disabled?: boolean;
34
- active?: boolean;
35
- danger?: boolean;
36
- onAction: () => void;
37
- }
38
-
39
- function TableButton({
40
- label,
41
- icon: Icon,
42
- disabled,
43
- active,
44
- danger,
45
- onAction,
46
- }: TableButtonProps) {
47
- return (
48
- <button
49
- type="button"
50
- aria-label={label}
51
- title={label}
52
- disabled={disabled}
53
- onMouseDown={(event) => event.preventDefault()}
54
- onClick={(event) => {
55
- event.preventDefault();
56
- onAction();
57
- }}
58
- className={cn(
59
- "h-7 w-7 inline-flex items-center justify-center rounded text-foreground/80 hover:bg-accent transition-colors disabled:pointer-events-none disabled:opacity-35",
60
- active && "bg-accent text-foreground",
61
- danger && "text-destructive hover:bg-destructive/10",
62
- )}
63
- >
64
- <Icon className="h-3.5 w-3.5" />
65
- </button>
66
- );
67
- }
68
-
69
- function Separator() {
70
- return <div className="mx-1 h-5 w-px bg-border" />;
71
- }
72
-
73
- export function TableMenu({ editor }: TableMenuProps) {
74
- if (!editor) return null;
75
-
76
- const getRect = () => {
77
- if (!isInTable(editor.state)) return null;
78
- try {
79
- return selectedRect(editor.state);
80
- } catch {
81
- return null;
82
- }
83
- };
84
-
85
- const run = (action: () => boolean) => {
86
- const ok = action();
87
- if (ok) {
88
- editor.commands.focus();
89
- editor.commands.fixTables();
90
- }
91
- };
92
-
93
- const moveRow = (direction: -1 | 1) => {
94
- const rect = getRect();
95
- if (!rect) return;
96
- const from = rect.top;
97
- const to = from + direction;
98
- if (to < 0 || to >= rect.map.height) return;
99
- moveTableRow({ from, to })(editor.state, editor.view.dispatch);
100
- editor.commands.focus();
101
- };
102
-
103
- const moveColumn = (direction: -1 | 1) => {
104
- const rect = getRect();
105
- if (!rect) return;
106
- const from = rect.left;
107
- const to = from + direction;
108
- if (to < 0 || to >= rect.map.width) return;
109
- moveTableColumn({ from, to })(editor.state, editor.view.dispatch);
110
- editor.commands.focus();
111
- };
112
-
113
- const selectCellText = () => {
114
- const $cell = cellAround(editor.state.selection.$from);
115
- const cell = $cell?.nodeAfter;
116
- if (!$cell || !cell) return;
117
- editor
118
- .chain()
119
- .focus()
120
- .setTextSelection({
121
- from: $cell.pos + 1,
122
- to: $cell.pos + cell.nodeSize - 1,
123
- })
124
- .run();
125
- };
126
-
127
- const rect = getRect();
128
- const canMoveRowUp = !!rect && rect.top > 0;
129
- const canMoveRowDown = !!rect && rect.top < rect.map.height - 1;
130
- const canMoveColumnLeft = !!rect && rect.left > 0;
131
- const canMoveColumnRight = !!rect && rect.left < rect.map.width - 1;
132
-
133
- return (
134
- <BubbleMenu
135
- editor={editor}
136
- pluginKey="tableMenu"
137
- options={{ placement: "top", offset: 10 }}
138
- shouldShow={({ editor: activeEditor }) => activeEditor.isActive("table")}
139
- className="flex items-center gap-0.5 rounded-md border border-border bg-popover px-1 py-1 shadow-lg"
140
- >
141
- <TableButton
142
- label="Select cell text"
143
- icon={Table}
144
- onAction={selectCellText}
145
- />
146
- <Separator />
147
- <TableButton
148
- label="Add row above"
149
- icon={Rows3}
150
- onAction={() => run(() => editor.chain().focus().addRowBefore().run())}
151
- />
152
- <TableButton
153
- label="Add row below"
154
- icon={ArrowDown}
155
- onAction={() => run(() => editor.chain().focus().addRowAfter().run())}
156
- />
157
- <TableButton
158
- label="Move row up"
159
- icon={ArrowUp}
160
- disabled={!canMoveRowUp}
161
- onAction={() => moveRow(-1)}
162
- />
163
- <TableButton
164
- label="Move row down"
165
- icon={ArrowDown}
166
- disabled={!canMoveRowDown}
167
- onAction={() => moveRow(1)}
168
- />
169
- <TableButton
170
- label="Delete row"
171
- icon={Trash2}
172
- danger
173
- onAction={() => run(() => editor.chain().focus().deleteRow().run())}
174
- />
175
- <Separator />
176
- <TableButton
177
- label="Add column before"
178
- icon={Columns3}
179
- onAction={() =>
180
- run(() => editor.chain().focus().addColumnBefore().run())
181
- }
182
- />
183
- <TableButton
184
- label="Add column after"
185
- icon={ArrowRight}
186
- onAction={() =>
187
- run(() => editor.chain().focus().addColumnAfter().run())
188
- }
189
- />
190
- <TableButton
191
- label="Move column left"
192
- icon={ArrowLeft}
193
- disabled={!canMoveColumnLeft}
194
- onAction={() => moveColumn(-1)}
195
- />
196
- <TableButton
197
- label="Move column right"
198
- icon={ArrowRight}
199
- disabled={!canMoveColumnRight}
200
- onAction={() => moveColumn(1)}
201
- />
202
- <TableButton
203
- label="Delete column"
204
- icon={Trash2}
205
- danger
206
- onAction={() => run(() => editor.chain().focus().deleteColumn().run())}
207
- />
208
- <Separator />
209
- <TableButton
210
- label="Toggle header row"
211
- icon={PanelTop}
212
- onAction={() =>
213
- run(() => editor.chain().focus().toggleHeaderRow().run())
214
- }
215
- />
216
- <TableButton
217
- label="Toggle header column"
218
- icon={PanelLeft}
219
- onAction={() =>
220
- run(() => editor.chain().focus().toggleHeaderColumn().run())
221
- }
222
- />
223
- <Separator />
224
- <TableButton
225
- label="Delete table"
226
- icon={Trash2}
227
- danger
228
- onAction={() => editor.chain().focus().deleteTable().run()}
229
- />
230
- </BubbleMenu>
231
- );
232
- }
@@ -1,77 +0,0 @@
1
- "use client";
2
-
3
- import { MessageCircle } from "lucide-react";
4
- import { type RefObject, useEffect, useState } from "react";
5
-
6
- interface Props {
7
- /** The scrollable container that wraps the editor content. */
8
- containerRef: RefObject<HTMLElement | null>;
9
- onComment: () => void;
10
- }
11
-
12
- /**
13
- * Floating comment button for read-only view mode.
14
- *
15
- * TipTap's BubbleMenu doesn't fire when the editor is non-editable, so this
16
- * component listens to the native selectionchange event and positions a small
17
- * button above whatever the user has selected — as long as the selection is
18
- * inside the editor container.
19
- */
20
- export function ViewModeCommentButton({ containerRef, onComment }: Props) {
21
- const [pos, setPos] = useState<{ top: number; left: number } | null>(null);
22
-
23
- useEffect(() => {
24
- function update() {
25
- const sel = window.getSelection();
26
- if (!sel || sel.isCollapsed || sel.rangeCount === 0) {
27
- setPos(null);
28
- return;
29
- }
30
- const range = sel.getRangeAt(0);
31
- const container = containerRef.current;
32
- if (!container || !container.contains(range.commonAncestorContainer)) {
33
- setPos(null);
34
- return;
35
- }
36
- const rect = range.getBoundingClientRect();
37
- // rect can be all-zeros for collapsed or invisible ranges
38
- if (rect.width === 0 && rect.height === 0) {
39
- setPos(null);
40
- return;
41
- }
42
- setPos({
43
- top: rect.top - 38,
44
- left: rect.left + rect.width / 2,
45
- });
46
- }
47
-
48
- document.addEventListener("selectionchange", update);
49
- return () => document.removeEventListener("selectionchange", update);
50
- }, [containerRef]);
51
-
52
- if (!pos) return null;
53
-
54
- return (
55
- <button
56
- type="button"
57
- style={{
58
- position: "fixed",
59
- top: pos.top,
60
- left: pos.left,
61
- transform: "translateX(-50%)",
62
- zIndex: 50,
63
- }}
64
- className="flex items-center gap-1 px-2 py-1 bg-popover border border-border rounded-sm shadow-lg text-[12px] text-foreground/80 hover:text-foreground hover:bg-accent transition-colors"
65
- onMouseDown={(e) => e.preventDefault()}
66
- onClick={() => {
67
- onComment();
68
- setPos(null);
69
- }}
70
- aria-label="Add comment"
71
- title="Add comment"
72
- >
73
- <MessageCircle className="w-3.5 h-3.5" />
74
- <span>Comment</span>
75
- </button>
76
- );
77
- }
@@ -1,75 +0,0 @@
1
- "use client";
2
-
3
- import { ArrowLeft, 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 WebsiteViewerProps {
9
- path: string;
10
- title: string;
11
- /** Override iframe src. Defaults to `/api/assets/{path}/index.html`. */
12
- src?: string;
13
- fullscreen?: boolean;
14
- onExit?: () => void;
15
- }
16
-
17
- export function WebsiteViewer({
18
- path,
19
- title,
20
- src,
21
- fullscreen,
22
- onExit,
23
- }: WebsiteViewerProps) {
24
- const iframeSrc = withWs(src ?? `/api/assets/${path}/index.html`);
25
- const exitButton =
26
- fullscreen && onExit ? (
27
- <Button
28
- variant="ghost"
29
- size="sm"
30
- className="h-7 gap-1.5 text-xs"
31
- onClick={onExit}
32
- title="Exit app"
33
- >
34
- <ArrowLeft className="h-3.5 w-3.5" />
35
- Exit app
36
- </Button>
37
- ) : null;
38
-
39
- return (
40
- <div className="flex-1 flex flex-col overflow-hidden">
41
- <ViewerToolbar
42
- path={path}
43
- badge={fullscreen ? "App" : undefined}
44
- showBreadcrumb={!fullscreen}
45
- leading={
46
- fullscreen ? (
47
- <>
48
- {exitButton}
49
- <span className="truncate text-[13px] font-medium text-foreground">
50
- {title}
51
- </span>
52
- </>
53
- ) : null
54
- }
55
- >
56
- <Button
57
- variant="ghost"
58
- size="sm"
59
- className="h-7 gap-1.5 text-xs"
60
- onClick={() => window.open(iframeSrc, "_blank")}
61
- >
62
- <ExternalLink className="h-3.5 w-3.5" />
63
- Open in new tab
64
- </Button>
65
- </ViewerToolbar>
66
-
67
- <iframe
68
- src={iframeSrc}
69
- className="flex-1 w-full border-0 bg-card"
70
- title={title}
71
- sandbox="allow-scripts allow-same-origin allow-forms allow-popups allow-top-navigation-by-user-activation"
72
- />
73
- </div>
74
- );
75
- }