kontexta 4.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (788) hide show
  1. package/LICENSE +191 -0
  2. package/README.md +58 -0
  3. package/bundle/standalone/CHANGELOG.md +382 -0
  4. package/bundle/standalone/apps/web/.next/BUILD_ID +1 -0
  5. package/bundle/standalone/apps/web/.next/app-build-manifest.json +403 -0
  6. package/bundle/standalone/apps/web/.next/app-path-routes-manifest.json +60 -0
  7. package/bundle/standalone/apps/web/.next/build-manifest.json +33 -0
  8. package/bundle/standalone/apps/web/.next/package.json +1 -0
  9. package/bundle/standalone/apps/web/.next/prerender-manifest.json +148 -0
  10. package/bundle/standalone/apps/web/.next/react-loadable-manifest.json +300 -0
  11. package/bundle/standalone/apps/web/.next/required-server-files.json +344 -0
  12. package/bundle/standalone/apps/web/.next/routes-manifest.json +210 -0
  13. package/bundle/standalone/apps/web/.next/server/app/_not-found/page.js +2 -0
  14. package/bundle/standalone/apps/web/.next/server/app/_not-found/page.js.nft.json +1 -0
  15. package/bundle/standalone/apps/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -0
  16. package/bundle/standalone/apps/web/.next/server/app/_not-found.html +1 -0
  17. package/bundle/standalone/apps/web/.next/server/app/_not-found.meta +8 -0
  18. package/bundle/standalone/apps/web/.next/server/app/_not-found.rsc +22 -0
  19. package/bundle/standalone/apps/web/.next/server/app/api/about/route.js +1 -0
  20. package/bundle/standalone/apps/web/.next/server/app/api/about/route.js.nft.json +1 -0
  21. package/bundle/standalone/apps/web/.next/server/app/api/about/route_client-reference-manifest.js +1 -0
  22. package/bundle/standalone/apps/web/.next/server/app/api/auth/login/route.js +1 -0
  23. package/bundle/standalone/apps/web/.next/server/app/api/auth/login/route.js.nft.json +1 -0
  24. package/bundle/standalone/apps/web/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -0
  25. package/bundle/standalone/apps/web/.next/server/app/api/auth/logout/route.js +1 -0
  26. package/bundle/standalone/apps/web/.next/server/app/api/auth/logout/route.js.nft.json +1 -0
  27. package/bundle/standalone/apps/web/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -0
  28. package/bundle/standalone/apps/web/.next/server/app/api/auth/setup/route.js +1 -0
  29. package/bundle/standalone/apps/web/.next/server/app/api/auth/setup/route.js.nft.json +1 -0
  30. package/bundle/standalone/apps/web/.next/server/app/api/auth/setup/route_client-reference-manifest.js +1 -0
  31. package/bundle/standalone/apps/web/.next/server/app/api/auth/status/route.js +1 -0
  32. package/bundle/standalone/apps/web/.next/server/app/api/auth/status/route.js.nft.json +1 -0
  33. package/bundle/standalone/apps/web/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -0
  34. package/bundle/standalone/apps/web/.next/server/app/api/auth/token/route.js +1 -0
  35. package/bundle/standalone/apps/web/.next/server/app/api/auth/token/route.js.nft.json +1 -0
  36. package/bundle/standalone/apps/web/.next/server/app/api/auth/token/route_client-reference-manifest.js +1 -0
  37. package/bundle/standalone/apps/web/.next/server/app/api/calendar/conflicts/route.js +1 -0
  38. package/bundle/standalone/apps/web/.next/server/app/api/calendar/conflicts/route.js.nft.json +1 -0
  39. package/bundle/standalone/apps/web/.next/server/app/api/calendar/conflicts/route_client-reference-manifest.js +1 -0
  40. package/bundle/standalone/apps/web/.next/server/app/api/calendar/entities/[id]/route.js +1 -0
  41. package/bundle/standalone/apps/web/.next/server/app/api/calendar/entities/[id]/route.js.nft.json +1 -0
  42. package/bundle/standalone/apps/web/.next/server/app/api/calendar/entities/[id]/route_client-reference-manifest.js +1 -0
  43. package/bundle/standalone/apps/web/.next/server/app/api/calendar/entities/route.js +1 -0
  44. package/bundle/standalone/apps/web/.next/server/app/api/calendar/entities/route.js.nft.json +1 -0
  45. package/bundle/standalone/apps/web/.next/server/app/api/calendar/entities/route_client-reference-manifest.js +1 -0
  46. package/bundle/standalone/apps/web/.next/server/app/api/calendar/events/[id]/route.js +1 -0
  47. package/bundle/standalone/apps/web/.next/server/app/api/calendar/events/[id]/route.js.nft.json +1 -0
  48. package/bundle/standalone/apps/web/.next/server/app/api/calendar/events/[id]/route_client-reference-manifest.js +1 -0
  49. package/bundle/standalone/apps/web/.next/server/app/api/calendar/events/route.js +1 -0
  50. package/bundle/standalone/apps/web/.next/server/app/api/calendar/events/route.js.nft.json +1 -0
  51. package/bundle/standalone/apps/web/.next/server/app/api/calendar/events/route_client-reference-manifest.js +1 -0
  52. package/bundle/standalone/apps/web/.next/server/app/api/calendar/ics/route.js +1 -0
  53. package/bundle/standalone/apps/web/.next/server/app/api/calendar/ics/route.js.nft.json +1 -0
  54. package/bundle/standalone/apps/web/.next/server/app/api/calendar/ics/route_client-reference-manifest.js +1 -0
  55. package/bundle/standalone/apps/web/.next/server/app/api/calendar/links/route.js +1 -0
  56. package/bundle/standalone/apps/web/.next/server/app/api/calendar/links/route.js.nft.json +1 -0
  57. package/bundle/standalone/apps/web/.next/server/app/api/calendar/links/route_client-reference-manifest.js +1 -0
  58. package/bundle/standalone/apps/web/.next/server/app/api/calendar/settings/route.js +1 -0
  59. package/bundle/standalone/apps/web/.next/server/app/api/calendar/settings/route.js.nft.json +1 -0
  60. package/bundle/standalone/apps/web/.next/server/app/api/calendar/settings/route_client-reference-manifest.js +1 -0
  61. package/bundle/standalone/apps/web/.next/server/app/api/clip/route.js +1 -0
  62. package/bundle/standalone/apps/web/.next/server/app/api/clip/route.js.nft.json +1 -0
  63. package/bundle/standalone/apps/web/.next/server/app/api/clip/route_client-reference-manifest.js +1 -0
  64. package/bundle/standalone/apps/web/.next/server/app/api/docker-config/route.js +1 -0
  65. package/bundle/standalone/apps/web/.next/server/app/api/docker-config/route.js.nft.json +1 -0
  66. package/bundle/standalone/apps/web/.next/server/app/api/docker-config/route_client-reference-manifest.js +1 -0
  67. package/bundle/standalone/apps/web/.next/server/app/api/export/zip/route.js +1 -0
  68. package/bundle/standalone/apps/web/.next/server/app/api/export/zip/route.js.nft.json +1 -0
  69. package/bundle/standalone/apps/web/.next/server/app/api/export/zip/route_client-reference-manifest.js +1 -0
  70. package/bundle/standalone/apps/web/.next/server/app/api/files/[id]/download/route.js +1 -0
  71. package/bundle/standalone/apps/web/.next/server/app/api/files/[id]/download/route.js.nft.json +1 -0
  72. package/bundle/standalone/apps/web/.next/server/app/api/files/[id]/download/route_client-reference-manifest.js +1 -0
  73. package/bundle/standalone/apps/web/.next/server/app/api/files/[id]/export-pdf/route.js +1 -0
  74. package/bundle/standalone/apps/web/.next/server/app/api/files/[id]/export-pdf/route.js.nft.json +1 -0
  75. package/bundle/standalone/apps/web/.next/server/app/api/files/[id]/export-pdf/route_client-reference-manifest.js +1 -0
  76. package/bundle/standalone/apps/web/.next/server/app/api/files/[id]/history/restore/route.js +1 -0
  77. package/bundle/standalone/apps/web/.next/server/app/api/files/[id]/history/restore/route.js.nft.json +1 -0
  78. package/bundle/standalone/apps/web/.next/server/app/api/files/[id]/history/restore/route_client-reference-manifest.js +1 -0
  79. package/bundle/standalone/apps/web/.next/server/app/api/files/[id]/history/route.js +1 -0
  80. package/bundle/standalone/apps/web/.next/server/app/api/files/[id]/history/route.js.nft.json +1 -0
  81. package/bundle/standalone/apps/web/.next/server/app/api/files/[id]/history/route_client-reference-manifest.js +1 -0
  82. package/bundle/standalone/apps/web/.next/server/app/api/files/[id]/move/route.js +1 -0
  83. package/bundle/standalone/apps/web/.next/server/app/api/files/[id]/move/route.js.nft.json +1 -0
  84. package/bundle/standalone/apps/web/.next/server/app/api/files/[id]/move/route_client-reference-manifest.js +1 -0
  85. package/bundle/standalone/apps/web/.next/server/app/api/files/[id]/route.js +1 -0
  86. package/bundle/standalone/apps/web/.next/server/app/api/files/[id]/route.js.nft.json +1 -0
  87. package/bundle/standalone/apps/web/.next/server/app/api/files/[id]/route_client-reference-manifest.js +1 -0
  88. package/bundle/standalone/apps/web/.next/server/app/api/files/route.js +1 -0
  89. package/bundle/standalone/apps/web/.next/server/app/api/files/route.js.nft.json +1 -0
  90. package/bundle/standalone/apps/web/.next/server/app/api/files/route_client-reference-manifest.js +1 -0
  91. package/bundle/standalone/apps/web/.next/server/app/api/files/upload/route.js +1 -0
  92. package/bundle/standalone/apps/web/.next/server/app/api/files/upload/route.js.nft.json +1 -0
  93. package/bundle/standalone/apps/web/.next/server/app/api/files/upload/route_client-reference-manifest.js +1 -0
  94. package/bundle/standalone/apps/web/.next/server/app/api/folders/route.js +1 -0
  95. package/bundle/standalone/apps/web/.next/server/app/api/folders/route.js.nft.json +1 -0
  96. package/bundle/standalone/apps/web/.next/server/app/api/folders/route_client-reference-manifest.js +1 -0
  97. package/bundle/standalone/apps/web/.next/server/app/api/git/remote/route.js +1 -0
  98. package/bundle/standalone/apps/web/.next/server/app/api/git/remote/route.js.nft.json +1 -0
  99. package/bundle/standalone/apps/web/.next/server/app/api/git/remote/route_client-reference-manifest.js +1 -0
  100. package/bundle/standalone/apps/web/.next/server/app/api/git/sync-all/route.js +1 -0
  101. package/bundle/standalone/apps/web/.next/server/app/api/git/sync-all/route.js.nft.json +1 -0
  102. package/bundle/standalone/apps/web/.next/server/app/api/git/sync-all/route_client-reference-manifest.js +1 -0
  103. package/bundle/standalone/apps/web/.next/server/app/api/hands/test-pattern/route.js +1 -0
  104. package/bundle/standalone/apps/web/.next/server/app/api/hands/test-pattern/route.js.nft.json +1 -0
  105. package/bundle/standalone/apps/web/.next/server/app/api/hands/test-pattern/route_client-reference-manifest.js +1 -0
  106. package/bundle/standalone/apps/web/.next/server/app/api/hands/validate/route.js +1 -0
  107. package/bundle/standalone/apps/web/.next/server/app/api/hands/validate/route.js.nft.json +1 -0
  108. package/bundle/standalone/apps/web/.next/server/app/api/hands/validate/route_client-reference-manifest.js +1 -0
  109. package/bundle/standalone/apps/web/.next/server/app/api/health/route.js +1 -0
  110. package/bundle/standalone/apps/web/.next/server/app/api/health/route.js.nft.json +1 -0
  111. package/bundle/standalone/apps/web/.next/server/app/api/health/route_client-reference-manifest.js +1 -0
  112. package/bundle/standalone/apps/web/.next/server/app/api/install-snippets/route.js +17 -0
  113. package/bundle/standalone/apps/web/.next/server/app/api/install-snippets/route.js.nft.json +1 -0
  114. package/bundle/standalone/apps/web/.next/server/app/api/install-snippets/route_client-reference-manifest.js +1 -0
  115. package/bundle/standalone/apps/web/.next/server/app/api/mcp-tools/route.js +1 -0
  116. package/bundle/standalone/apps/web/.next/server/app/api/mcp-tools/route.js.nft.json +1 -0
  117. package/bundle/standalone/apps/web/.next/server/app/api/mcp-tools/route_client-reference-manifest.js +1 -0
  118. package/bundle/standalone/apps/web/.next/server/app/api/profile/route.js +1 -0
  119. package/bundle/standalone/apps/web/.next/server/app/api/profile/route.js.nft.json +1 -0
  120. package/bundle/standalone/apps/web/.next/server/app/api/profile/route_client-reference-manifest.js +1 -0
  121. package/bundle/standalone/apps/web/.next/server/app/api/projects/[id]/hands-config/route.js +1 -0
  122. package/bundle/standalone/apps/web/.next/server/app/api/projects/[id]/hands-config/route.js.nft.json +1 -0
  123. package/bundle/standalone/apps/web/.next/server/app/api/projects/[id]/hands-config/route_client-reference-manifest.js +1 -0
  124. package/bundle/standalone/apps/web/.next/server/app/api/projects/[id]/journal-config/route.js +1 -0
  125. package/bundle/standalone/apps/web/.next/server/app/api/projects/[id]/journal-config/route.js.nft.json +1 -0
  126. package/bundle/standalone/apps/web/.next/server/app/api/projects/[id]/journal-config/route_client-reference-manifest.js +1 -0
  127. package/bundle/standalone/apps/web/.next/server/app/api/projects/[id]/journal-status/route.js +1 -0
  128. package/bundle/standalone/apps/web/.next/server/app/api/projects/[id]/journal-status/route.js.nft.json +1 -0
  129. package/bundle/standalone/apps/web/.next/server/app/api/projects/[id]/journal-status/route_client-reference-manifest.js +1 -0
  130. package/bundle/standalone/apps/web/.next/server/app/api/projects/[id]/onboard/route.js +1 -0
  131. package/bundle/standalone/apps/web/.next/server/app/api/projects/[id]/onboard/route.js.nft.json +1 -0
  132. package/bundle/standalone/apps/web/.next/server/app/api/projects/[id]/onboard/route_client-reference-manifest.js +1 -0
  133. package/bundle/standalone/apps/web/.next/server/app/api/projects/[id]/refresh/route.js +1 -0
  134. package/bundle/standalone/apps/web/.next/server/app/api/projects/[id]/refresh/route.js.nft.json +1 -0
  135. package/bundle/standalone/apps/web/.next/server/app/api/projects/[id]/refresh/route_client-reference-manifest.js +1 -0
  136. package/bundle/standalone/apps/web/.next/server/app/api/projects/[id]/route.js +1 -0
  137. package/bundle/standalone/apps/web/.next/server/app/api/projects/[id]/route.js.nft.json +1 -0
  138. package/bundle/standalone/apps/web/.next/server/app/api/projects/[id]/route_client-reference-manifest.js +1 -0
  139. package/bundle/standalone/apps/web/.next/server/app/api/projects/[id]/sync/route.js +1 -0
  140. package/bundle/standalone/apps/web/.next/server/app/api/projects/[id]/sync/route.js.nft.json +1 -0
  141. package/bundle/standalone/apps/web/.next/server/app/api/projects/[id]/sync/route_client-reference-manifest.js +1 -0
  142. package/bundle/standalone/apps/web/.next/server/app/api/projects/onboard/route.js +1 -0
  143. package/bundle/standalone/apps/web/.next/server/app/api/projects/onboard/route.js.nft.json +1 -0
  144. package/bundle/standalone/apps/web/.next/server/app/api/projects/onboard/route_client-reference-manifest.js +1 -0
  145. package/bundle/standalone/apps/web/.next/server/app/api/projects/route.js +1 -0
  146. package/bundle/standalone/apps/web/.next/server/app/api/projects/route.js.nft.json +1 -0
  147. package/bundle/standalone/apps/web/.next/server/app/api/projects/route_client-reference-manifest.js +1 -0
  148. package/bundle/standalone/apps/web/.next/server/app/api/publish/html/route.js +1 -0
  149. package/bundle/standalone/apps/web/.next/server/app/api/publish/html/route.js.nft.json +1 -0
  150. package/bundle/standalone/apps/web/.next/server/app/api/publish/html/route_client-reference-manifest.js +1 -0
  151. package/bundle/standalone/apps/web/.next/server/app/api/publish/route.js +1 -0
  152. package/bundle/standalone/apps/web/.next/server/app/api/publish/route.js.nft.json +1 -0
  153. package/bundle/standalone/apps/web/.next/server/app/api/publish/route_client-reference-manifest.js +1 -0
  154. package/bundle/standalone/apps/web/.next/server/app/api/refresh/route.js +1 -0
  155. package/bundle/standalone/apps/web/.next/server/app/api/refresh/route.js.nft.json +1 -0
  156. package/bundle/standalone/apps/web/.next/server/app/api/refresh/route_client-reference-manifest.js +1 -0
  157. package/bundle/standalone/apps/web/.next/server/app/api/reindex/route.js +1 -0
  158. package/bundle/standalone/apps/web/.next/server/app/api/reindex/route.js.nft.json +1 -0
  159. package/bundle/standalone/apps/web/.next/server/app/api/reindex/route_client-reference-manifest.js +1 -0
  160. package/bundle/standalone/apps/web/.next/server/app/api/search/route.js +1 -0
  161. package/bundle/standalone/apps/web/.next/server/app/api/search/route.js.nft.json +1 -0
  162. package/bundle/standalone/apps/web/.next/server/app/api/search/route_client-reference-manifest.js +1 -0
  163. package/bundle/standalone/apps/web/.next/server/app/api/tags/route.js +1 -0
  164. package/bundle/standalone/apps/web/.next/server/app/api/tags/route.js.nft.json +1 -0
  165. package/bundle/standalone/apps/web/.next/server/app/api/tags/route_client-reference-manifest.js +1 -0
  166. package/bundle/standalone/apps/web/.next/server/app/api/ws-config/route.js +1 -0
  167. package/bundle/standalone/apps/web/.next/server/app/api/ws-config/route.js.nft.json +1 -0
  168. package/bundle/standalone/apps/web/.next/server/app/api/ws-config/route_client-reference-manifest.js +1 -0
  169. package/bundle/standalone/apps/web/.next/server/app/apple-icon.png/route.js +1 -0
  170. package/bundle/standalone/apps/web/.next/server/app/apple-icon.png/route.js.nft.json +1 -0
  171. package/bundle/standalone/apps/web/.next/server/app/apple-icon.png.body +0 -0
  172. package/bundle/standalone/apps/web/.next/server/app/apple-icon.png.meta +1 -0
  173. package/bundle/standalone/apps/web/.next/server/app/calendar/page.js +2 -0
  174. package/bundle/standalone/apps/web/.next/server/app/calendar/page.js.nft.json +1 -0
  175. package/bundle/standalone/apps/web/.next/server/app/calendar/page_client-reference-manifest.js +1 -0
  176. package/bundle/standalone/apps/web/.next/server/app/favicon.ico/route.js +1 -0
  177. package/bundle/standalone/apps/web/.next/server/app/favicon.ico/route.js.nft.json +1 -0
  178. package/bundle/standalone/apps/web/.next/server/app/favicon.ico.body +0 -0
  179. package/bundle/standalone/apps/web/.next/server/app/favicon.ico.meta +1 -0
  180. package/bundle/standalone/apps/web/.next/server/app/icon.png/route.js +1 -0
  181. package/bundle/standalone/apps/web/.next/server/app/icon.png/route.js.nft.json +1 -0
  182. package/bundle/standalone/apps/web/.next/server/app/icon.png.body +0 -0
  183. package/bundle/standalone/apps/web/.next/server/app/icon.png.meta +1 -0
  184. package/bundle/standalone/apps/web/.next/server/app/login/page.js +2 -0
  185. package/bundle/standalone/apps/web/.next/server/app/login/page.js.nft.json +1 -0
  186. package/bundle/standalone/apps/web/.next/server/app/login/page_client-reference-manifest.js +1 -0
  187. package/bundle/standalone/apps/web/.next/server/app/page.js +9 -0
  188. package/bundle/standalone/apps/web/.next/server/app/page.js.nft.json +1 -0
  189. package/bundle/standalone/apps/web/.next/server/app/page_client-reference-manifest.js +1 -0
  190. package/bundle/standalone/apps/web/.next/server/app/preview/motifs/page.js +6 -0
  191. package/bundle/standalone/apps/web/.next/server/app/preview/motifs/page.js.nft.json +1 -0
  192. package/bundle/standalone/apps/web/.next/server/app/preview/motifs/page_client-reference-manifest.js +1 -0
  193. package/bundle/standalone/apps/web/.next/server/app/preview/motifs.html +5 -0
  194. package/bundle/standalone/apps/web/.next/server/app/preview/motifs.meta +7 -0
  195. package/bundle/standalone/apps/web/.next/server/app/preview/motifs.rsc +29 -0
  196. package/bundle/standalone/apps/web/.next/server/app-paths-manifest.json +60 -0
  197. package/bundle/standalone/apps/web/.next/server/chunks/1018.js +115 -0
  198. package/bundle/standalone/apps/web/.next/server/chunks/1096.js +23 -0
  199. package/bundle/standalone/apps/web/.next/server/chunks/1139.js +1 -0
  200. package/bundle/standalone/apps/web/.next/server/chunks/128.js +1 -0
  201. package/bundle/standalone/apps/web/.next/server/chunks/1921.js +1 -0
  202. package/bundle/standalone/apps/web/.next/server/chunks/2034.js +36 -0
  203. package/bundle/standalone/apps/web/.next/server/chunks/2048.js +64 -0
  204. package/bundle/standalone/apps/web/.next/server/chunks/2065.js +1 -0
  205. package/bundle/standalone/apps/web/.next/server/chunks/2144.js +1 -0
  206. package/bundle/standalone/apps/web/.next/server/chunks/2151.js +1 -0
  207. package/bundle/standalone/apps/web/.next/server/chunks/2161.js +153 -0
  208. package/bundle/standalone/apps/web/.next/server/chunks/2450.js +1 -0
  209. package/bundle/standalone/apps/web/.next/server/chunks/246.js +1 -0
  210. package/bundle/standalone/apps/web/.next/server/chunks/260.js +24 -0
  211. package/bundle/standalone/apps/web/.next/server/chunks/269.js +1 -0
  212. package/bundle/standalone/apps/web/.next/server/chunks/2792.js +287 -0
  213. package/bundle/standalone/apps/web/.next/server/chunks/2923.js +22 -0
  214. package/bundle/standalone/apps/web/.next/server/chunks/2944.js +77 -0
  215. package/bundle/standalone/apps/web/.next/server/chunks/3334.js +141 -0
  216. package/bundle/standalone/apps/web/.next/server/chunks/3668.js +9 -0
  217. package/bundle/standalone/apps/web/.next/server/chunks/3758.js +1 -0
  218. package/bundle/standalone/apps/web/.next/server/chunks/3833.js +1 -0
  219. package/bundle/standalone/apps/web/.next/server/chunks/3990.js +2 -0
  220. package/bundle/standalone/apps/web/.next/server/chunks/4274.js +1 -0
  221. package/bundle/standalone/apps/web/.next/server/chunks/4290.js +252 -0
  222. package/bundle/standalone/apps/web/.next/server/chunks/4347.js +1 -0
  223. package/bundle/standalone/apps/web/.next/server/chunks/4550.js +226 -0
  224. package/bundle/standalone/apps/web/.next/server/chunks/4824.js +166 -0
  225. package/bundle/standalone/apps/web/.next/server/chunks/509.js +43 -0
  226. package/bundle/standalone/apps/web/.next/server/chunks/5104.js +215 -0
  227. package/bundle/standalone/apps/web/.next/server/chunks/5186.js +1 -0
  228. package/bundle/standalone/apps/web/.next/server/chunks/5400.js +1 -0
  229. package/bundle/standalone/apps/web/.next/server/chunks/5558.js +80 -0
  230. package/bundle/standalone/apps/web/.next/server/chunks/6496.js +93 -0
  231. package/bundle/standalone/apps/web/.next/server/chunks/6693.js +148 -0
  232. package/bundle/standalone/apps/web/.next/server/chunks/6775.js +1 -0
  233. package/bundle/standalone/apps/web/.next/server/chunks/7020.js +29 -0
  234. package/bundle/standalone/apps/web/.next/server/chunks/7098.js +1 -0
  235. package/bundle/standalone/apps/web/.next/server/chunks/7117.js +1 -0
  236. package/bundle/standalone/apps/web/.next/server/chunks/7204.js +104 -0
  237. package/bundle/standalone/apps/web/.next/server/chunks/7342.js +1 -0
  238. package/bundle/standalone/apps/web/.next/server/chunks/7629.js +80 -0
  239. package/bundle/standalone/apps/web/.next/server/chunks/7784.js +1 -0
  240. package/bundle/standalone/apps/web/.next/server/chunks/8286.js +1 -0
  241. package/bundle/standalone/apps/web/.next/server/chunks/8349.js +1 -0
  242. package/bundle/standalone/apps/web/.next/server/chunks/8620.js +1 -0
  243. package/bundle/standalone/apps/web/.next/server/chunks/8675.js +1 -0
  244. package/bundle/standalone/apps/web/.next/server/chunks/8860.js +24 -0
  245. package/bundle/standalone/apps/web/.next/server/chunks/8896.js +1 -0
  246. package/bundle/standalone/apps/web/.next/server/chunks/8950.js +5 -0
  247. package/bundle/standalone/apps/web/.next/server/chunks/8960.js +79 -0
  248. package/bundle/standalone/apps/web/.next/server/chunks/899.js +2 -0
  249. package/bundle/standalone/apps/web/.next/server/chunks/9069.js +1 -0
  250. package/bundle/standalone/apps/web/.next/server/chunks/9315.js +34 -0
  251. package/bundle/standalone/apps/web/.next/server/chunks/9372.js +1 -0
  252. package/bundle/standalone/apps/web/.next/server/chunks/9555.js +6 -0
  253. package/bundle/standalone/apps/web/.next/server/chunks/9571.js +9 -0
  254. package/bundle/standalone/apps/web/.next/server/chunks/9681.js +1 -0
  255. package/bundle/standalone/apps/web/.next/server/chunks/97.js +90 -0
  256. package/bundle/standalone/apps/web/.next/server/chunks/9797.js +1 -0
  257. package/bundle/standalone/apps/web/.next/server/chunks/989.js +1 -0
  258. package/bundle/standalone/apps/web/.next/server/functions-config-manifest.json +4 -0
  259. package/bundle/standalone/apps/web/.next/server/instrumentation.js +1 -0
  260. package/bundle/standalone/apps/web/.next/server/middleware-build-manifest.js +1 -0
  261. package/bundle/standalone/apps/web/.next/server/middleware-manifest.json +6 -0
  262. package/bundle/standalone/apps/web/.next/server/middleware-react-loadable-manifest.js +1 -0
  263. package/bundle/standalone/apps/web/.next/server/next-font-manifest.js +1 -0
  264. package/bundle/standalone/apps/web/.next/server/next-font-manifest.json +1 -0
  265. package/bundle/standalone/apps/web/.next/server/pages/404.html +1 -0
  266. package/bundle/standalone/apps/web/.next/server/pages/500.html +1 -0
  267. package/bundle/standalone/apps/web/.next/server/pages/_app.js +1 -0
  268. package/bundle/standalone/apps/web/.next/server/pages/_app.js.nft.json +1 -0
  269. package/bundle/standalone/apps/web/.next/server/pages/_document.js +1 -0
  270. package/bundle/standalone/apps/web/.next/server/pages/_document.js.nft.json +1 -0
  271. package/bundle/standalone/apps/web/.next/server/pages/_error.js +19 -0
  272. package/bundle/standalone/apps/web/.next/server/pages/_error.js.nft.json +1 -0
  273. package/bundle/standalone/apps/web/.next/server/pages-manifest.json +6 -0
  274. package/bundle/standalone/apps/web/.next/server/server-reference-manifest.js +1 -0
  275. package/bundle/standalone/apps/web/.next/server/server-reference-manifest.json +1 -0
  276. package/bundle/standalone/apps/web/.next/server/webpack-runtime.js +1 -0
  277. package/bundle/standalone/apps/web/.next/static/TwaiLte1NHCp3gRYUc-go/_buildManifest.js +1 -0
  278. package/bundle/standalone/apps/web/.next/static/TwaiLte1NHCp3gRYUc-go/_ssgManifest.js +1 -0
  279. package/bundle/standalone/apps/web/.next/static/chunks/02852184.a3b62691cdc349cf.js +80 -0
  280. package/bundle/standalone/apps/web/.next/static/chunks/1226.49d217dc03a1770f.js +1 -0
  281. package/bundle/standalone/apps/web/.next/static/chunks/1286.8da72129ab3aa8fd.js +77 -0
  282. package/bundle/standalone/apps/web/.next/static/chunks/1403cfaa-33c2b74c127517c2.js +1 -0
  283. package/bundle/standalone/apps/web/.next/static/chunks/171.a4732e77e941b2cd.js +1 -0
  284. package/bundle/standalone/apps/web/.next/static/chunks/1733.3a6dae5cc3785d0b.js +1 -0
  285. package/bundle/standalone/apps/web/.next/static/chunks/2081.313746c212bfc5c9.js +1 -0
  286. package/bundle/standalone/apps/web/.next/static/chunks/2086.0b05a08670aae1db.js +226 -0
  287. package/bundle/standalone/apps/web/.next/static/chunks/2377-956eb9b333193ac6.js +1 -0
  288. package/bundle/standalone/apps/web/.next/static/chunks/3034.e1171cbeeed85923.js +5 -0
  289. package/bundle/standalone/apps/web/.next/static/chunks/3068-293b252158eb9d15.js +1 -0
  290. package/bundle/standalone/apps/web/.next/static/chunks/3297.7664b51ee69c7513.js +23 -0
  291. package/bundle/standalone/apps/web/.next/static/chunks/338.77f45c7810885961.js +115 -0
  292. package/bundle/standalone/apps/web/.next/static/chunks/3471.7790a4192ef84a1a.js +1 -0
  293. package/bundle/standalone/apps/web/.next/static/chunks/3514.14aa56fe189fd052.js +1 -0
  294. package/bundle/standalone/apps/web/.next/static/chunks/3696.5d462babda0c0b9e.js +34 -0
  295. package/bundle/standalone/apps/web/.next/static/chunks/408.82356d1e11e880d9.js +93 -0
  296. package/bundle/standalone/apps/web/.next/static/chunks/46.9922e50f2158e1a9.js +1 -0
  297. package/bundle/standalone/apps/web/.next/static/chunks/4798.d851e8027b2db933.js +287 -0
  298. package/bundle/standalone/apps/web/.next/static/chunks/4908.2fed0b6fbc391b55.js +1 -0
  299. package/bundle/standalone/apps/web/.next/static/chunks/4915.97b9c59991c26fa7.js +1 -0
  300. package/bundle/standalone/apps/web/.next/static/chunks/492.234794e12315e4bb.js +1 -0
  301. package/bundle/standalone/apps/web/.next/static/chunks/4936.c65cdd63440ade70.js +1 -0
  302. package/bundle/standalone/apps/web/.next/static/chunks/5127.e5e917b5cb9c4e52.js +1 -0
  303. package/bundle/standalone/apps/web/.next/static/chunks/5141.93a42ebd1580da60.js +1 -0
  304. package/bundle/standalone/apps/web/.next/static/chunks/5159-7bcf68ab11c1091e.js +1 -0
  305. package/bundle/standalone/apps/web/.next/static/chunks/5514.f969d5c86c590512.js +73 -0
  306. package/bundle/standalone/apps/web/.next/static/chunks/559.c4615787d977bf47.js +1 -0
  307. package/bundle/standalone/apps/web/.next/static/chunks/5667.e0097b2112faa29b.js +1 -0
  308. package/bundle/standalone/apps/web/.next/static/chunks/6367.fd87728718a97771.js +1 -0
  309. package/bundle/standalone/apps/web/.next/static/chunks/6394.c2172a59c01bd0bd.js +1 -0
  310. package/bundle/standalone/apps/web/.next/static/chunks/6396.d288334e13a70139.js +24 -0
  311. package/bundle/standalone/apps/web/.next/static/chunks/6483.88695b22b21b10f1.js +9 -0
  312. package/bundle/standalone/apps/web/.next/static/chunks/6561.176d35e576df3f9d.js +1 -0
  313. package/bundle/standalone/apps/web/.next/static/chunks/6584.87fc375a0510108d.js +104 -0
  314. package/bundle/standalone/apps/web/.next/static/chunks/693.71c8b97896628a66.js +1 -0
  315. package/bundle/standalone/apps/web/.next/static/chunks/6934.45e50410379dc377.js +79 -0
  316. package/bundle/standalone/apps/web/.next/static/chunks/6a2ca82e.c26cb70da3106c1c.js +1 -0
  317. package/bundle/standalone/apps/web/.next/static/chunks/6b5bb80a.c511153adad62faf.js +1 -0
  318. package/bundle/standalone/apps/web/.next/static/chunks/7216.d1b096d2a35967fd.js +1 -0
  319. package/bundle/standalone/apps/web/.next/static/chunks/7342.fcb52cf5f7ce0e17.js +29 -0
  320. package/bundle/standalone/apps/web/.next/static/chunks/7541.43ff810bb14fd5c0.js +43 -0
  321. package/bundle/standalone/apps/web/.next/static/chunks/7563.376c2692778a62b3.js +148 -0
  322. package/bundle/standalone/apps/web/.next/static/chunks/7756.b0dd00e996549a39.js +24 -0
  323. package/bundle/standalone/apps/web/.next/static/chunks/8052.69c066e56bbd5d6c.js +64 -0
  324. package/bundle/standalone/apps/web/.next/static/chunks/8080c6f4.ed360e7424d6fe99.js +62 -0
  325. package/bundle/standalone/apps/web/.next/static/chunks/8280.81c2b0d61e27a576.js +1 -0
  326. package/bundle/standalone/apps/web/.next/static/chunks/8547.5bef8f1afd162429.js +90 -0
  327. package/bundle/standalone/apps/web/.next/static/chunks/8602.0b457ca55bd2c08e.js +141 -0
  328. package/bundle/standalone/apps/web/.next/static/chunks/8794.401ab179d53aa5d5.js +80 -0
  329. package/bundle/standalone/apps/web/.next/static/chunks/9053.c953d758ff5dc6ee.js +1 -0
  330. package/bundle/standalone/apps/web/.next/static/chunks/9122.cf7fd16fc8d7fad0.js +36 -0
  331. package/bundle/standalone/apps/web/.next/static/chunks/9255.78469e88fa06e186.js +1 -0
  332. package/bundle/standalone/apps/web/.next/static/chunks/944.ba7dcdca1c72114a.js +166 -0
  333. package/bundle/standalone/apps/web/.next/static/chunks/9794-16144bed6de4bf26.js +1 -0
  334. package/bundle/standalone/apps/web/.next/static/chunks/9852.e1937ca867a99475.js +215 -0
  335. package/bundle/standalone/apps/web/.next/static/chunks/9981.8fa0bb90a26c66eb.js +1 -0
  336. package/bundle/standalone/apps/web/.next/static/chunks/a118fb18.9c3b4291884abee0.js +119 -0
  337. package/bundle/standalone/apps/web/.next/static/chunks/app/_not-found/page-972b01bf23ed0942.js +1 -0
  338. package/bundle/standalone/apps/web/.next/static/chunks/app/api/about/route-c1d02d72a16497fa.js +1 -0
  339. package/bundle/standalone/apps/web/.next/static/chunks/app/api/auth/login/route-c1d02d72a16497fa.js +1 -0
  340. package/bundle/standalone/apps/web/.next/static/chunks/app/api/auth/logout/route-c1d02d72a16497fa.js +1 -0
  341. package/bundle/standalone/apps/web/.next/static/chunks/app/api/auth/setup/route-c1d02d72a16497fa.js +1 -0
  342. package/bundle/standalone/apps/web/.next/static/chunks/app/api/auth/status/route-c1d02d72a16497fa.js +1 -0
  343. package/bundle/standalone/apps/web/.next/static/chunks/app/api/auth/token/route-c1d02d72a16497fa.js +1 -0
  344. package/bundle/standalone/apps/web/.next/static/chunks/app/api/calendar/conflicts/route-c1d02d72a16497fa.js +1 -0
  345. package/bundle/standalone/apps/web/.next/static/chunks/app/api/calendar/entities/[id]/route-c1d02d72a16497fa.js +1 -0
  346. package/bundle/standalone/apps/web/.next/static/chunks/app/api/calendar/entities/route-c1d02d72a16497fa.js +1 -0
  347. package/bundle/standalone/apps/web/.next/static/chunks/app/api/calendar/events/[id]/route-c1d02d72a16497fa.js +1 -0
  348. package/bundle/standalone/apps/web/.next/static/chunks/app/api/calendar/events/route-c1d02d72a16497fa.js +1 -0
  349. package/bundle/standalone/apps/web/.next/static/chunks/app/api/calendar/ics/route-c1d02d72a16497fa.js +1 -0
  350. package/bundle/standalone/apps/web/.next/static/chunks/app/api/calendar/links/route-c1d02d72a16497fa.js +1 -0
  351. package/bundle/standalone/apps/web/.next/static/chunks/app/api/calendar/settings/route-c1d02d72a16497fa.js +1 -0
  352. package/bundle/standalone/apps/web/.next/static/chunks/app/api/clip/route-c1d02d72a16497fa.js +1 -0
  353. package/bundle/standalone/apps/web/.next/static/chunks/app/api/docker-config/route-c1d02d72a16497fa.js +1 -0
  354. package/bundle/standalone/apps/web/.next/static/chunks/app/api/export/zip/route-c1d02d72a16497fa.js +1 -0
  355. package/bundle/standalone/apps/web/.next/static/chunks/app/api/files/[id]/download/route-c1d02d72a16497fa.js +1 -0
  356. package/bundle/standalone/apps/web/.next/static/chunks/app/api/files/[id]/export-pdf/route-c1d02d72a16497fa.js +1 -0
  357. package/bundle/standalone/apps/web/.next/static/chunks/app/api/files/[id]/history/restore/route-c1d02d72a16497fa.js +1 -0
  358. package/bundle/standalone/apps/web/.next/static/chunks/app/api/files/[id]/history/route-c1d02d72a16497fa.js +1 -0
  359. package/bundle/standalone/apps/web/.next/static/chunks/app/api/files/[id]/move/route-c1d02d72a16497fa.js +1 -0
  360. package/bundle/standalone/apps/web/.next/static/chunks/app/api/files/[id]/route-c1d02d72a16497fa.js +1 -0
  361. package/bundle/standalone/apps/web/.next/static/chunks/app/api/files/route-c1d02d72a16497fa.js +1 -0
  362. package/bundle/standalone/apps/web/.next/static/chunks/app/api/files/upload/route-c1d02d72a16497fa.js +1 -0
  363. package/bundle/standalone/apps/web/.next/static/chunks/app/api/folders/route-c1d02d72a16497fa.js +1 -0
  364. package/bundle/standalone/apps/web/.next/static/chunks/app/api/git/remote/route-c1d02d72a16497fa.js +1 -0
  365. package/bundle/standalone/apps/web/.next/static/chunks/app/api/git/sync-all/route-c1d02d72a16497fa.js +1 -0
  366. package/bundle/standalone/apps/web/.next/static/chunks/app/api/hands/test-pattern/route-c1d02d72a16497fa.js +1 -0
  367. package/bundle/standalone/apps/web/.next/static/chunks/app/api/hands/validate/route-c1d02d72a16497fa.js +1 -0
  368. package/bundle/standalone/apps/web/.next/static/chunks/app/api/health/route-c1d02d72a16497fa.js +1 -0
  369. package/bundle/standalone/apps/web/.next/static/chunks/app/api/install-snippets/route-c1d02d72a16497fa.js +1 -0
  370. package/bundle/standalone/apps/web/.next/static/chunks/app/api/mcp-tools/route-c1d02d72a16497fa.js +1 -0
  371. package/bundle/standalone/apps/web/.next/static/chunks/app/api/profile/route-c1d02d72a16497fa.js +1 -0
  372. package/bundle/standalone/apps/web/.next/static/chunks/app/api/projects/[id]/hands-config/route-c1d02d72a16497fa.js +1 -0
  373. package/bundle/standalone/apps/web/.next/static/chunks/app/api/projects/[id]/journal-config/route-c1d02d72a16497fa.js +1 -0
  374. package/bundle/standalone/apps/web/.next/static/chunks/app/api/projects/[id]/journal-status/route-c1d02d72a16497fa.js +1 -0
  375. package/bundle/standalone/apps/web/.next/static/chunks/app/api/projects/[id]/onboard/route-c1d02d72a16497fa.js +1 -0
  376. package/bundle/standalone/apps/web/.next/static/chunks/app/api/projects/[id]/refresh/route-c1d02d72a16497fa.js +1 -0
  377. package/bundle/standalone/apps/web/.next/static/chunks/app/api/projects/[id]/route-c1d02d72a16497fa.js +1 -0
  378. package/bundle/standalone/apps/web/.next/static/chunks/app/api/projects/[id]/sync/route-c1d02d72a16497fa.js +1 -0
  379. package/bundle/standalone/apps/web/.next/static/chunks/app/api/projects/onboard/route-c1d02d72a16497fa.js +1 -0
  380. package/bundle/standalone/apps/web/.next/static/chunks/app/api/projects/route-c1d02d72a16497fa.js +1 -0
  381. package/bundle/standalone/apps/web/.next/static/chunks/app/api/publish/html/route-c1d02d72a16497fa.js +1 -0
  382. package/bundle/standalone/apps/web/.next/static/chunks/app/api/publish/route-c1d02d72a16497fa.js +1 -0
  383. package/bundle/standalone/apps/web/.next/static/chunks/app/api/refresh/route-c1d02d72a16497fa.js +1 -0
  384. package/bundle/standalone/apps/web/.next/static/chunks/app/api/reindex/route-c1d02d72a16497fa.js +1 -0
  385. package/bundle/standalone/apps/web/.next/static/chunks/app/api/search/route-c1d02d72a16497fa.js +1 -0
  386. package/bundle/standalone/apps/web/.next/static/chunks/app/api/tags/route-c1d02d72a16497fa.js +1 -0
  387. package/bundle/standalone/apps/web/.next/static/chunks/app/api/ws-config/route-c1d02d72a16497fa.js +1 -0
  388. package/bundle/standalone/apps/web/.next/static/chunks/app/calendar/page-180fba7a5e149d79.js +1 -0
  389. package/bundle/standalone/apps/web/.next/static/chunks/app/layout-9a9569fc88cd95d2.js +1 -0
  390. package/bundle/standalone/apps/web/.next/static/chunks/app/login/page-d299785546ea6ab6.js +1 -0
  391. package/bundle/standalone/apps/web/.next/static/chunks/app/page-2b151d30cb29d2e5.js +1 -0
  392. package/bundle/standalone/apps/web/.next/static/chunks/app/preview/motifs/page-c1d02d72a16497fa.js +1 -0
  393. package/bundle/standalone/apps/web/.next/static/chunks/d185f5cd.71b8f43667fbf60d.js +153 -0
  394. package/bundle/standalone/apps/web/.next/static/chunks/framework-d5846a86e24c79c9.js +1 -0
  395. package/bundle/standalone/apps/web/.next/static/chunks/main-0205543fb3b69ad5.js +1 -0
  396. package/bundle/standalone/apps/web/.next/static/chunks/main-app-20d292116f434ff3.js +1 -0
  397. package/bundle/standalone/apps/web/.next/static/chunks/pages/_app-fe81927504f65cde.js +1 -0
  398. package/bundle/standalone/apps/web/.next/static/chunks/pages/_error-2973b69c43483f0b.js +1 -0
  399. package/bundle/standalone/apps/web/.next/static/chunks/polyfills-42372ed130431b0a.js +1 -0
  400. package/bundle/standalone/apps/web/.next/static/chunks/webpack-8818fea786a923fe.js +1 -0
  401. package/bundle/standalone/apps/web/.next/static/css/c00514317f297826.css +3 -0
  402. package/bundle/standalone/apps/web/.next/static/media/0aa834ed78bf6d07-s.woff2 +0 -0
  403. package/bundle/standalone/apps/web/.next/static/media/19cfc7226ec3afaa-s.woff2 +0 -0
  404. package/bundle/standalone/apps/web/.next/static/media/21350d82a1f187e9-s.woff2 +0 -0
  405. package/bundle/standalone/apps/web/.next/static/media/438aa629764e75f3-s.woff2 +0 -0
  406. package/bundle/standalone/apps/web/.next/static/media/4c9affa5bc8f420e-s.p.woff2 +0 -0
  407. package/bundle/standalone/apps/web/.next/static/media/51251f8b9793cdb3-s.woff2 +0 -0
  408. package/bundle/standalone/apps/web/.next/static/media/67957d42bae0796d-s.woff2 +0 -0
  409. package/bundle/standalone/apps/web/.next/static/media/875ae681bfde4580-s.woff2 +0 -0
  410. package/bundle/standalone/apps/web/.next/static/media/886030b0b59bc5a7-s.woff2 +0 -0
  411. package/bundle/standalone/apps/web/.next/static/media/8e9860b6e62d6359-s.woff2 +0 -0
  412. package/bundle/standalone/apps/web/.next/static/media/939c4f875ee75fbb-s.woff2 +0 -0
  413. package/bundle/standalone/apps/web/.next/static/media/9b01607e2f794050-s.p.woff2 +0 -0
  414. package/bundle/standalone/apps/web/.next/static/media/a5ded5fed781d3c1-s.woff2 +0 -0
  415. package/bundle/standalone/apps/web/.next/static/media/ba9851c3c22cd980-s.woff2 +0 -0
  416. package/bundle/standalone/apps/web/.next/static/media/bb3ef058b751a6ad-s.p.woff2 +0 -0
  417. package/bundle/standalone/apps/web/.next/static/media/c5fe6dc8356a8c31-s.woff2 +0 -0
  418. package/bundle/standalone/apps/web/.next/static/media/cc978ac5ee68c2b6-s.woff2 +0 -0
  419. package/bundle/standalone/apps/web/.next/static/media/df0a9ae256c0569c-s.woff2 +0 -0
  420. package/bundle/standalone/apps/web/.next/static/media/e4af272ccee01ff0-s.p.woff2 +0 -0
  421. package/bundle/standalone/apps/web/.next/static/media/e857b654a2caa584-s.woff2 +0 -0
  422. package/bundle/standalone/apps/web/.next/static/media/f28ff2d15b1e9bd8-s.woff2 +0 -0
  423. package/bundle/standalone/apps/web/.next/static/media/f911b923c6adde36-s.woff2 +0 -0
  424. package/bundle/standalone/apps/web/package.json +66 -0
  425. package/bundle/standalone/apps/web/public/logo-dark.png +0 -0
  426. package/bundle/standalone/apps/web/public/logo.png +0 -0
  427. package/bundle/standalone/apps/web/server.js +38 -0
  428. package/bundle/standalone/apps/web/src/lib/mcp-tools.json +1941 -0
  429. package/bundle/standalone/node_modules/kontexta-mcp/dist/agent-rules/rules-block.md +185 -0
  430. package/bundle/standalone/node_modules/kontexta-mcp/dist/calendar-tools.d.ts +2 -0
  431. package/bundle/standalone/node_modules/kontexta-mcp/dist/calendar-tools.d.ts.map +1 -0
  432. package/bundle/standalone/node_modules/kontexta-mcp/dist/calendar-tools.js +205 -0
  433. package/bundle/standalone/node_modules/kontexta-mcp/dist/calendar-tools.js.map +1 -0
  434. package/bundle/standalone/node_modules/kontexta-mcp/dist/hands/confirm.d.ts +25 -0
  435. package/bundle/standalone/node_modules/kontexta-mcp/dist/hands/confirm.d.ts.map +1 -0
  436. package/bundle/standalone/node_modules/kontexta-mcp/dist/hands/confirm.js +40 -0
  437. package/bundle/standalone/node_modules/kontexta-mcp/dist/hands/confirm.js.map +1 -0
  438. package/bundle/standalone/node_modules/kontexta-mcp/dist/hands/executor.d.ts +13 -0
  439. package/bundle/standalone/node_modules/kontexta-mcp/dist/hands/executor.d.ts.map +1 -0
  440. package/bundle/standalone/node_modules/kontexta-mcp/dist/hands/executor.js +250 -0
  441. package/bundle/standalone/node_modules/kontexta-mcp/dist/hands/executor.js.map +1 -0
  442. package/bundle/standalone/node_modules/kontexta-mcp/dist/hands/formatter.d.ts +11 -0
  443. package/bundle/standalone/node_modules/kontexta-mcp/dist/hands/formatter.d.ts.map +1 -0
  444. package/bundle/standalone/node_modules/kontexta-mcp/dist/hands/formatter.js +39 -0
  445. package/bundle/standalone/node_modules/kontexta-mcp/dist/hands/formatter.js.map +1 -0
  446. package/bundle/standalone/node_modules/kontexta-mcp/dist/hands/loader.d.ts +4 -0
  447. package/bundle/standalone/node_modules/kontexta-mcp/dist/hands/loader.d.ts.map +1 -0
  448. package/bundle/standalone/node_modules/kontexta-mcp/dist/hands/loader.js +164 -0
  449. package/bundle/standalone/node_modules/kontexta-mcp/dist/hands/loader.js.map +1 -0
  450. package/bundle/standalone/node_modules/kontexta-mcp/dist/hands/registry.d.ts +42 -0
  451. package/bundle/standalone/node_modules/kontexta-mcp/dist/hands/registry.d.ts.map +1 -0
  452. package/bundle/standalone/node_modules/kontexta-mcp/dist/hands/registry.js +143 -0
  453. package/bundle/standalone/node_modules/kontexta-mcp/dist/hands/registry.js.map +1 -0
  454. package/bundle/standalone/node_modules/kontexta-mcp/dist/hands/sanitizer.d.ts +16 -0
  455. package/bundle/standalone/node_modules/kontexta-mcp/dist/hands/sanitizer.d.ts.map +1 -0
  456. package/bundle/standalone/node_modules/kontexta-mcp/dist/hands/sanitizer.js +86 -0
  457. package/bundle/standalone/node_modules/kontexta-mcp/dist/hands/sanitizer.js.map +1 -0
  458. package/bundle/standalone/node_modules/kontexta-mcp/dist/hands/schema-doc.d.ts +2 -0
  459. package/bundle/standalone/node_modules/kontexta-mcp/dist/hands/schema-doc.d.ts.map +1 -0
  460. package/bundle/standalone/node_modules/kontexta-mcp/dist/hands/schema-doc.js +202 -0
  461. package/bundle/standalone/node_modules/kontexta-mcp/dist/hands/schema-doc.js.map +1 -0
  462. package/bundle/standalone/node_modules/kontexta-mcp/dist/hands/types.d.ts +50 -0
  463. package/bundle/standalone/node_modules/kontexta-mcp/dist/hands/types.d.ts.map +1 -0
  464. package/bundle/standalone/node_modules/kontexta-mcp/dist/hands/types.js +2 -0
  465. package/bundle/standalone/node_modules/kontexta-mcp/dist/hands/types.js.map +1 -0
  466. package/bundle/standalone/node_modules/kontexta-mcp/dist/index.d.ts +3 -0
  467. package/bundle/standalone/node_modules/kontexta-mcp/dist/index.d.ts.map +1 -0
  468. package/bundle/standalone/node_modules/kontexta-mcp/dist/index.js +2117 -0
  469. package/bundle/standalone/node_modules/kontexta-mcp/dist/index.js.map +1 -0
  470. package/bundle/standalone/node_modules/kontexta-mcp/dist/journal-capture.d.ts +31 -0
  471. package/bundle/standalone/node_modules/kontexta-mcp/dist/journal-capture.d.ts.map +1 -0
  472. package/bundle/standalone/node_modules/kontexta-mcp/dist/journal-capture.js +293 -0
  473. package/bundle/standalone/node_modules/kontexta-mcp/dist/journal-capture.js.map +1 -0
  474. package/bundle/standalone/node_modules/kontexta-mcp/dist/journal-commit-upgrades-tool.d.ts +2 -0
  475. package/bundle/standalone/node_modules/kontexta-mcp/dist/journal-commit-upgrades-tool.d.ts.map +1 -0
  476. package/bundle/standalone/node_modules/kontexta-mcp/dist/journal-commit-upgrades-tool.js +24 -0
  477. package/bundle/standalone/node_modules/kontexta-mcp/dist/journal-commit-upgrades-tool.js.map +1 -0
  478. package/bundle/standalone/node_modules/kontexta-mcp/dist/journal-housekeep-tool.d.ts +2 -0
  479. package/bundle/standalone/node_modules/kontexta-mcp/dist/journal-housekeep-tool.d.ts.map +1 -0
  480. package/bundle/standalone/node_modules/kontexta-mcp/dist/journal-housekeep-tool.js +24 -0
  481. package/bundle/standalone/node_modules/kontexta-mcp/dist/journal-housekeep-tool.js.map +1 -0
  482. package/bundle/standalone/node_modules/kontexta-mcp/dist/journal-tools.d.ts +2 -0
  483. package/bundle/standalone/node_modules/kontexta-mcp/dist/journal-tools.d.ts.map +1 -0
  484. package/bundle/standalone/node_modules/kontexta-mcp/dist/journal-tools.js +57 -0
  485. package/bundle/standalone/node_modules/kontexta-mcp/dist/journal-tools.js.map +1 -0
  486. package/bundle/standalone/node_modules/kontexta-mcp/dist/migrations/001-initial.sql +72 -0
  487. package/bundle/standalone/node_modules/kontexta-mcp/dist/migrations/002-remote-git.sql +2 -0
  488. package/bundle/standalone/node_modules/kontexta-mcp/dist/migrations/003-source-path-index.sql +2 -0
  489. package/bundle/standalone/node_modules/kontexta-mcp/dist/migrations/004-journaling.sql +44 -0
  490. package/bundle/standalone/node_modules/kontexta-mcp/dist/migrations/005-auth.sql +7 -0
  491. package/bundle/standalone/node_modules/kontexta-mcp/dist/migrations/006-journal-locks.sql +11 -0
  492. package/bundle/standalone/node_modules/kontexta-mcp/dist/migrations/007-calendar.sql +49 -0
  493. package/bundle/standalone/node_modules/kontexta-mcp/dist/profile-tool.d.ts +9 -0
  494. package/bundle/standalone/node_modules/kontexta-mcp/dist/profile-tool.d.ts.map +1 -0
  495. package/bundle/standalone/node_modules/kontexta-mcp/dist/profile-tool.js +25 -0
  496. package/bundle/standalone/node_modules/kontexta-mcp/dist/profile-tool.js.map +1 -0
  497. package/bundle/standalone/node_modules/kontexta-mcp/dist/re2-compat.d.ts +4 -0
  498. package/bundle/standalone/node_modules/kontexta-mcp/dist/re2-compat.d.ts.map +1 -0
  499. package/bundle/standalone/node_modules/kontexta-mcp/dist/re2-compat.js +14 -0
  500. package/bundle/standalone/node_modules/kontexta-mcp/dist/re2-compat.js.map +1 -0
  501. package/bundle/standalone/node_modules/kontexta-mcp/package.json +66 -0
  502. package/bundle/standalone/node_modules/kxta-core/dist/agent-rules/index.d.ts +73 -0
  503. package/bundle/standalone/node_modules/kxta-core/dist/agent-rules/index.d.ts.map +1 -0
  504. package/bundle/standalone/node_modules/kxta-core/dist/agent-rules/index.js +436 -0
  505. package/bundle/standalone/node_modules/kxta-core/dist/agent-rules/index.js.map +1 -0
  506. package/bundle/standalone/node_modules/kxta-core/dist/agent-rules/rules-block.md +185 -0
  507. package/bundle/standalone/node_modules/kxta-core/dist/bundle/index.d.ts +26 -0
  508. package/bundle/standalone/node_modules/kxta-core/dist/bundle/index.d.ts.map +1 -0
  509. package/bundle/standalone/node_modules/kxta-core/dist/bundle/index.js +115 -0
  510. package/bundle/standalone/node_modules/kxta-core/dist/bundle/index.js.map +1 -0
  511. package/bundle/standalone/node_modules/kxta-core/dist/calendar/conflicts.d.ts +32 -0
  512. package/bundle/standalone/node_modules/kxta-core/dist/calendar/conflicts.d.ts.map +1 -0
  513. package/bundle/standalone/node_modules/kxta-core/dist/calendar/conflicts.js +129 -0
  514. package/bundle/standalone/node_modules/kxta-core/dist/calendar/conflicts.js.map +1 -0
  515. package/bundle/standalone/node_modules/kxta-core/dist/calendar/ics.d.ts +16 -0
  516. package/bundle/standalone/node_modules/kxta-core/dist/calendar/ics.d.ts.map +1 -0
  517. package/bundle/standalone/node_modules/kxta-core/dist/calendar/ics.js +73 -0
  518. package/bundle/standalone/node_modules/kxta-core/dist/calendar/ics.js.map +1 -0
  519. package/bundle/standalone/node_modules/kxta-core/dist/calendar/index.d.ts +9 -0
  520. package/bundle/standalone/node_modules/kxta-core/dist/calendar/index.d.ts.map +1 -0
  521. package/bundle/standalone/node_modules/kxta-core/dist/calendar/index.js +7 -0
  522. package/bundle/standalone/node_modules/kxta-core/dist/calendar/index.js.map +1 -0
  523. package/bundle/standalone/node_modules/kxta-core/dist/calendar/repository.d.ts +65 -0
  524. package/bundle/standalone/node_modules/kxta-core/dist/calendar/repository.d.ts.map +1 -0
  525. package/bundle/standalone/node_modules/kxta-core/dist/calendar/repository.js +219 -0
  526. package/bundle/standalone/node_modules/kxta-core/dist/calendar/repository.js.map +1 -0
  527. package/bundle/standalone/node_modules/kxta-core/dist/calendar/types.d.ts +52 -0
  528. package/bundle/standalone/node_modules/kxta-core/dist/calendar/types.d.ts.map +1 -0
  529. package/bundle/standalone/node_modules/kxta-core/dist/calendar/types.js +2 -0
  530. package/bundle/standalone/node_modules/kxta-core/dist/calendar/types.js.map +1 -0
  531. package/bundle/standalone/node_modules/kxta-core/dist/calendar/validate.d.ts +11 -0
  532. package/bundle/standalone/node_modules/kxta-core/dist/calendar/validate.d.ts.map +1 -0
  533. package/bundle/standalone/node_modules/kxta-core/dist/calendar/validate.js +39 -0
  534. package/bundle/standalone/node_modules/kxta-core/dist/calendar/validate.js.map +1 -0
  535. package/bundle/standalone/node_modules/kxta-core/dist/clip/extract.d.ts +26 -0
  536. package/bundle/standalone/node_modules/kxta-core/dist/clip/extract.d.ts.map +1 -0
  537. package/bundle/standalone/node_modules/kxta-core/dist/clip/extract.js +315 -0
  538. package/bundle/standalone/node_modules/kxta-core/dist/clip/extract.js.map +1 -0
  539. package/bundle/standalone/node_modules/kxta-core/dist/clip/frontmatter.d.ts +10 -0
  540. package/bundle/standalone/node_modules/kxta-core/dist/clip/frontmatter.d.ts.map +1 -0
  541. package/bundle/standalone/node_modules/kxta-core/dist/clip/frontmatter.js +53 -0
  542. package/bundle/standalone/node_modules/kxta-core/dist/clip/frontmatter.js.map +1 -0
  543. package/bundle/standalone/node_modules/kxta-core/dist/clip/index.d.ts +12 -0
  544. package/bundle/standalone/node_modules/kxta-core/dist/clip/index.d.ts.map +1 -0
  545. package/bundle/standalone/node_modules/kxta-core/dist/clip/index.js +38 -0
  546. package/bundle/standalone/node_modules/kxta-core/dist/clip/index.js.map +1 -0
  547. package/bundle/standalone/node_modules/kxta-core/dist/compat/env-shim.d.ts +2 -0
  548. package/bundle/standalone/node_modules/kxta-core/dist/compat/env-shim.d.ts.map +1 -0
  549. package/bundle/standalone/node_modules/kxta-core/dist/compat/env-shim.js +26 -0
  550. package/bundle/standalone/node_modules/kxta-core/dist/compat/env-shim.js.map +1 -0
  551. package/bundle/standalone/node_modules/kxta-core/dist/compat/file-migration.d.ts +3 -0
  552. package/bundle/standalone/node_modules/kxta-core/dist/compat/file-migration.d.ts.map +1 -0
  553. package/bundle/standalone/node_modules/kxta-core/dist/compat/file-migration.js +30 -0
  554. package/bundle/standalone/node_modules/kxta-core/dist/compat/file-migration.js.map +1 -0
  555. package/bundle/standalone/node_modules/kxta-core/dist/db/index.d.ts +37 -0
  556. package/bundle/standalone/node_modules/kxta-core/dist/db/index.d.ts.map +1 -0
  557. package/bundle/standalone/node_modules/kxta-core/dist/db/index.js +182 -0
  558. package/bundle/standalone/node_modules/kxta-core/dist/db/index.js.map +1 -0
  559. package/bundle/standalone/node_modules/kxta-core/dist/db/migrations/001-initial.sql +72 -0
  560. package/bundle/standalone/node_modules/kxta-core/dist/db/migrations/002-remote-git.sql +2 -0
  561. package/bundle/standalone/node_modules/kxta-core/dist/db/migrations/003-source-path-index.sql +2 -0
  562. package/bundle/standalone/node_modules/kxta-core/dist/db/migrations/004-journaling.sql +44 -0
  563. package/bundle/standalone/node_modules/kxta-core/dist/db/migrations/005-auth.sql +7 -0
  564. package/bundle/standalone/node_modules/kxta-core/dist/db/migrations/006-journal-locks.sql +11 -0
  565. package/bundle/standalone/node_modules/kxta-core/dist/db/migrations/007-calendar.sql +49 -0
  566. package/bundle/standalone/node_modules/kxta-core/dist/files/index.d.ts +84 -0
  567. package/bundle/standalone/node_modules/kxta-core/dist/files/index.d.ts.map +1 -0
  568. package/bundle/standalone/node_modules/kxta-core/dist/files/index.js +631 -0
  569. package/bundle/standalone/node_modules/kxta-core/dist/files/index.js.map +1 -0
  570. package/bundle/standalone/node_modules/kxta-core/dist/files/sections.d.ts +48 -0
  571. package/bundle/standalone/node_modules/kxta-core/dist/files/sections.d.ts.map +1 -0
  572. package/bundle/standalone/node_modules/kxta-core/dist/files/sections.js +112 -0
  573. package/bundle/standalone/node_modules/kxta-core/dist/files/sections.js.map +1 -0
  574. package/bundle/standalone/node_modules/kxta-core/dist/git/index.d.ts +92 -0
  575. package/bundle/standalone/node_modules/kxta-core/dist/git/index.d.ts.map +1 -0
  576. package/bundle/standalone/node_modules/kxta-core/dist/git/index.js +801 -0
  577. package/bundle/standalone/node_modules/kxta-core/dist/git/index.js.map +1 -0
  578. package/bundle/standalone/node_modules/kxta-core/dist/index.d.ts +24 -0
  579. package/bundle/standalone/node_modules/kxta-core/dist/index.d.ts.map +1 -0
  580. package/bundle/standalone/node_modules/kxta-core/dist/index.js +22 -0
  581. package/bundle/standalone/node_modules/kxta-core/dist/index.js.map +1 -0
  582. package/bundle/standalone/node_modules/kxta-core/dist/journal/cooldown.d.ts +28 -0
  583. package/bundle/standalone/node_modules/kxta-core/dist/journal/cooldown.d.ts.map +1 -0
  584. package/bundle/standalone/node_modules/kxta-core/dist/journal/cooldown.js +61 -0
  585. package/bundle/standalone/node_modules/kxta-core/dist/journal/cooldown.js.map +1 -0
  586. package/bundle/standalone/node_modules/kxta-core/dist/journal/distill.d.ts +16 -0
  587. package/bundle/standalone/node_modules/kxta-core/dist/journal/distill.d.ts.map +1 -0
  588. package/bundle/standalone/node_modules/kxta-core/dist/journal/distill.js +311 -0
  589. package/bundle/standalone/node_modules/kxta-core/dist/journal/distill.js.map +1 -0
  590. package/bundle/standalone/node_modules/kxta-core/dist/journal/engine.d.ts +45 -0
  591. package/bundle/standalone/node_modules/kxta-core/dist/journal/engine.d.ts.map +1 -0
  592. package/bundle/standalone/node_modules/kxta-core/dist/journal/engine.js +198 -0
  593. package/bundle/standalone/node_modules/kxta-core/dist/journal/engine.js.map +1 -0
  594. package/bundle/standalone/node_modules/kxta-core/dist/journal/git-watcher.d.ts +11 -0
  595. package/bundle/standalone/node_modules/kxta-core/dist/journal/git-watcher.d.ts.map +1 -0
  596. package/bundle/standalone/node_modules/kxta-core/dist/journal/git-watcher.js +41 -0
  597. package/bundle/standalone/node_modules/kxta-core/dist/journal/git-watcher.js.map +1 -0
  598. package/bundle/standalone/node_modules/kxta-core/dist/journal/high-water.d.ts +16 -0
  599. package/bundle/standalone/node_modules/kxta-core/dist/journal/high-water.d.ts.map +1 -0
  600. package/bundle/standalone/node_modules/kxta-core/dist/journal/high-water.js +30 -0
  601. package/bundle/standalone/node_modules/kxta-core/dist/journal/high-water.js.map +1 -0
  602. package/bundle/standalone/node_modules/kxta-core/dist/journal/housekeep.d.ts +22 -0
  603. package/bundle/standalone/node_modules/kxta-core/dist/journal/housekeep.d.ts.map +1 -0
  604. package/bundle/standalone/node_modules/kxta-core/dist/journal/housekeep.js +104 -0
  605. package/bundle/standalone/node_modules/kxta-core/dist/journal/housekeep.js.map +1 -0
  606. package/bundle/standalone/node_modules/kxta-core/dist/journal/index.d.ts +27 -0
  607. package/bundle/standalone/node_modules/kxta-core/dist/journal/index.d.ts.map +1 -0
  608. package/bundle/standalone/node_modules/kxta-core/dist/journal/index.js +18 -0
  609. package/bundle/standalone/node_modules/kxta-core/dist/journal/index.js.map +1 -0
  610. package/bundle/standalone/node_modules/kxta-core/dist/journal/patterns/build-failure-recovery.d.ts +3 -0
  611. package/bundle/standalone/node_modules/kxta-core/dist/journal/patterns/build-failure-recovery.d.ts.map +1 -0
  612. package/bundle/standalone/node_modules/kxta-core/dist/journal/patterns/build-failure-recovery.js +31 -0
  613. package/bundle/standalone/node_modules/kxta-core/dist/journal/patterns/build-failure-recovery.js.map +1 -0
  614. package/bundle/standalone/node_modules/kxta-core/dist/journal/patterns/error-recovery.d.ts +3 -0
  615. package/bundle/standalone/node_modules/kxta-core/dist/journal/patterns/error-recovery.d.ts.map +1 -0
  616. package/bundle/standalone/node_modules/kxta-core/dist/journal/patterns/error-recovery.js +31 -0
  617. package/bundle/standalone/node_modules/kxta-core/dist/journal/patterns/error-recovery.js.map +1 -0
  618. package/bundle/standalone/node_modules/kxta-core/dist/journal/patterns/exploration.d.ts +3 -0
  619. package/bundle/standalone/node_modules/kxta-core/dist/journal/patterns/exploration.d.ts.map +1 -0
  620. package/bundle/standalone/node_modules/kxta-core/dist/journal/patterns/exploration.js +28 -0
  621. package/bundle/standalone/node_modules/kxta-core/dist/journal/patterns/exploration.js.map +1 -0
  622. package/bundle/standalone/node_modules/kxta-core/dist/journal/patterns/extra-loader.d.ts +13 -0
  623. package/bundle/standalone/node_modules/kxta-core/dist/journal/patterns/extra-loader.d.ts.map +1 -0
  624. package/bundle/standalone/node_modules/kxta-core/dist/journal/patterns/extra-loader.js +45 -0
  625. package/bundle/standalone/node_modules/kxta-core/dist/journal/patterns/extra-loader.js.map +1 -0
  626. package/bundle/standalone/node_modules/kxta-core/dist/journal/patterns/feature-development.d.ts +3 -0
  627. package/bundle/standalone/node_modules/kxta-core/dist/journal/patterns/feature-development.d.ts.map +1 -0
  628. package/bundle/standalone/node_modules/kxta-core/dist/journal/patterns/feature-development.js +21 -0
  629. package/bundle/standalone/node_modules/kxta-core/dist/journal/patterns/feature-development.js.map +1 -0
  630. package/bundle/standalone/node_modules/kxta-core/dist/journal/patterns/incident-response.d.ts +3 -0
  631. package/bundle/standalone/node_modules/kxta-core/dist/journal/patterns/incident-response.d.ts.map +1 -0
  632. package/bundle/standalone/node_modules/kxta-core/dist/journal/patterns/incident-response.js +21 -0
  633. package/bundle/standalone/node_modules/kxta-core/dist/journal/patterns/incident-response.js.map +1 -0
  634. package/bundle/standalone/node_modules/kxta-core/dist/journal/patterns/index.d.ts +16 -0
  635. package/bundle/standalone/node_modules/kxta-core/dist/journal/patterns/index.d.ts.map +1 -0
  636. package/bundle/standalone/node_modules/kxta-core/dist/journal/patterns/index.js +40 -0
  637. package/bundle/standalone/node_modules/kxta-core/dist/journal/patterns/index.js.map +1 -0
  638. package/bundle/standalone/node_modules/kxta-core/dist/journal/patterns/pivot.d.ts +3 -0
  639. package/bundle/standalone/node_modules/kxta-core/dist/journal/patterns/pivot.d.ts.map +1 -0
  640. package/bundle/standalone/node_modules/kxta-core/dist/journal/patterns/pivot.js +15 -0
  641. package/bundle/standalone/node_modules/kxta-core/dist/journal/patterns/pivot.js.map +1 -0
  642. package/bundle/standalone/node_modules/kxta-core/dist/journal/patterns/read-only-investigation.d.ts +3 -0
  643. package/bundle/standalone/node_modules/kxta-core/dist/journal/patterns/read-only-investigation.d.ts.map +1 -0
  644. package/bundle/standalone/node_modules/kxta-core/dist/journal/patterns/read-only-investigation.js +24 -0
  645. package/bundle/standalone/node_modules/kxta-core/dist/journal/patterns/read-only-investigation.js.map +1 -0
  646. package/bundle/standalone/node_modules/kxta-core/dist/journal/patterns/refactor.d.ts +3 -0
  647. package/bundle/standalone/node_modules/kxta-core/dist/journal/patterns/refactor.d.ts.map +1 -0
  648. package/bundle/standalone/node_modules/kxta-core/dist/journal/patterns/refactor.js +42 -0
  649. package/bundle/standalone/node_modules/kxta-core/dist/journal/patterns/refactor.js.map +1 -0
  650. package/bundle/standalone/node_modules/kxta-core/dist/journal/patterns/tagging-pass.d.ts +3 -0
  651. package/bundle/standalone/node_modules/kxta-core/dist/journal/patterns/tagging-pass.d.ts.map +1 -0
  652. package/bundle/standalone/node_modules/kxta-core/dist/journal/patterns/tagging-pass.js +22 -0
  653. package/bundle/standalone/node_modules/kxta-core/dist/journal/patterns/tagging-pass.js.map +1 -0
  654. package/bundle/standalone/node_modules/kxta-core/dist/journal/patterns/test-cycle.d.ts +3 -0
  655. package/bundle/standalone/node_modules/kxta-core/dist/journal/patterns/test-cycle.d.ts.map +1 -0
  656. package/bundle/standalone/node_modules/kxta-core/dist/journal/patterns/test-cycle.js +23 -0
  657. package/bundle/standalone/node_modules/kxta-core/dist/journal/patterns/test-cycle.js.map +1 -0
  658. package/bundle/standalone/node_modules/kxta-core/dist/journal/presence.d.ts +2 -0
  659. package/bundle/standalone/node_modules/kxta-core/dist/journal/presence.d.ts.map +1 -0
  660. package/bundle/standalone/node_modules/kxta-core/dist/journal/presence.js +17 -0
  661. package/bundle/standalone/node_modules/kxta-core/dist/journal/presence.js.map +1 -0
  662. package/bundle/standalone/node_modules/kxta-core/dist/journal/redact.d.ts +8 -0
  663. package/bundle/standalone/node_modules/kxta-core/dist/journal/redact.d.ts.map +1 -0
  664. package/bundle/standalone/node_modules/kxta-core/dist/journal/redact.js +40 -0
  665. package/bundle/standalone/node_modules/kxta-core/dist/journal/redact.js.map +1 -0
  666. package/bundle/standalone/node_modules/kxta-core/dist/journal/renderer.d.ts +10 -0
  667. package/bundle/standalone/node_modules/kxta-core/dist/journal/renderer.d.ts.map +1 -0
  668. package/bundle/standalone/node_modules/kxta-core/dist/journal/renderer.js +40 -0
  669. package/bundle/standalone/node_modules/kxta-core/dist/journal/renderer.js.map +1 -0
  670. package/bundle/standalone/node_modules/kxta-core/dist/journal/repository.d.ts +30 -0
  671. package/bundle/standalone/node_modules/kxta-core/dist/journal/repository.d.ts.map +1 -0
  672. package/bundle/standalone/node_modules/kxta-core/dist/journal/repository.js +66 -0
  673. package/bundle/standalone/node_modules/kxta-core/dist/journal/repository.js.map +1 -0
  674. package/bundle/standalone/node_modules/kxta-core/dist/journal/strict-mode.d.ts +9 -0
  675. package/bundle/standalone/node_modules/kxta-core/dist/journal/strict-mode.d.ts.map +1 -0
  676. package/bundle/standalone/node_modules/kxta-core/dist/journal/strict-mode.js +32 -0
  677. package/bundle/standalone/node_modules/kxta-core/dist/journal/strict-mode.js.map +1 -0
  678. package/bundle/standalone/node_modules/kxta-core/dist/journal/topic-detector.d.ts +4 -0
  679. package/bundle/standalone/node_modules/kxta-core/dist/journal/topic-detector.d.ts.map +1 -0
  680. package/bundle/standalone/node_modules/kxta-core/dist/journal/topic-detector.js +71 -0
  681. package/bundle/standalone/node_modules/kxta-core/dist/journal/topic-detector.js.map +1 -0
  682. package/bundle/standalone/node_modules/kxta-core/dist/journal/types.d.ts +59 -0
  683. package/bundle/standalone/node_modules/kxta-core/dist/journal/types.d.ts.map +1 -0
  684. package/bundle/standalone/node_modules/kxta-core/dist/journal/types.js +3 -0
  685. package/bundle/standalone/node_modules/kxta-core/dist/journal/types.js.map +1 -0
  686. package/bundle/standalone/node_modules/kxta-core/dist/journal/writer.d.ts +16 -0
  687. package/bundle/standalone/node_modules/kxta-core/dist/journal/writer.d.ts.map +1 -0
  688. package/bundle/standalone/node_modules/kxta-core/dist/journal/writer.js +44 -0
  689. package/bundle/standalone/node_modules/kxta-core/dist/journal/writer.js.map +1 -0
  690. package/bundle/standalone/node_modules/kxta-core/dist/metadata/index.d.ts +97 -0
  691. package/bundle/standalone/node_modules/kxta-core/dist/metadata/index.d.ts.map +1 -0
  692. package/bundle/standalone/node_modules/kxta-core/dist/metadata/index.js +517 -0
  693. package/bundle/standalone/node_modules/kxta-core/dist/metadata/index.js.map +1 -0
  694. package/bundle/standalone/node_modules/kxta-core/dist/metadata/settings.d.ts +13 -0
  695. package/bundle/standalone/node_modules/kxta-core/dist/metadata/settings.d.ts.map +1 -0
  696. package/bundle/standalone/node_modules/kxta-core/dist/metadata/settings.js +33 -0
  697. package/bundle/standalone/node_modules/kxta-core/dist/metadata/settings.js.map +1 -0
  698. package/bundle/standalone/node_modules/kxta-core/dist/profile/index.d.ts +23 -0
  699. package/bundle/standalone/node_modules/kxta-core/dist/profile/index.d.ts.map +1 -0
  700. package/bundle/standalone/node_modules/kxta-core/dist/profile/index.js +161 -0
  701. package/bundle/standalone/node_modules/kxta-core/dist/profile/index.js.map +1 -0
  702. package/bundle/standalone/node_modules/kxta-core/dist/project-map/index.d.ts +34 -0
  703. package/bundle/standalone/node_modules/kxta-core/dist/project-map/index.d.ts.map +1 -0
  704. package/bundle/standalone/node_modules/kxta-core/dist/project-map/index.js +157 -0
  705. package/bundle/standalone/node_modules/kxta-core/dist/project-map/index.js.map +1 -0
  706. package/bundle/standalone/node_modules/kxta-core/dist/types.d.ts +69 -0
  707. package/bundle/standalone/node_modules/kxta-core/dist/types.d.ts.map +1 -0
  708. package/bundle/standalone/node_modules/kxta-core/dist/types.js +5 -0
  709. package/bundle/standalone/node_modules/kxta-core/dist/types.js.map +1 -0
  710. package/bundle/standalone/node_modules/kxta-core/dist/util/extensions.d.ts +15 -0
  711. package/bundle/standalone/node_modules/kxta-core/dist/util/extensions.d.ts.map +1 -0
  712. package/bundle/standalone/node_modules/kxta-core/dist/util/extensions.js +26 -0
  713. package/bundle/standalone/node_modules/kxta-core/dist/util/extensions.js.map +1 -0
  714. package/bundle/standalone/node_modules/kxta-core/dist/util/paths.d.ts +31 -0
  715. package/bundle/standalone/node_modules/kxta-core/dist/util/paths.d.ts.map +1 -0
  716. package/bundle/standalone/node_modules/kxta-core/dist/util/paths.js +179 -0
  717. package/bundle/standalone/node_modules/kxta-core/dist/util/paths.js.map +1 -0
  718. package/bundle/standalone/node_modules/kxta-core/dist/util/safety.d.ts +37 -0
  719. package/bundle/standalone/node_modules/kxta-core/dist/util/safety.d.ts.map +1 -0
  720. package/bundle/standalone/node_modules/kxta-core/dist/util/safety.js +156 -0
  721. package/bundle/standalone/node_modules/kxta-core/dist/util/safety.js.map +1 -0
  722. package/bundle/standalone/node_modules/kxta-core/dist/util/tokens.d.ts +3 -0
  723. package/bundle/standalone/node_modules/kxta-core/dist/util/tokens.d.ts.map +1 -0
  724. package/bundle/standalone/node_modules/kxta-core/dist/util/tokens.js +13 -0
  725. package/bundle/standalone/node_modules/kxta-core/dist/util/tokens.js.map +1 -0
  726. package/bundle/standalone/node_modules/kxta-core/dist/watcher/index.d.ts +9 -0
  727. package/bundle/standalone/node_modules/kxta-core/dist/watcher/index.d.ts.map +1 -0
  728. package/bundle/standalone/node_modules/kxta-core/dist/watcher/index.js +214 -0
  729. package/bundle/standalone/node_modules/kxta-core/dist/watcher/index.js.map +1 -0
  730. package/bundle/standalone/node_modules/kxta-core/dist/whats-new/index.d.ts +36 -0
  731. package/bundle/standalone/node_modules/kxta-core/dist/whats-new/index.d.ts.map +1 -0
  732. package/bundle/standalone/node_modules/kxta-core/dist/whats-new/index.js +94 -0
  733. package/bundle/standalone/node_modules/kxta-core/dist/whats-new/index.js.map +1 -0
  734. package/bundle/standalone/node_modules/kxta-core/package.json +20 -0
  735. package/bundle/standalone/node_modules/kxta-publish/dist/cli.d.ts +9 -0
  736. package/bundle/standalone/node_modules/kxta-publish/dist/cli.js +139 -0
  737. package/bundle/standalone/node_modules/kxta-publish/dist/config.d.ts +25 -0
  738. package/bundle/standalone/node_modules/kxta-publish/dist/config.js +62 -0
  739. package/bundle/standalone/node_modules/kxta-publish/dist/index.d.ts +2 -0
  740. package/bundle/standalone/node_modules/kxta-publish/dist/index.js +45 -0
  741. package/bundle/standalone/node_modules/kxta-publish/dist/pipeline.d.ts +14 -0
  742. package/bundle/standalone/node_modules/kxta-publish/dist/pipeline.js +42 -0
  743. package/bundle/standalone/node_modules/kxta-publish/dist/render/blocks/endpoints.d.ts +6 -0
  744. package/bundle/standalone/node_modules/kxta-publish/dist/render/blocks/endpoints.js +112 -0
  745. package/bundle/standalone/node_modules/kxta-publish/dist/render/blocks/glossary.d.ts +2 -0
  746. package/bundle/standalone/node_modules/kxta-publish/dist/render/blocks/glossary.js +42 -0
  747. package/bundle/standalone/node_modules/kxta-publish/dist/render/blocks/mermaid.d.ts +2 -0
  748. package/bundle/standalone/node_modules/kxta-publish/dist/render/blocks/mermaid.js +17 -0
  749. package/bundle/standalone/node_modules/kxta-publish/dist/render/llms.d.ts +3 -0
  750. package/bundle/standalone/node_modules/kxta-publish/dist/render/llms.js +52 -0
  751. package/bundle/standalone/node_modules/kxta-publish/dist/render/markdown.d.ts +24 -0
  752. package/bundle/standalone/node_modules/kxta-publish/dist/render/markdown.js +87 -0
  753. package/bundle/standalone/node_modules/kxta-publish/dist/render/nav.d.ts +21 -0
  754. package/bundle/standalone/node_modules/kxta-publish/dist/render/nav.js +107 -0
  755. package/bundle/standalone/node_modules/kxta-publish/dist/render/pdf.d.ts +10 -0
  756. package/bundle/standalone/node_modules/kxta-publish/dist/render/pdf.js +70 -0
  757. package/bundle/standalone/node_modules/kxta-publish/dist/seeds/01-overview.md +74 -0
  758. package/bundle/standalone/node_modules/kxta-publish/dist/seeds/02-api.md +169 -0
  759. package/bundle/standalone/node_modules/kxta-publish/dist/seeds/03-improvements.md +90 -0
  760. package/bundle/standalone/node_modules/kxta-publish/dist/seeds/04-glossary.md +55 -0
  761. package/bundle/standalone/node_modules/kxta-publish/dist/seeds/seeds.d.ts +3 -0
  762. package/bundle/standalone/node_modules/kxta-publish/dist/seeds/seeds.js +53 -0
  763. package/bundle/standalone/node_modules/kxta-publish/dist/source/enumerate.d.ts +3 -0
  764. package/bundle/standalone/node_modules/kxta-publish/dist/source/enumerate.js +50 -0
  765. package/bundle/standalone/node_modules/kxta-publish/dist/source/reader.d.ts +20 -0
  766. package/bundle/standalone/node_modules/kxta-publish/dist/source/reader.js +20 -0
  767. package/bundle/standalone/node_modules/kxta-publish/dist/template/api-ref.css +593 -0
  768. package/bundle/standalone/node_modules/kxta-publish/dist/template/app.js +297 -0
  769. package/bundle/standalone/node_modules/kxta-publish/dist/template/brutalist.css +57 -0
  770. package/bundle/standalone/node_modules/kxta-publish/dist/template/flat.css +182 -0
  771. package/bundle/standalone/node_modules/kxta-publish/dist/template/minimal.css +578 -0
  772. package/bundle/standalone/node_modules/kxta-publish/dist/template/ocean.css +179 -0
  773. package/bundle/standalone/node_modules/kxta-publish/dist/template/paper.css +33 -0
  774. package/bundle/standalone/node_modules/kxta-publish/dist/template/shell.d.ts +8 -0
  775. package/bundle/standalone/node_modules/kxta-publish/dist/template/shell.js +181 -0
  776. package/bundle/standalone/node_modules/kxta-publish/dist/template/solarized.css +162 -0
  777. package/bundle/standalone/node_modules/kxta-publish/dist/template/terminal.css +37 -0
  778. package/bundle/standalone/node_modules/kxta-publish/dist/template/theme.css +701 -0
  779. package/bundle/standalone/node_modules/kxta-publish/dist/types.d.ts +97 -0
  780. package/bundle/standalone/node_modules/kxta-publish/dist/types.js +1 -0
  781. package/bundle/standalone/node_modules/kxta-publish/package.json +25 -0
  782. package/bundle/standalone/package.json +26 -0
  783. package/dist/chunk-KQTCKRN2.js +31 -0
  784. package/dist/doctor-W733U3FD.js +46 -0
  785. package/dist/index.js +45 -0
  786. package/dist/mcp-DGMGR3MZ.js +34 -0
  787. package/dist/start-RCW7AKUK.js +121 -0
  788. package/package.json +89 -0
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8974],{7395:(e,t,r)=>{"use strict";r.d(t,{H:()=>s});var a=r(14915);let n={sm:{lightSrc:"/logo.png",darkSrc:"/logo-dark.png",imgClass:"h-[56px] w-auto",floatClass:"",particles:[],orbitRadius:0},lg:{lightSrc:"/logo.png",darkSrc:"/logo-dark.png",imgClass:"h-[150px] w-auto",floatClass:"animate-[logo-float-lg_3s_ease-in-out_infinite]",particles:[{size:6,color:"#C2410C",opacity:.75,duration:5,reverse:!1,delay:0},{size:4,color:"#D4A050",opacity:.55,duration:7,reverse:!0,delay:-3},{size:3,color:"#FFD49A",opacity:.45,duration:9,reverse:!1,delay:-5}],orbitRadius:70}};function s(e){let{size:t}=e,{lightSrc:r,darkSrc:s,imgClass:l,floatClass:o,particles:i,orbitRadius:c}=n[t];return(0,a.jsxs)("div",{className:"relative inline-flex flex-shrink-0 overflow-visible",children:[(0,a.jsx)("img",{src:r,alt:"Kontexta",className:"block dark:hidden ".concat(l," object-contain ").concat(o)}),(0,a.jsx)("img",{src:s,alt:"Kontexta",className:"hidden dark:block ".concat(l," object-contain ").concat(o)}),i.map((e,t)=>(0,a.jsx)("span",{className:"absolute rounded-full bp-keep-round pointer-events-none",style:{width:e.size,height:e.size,backgroundColor:e.color,opacity:e.opacity,top:"calc(50% - ".concat(c,"px)"),left:"calc(50% - ".concat(e.size/2,"px)"),transformOrigin:"".concat(e.size/2,"px ").concat(c,"px"),animation:"logo-orbit ".concat(e.duration,"s linear infinite").concat(e.reverse?" reverse":""),animationDelay:"".concat(e.delay,"s")}},t))]})}},17695:(e,t,r)=>{"use strict";r.d(t,{T:()=>s});var a=r(14915),n=r(56570);function s(e){let{open:t,onClose:r,onConfirm:s,title:l,message:o,confirmLabel:i="Confirm",cancelLabel:c="Cancel",destructive:d=!1,loading:u=!1}=e;return(0,a.jsxs)(n.l,{open:t,onClose:r,title:l,children:[(0,a.jsx)("div",{className:"text-sm text-[var(--text-secondary)]",children:o}),(0,a.jsxs)("div",{className:"flex justify-end gap-2 mt-5",children:[(0,a.jsx)("button",{type:"button",className:"btn btn-md",onClick:r,disabled:u,children:c}),(0,a.jsx)("button",{type:"button",className:"btn btn-md ".concat(d?"btn-destructive":"btn-primary"),onClick:s,disabled:u,children:u?"…":i})]})]})}},55808:(e,t,r)=>{"use strict";r.d(t,{default:()=>eZ});var a=r(14915),n=r(65347),s=r(30300),l=r(22377),o=r(89872),i=r(49129),c=r(39624),d=r(47724),u=r(7395);function x(e){let{open:t,onClose:r,log:s,globalRemoteUrl:l,onSyncAll:o,onUpdateRemote:i,selectedProjectName:c,onSyncProject:d}=e,[u,x]=(0,n.useState)("log"),[m,h]=(0,n.useState)(l||""),[p,b]=(0,n.useState)(!1),[f,v]=(0,n.useState)(null);if(!t)return null;let g=async()=>{b(!0),v(null);try{await o()}catch(e){v((null==e?void 0:e.message)||"Sync failed")}finally{b(!1)}},j=async()=>{b(!0),v(null);try{await i(m),x("log")}catch(e){v((null==e?void 0:e.message)||"Failed to save remote")}finally{b(!1)}};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("div",{className:"fixed inset-0 z-40",onClick:r}),(0,a.jsxs)("div",{role:"dialog",className:"fixed top-14 right-3 z-50 w-80 bg-[var(--bg-secondary)] border border-[var(--border)] rounded-md shadow-xl text-[13px] text-[var(--text-primary)]",children:[(0,a.jsxs)("div",{className:"flex border-b border-[var(--border)]",children:[(0,a.jsx)("button",{className:"flex-1 px-3 py-2 ".concat("log"===u?"text-[var(--accent)] border-b-2 border-[var(--accent)] -mb-px":"text-[var(--text-secondary)]"),onClick:()=>x("log"),children:"Sync log"}),(0,a.jsx)("button",{className:"flex-1 px-3 py-2 ".concat("config"===u?"text-[var(--accent)] border-b-2 border-[var(--accent)] -mb-px":"text-[var(--text-secondary)]"),onClick:()=>x("config"),children:"Configure remote"})]}),"log"===u?(0,a.jsxs)("div",{className:"p-3 space-y-2 max-h-72 overflow-auto",children:[0===s.length?(0,a.jsx)("p",{className:"text-[var(--text-secondary)] text-[12px]",children:"No sync activity yet."}):s.slice(0,5).map((e,t)=>(0,a.jsxs)("div",{className:"flex items-baseline gap-2 font-mono text-[12px]",children:[(0,a.jsx)("span",{style:{color:"ok"===e.result?"var(--success)":"var(--danger)"},children:"●"}),(0,a.jsx)("span",{className:"text-[var(--text-secondary)]",children:new Date(e.at).toLocaleTimeString()}),(0,a.jsxs)("span",{className:"text-[var(--text-primary)] truncate",children:[null===e.projectId?"all projects":"project #".concat(e.projectId),e.message?" — ".concat(e.message):""]})]},t)),c&&d&&(0,a.jsx)("button",{disabled:p,onClick:async()=>{b(!0),v(null);try{await d()}catch(e){v((null==e?void 0:e.message)||"Sync failed")}finally{b(!1)}},className:"w-full mt-2 px-3 py-1.5 bg-[var(--accent)] text-black font-bold text-[12px] rounded-md disabled:opacity-50 truncate",children:p?"Syncing...":"Sync ".concat(c)}),(0,a.jsx)("button",{disabled:p,onClick:g,className:"w-full mt-2 px-3 py-1.5 bg-[var(--bg-tertiary)] text-[var(--text-primary)] font-bold text-[12px] rounded-md hover:bg-[var(--border)] disabled:opacity-50",children:p?"Syncing...":"Sync all projects"}),f&&(0,a.jsx)("p",{className:"text-[var(--danger)] text-[12px]",children:f})]}):(0,a.jsxs)("div",{className:"p-3 space-y-2",children:[(0,a.jsx)("label",{className:"block text-[12px] text-[var(--text-secondary)]",children:"Global git remote URL"}),(0,a.jsx)("input",{type:"text",value:m,onChange:e=>h(e.target.value),placeholder:"https://github.com/user/repo.git or git@host:user/repo.git",className:"w-full px-2 py-1 bg-[var(--bg-primary)] border border-[var(--border)] rounded text-[12px]"}),(0,a.jsx)("button",{disabled:p,onClick:j,className:"w-full px-3 py-1.5 bg-[var(--accent)] text-black font-bold text-[12px] rounded-md disabled:opacity-50",children:p?"Saving...":"Save"}),f&&(0,a.jsx)("p",{className:"text-[var(--danger)] text-[12px]",children:f})]})]})]})}var m=r(94567);function h(e){let{trigger:t,items:r,align:n="end"}=e;return(0,a.jsxs)(m.bL,{children:[(0,a.jsx)(m.l9,{asChild:!0,children:t}),(0,a.jsx)(m.ZL,{children:(0,a.jsx)(m.UC,{align:n,sideOffset:6,className:"z-[var(--z-dropdown)]",children:(0,a.jsx)("div",{className:"min-w-[180px] rounded-md border border-[var(--border)] bg-[var(--bg-primary)] py-1.5 shadow-xl animate-scale-in",children:r.map(e=>(0,a.jsxs)(m.q7,{onSelect:e.onSelect,className:"flex w-full cursor-pointer items-center gap-2 px-3 py-2 text-left text-xs font-medium outline-none transition-colors data-[highlighted]:bg-[var(--accent)] data-[highlighted]:text-white ".concat(e.destructive?"text-[var(--danger)]":"text-[var(--text-secondary)]"),children:[e.icon,e.label]},e.label))})})})]})}function p(e){let{onSearch:t,onAbout:r,onConfigure:m,onPublish:p,onViewPublished:b,globalRemoteUrl:f,syncLog:v,onSyncAll:g,onUpdateRemote:j,selectedProjectName:y,onSyncProject:w}=e,N=(0,s.useRouter)(),{theme:k,setTheme:S}=(0,o.D)(),[C,T]=(0,n.useState)(!1),[_,E]=(0,n.useState)(!1),[L,P]=(0,n.useState)(!1),[D,M]=(0,n.useState)(!1),O=async()=>{var e,t,r,a,n,s;if(!D){M(!0);try{let s=await fetch("/api/reindex",{method:"POST"}),o=await s.json().catch(()=>({}));if(s.ok&&(null==o?void 0:o.success)){let n=null!=(t=o.totals)?t:{newly_indexed:0,refreshed:0,pruned:0,errors:0};l.o.success("Reindexed ".concat(null!=(r=null==(e=o.scopes)?void 0:e.length)?r:0," scope(s) in ").concat(null!=(a=o.duration_ms)?a:"?","ms — ")+"+".concat(n.newly_indexed," new, ").concat(n.refreshed," updated, ").concat(n.pruned," removed")+(n.errors?", ".concat(n.errors," scope error(s)"):""))}else 409===s.status?l.o.error("Reindex already in progress"):l.o.error("Reindex failed: ".concat(null!=(n=null==o?void 0:o.error)?n:"HTTP ".concat(s.status)))}catch(e){l.o.error("Reindex failed: ".concat(null!=(s=null==e?void 0:e.message)?s:"Network error"))}finally{M(!1)}}};return(0,n.useEffect)(()=>{T(!0),E(navigator.platform.toUpperCase().indexOf("MAC")>=0)},[]),(0,a.jsxs)("header",{className:"sticky top-0 z-50 h-16 bg-[var(--bg-secondary)]/80 backdrop-blur-xl flex items-center px-6 border-b border-[var(--border)] gap-3 overflow-visible transition-all",children:[(0,a.jsxs)("div",{className:"flex items-center gap-0 group cursor-pointer",onClick:()=>N.push("/"),children:[(0,a.jsx)(u.H,{size:"sm"}),(0,a.jsx)("span",{className:"-ml-3 font-extrabold text-xl tracking-[4px] font-title text-[var(--text-primary)] drop-shadow-[0_0_15px_rgba(180,120,30,0.1)] dark:drop-shadow-[0_0_15px_rgba(180,120,30,0.3)] transition-all group-hover:drop-shadow-[0_0_20px_rgba(180,120,30,0.5)]",children:"ONTEXTA"})]}),(0,a.jsx)("div",{className:"flex-1 flex justify-center px-4",children:(0,a.jsxs)("button",{onClick:t,className:"w-full max-w-[440px] h-10 px-4 bg-[var(--bg-tertiary)]/50 text-[13px] text-[var(--text-secondary)] rounded-xl hover:bg-[var(--bg-secondary)] transition-all flex items-center gap-3 border border-[var(--border)] group focus-glow",children:[(0,a.jsxs)("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",className:"w-4 h-4 opacity-50 group-hover:opacity-100 transition-opacity",children:[(0,a.jsx)("circle",{cx:"11",cy:"11",r:"7"}),(0,a.jsx)("line",{x1:"21",y1:"21",x2:"16.65",y2:"16.65"})]}),(0,a.jsx)("span",{className:"flex-1 text-left opacity-60 group-hover:opacity-100",children:"Search context..."}),(0,a.jsxs)("kbd",{className:"text-[10px] font-mono text-[var(--text-secondary)] bg-[var(--bg-secondary)] px-2 py-1 rounded-md border border-[var(--border)] shadow-sm opacity-50",children:[_?"⌘":"Ctrl","K"]})]})}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("button",{onClick:()=>N.push("/calendar"),className:"btn btn-md !font-mono font-bold uppercase tracking-wider text-[var(--accent)] bp-toolbar-btn","aria-label":"Open Calendar",title:"Open Calendar",children:"Calendar"}),(0,a.jsx)("button",{onClick:()=>P(e=>!e),className:"btn btn-md !font-mono font-bold uppercase tracking-wider text-[var(--accent)] bp-toolbar-btn","aria-label":"Sync menu",title:"Open sync menu",children:"Sync ▾"}),(0,a.jsx)("button",{onClick:O,disabled:D,className:"btn btn-md !font-mono font-bold uppercase tracking-wider text-[var(--accent)] bp-toolbar-btn ".concat(D?"opacity-50":""),"aria-label":"Reindex — scan disk to add new files and remove orphan rows",title:"Reindex Knowledge Base + all projects: add new files and drop orphan rows",children:D?"Reindexing…":"Reindex"}),(0,a.jsx)("button",{onClick:m,className:"btn btn-md !font-mono font-bold uppercase tracking-wider text-[var(--accent)] bp-toolbar-btn","aria-label":"Configure Kontexta",children:"Configure"}),(0,a.jsx)("button",{onClick:r,className:"btn btn-md !font-mono font-bold uppercase tracking-wider text-[var(--accent)] bp-toolbar-btn","aria-label":"About Kontexta",children:"About"}),(0,a.jsx)(h,{trigger:(0,a.jsx)("button",{className:"btn btn-md !font-mono font-bold uppercase tracking-wider text-[var(--accent)] bp-toolbar-btn","aria-label":"Publish menu",title:"Publish documentation",children:"Publish ▾"}),items:[{label:"New Publish",onSelect:p,icon:(0,a.jsxs)("svg",{className:"w-4 h-4 text-[var(--accent)]",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[(0,a.jsx)("path",{d:"M4 4h16v16H4z"}),(0,a.jsx)("path",{d:"M12 8v8M8 12h8"})]})},{label:"View Published",onSelect:b,icon:(0,a.jsxs)("svg",{className:"w-4 h-4 text-[var(--accent)]",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[(0,a.jsx)("path",{d:"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"}),(0,a.jsx)("circle",{cx:"12",cy:"12",r:"3"})]})}]}),(0,a.jsx)("button",{onClick:async()=>{await fetch("/api/auth/logout",{method:"POST"}),N.push("/login")},className:"p-2 rounded-md text-[var(--text-secondary)] hover:text-[var(--danger)] hover:bg-[var(--bg-tertiary)] transition-colors","aria-label":"Lock Kontexta",title:"Lock Kontexta",children:(0,a.jsxs)("svg",{className:"w-4 h-4",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":!0,children:[(0,a.jsx)("rect",{x:"3",y:"11",width:"18",height:"11",rx:"2",ry:"2"}),(0,a.jsx)("path",{d:"M7 11V7a5 5 0 0 1 10 0v4"})]})}),(0,a.jsxs)("span",{className:"bp-title-block bp-annotation",children:["REV ","4.3.1"]}),C&&(0,a.jsxs)("button",{onClick:()=>S("light"===k?"dark":"dark"===k?"blueprint":"light"),className:"px-2 h-5 rounded-md border border-[var(--border)] font-mono text-[10px] uppercase tracking-wider text-[var(--text-secondary)] hover:text-[var(--accent)] hover:border-[var(--accent)] transition-colors inline-flex items-center gap-1","aria-label":"Cycle theme (light / dark / blueprint)",title:"Theme: ".concat(k," — click to cycle"),children:["light"===k?(0,a.jsx)(i.A,{className:"w-3 h-3","aria-hidden":!0}):"dark"===k?(0,a.jsx)(c.A,{className:"w-3 h-3","aria-hidden":!0}):(0,a.jsx)(d.A,{className:"w-3 h-3","aria-hidden":!0}),"light"===k?"light":"dark"===k?"dark":"blueprint"]})]}),(0,a.jsx)(x,{open:L,onClose:()=>P(!1),log:v,globalRemoteUrl:f,onSyncAll:g,onUpdateRemote:j,selectedProjectName:null!=y?y:null,onSyncProject:w})]})}function b(e){let[t,r]=(0,n.useState)(()=>window.matchMedia(e).matches);return(0,n.useEffect)(()=>{let t=window.matchMedia(e);r(t.matches);let a=e=>r(e.matches);return t.addEventListener("change",a),()=>t.removeEventListener("change",a)},[e]),t}let f="kontexta:pane-widths:v1";function v(e){let{left:t,leftRail:r,middle:s,right:l}=e,[o,i]=(0,n.useState)(240),[c,d]=(0,n.useState)(320),[u,x]=(0,n.useState)(!1),m=b("(max-width: 1023px)");(0,n.useEffect)(()=>{try{let e=localStorage.getItem(f);if(e){let t=JSON.parse(e);"number"==typeof t.left&&i(g(t.left,180,360)),"number"==typeof t.middle&&d(g(t.middle,260,600))}}catch(e){}x(!0)},[]),(0,n.useEffect)(()=>{if(u)try{localStorage.setItem(f,JSON.stringify({left:o,middle:c}))}catch(e){}},[u,o,c]);let h=(0,n.useRef)(null),p=(0,n.useRef)(0),v=(0,n.useRef)(0),j=e=>t=>{h.current=e,p.current=t.clientX,v.current="left"===e?o:c,t.target.setPointerCapture(t.pointerId)};return(0,a.jsxs)("div",{className:"flex flex-1 min-h-0",onPointerMove:e=>{if(!h.current)return;let t=e.clientX-p.current;"left"===h.current?i(g(v.current+t,180,360)):d(g(v.current+t,260,600))},onPointerUp:()=>{h.current=null},children:[m&&r?r:(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("div",{style:{width:o},className:"shrink-0 h-full overflow-y-auto bg-[var(--bg-primary)] border-r border-[var(--border)] scrollbar-thin",onScroll:e=>e.stopPropagation(),children:t}),(0,a.jsx)("div",{onPointerDown:j("left"),className:"w-1 cursor-col-resize bg-transparent hover:bg-[var(--accent)]/40 transition-colors z-10"})]}),(0,a.jsx)("div",{style:{width:c},className:"shrink-0 h-full overflow-y-auto bg-[var(--bg-primary)] border-r border-[var(--border)]",children:s}),(0,a.jsx)("div",{onPointerDown:j("middle"),className:"w-1 cursor-col-resize bg-transparent hover:bg-[var(--accent)]/40 transition-colors z-10"}),(0,a.jsx)("div",{className:"flex-1 min-w-0 bg-[var(--bg-secondary)] dark:bg-[var(--bg-primary)] p-3 lg:p-4 transition-all overflow-y-auto flex flex-col",children:(0,a.jsxs)("div",{className:"flex-1 min-w-0 overflow-auto floating-surface rounded-2xl shadow-2xl relative",children:[(0,a.jsx)("div",{className:"absolute inset-0 pointer-events-none border border-amber-accent/10 rounded-2xl z-20"}),l]})})]})}function g(e,t,r){return Math.max(t,Math.min(r,e))}var j=r(97935),y=r(24598),w=r(34683);function N(e){let{label:t,icon:r,active:s=!1,initialExpanded:l=!1,children:o,onClick:i,hasHands:c=!1}=e,[d,u]=(0,n.useState)(l),x=!!o;return(0,a.jsxs)("div",{children:[(0,a.jsxs)("div",{onClick:()=>{x&&u(!d),null==i||i()},className:"relative flex items-center gap-1.5 py-1.5 px-2 rounded-lg text-sm cursor-pointer transition-all duration-200 group ".concat(s?"bg-[var(--accent-soft)] text-[var(--text-primary)] font-semibold":"text-[var(--text-secondary)] hover:bg-[var(--accent-soft)] hover:text-[var(--text-primary)]"),children:[s&&(0,a.jsx)("span",{className:"absolute -left-1 top-1 bottom-1 w-0.5 bg-[var(--accent)] rounded-full bp-keep-round"}),x&&(0,a.jsx)(w.A,{className:"w-3 h-3 shrink-0 transition-transform duration-200 ".concat(d?"rotate-90":""),"aria-hidden":!0}),r&&(0,a.jsx)("span",{className:"dark-icon",children:r}),(0,a.jsx)("span",{className:"truncate lowercase first-letter:uppercase flex-1",children:t}),c&&(0,a.jsx)("span",{className:"ml-1 flex items-center justify-center text-[10px] text-[var(--accent)] opacity-70",title:"Hands enabled",children:(0,a.jsxs)("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"w-3 h-3",children:[(0,a.jsx)("path",{d:"M18 11V6a2 2 0 0 0-2-2v0a2 2 0 0 0-2 2v0"}),(0,a.jsx)("path",{d:"M14 10V4a2 2 0 0 0-2-2v0a2 2 0 0 0-2 2v0"}),(0,a.jsx)("path",{d:"M10 10.5V6a2 2 0 0 0-2-2v0a2 2 0 0 0-2 2v0"}),(0,a.jsx)("path",{d:"M18 8a2 2 0 1 1 4 0v6a8 8 0 0 1-8 8h-2c-2.8 0-4.5-.86-5.99-2.34l-3.6-3.6a2 2 0 0 1 2.83-2.82L7 15"})]})})]}),(0,a.jsx)("div",{className:"grid transition-all duration-300 ease-in-out ".concat(x&&d?"grid-rows-[1fr] opacity-100 mt-1":"grid-rows-[0fr] opacity-0"),children:(0,a.jsx)("div",{className:"overflow-hidden ml-3",children:o})})]})}function k(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],a=!(arguments.length>3)||void 0===arguments[3]||arguments[3],n={name:"",path:"",children:[],files:[]},s=t.endsWith("/")?t:t+"/";for(let t of e){if(!t.path.startsWith(s))continue;let e=t.path.slice(s.length).split("/");e.pop();let r=n,a="";for(let t of e){a=a?"".concat(a,"/").concat(t):t;let e=r.children.find(e=>e.name===t);e||(e={name:t,path:a,children:[],files:[]},r.children.push(e)),r=e}r.files.push({id:t.id,title:t.title,path:t.path})}for(let e of r){let t=e.split("/"),r=n,a="";for(let e of t){a=a?"".concat(a,"/").concat(e):e;let t=r.children.find(t=>t.name===e);t||(t={name:e,path:a,children:[],files:[]},r.children.push(t)),r=t}}return a&&function e(t){return t.children=t.children.filter(t=>e(t)),t.files.length>0||t.children.length>0||!!t.isExplicit}(n),function e(t){for(let r of(t.children.sort((e,t)=>e.name.localeCompare(t.name)),t.files.sort((e,t)=>e.title.localeCompare(t.title)),t.children))e(r)}(n),n}function S(e){let{icon:t,title:r,hint:n,action:s}=e;return(0,a.jsxs)("div",{className:"flex flex-col items-center justify-center py-12 px-6 text-center gap-2",children:[t&&(0,a.jsx)("div",{className:"text-[var(--muted)] opacity-60 mb-1",children:t}),(0,a.jsx)("p",{className:"text-sm font-medium text-[var(--text-primary)]",children:r}),n&&(0,a.jsx)("p",{className:"text-xs text-[var(--text-secondary)]",children:n}),s&&(0,a.jsx)("div",{className:"mt-3",children:s})]})}let C=e=>{let{className:t}=e;return(0,a.jsxs)("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:t,children:[(0,a.jsx)("path",{d:"M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z"}),(0,a.jsx)("polyline",{points:"14 2 14 8 20 8"})]})},T=e=>{let{className:t}=e;return(0,a.jsx)("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:t,children:(0,a.jsx)("path",{d:"M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"})})};function _(e){let{node:t,selectedFolder:r,onSelectFolder:n,onSelectFile:s}=e;return(0,a.jsxs)(a.Fragment,{children:[t.children.map(e=>(0,a.jsx)(N,{label:e.name,icon:(0,a.jsx)(T,{className:"w-3.5 h-3.5 text-[#FF7F50] group-hover:text-[var(--accent)] transition-colors"}),active:r===e.path,onClick:()=>n(e.path),children:(0,a.jsx)(_,{node:e,selectedFolder:r,onSelectFolder:n,onSelectFile:s})},e.path)),t.files.map(e=>(0,a.jsx)(N,{label:e.title,icon:(0,a.jsx)(C,{className:"w-3.5 h-3.5 text-amber-accent group-hover:text-[var(--accent)] transition-colors"}),onClick:()=>s(e.id)},e.id))]})}function E(e){let{projects:t,projectFiles:r,knowledgeFiles:s,selectedProjectId:l,selectedSection:o,selectedFolder:i,projectFolders:c,knowledgeFolders:d,projectBasePath:u,knowledgeBasePath:x,onSelectProject:m,onSelectKnowledge:h,onSelectFavorites:p,onSelectKnowledgeFolder:b,onSelectFolder:f,onSelectFile:v,onCreateFolder:g}=e,w=(0,n.useMemo)(()=>{if(!l)return null;let e=t.find(e=>e.id===l);return e&&e.path?k(r,e.path,c):null},[l,r,c,t]),C=(0,n.useMemo)(()=>0===d.length&&0===s.length?null:k(s,x,d,!1),[s,d,x]);return(0,a.jsxs)("div",{className:"p-2 space-y-3 text-[var(--text-primary)]",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"bp-annotation px-2 pt-2 pb-1 text-[12px] uppercase tracking-wider text-[var(--text-secondary)]",children:"Projects"}),(0,a.jsxs)("div",{className:"space-y-0.5",children:[t.map(e=>{let t=l===e.id;return(0,a.jsx)(N,{label:e.name,icon:(0,a.jsx)(T,{className:"w-3.5 h-3.5 text-[#FF7F50] group-hover:text-[var(--accent)] transition-colors"}),active:t&&null===i,initialExpanded:t,hasHands:e.has_hands,onClick:()=>{m(e.id),f(null)},children:t&&w?(0,a.jsx)(_,{node:w,selectedFolder:i,onSelectFolder:f,onSelectFile:v}):void 0},e.id)}),0===t.length&&(0,a.jsx)(S,{icon:(0,a.jsx)(j.A,{className:"w-8 h-8 opacity-40","aria-hidden":!0}),title:"No projects yet"})]})]}),(0,a.jsx)("div",{children:(0,a.jsx)("div",{className:"flex items-center justify-between px-2 pt-2 pb-1",children:(0,a.jsx)("button",{onClick:p,className:"text-[12px] uppercase tracking-wider transition-colors ".concat("favorites"===o?"text-[var(--accent)]":"text-[var(--text-secondary)] hover:text-[var(--text-primary)]"),"aria-label":"Select favorites",children:"Favorites"})})}),(0,a.jsxs)("div",{children:[(0,a.jsxs)("div",{className:"flex items-center justify-between px-2 pt-2 pb-1",children:[(0,a.jsx)("button",{onClick:h,className:"text-[12px] uppercase tracking-wider transition-colors ".concat("knowledge"!==o||i?"text-[var(--text-secondary)] hover:text-[var(--text-primary)]":"text-[var(--accent)]"),"aria-label":"Select knowledge base",children:"Knowledge"}),(0,a.jsx)("button",{onClick:()=>g(0),className:"btn btn-sm","aria-label":"Create new folder",children:"+ Folder"})]}),(0,a.jsx)("div",{className:"space-y-0.5",children:C?(0,a.jsx)(_,{node:C,selectedFolder:i,onSelectFolder:b,onSelectFile:v}):(0,a.jsx)(S,{icon:(0,a.jsx)(y.A,{className:"w-8 h-8 opacity-40","aria-hidden":!0}),title:"No folders yet"})})]})]})}var L=r(50329),P=r(31131),D=r(89191),M=r(29723);function O(e){let{value:t,onChange:r}=e;return(0,a.jsx)("input",{type:"text",value:t,onChange:e=>r(e.target.value),placeholder:"Filter files...",className:"w-full px-2.5 py-1 text-[12px] bg-[var(--bg-primary)] border-b border-[var(--border)] focus:outline-none focus:border-[var(--accent)]"})}var F=r(31923);let A=e=>{let{className:t}=e;return(0,a.jsxs)("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",className:t,children:[(0,a.jsx)("path",{d:"M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z"}),(0,a.jsx)("polyline",{points:"14 2 14 8 20 8"})]})},R=e=>{let{className:t}=e;return(0,a.jsxs)("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:t,children:[(0,a.jsx)("path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"}),(0,a.jsx)("polyline",{points:"7 10 12 15 17 10"}),(0,a.jsx)("line",{x1:"12",y1:"15",x2:"12",y2:"3"})]})};function I(e){let{id:t,title:r,updatedAt:n,active:s,onClick:o,estTokens:i,selectMode:c,selected:d,onToggleSelect:u,favorite:x,tags:m}=e;return(0,a.jsx)("div",{onClick:e=>{if(c){e.preventDefault(),null==u||u();return}o()},className:"\n group relative px-4 py-3 cursor-pointer border-l-[3px] transition-all duration-200\n ".concat(s&&!c||c&&d?"bg-[var(--accent-soft)] border-amber-accent":"border-transparent hover:bg-[var(--accent-soft)]/60 hover:translate-x-0.5","\n "),children:(0,a.jsxs)("div",{className:"flex items-start gap-3",children:[c?(0,a.jsx)("input",{type:"checkbox",checked:!!d,onChange:()=>null==u?void 0:u(),onClick:e=>e.stopPropagation(),className:"mt-1 cursor-pointer accent-amber-accent"}):(0,a.jsx)(A,{className:"w-4 h-4 mt-1 text-amber-accent shrink-0"}),(0,a.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,a.jsxs)("div",{className:"text-sm font-semibold truncate transition-colors flex items-center gap-1.5 ".concat(s?"text-[var(--text-primary)]":"text-[var(--text-primary)] group-hover:text-[var(--accent)]"),children:[x&&(0,a.jsx)("span",{className:"text-amber-accent shrink-0",title:"Favorite","aria-label":"Favorite",children:(0,a.jsx)(F.A,{className:"w-3.5 h-3.5 fill-current","aria-hidden":!0})}),(0,a.jsx)("span",{className:"truncate",children:r})]}),(0,a.jsxs)("div",{className:"text-[11px] mt-1 flex flex-wrap items-center gap-1.5 transition-colors text-[var(--text-secondary)]",children:[(0,a.jsx)("span",{children:function(e){let t=new Date(e),r=new Date().getTime()-t.getTime(),a=Math.floor(r/6e4),n=Math.floor(r/36e5),s=Math.floor(r/864e5);return a<1?"just now":1===a?"1 min ago":a<60?"".concat(a," mins ago"):1===n?"1 hour ago":n<24?"".concat(n," hours ago"):1===s?"1 day ago":s<30?"".concat(s," days ago"):t.toLocaleDateString()}(n)}),"number"==typeof i&&i>0&&(0,a.jsxs)("span",{children:["\xb7 ~",i<1e3?String(i):i<1e4?(i/1e3).toFixed(1)+"k":Math.round(i/1e3)+"k"," tok"]}),m&&m.length>0&&(0,a.jsxs)("span",{className:"flex flex-wrap gap-1",children:[m.slice(0,3).map(e=>(0,a.jsx)("span",{className:"px-1.5 rounded bg-amber-accent/10 border border-amber-accent/20 text-[10px]",children:e},e)),m.length>3&&(0,a.jsxs)("span",{className:"text-[10px] opacity-60",children:["+",m.length-3]})]})]})]}),!c&&(0,a.jsx)("button",{type:"button",onClick:async e=>{var a,n;e.stopPropagation();try{let e=await fetch("/api/files/".concat(t,"/download"));if(!e.ok){let t="HTTP ".concat(e.status);try{let r=await e.json();(null==r?void 0:r.error)&&(t=r.error)}catch(e){}l.o.error("Download failed: ".concat(t));return}let n=e.headers.get("content-disposition")||"",s=/filename="([^"]+)"/.exec(n),o=null!=(a=null==s?void 0:s[1])?a:"".concat(r,".md"),i=await e.blob(),c=URL.createObjectURL(i),d=document.createElement("a");d.href=c,d.download=o,document.body.appendChild(d),d.click(),d.remove(),URL.revokeObjectURL(c)}catch(e){l.o.error("Download failed: ".concat(null!=(n=null==e?void 0:e.message)?n:String(e)))}},title:"Download .md","aria-label":"Download file",className:"btn btn-icon-sm opacity-0 group-hover:opacity-100",children:(0,a.jsx)(R,{className:"w-4 h-4"})})]})})}function z(e){let{open:t,onClose:r,projects:s,defaultProjectId:l,defaultFolder:o,onUploaded:i}=e,[c,d]=(0,n.useState)([]),[u,x]=(0,n.useState)(null!=l?l:""),[m,h]=(0,n.useState)(o),[p,b]=(0,n.useState)([]),[f,v]=(0,n.useState)(""),[g,j]=(0,n.useState)(!1),[y,w]=(0,n.useState)(null),[N,k]=(0,n.useState)(null);(0,n.useEffect)(()=>{t&&(d([]),x(null!=l?l:""),h(o),v(""),w(null),k(null))},[t,l,o]),(0,n.useEffect)(()=>{let e=!1;return(async()=>{let t=u?"/api/folders?projectId=".concat(u):"/api/folders";try{var r;let a=await fetch(t),n=await a.json();e||b(null!=(r=n.folders)?r:[])}catch(t){e||b([])}})(),()=>{e=!0}},[u]);let S=async e=>{var t,r;if(e.preventDefault(),0!==c.length){j(!0),k(null),w(null);try{let e=new FormData;e.append("project_id",""===u?"":String(u)),e.append("folder",m);let r=f.split(",").map(e=>e.trim()).filter(Boolean);for(let t of(r.length&&e.append("tags",JSON.stringify(r)),c))e.append("files",t);let a=await fetch("/api/files/upload",{method:"POST",body:e}),n=await a.json();a.ok?(w(n),i()):k(null!=(t=n.error)?t:"HTTP ".concat(a.status))}catch(e){k(null!=(r=null==e?void 0:e.message)?r:String(e))}finally{j(!1)}}};return t?(0,a.jsx)("div",{className:"fixed inset-0 z-50 bg-black/50 flex items-center justify-center p-4",children:(0,a.jsx)("div",{className:"w-[600px] bg-[var(--bg-primary)] border border-[var(--border-color)] rounded-lg shadow-2xl overflow-hidden",children:(0,a.jsxs)("form",{onSubmit:S,children:[(0,a.jsxs)("div",{className:"px-6 py-4 border-b border-[var(--border-color)] flex items-center justify-between",children:[(0,a.jsx)("h3",{className:"text-lg font-bold text-amber-accent",children:"UPLOAD MARKDOWN FILES"}),(0,a.jsx)("button",{type:"button",onClick:r,className:"btn btn-icon-md","aria-label":"Close dialog",children:(0,a.jsx)(M.A,{className:"w-4 h-4","aria-hidden":!0})})]}),(0,a.jsxs)("div",{className:"p-6 space-y-4",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"block text-[10px] font-bold text-[var(--text-secondary)] tracking-widest mb-1.5",children:"FILES"}),(0,a.jsx)("input",{type:"file",multiple:!0,accept:".md,.markdown,.mmd",onChange:e=>{var t;return d(Array.from(null!=(t=e.target.files)?t:[]))},className:"w-full text-sm text-[var(--text-primary)]"}),c.length>0&&(0,a.jsx)("ul",{className:"mt-2 text-xs text-[var(--text-secondary)] max-h-32 overflow-auto",children:c.map((e,t)=>(0,a.jsxs)("li",{className:"flex items-center justify-between py-0.5",children:[(0,a.jsx)("span",{className:"truncate",children:e.name}),(0,a.jsx)("button",{type:"button",className:"btn btn-icon-sm btn-destructive","aria-label":"Remove ".concat(e.name),onClick:()=>d(e=>e.filter((e,r)=>r!==t)),children:(0,a.jsx)(M.A,{className:"w-3.5 h-3.5","aria-hidden":!0})})]},t))})]}),(0,a.jsxs)("div",{className:"grid grid-cols-2 gap-4",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"block text-[10px] font-bold text-[var(--text-secondary)] tracking-widest mb-1.5",children:"PROJECT"}),(0,a.jsxs)("select",{value:""===u?"":String(u),onChange:e=>x(""===e.target.value?"":Number(e.target.value)),className:"w-full bg-[var(--bg-secondary)] border border-[var(--border-color)] rounded px-3 py-2 text-sm text-[var(--text-primary)] outline-none focus:border-amber-accent/50 cursor-pointer",children:[(0,a.jsx)("option",{value:"",children:"— Knowledge Base —"}),s.map(e=>(0,a.jsx)("option",{value:e.id,children:e.name},e.id))]})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"block text-[10px] font-bold text-[var(--text-secondary)] tracking-widest mb-1.5",children:"FOLDER"}),(0,a.jsxs)("select",{value:m,onChange:e=>h(e.target.value),className:"w-full bg-[var(--bg-secondary)] border border-[var(--border-color)] rounded px-3 py-2 text-sm text-[var(--text-primary)] outline-none focus:border-amber-accent/50 cursor-pointer",children:[(0,a.jsx)("option",{value:"",children:"— Root level —"}),p.map(e=>(0,a.jsx)("option",{value:e,children:e},e))]})]})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"block text-[10px] font-bold text-[var(--text-secondary)] tracking-widest mb-1.5",children:"TAGS"}),(0,a.jsx)("input",{type:"text",value:f,onChange:e=>v(e.target.value),placeholder:"comma, separated, tags",className:"w-full bg-[var(--bg-secondary)] border border-[var(--border-color)] rounded px-3 py-2 text-sm text-[var(--text-primary)] outline-none focus:border-amber-accent/50"})]}),N&&(0,a.jsx)("div",{className:"text-sm text-[var(--danger)]",children:N}),y&&(0,a.jsxs)("div",{className:"text-sm text-[var(--text-secondary)]",children:["Uploaded ",y.uploaded.length," \xb7 renamed ",y.uploaded.filter(e=>e.final_name!==e.original_name).length," \xb7 rejected ",y.rejected.length,(y.uploaded.some(e=>e.final_name!==e.original_name)||y.rejected.length>0)&&(0,a.jsxs)("details",{className:"mt-2",children:[(0,a.jsx)("summary",{className:"cursor-pointer",children:"Details"}),(0,a.jsxs)("ul",{className:"mt-1 text-xs",children:[y.uploaded.filter(e=>e.final_name!==e.original_name).map((e,t)=>(0,a.jsxs)("li",{children:["renamed: ",e.original_name," → ",e.final_name]},"r".concat(t))),y.rejected.map((e,t)=>(0,a.jsxs)("li",{children:["rejected: ",e.name," (",e.reason,")"]},"x".concat(t)))]})]})]})]}),(0,a.jsxs)("div",{className:"px-6 py-4 border-t border-[var(--border-color)] flex justify-end gap-2",children:[(0,a.jsx)("button",{type:"button",onClick:r,className:"btn btn-md",children:"Close"}),(0,a.jsx)("button",{type:"submit",disabled:g||0===c.length,className:"btn btn-md",children:g?"Uploading…":"Upload"})]})]})})}):null}function U(e){let{open:t,onClose:r,onClipped:s}=e,[l,o]=(0,n.useState)(""),[i,c]=(0,n.useState)(""),[d,u]=(0,n.useState)(!1),[x,m]=(0,n.useState)(null);(0,n.useEffect)(()=>{t&&(o(""),c(""),m(null),u(!1))},[t]);let h=async e=>{var t,a;if(e.preventDefault(),l.trim()){u(!0),m(null);try{let e=await fetch("/api/clip",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({url:l.trim(),title:i.trim()||void 0})}),a=await e.json();if(!e.ok)return void m(null!=(t=null==a?void 0:a.error)?t:"HTTP ".concat(e.status));s(),r()}catch(e){m(null!=(a=null==e?void 0:e.message)?a:String(e))}finally{u(!1)}}};return t?(0,a.jsx)("div",{className:"fixed inset-0 z-50 bg-black/50 flex items-center justify-center p-4",children:(0,a.jsx)("div",{className:"w-[600px] bg-[var(--bg-primary)] border border-[var(--border-color)] rounded-lg shadow-2xl overflow-hidden",children:(0,a.jsxs)("form",{onSubmit:h,children:[(0,a.jsxs)("div",{className:"px-6 py-4 border-b border-[var(--border-color)] flex items-center justify-between",children:[(0,a.jsx)("h3",{className:"text-lg font-bold text-amber-accent",children:"CLIP URL"}),(0,a.jsx)("button",{type:"button",onClick:r,className:"btn btn-icon-md","aria-label":"Close dialog",children:(0,a.jsx)(M.A,{className:"w-4 h-4","aria-hidden":!0})})]}),(0,a.jsxs)("div",{className:"p-6 space-y-4",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"block text-[10px] font-bold text-[var(--text-secondary)] tracking-widest mb-1.5",children:"URL"}),(0,a.jsx)("input",{type:"url",required:!0,value:l,onChange:e=>o(e.target.value),placeholder:"https://example.com/article",disabled:d,className:"w-full bg-[var(--bg-secondary)] border border-[var(--border-color)] rounded px-3 py-2 text-sm text-[var(--text-primary)] outline-none focus:border-amber-accent/50"})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"block text-[10px] font-bold text-[var(--text-secondary)] tracking-widest mb-1.5",children:"TITLE (OPTIONAL)"}),(0,a.jsx)("input",{type:"text",value:i,onChange:e=>c(e.target.value),placeholder:"Defaults to page title",disabled:d,className:"w-full bg-[var(--bg-secondary)] border border-[var(--border-color)] rounded px-3 py-2 text-sm text-[var(--text-primary)] outline-none focus:border-amber-accent/50"})]}),x&&(0,a.jsx)("div",{className:"text-sm text-[var(--danger)]",children:x})]}),(0,a.jsxs)("div",{className:"px-6 py-4 border-t border-[var(--border-color)] flex justify-end gap-2",children:[(0,a.jsx)("button",{type:"button",onClick:r,className:"btn btn-md",children:"Close"}),(0,a.jsx)("button",{type:"submit",disabled:d||!l.trim(),className:"btn btn-md",children:d?"Clipping…":"Clip"})]})]})})}):null}var B=r(56570);let H=[{id:"claude-code",label:"Claude Code"},{id:"cursor",label:"Cursor"},{id:"aider",label:"Aider"},{id:"continue",label:"Continue"},{id:"gemini",label:"Gemini / Antigravity"},{id:"copilot",label:"GitHub Copilot"},{id:"codex",label:"Codex"},{id:"generic",label:"Generic JSON"}];function W(e){let{isOpen:t,onClose:r,projectId:s,projectName:o,onOnboarded:i}=e,[c,d]=(0,n.useState)("aider"),[u,x]=(0,n.useState)(!1),m=async()=>{x(!0);try{let e=await fetch("/api/projects/".concat(s,"/onboard"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({targetAgent:c})});if(e.ok)l.o.success("Onboarded ".concat(o)),i(),r();else{let t=await e.json().catch(()=>({}));l.o.error(t.error||"Onboarding failed: HTTP ".concat(e.status))}}catch(e){l.o.error("Failed to connect to server")}finally{x(!1)}};return(0,a.jsx)(B.l,{open:t,onClose:r,title:"Onboard agent",widthClass:"max-w-[500px]",children:(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{className:"text-sm text-[var(--text-secondary)] leading-relaxed",children:["Scaffold workflow rules for ",(0,a.jsx)("strong",{children:o}),". This writes a context file (like ",(0,a.jsx)("code",{children:".aider/kontexta.md"}),") to the project root."]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)("label",{className:"block text-[10px] font-bold text-[var(--text-secondary)] tracking-widest uppercase",children:"Target agent"}),(0,a.jsx)("select",{value:c,onChange:e=>d(e.target.value),className:"w-full bg-[var(--bg-secondary)] border border-[var(--border)] rounded px-3 py-2 text-sm text-[var(--text-primary)] outline-none focus:border-amber-accent/50 cursor-pointer",children:H.map(e=>(0,a.jsx)("option",{value:e.id,children:e.label},e.id))})]}),"aider"===c&&(0,a.jsxs)("div",{className:"p-3 bg-amber-500/5 border border-amber-500/20 rounded text-[11px] text-amber-600 dark:text-amber-400 leading-normal",children:[(0,a.jsx)("strong",{children:"Aider note:"})," Integration is file-based. After onboarding, ensure your ",(0,a.jsx)("code",{children:".aider.conf.yml"})," reads the new file."]}),(0,a.jsxs)("div",{className:"flex justify-end gap-3 pt-2",children:[(0,a.jsx)("button",{type:"button",onClick:r,className:"btn btn-md",disabled:u,children:"Cancel"}),(0,a.jsx)("button",{type:"button",onClick:m,disabled:u,className:"btn btn-md min-w-[140px]",children:u?"Onboarding…":"Onboard agent"})]})]})})}var K=r(17695);function J(e){let{files:t,selectedFileId:r,onSelectFile:s,sortBy:o,onSortChange:i,selectedFolder:c,selectedProject:d,selectedSection:u,basePath:x,onSync:m,onUnregisterProject:p,onDeleteFolder:b,loading:f,projects:v,onUploaded:g,onRefresh:j,refreshing:w,onNewFile:N}=e,[k,C]=(0,n.useState)(""),[T,_]=(0,n.useState)(!1),[E,F]=(0,n.useState)(!1),[A,R]=(0,n.useState)(!1),[B,H]=(0,n.useState)(!1),[J,G]=(0,n.useState)(new Set),[V,q]=(0,n.useState)(!1),[Z,$]=(0,n.useState)(!1);(0,n.useEffect)(()=>{G(new Set)},[c,null==d?void 0:d.id,u,k,o]);let X=(0,n.useMemo)(()=>{let e=[...t],r=e=>(e||"").replace(/\\/g,"/").replace(/\/+$/,""),a=(e,t)=>{if(!e||!t)return!1;let a=r(e),n=r(t)+"/";return a.startsWith(n)};if("projects"===u)if(d){let t=x||d.path;if(t){let n=r(t)+"/";if(c){let t=n+r(c);e=e.filter(e=>a(e.path,t))}else e=e.filter(e=>e.project_id===d.id)}else e=e.filter(e=>e.project_id===d.id)}else e=[];else if("favorites"===u)e=[...t];else if("knowledge"===u){if(e=e.filter(e=>!e.project_id),x){let t=r(x)+"/";if(c){let n=t+r(c);e=e.filter(e=>a(e.path,n))}}}else e=[];switch(o){case"name":e.sort((e,t)=>e.title.localeCompare(t.title));break;case"updated_at":e.sort((e,t)=>new Date(t.updated_at).getTime()-new Date(e.updated_at).getTime());break;case"created_at":e.sort((e,t)=>new Date(t.created_at).getTime()-new Date(e.created_at).getTime())}if(k){let t=k.toLowerCase();e=e.filter(e=>e.title.toLowerCase().includes(t))}return e},[t,o,c,d,u,x,k]);return(0,a.jsxs)("div",{className:"flex flex-col h-full",children:[(0,a.jsxs)("div",{className:"flex items-center gap-1.5 px-1.5 py-1.5 border-b border-[var(--border)]",children:[(0,a.jsx)("div",{className:"flex-1",children:(0,a.jsx)(h,{align:"start",trigger:(0,a.jsxs)("button",{type:"button",className:"btn btn-sm w-full",title:"Add content to the knowledge base",children:["New ",(0,a.jsx)("span",{className:"opacity-60 text-xs",children:"▾"})]}),items:[{label:"New File",icon:(0,a.jsx)("span",{children:"+"}),onSelect:N},{label:"Upload Files",icon:(0,a.jsx)("span",{children:"↑"}),onSelect:()=>_(!0)},{label:"Clip URL",icon:(0,a.jsx)(L.A,{className:"w-3.5 h-3.5","aria-hidden":!0}),onSelect:()=>q(!0)}]})}),"projects"===u&&d&&(0,a.jsx)("div",{className:"flex-1",children:(0,a.jsx)(h,{align:"start",trigger:(0,a.jsxs)("button",{type:"button",className:"btn btn-sm w-full",title:"Project actions",children:["Project ",(0,a.jsx)("span",{className:"opacity-60 text-xs",children:"▾"})]}),items:[{label:"Export ZIP",icon:(0,a.jsx)("span",{children:"↓"}),onSelect:()=>{let e=c?"/api/export/zip?project_id=".concat(d.id,"&folder=").concat(encodeURIComponent(c)):"/api/export/zip?project_id=".concat(d.id),t=document.createElement("a");t.href=e,t.download="",document.body.appendChild(t),t.click(),t.remove()}},{label:"Sync Project",icon:(0,a.jsx)(P.A,{className:"w-3.5 h-3.5","aria-hidden":!0}),onSelect:m},{label:"Scan for New Files",icon:(0,a.jsx)(D.A,{className:"w-3.5 h-3.5","aria-hidden":!0}),onSelect:j},{label:"Onboard Agent",icon:(0,a.jsx)("span",{children:"✨"}),onSelect:()=>$(!0)},...!c&&p?[{label:"Unregister",icon:(0,a.jsx)(M.A,{className:"w-3.5 h-3.5","aria-hidden":!0}),onSelect:p,destructive:!0}]:[]]})}),(0,a.jsx)("button",{type:"button",onClick:()=>{F(e=>!e),G(new Set)},className:"btn btn-sm flex-1",title:"Toggle multi-select",children:E?"Selected":"Select"}),(0,a.jsx)("button",{type:"button",onClick:j,disabled:w,className:"btn btn-sm ".concat(w?"opacity-50":""),title:"Refresh (scan disk for changes)","aria-label":"Refresh",children:w?"...":(0,a.jsx)(P.A,{className:"w-4 h-4","aria-hidden":!0})})]}),(0,a.jsxs)("div",{className:"bp-annotation bp-dashed px-3 py-2 flex items-center justify-between text-[11px] uppercase tracking-wider text-[var(--text-secondary)] border-b border-[var(--border)]",children:[(0,a.jsxs)("span",{children:[X.length," ",1===X.length?"file":"files",(()=>{var e;let t=X.reduce((e,t)=>{var r;return e+(null!=(r=t.est_tokens)?r:0)},0);return t>0?" \xb7 ~".concat((e=t)<1e3?String(e):e<1e4?"".concat((e/1e3).toFixed(1),"k"):e<1e6?"".concat(Math.round(e/1e3),"k"):"".concat((e/1e6).toFixed(1),"M")," tok"):""})()]}),(0,a.jsx)("div",{className:"flex items-center gap-2",children:(0,a.jsxs)("select",{value:o,onChange:e=>i(e.target.value),className:"bg-transparent text-[11px] uppercase tracking-wider focus:outline-none cursor-pointer",children:[(0,a.jsx)("option",{value:"updated_at",className:"bg-[var(--bg-primary)] text-[var(--text-primary)]",children:"updated"}),(0,a.jsx)("option",{value:"created_at",className:"bg-[var(--bg-primary)] text-[var(--text-primary)]",children:"created"}),(0,a.jsx)("option",{value:"name",className:"bg-[var(--bg-primary)] text-[var(--text-primary)]",children:"name"})]})})]}),(t.length>10||""!==k.trim())&&(0,a.jsx)(O,{value:k,onChange:C}),(()=>{let e=new Set(X.map(e=>e.id)),t=[...J].filter(t=>e.has(t)),n=d?String(d.id):"kb",o=async()=>{if(0===t.length||A)return;R(!0);let e=[];for(let n of t){var r,a;try{let t=await fetch("/api/files/".concat(n),{method:"DELETE"});if(!t.ok){let a=await t.json().catch(()=>({}));e.push({id:n,error:null!=(r=null==a?void 0:a.error)?r:"HTTP ".concat(t.status)})}}catch(t){e.push({id:n,error:null!=(a=null==t?void 0:t.message)?a:"Network error"})}}R(!1),H(!1),G(new Set),j();let n=t.length-e.length;e.length>0?(console.error("[bulk-delete] failures:",e),n>0&&l.o.success("Deleted ".concat(n," file(s)")),l.o.error("".concat(e.length," file(s) failed to delete: ")+e.slice(0,5).map(e=>"#".concat(e.id," (").concat(e.error,")")).join(", ")+(e.length>5?", …and ".concat(e.length-5," more (see console)"):""))):l.o.success("Deleted ".concat(n," file(s)"))};return(0,a.jsxs)("div",{className:"flex-1 overflow-y-auto",children:[E&&t.length>0&&(0,a.jsxs)("div",{className:"sticky top-0 z-10 px-3 py-2 bg-[var(--bg-secondary)] border-b border-amber-accent/40 flex items-center justify-between gap-2 text-[11px]",children:[(0,a.jsxs)("span",{className:"whitespace-nowrap shrink-0",children:[t.length," selected"]}),(0,a.jsxs)("div",{className:"flex items-center gap-1.5 shrink-0",children:[(0,a.jsx)("a",{href:"/api/export/zip?file_ids=".concat(t.join(","),"&scope=").concat(n),download:!0,className:"px-2 py-1 bg-amber-accent text-black font-bold rounded whitespace-nowrap leading-none",title:"Download selected files as ZIP",children:"ZIP"}),(0,a.jsx)("button",{type:"button",onClick:()=>H(!0),disabled:A,className:"px-2 py-1 bg-[var(--danger)] text-white font-bold rounded whitespace-nowrap leading-none ".concat(A?"opacity-50":"hover:bg-[color-mix(in_srgb,var(--danger)_85%,black)]"),title:"Delete ".concat(t.length," selected file(s)"),children:A?"…":"Delete"}),(0,a.jsx)("button",{type:"button",onClick:()=>G(new Set),className:"px-2 py-1 border border-[var(--border)] rounded whitespace-nowrap leading-none hover:bg-[var(--bg-tertiary)]",title:"Clear selection",children:"Clear"})]})]}),(0,a.jsx)(K.T,{open:B,onClose:()=>H(!1),onConfirm:o,title:"Delete ".concat(t.length," file").concat(1===t.length?"":"s","?"),message:"Knowledge Base files will be removed from disk and the deletion will be committed to git (recoverable via Time Travel). Project files are only un-indexed; the source file on disk is left intact.",confirmLabel:"Delete ".concat(t.length," file").concat(1===t.length?"":"s"),destructive:!0,loading:A}),X.length>0?X.map(e=>{var t;return(0,a.jsx)(I,{id:e.id,title:e.title,updatedAt:e.updated_at,active:e.id===r,onClick:()=>s(e.id),estTokens:e.est_tokens,favorite:e.favorite,tags:null!=(t=e.tags)?t:void 0,selectMode:E,selected:J.has(e.id),onToggleSelect:()=>{G(t=>{let r=new Set(t);return r.has(e.id)?r.delete(e.id):r.add(e.id),r})}},e.id)}):f||"projects"===u&&!d?(0,a.jsx)("div",{"aria-label":"Loading files",role:"status",children:[0,1,2,3].map(e=>(0,a.jsxs)("div",{className:"px-3 py-2 border-b border-[var(--bg-tertiary)]",children:[(0,a.jsx)("div",{className:"skeleton h-3.5",style:{width:"".concat(60+13*e%30,"%")}}),(0,a.jsx)("div",{className:"skeleton h-2.5 mt-2",style:{width:"".concat(30+7*e%20,"%")}})]},e))}):u?(0,a.jsx)(S,{icon:(0,a.jsx)(y.A,{className:"w-16 h-16 opacity-30 dark-icon","aria-hidden":!0}),title:"Folder is empty",hint:"This folder doesn't contain any indexed context files.",action:"knowledge"===u&&c&&b?(0,a.jsxs)("div",{className:"flex flex-col items-center gap-3",children:[(0,a.jsx)("div",{className:"h-px w-16 bg-[var(--border)]"}),(0,a.jsx)("button",{onClick:b,className:"px-6 py-2.5 bg-[var(--danger-soft)] text-[var(--danger)] border border-[var(--danger)]/30 rounded-lg text-sm font-bold hover:bg-[var(--danger)]/20 transition-all btn-press shadow-sm",children:"DELETE THIS FOLDER"}),(0,a.jsx)("p",{className:"text-[11px] text-[var(--muted)] uppercase tracking-widest font-bold",children:"Permanent Action"})]}):void 0}):(0,a.jsx)(S,{icon:(0,a.jsx)(y.A,{className:"w-16 h-16 opacity-30 dark-icon","aria-hidden":!0}),title:"No Selection",hint:"Please select a project or the Knowledge Base from the sidebar to view files."})]})})(),(0,a.jsx)(z,{open:T,onClose:()=>_(!1),projects:null!=v?v:[],defaultProjectId:"projects"===u&&d?d.id:null,defaultFolder:null!=c?c:"",onUploaded:()=>{_(!1),null==g||g()}}),(0,a.jsx)(U,{open:V,onClose:()=>q(!1),onClipped:()=>{j()}}),d&&(0,a.jsx)(W,{isOpen:Z,onClose:()=>$(!1),projectId:d.id,projectName:d.name,onOnboarded:()=>{j()}})]})}var G=r(79358),V=r(63337),q=r(2338),Z=r(59217),$=r(74694),X=r(62712),Y=r(35186);let Q=0;function ee(e){if("undefined"!=typeof document){for(let t of[e,"d".concat(e),"i".concat(e),"dom-".concat(e)]){let e=document.getElementById(t);e&&e.remove()}try{document.querySelectorAll('[id="'.concat(e,'"], [id^="d').concat(e,'"], [id^="i').concat(e,'"], [id^="dom-').concat(e,'"]')).forEach(e=>e.remove())}catch(e){}}}function et(e){var t,s;let{source:l,className:i,filename:c}=e,d=(0,n.useRef)(null),[u,x]=(0,n.useState)(null),[m,h]=(0,n.useState)(null),{resolvedTheme:p}=(0,o.D)();(0,n.useEffect)(()=>{let e=!1,t=(Q+=1,"mermaid-".concat(Date.now(),"-").concat(Q));return x(null),h(null),(async()=>{try{let a=(await Promise.all([r.e(1805),r.e(7050),r.e(5514)]).then(r.bind(r,61081))).default;a.initialize({startOnLoad:!1,theme:"light"===p?"default":"dark",securityLevel:"strict"});let{svg:n}=await a.render(t,l);!e&&(h(n),d.current&&(d.current.innerHTML=n)),ee(t)}catch(r){ee(t),!e&&(x(r instanceof Error?r.message:String(r)),h(null),d.current&&(d.current.innerHTML=""))}})(),()=>{e=!0,ee(t)}},[l,p]);let b=c&&(null!=(s=null==(t=c.split(/[\\/]/).pop())?void 0:t.trim())?s:"").replace(/\.(mmd|md|markdown)$/i,"").trim()||"diagram",f=!!m&&!u;return(0,a.jsxs)("div",{className:i,children:[f&&(0,a.jsxs)("div",{className:"flex items-center gap-2 mb-2",children:[(0,a.jsx)("button",{type:"button",onClick:()=>{var e;if(!m)return;let t=null==(e=d.current)?void 0:e.querySelector("svg");if(!t)return void x("SVG export failed: rendered SVG not found");let r=t.cloneNode(!0);r.setAttribute("xmlns","http://www.w3.org/2000/svg"),r.setAttribute("xmlns:xlink","http://www.w3.org/1999/xlink");let a=new XMLSerializer().serializeToString(r),n=new Blob([a.startsWith("<?xml")?a:'<?xml version="1.0" encoding="UTF-8"?>\n'.concat(a)],{type:"image/svg+xml;charset=utf-8"}),s=URL.createObjectURL(n),l=document.createElement("a");l.href=s,l.download="".concat(b,".svg"),document.body.appendChild(l),l.click(),document.body.removeChild(l),URL.revokeObjectURL(s)},className:"btn btn-sm","aria-label":"Export diagram as SVG",title:"Export as SVG",children:"SVG"}),(0,a.jsx)("button",{type:"button",onClick:()=>{var e,t;if(!m)return;let r=null==(e=d.current)?void 0:e.querySelector("svg");if(!r)return void x("PNG export failed: rendered SVG not found");let a=800,n=600,s=null==(t=r.viewBox)?void 0:t.baseVal;if(s&&s.width>0&&s.height>0)a=s.width,n=s.height;else try{let e=r.getBBox();e.width>0&&e.height>0&&(a=e.width,n=e.height)}catch(e){}let l=r.cloneNode(!0);l.setAttribute("xmlns","http://www.w3.org/2000/svg"),l.setAttribute("xmlns:xlink","http://www.w3.org/1999/xlink"),l.setAttribute("width",String(a)),l.setAttribute("height",String(n));let o=new XMLSerializer().serializeToString(l),i=new TextEncoder().encode(o),c="";for(let e=0;e<i.length;e++)c+=String.fromCharCode(i[e]);let u="data:image/svg+xml;base64,".concat(btoa(c)),h=document.createElement("canvas");h.width=Math.max(1,Math.round(2*a)),h.height=Math.max(1,Math.round(2*n));let f=h.getContext("2d");if(!f)return void x("PNG export failed: 2D canvas context unavailable");let v=new Image;v.onload=()=>{f.fillStyle="light"===p?"#ffffff":"#1f2937",f.fillRect(0,0,h.width,h.height),f.drawImage(v,0,0,h.width,h.height);try{h.toBlob(e=>{if(!e)return void x("PNG export failed: canvas returned empty blob");let t=URL.createObjectURL(e),r=document.createElement("a");r.href=t,r.download="".concat(b,".png"),document.body.appendChild(r),r.click(),document.body.removeChild(r),URL.revokeObjectURL(t)},"image/png")}catch(t){let e=t instanceof Error?t.message:String(t);x("PNG export failed: ".concat(e))}},v.onerror=()=>{x("PNG export failed: SVG could not be loaded as an image (it may reference external resources or unsupported features)")},v.src=u},className:"btn btn-sm","aria-label":"Export diagram as PNG",title:"Export as PNG (2x)",children:"PNG"})]}),u&&(0,a.jsxs)("pre",{className:"text-[var(--danger)] whitespace-pre-wrap mb-2 text-sm",children:["Mermaid render error: ",u]}),(0,a.jsx)("div",{ref:d}),u&&(0,a.jsx)("pre",{className:"mt-2 p-3 bg-zinc-900 text-zinc-100 text-xs overflow-x-auto",children:l})]})}function er(e){let{content:t,className:r}=e;return(0,a.jsx)("div",{className:"prose dark:prose-invert max-w-none text-[var(--text-primary)] ".concat(r||""),children:(0,a.jsx)(Y.oz,{remarkPlugins:[Z.A],components:{h1:e=>{let{children:t}=e;return(0,a.jsx)("h1",{className:"text-3xl font-black mb-6 bg-gradient-to-r from-[var(--accent)] via-amber-accent-light to-[var(--accent)] bg-clip-text text-transparent drop-shadow-[0_0_15px_color-mix(in_srgb,var(--accent)_20%,transparent)] font-title tracking-tight",children:t})},h2:e=>{let{children:t}=e;return(0,a.jsx)("h2",{className:"text-amber-accent-light text-2xl font-bold mb-4 mt-8 border-b border-amber-accent/10 pb-2",children:t})},h3:e=>{let{children:t}=e;return(0,a.jsx)("h3",{className:"text-amber-accent-light text-xl font-bold mb-3 mt-6",children:t})},h4:e=>{let{children:t}=e;return(0,a.jsx)("h4",{className:"text-amber-accent-light text-lg font-semibold mb-2 mt-4",children:t})},h5:e=>{let{children:t}=e;return(0,a.jsx)("h5",{className:"text-amber-accent-light text-base font-semibold mb-2",children:t})},h6:e=>{let{children:t}=e;return(0,a.jsx)("h6",{className:"text-amber-accent-light text-sm font-semibold mb-2",children:t})},blockquote:e=>{let{children:t}=e;return(0,a.jsx)("blockquote",{className:"border-l-4 border-amber-accent/30 bg-amber-accent/5 px-6 py-3 rounded-r-lg my-8 text-[var(--text-secondary)] italic leading-relaxed",children:t})},strong:e=>{let{children:t}=e;return(0,a.jsx)("strong",{className:"font-bold text-amber-accent-light",children:t})},code:e=>{let{className:t,children:r,...n}=e;return"language-mermaid"===t?(0,a.jsx)(et,{source:String(r).replace(/\n$/,""),className:"my-4"}):(0,a.jsx)("code",{className:t,...n,children:r})}},children:t})})}function ea(e){let{content:t,onChange:r}=e,s=(0,n.useRef)(null);return(0,n.useEffect)(()=>{if(s.current){s.current.style.height="0px";let e=s.current.scrollHeight;s.current.style.height=e+"px"}},[t]),(0,a.jsx)("div",{className:"flex flex-col h-full bg-[var(--bg-primary)]",children:(0,a.jsx)("textarea",{ref:s,value:t,onChange:e=>r(e.target.value),className:"flex-1 w-full p-8 bg-transparent border-none outline-none resize-none font-mono text-[14px] text-[var(--text-primary)] leading-relaxed scrollbar-thin",placeholder:"Start typing your markdown...",spellCheck:!1})})}function en(e){let{open:t,title:r,onClose:n,onConfirm:s,loading:l}=e;return(0,a.jsx)(K.T,{open:t,onClose:n,onConfirm:s,title:"Delete file",message:(0,a.jsxs)(a.Fragment,{children:['Delete "',(0,a.jsx)("span",{className:"font-bold text-[var(--text-primary)]",children:r}),'"? Knowledge Base files are recoverable from git history (Time Travel). Project files are only removed from the index — the file on disk is untouched.']}),confirmLabel:"Delete",destructive:!0,loading:l})}function es(e){let{open:t,onClose:r,title:n,body:s,detail:l}=e;return(0,a.jsxs)(B.l,{open:t,onClose:r,title:n,children:[(0,a.jsx)("p",{className:"text-sm text-[var(--text-primary)] mb-4 leading-relaxed",children:s}),l&&(0,a.jsxs)("div",{className:"bg-[var(--danger-soft)] border border-[var(--danger)]/20 rounded-lg p-4 mb-6",children:[(0,a.jsx)("p",{className:"text-[11px] text-[var(--danger)] uppercase tracking-tighter font-bold mb-2 opacity-70",children:"Detail:"}),(0,a.jsx)("pre",{className:"text-[12px] font-mono text-[var(--danger)] whitespace-pre-wrap break-words leading-tight overflow-x-auto max-h-48 custom-scrollbar",children:l})]}),(0,a.jsx)("div",{className:"flex justify-end",children:(0,a.jsx)("button",{onClick:r,className:"btn btn-md btn-destructive",children:"Got it"})})]})}let el=e=>{let{className:t}=e;return(0,a.jsxs)("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",className:t,children:[(0,a.jsx)("path",{d:"M3 6h18"}),(0,a.jsx)("path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6"}),(0,a.jsx)("path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2"})]})},eo=e=>{let{className:t}=e;return(0,a.jsxs)("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:t,children:[(0,a.jsx)("path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"}),(0,a.jsx)("polyline",{points:"7 10 12 15 17 10"}),(0,a.jsx)("line",{x1:"12",y1:"15",x2:"12",y2:"3"})]})};function ei(e,t,r){let a=new Blob([e],{type:r}),n=URL.createObjectURL(a),s=document.createElement("a");s.href=n,s.download=t,document.body.appendChild(s),s.click(),s.remove(),URL.revokeObjectURL(n)}let ec=e=>{let{filled:t,className:r}=e;return(0,a.jsx)("svg",{viewBox:"0 0 24 24",fill:t?"currentColor":"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:r,children:(0,a.jsx)("polygon",{points:"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"})})};function ed(e){var t,r;let{fileId:s,onDelete:o,onChanged:i,onDirtyChange:c}=e,[d,u]=(0,n.useState)(null),[x,m]=(0,n.useState)(null),[p,b]=(0,n.useState)(!1),[f,v]=(0,n.useState)(!1),[g,j]=(0,n.useState)([]),[w,N]=(0,n.useState)(!1),[k,C]=(0,n.useState)(""),[T,_]=(0,n.useState)(!1),[E,L]=(0,n.useState)(!1),[P,M]=(0,n.useState)(!1),[O,F]=(0,n.useState)(!1),[A,R]=(0,n.useState)(!1),[I,z]=(0,n.useState)(""),[U,B]=(0,n.useState)(""),[H,W]=(0,n.useState)(void 0),[K,J]=(0,n.useState)(!1),[Y,Q]=(0,n.useState)(!1),ee=()=>((null==d?void 0:d.title)||"untitled").replace(/\.(md|mmd)$/i,""),ed=async()=>{d&&(ei(String(await (0,V.l)().use(q.A).use(Z.A).use(X.A,{keep:["code","inlineCode","table","tableCell"]}).use($.A).process(d.content)),"".concat(ee(),".txt"),"text/plain"),l.o.success("Exported text"))},[eu,ex]=(0,n.useState)(!1),em=async()=>{if(!d)return;ex(!0);let e=l.o.loading("Generating PDF…");try{var t;let r=await fetch("/api/files/".concat(d.id,"/export-pdf"));if(!r.ok){let t=await r.text(),a="Failed to export PDF (HTTP ".concat(r.status,")");try{let e=JSON.parse(t);(null==e?void 0:e.error)&&(a=e.error)}catch(e){console.error("[export-pdf] non-JSON error response:",t)}l.o.error(a,{id:e});return}let a=r.headers.get("content-disposition")||"",n=/filename="([^"]+)"/.exec(a),s=null!=(t=null==n?void 0:n[1])?t:"".concat(ee(),".pdf"),o=await r.blob(),i=URL.createObjectURL(o),c=document.createElement("a");c.href=i,c.download=s,document.body.appendChild(c),c.click(),c.remove(),URL.revokeObjectURL(i),l.o.success("Exported PDF",{id:e})}catch(t){console.error("[export-pdf] request failed:",t),l.o.error("Failed to export PDF — check the browser console for details.",{id:e})}finally{ex(!1)}},eh=async()=>{if(s){J(!0);try{let e=await fetch("/api/files/".concat(s));if(e.ok){let t=await e.json();u(t),C(t.content)}else l.o.error("Failed to refresh file (HTTP ".concat(e.status,")"))}catch(t){var e;l.o.error("Failed to refresh file: ".concat(null!=(e=null==t?void 0:t.message)?e:"Network error"))}finally{J(!1)}}},ep=(0,n.useRef)(s);(0,n.useEffect)(()=>{ep.current=s},[s]);let eb=(0,n.useRef)(c);(0,n.useEffect)(()=>{eb.current=c},[c]),(0,n.useEffect)(()=>{var e;let t=p&&null!=d&&k!==d.content;null==(e=eb.current)||e.call(eb,t)},[p,k,null==d?void 0:d.content]),(0,n.useEffect)(()=>()=>{var e;null==(e=eb.current)||e.call(eb,!1)},[]),(0,n.useEffect)(()=>{if(null===s){u(null),m(null),b(!1),v(!1);return}let e=new AbortController;return(async()=>{var t,r,a;_(!0),m(null);try{let a=await fetch("/api/files/".concat(s),{signal:e.signal});if(ep.current!==s)return;if(a.ok){let e=await a.json();if(ep.current!==s)return;u(e),C(e.content)}else{let e=null;try{e=await a.json()}catch(e){}if(ep.current!==s)return;u(null),m({kind:null!=(t=null==e?void 0:e.kind)?t:"http",message:null!=(r=null==e?void 0:e.error)?r:"Request failed with HTTP ".concat(a.status),status:a.status,path:null==e?void 0:e.path})}}catch(e){if((null==e?void 0:e.name)==="AbortError"||(console.error("Failed to fetch file:",e),ep.current!==s))return;u(null),m({kind:"network",message:null!=(a=null==e?void 0:e.message)?a:"Network error"})}finally{ep.current===s&&_(!1)}})(),v(!1),()=>e.abort()},[s]);let ef=async()=>{var e,t;if(null!=s){Q(!0);try{let t=await fetch("/api/files/".concat(s),{method:"DELETE"});if(t.ok)m(null),u(null),o(s).catch(e=>console.error("onDelete after orphan remove failed:",e)),null==i||i();else{let r=await t.json().catch(()=>({}));m({kind:"http",message:null!=(e=null==r?void 0:r.error)?e:"Remove failed: HTTP ".concat(t.status),status:t.status})}}catch(e){m({kind:"network",message:null!=(t=null==e?void 0:e.message)?t:"Network error while removing orphan row"})}finally{Q(!1)}}},ev=async()=>{if(s){N(!0);try{let e=await fetch("/api/files/".concat(s,"/history"));if(e.ok){let t=await e.json();if(ep.current!==s)return;j(t)}}catch(e){console.error("Failed to fetch history:",e)}finally{ep.current===s&&N(!1)}}},eg=async e=>{if(s)try{let t=await fetch("/api/files/".concat(s,"/history/restore"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({hash:e})});if(t.ok){let e=await t.json();if(ep.current!==s)return;u(t=>t&&t.id===s?{...t,content:e.content}:t),C(e.content),v(!1),l.o.success("Restored from history")}else{let e=await t.json().catch(()=>({}));l.o.error((null==e?void 0:e.error)||"Failed to restore version")}}catch(e){var t;l.o.error("Failed to restore version: ".concat(null!=(t=null==e?void 0:e.message)?t:"Network error"))}},ej=()=>{b(!1),C((null==d?void 0:d.content)||"")},ey=async()=>{var e,t,r;if(!d)return;let a=d.id;try{L(!0);let r=await fetch("/api/files/".concat(a),{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({content:k,expected_updated_at:d.updated_at})});if(r.ok){let e=await r.json();if(ep.current!==a){e.git_warning&&console.warn("[kontexta] git_warning for stale file ".concat(a,":"),e.git_warning);return}u(e),b(!1),l.o.success("Saved"),e.git_warning&&(z("Git commit failed"),B("Your changes were saved to the database, but Kontexta could not create a Git history entry for this file."),W(e.git_warning),R(!0))}else if(409===r.status){let n,s;try{let a=await r.json();n=null==a||null==(e=a.current)?void 0:e.content,s=null==a||null==(t=a.current)?void 0:t.updated_at}catch(e){}ep.current===a&&(void 0!==n&&void 0!==s&&u(e=>e?{...e,content:n,updated_at:s}:e),z("File changed on disk"),B("This file was NOT saved — it was modified elsewhere since you opened it. Disk content has been reloaded below; your edits are still in the editor. Click Save again to overwrite with your edits."),W(void 0),R(!0))}else{let e="Save failed (".concat(r.status,")");try{let t=await r.json();(null==t?void 0:t.error)&&(e=t.error)}catch(e){}ep.current===a&&(z("Save failed"),B("Your changes were NOT saved."),W(e),R(!0))}}catch(e){console.error("Failed to save file:",e),ep.current===a&&(z("Save failed"),B("Your changes were NOT saved — a network error occurred."),W(null!=(r=null==e?void 0:e.message)?r:"Network error while saving"),R(!0))}finally{ep.current===a&&L(!1)}},ew=async()=>{if(d){F(!0);try{await o(d.id),u(null),M(!1)}finally{F(!1)}}};if(!s)return(0,a.jsx)("div",{className:"h-full flex flex-col items-center justify-center animate-fade-in",children:(0,a.jsx)(S,{icon:(0,a.jsx)(y.A,{className:"w-16 h-16 opacity-40 dark-icon","aria-hidden":!0}),title:"Select a file to preview",hint:"Choose a file from the list on the left"})});if(T)return(0,a.jsxs)("div",{className:"h-full flex flex-col animate-fade-in",children:[(0,a.jsxs)("div",{className:"border-b border-[var(--border)] px-6 py-4",children:[(0,a.jsx)("div",{className:"skeleton h-6 w-48 mb-2"}),(0,a.jsx)("div",{className:"skeleton h-4 w-32"})]}),(0,a.jsxs)("div",{className:"flex-1 p-6 space-y-4",children:[(0,a.jsx)("div",{className:"skeleton h-4 w-full"}),(0,a.jsx)("div",{className:"skeleton h-4 w-5/6"}),(0,a.jsx)("div",{className:"skeleton h-4 w-4/6"}),(0,a.jsx)("div",{className:"skeleton h-4 w-full"}),(0,a.jsx)("div",{className:"skeleton h-4 w-3/4"})]})]});if(!d)return(null==x?void 0:x.kind)==="disk_missing"?(0,a.jsxs)("div",{className:"h-full flex flex-col items-center justify-center text-[var(--text-secondary)] gap-4 animate-fade-in p-8",children:[(0,a.jsx)(G.A,{className:"w-16 h-16 opacity-40 dark-icon","aria-hidden":!0}),(0,a.jsxs)("div",{className:"text-center max-w-lg",children:[(0,a.jsx)("p",{className:"text-lg font-bold text-[var(--text-primary)]",children:"File is missing on disk"}),(0,a.jsx)("p",{className:"text-sm font-medium text-[var(--text-secondary)] mt-2",children:"The index still has a row for this file, but the file at the path below no longer exists. This usually happens when the file was deleted while the watcher wasn't running."}),x.path&&(0,a.jsx)("pre",{className:"mt-3 p-2 bg-[var(--bg-tertiary)] text-[var(--text-primary)] text-xs overflow-x-auto rounded",children:x.path}),(0,a.jsx)("button",{type:"button",className:"btn btn-sm mt-4",onClick:ef,disabled:Y,children:Y?"Removing…":"Remove from index"})]})]}):x?(0,a.jsxs)("div",{className:"h-full flex flex-col items-center justify-center text-[var(--text-secondary)] gap-3 animate-fade-in p-8",children:[(0,a.jsx)(G.A,{className:"w-16 h-16 opacity-40 dark-icon","aria-hidden":!0}),(0,a.jsxs)("div",{className:"text-center max-w-lg",children:[(0,a.jsxs)("p",{className:"text-lg font-bold text-[var(--text-primary)]",children:["Failed to load file",x.status?" (HTTP ".concat(x.status,")"):""]}),(0,a.jsx)("p",{className:"text-sm font-medium text-[var(--text-secondary)] mt-2 break-words",children:x.message})]})]}):(0,a.jsx)("div",{className:"h-full flex flex-col items-center justify-center animate-fade-in",children:(0,a.jsx)(S,{icon:(0,a.jsx)(D.A,{className:"w-16 h-16 opacity-40 dark-icon","aria-hidden":!0}),title:"File not found",hint:"This file may have been moved or deleted"})});return(0,a.jsxs)("div",{className:"h-full flex flex-col animate-fade-in",children:[(0,a.jsxs)("div",{className:"h-10 px-4 border-b border-[var(--border)] flex items-center gap-4 text-[14px] sticky top-0 bg-[var(--bg-primary)] z-10",children:[["view","edit","history"].map(e=>{let t="view"===e&&!p&&!f||"edit"===e&&p||"history"===e&&f;return(0,a.jsx)("button",{onClick:()=>{if("edit"===e){p||(b(!0),C((null==d?void 0:d.content)||""));return}p&&ej(),v("history"===e),"history"===e&&ev()},className:"btn btn-sm -mb-px py-2 border-b-2 transition-colors ".concat(t?"border-[var(--accent)]":""),children:e[0].toUpperCase()+e.slice(1)},e)}),(0,a.jsx)("div",{className:"ml-auto flex items-center gap-3 text-[12px] text-[var(--text-secondary)] font-mono",children:p?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("button",{onClick:ey,disabled:E,className:"btn btn-md",children:E?"Saving...":"Save"}),(0,a.jsx)("button",{onClick:ej,disabled:E,className:"btn btn-md",children:"Cancel"})]}):(0,a.jsxs)(a.Fragment,{children:[(null==d?void 0:d.updated_at)&&(0,a.jsxs)("span",{children:["edited ",function(e){if(!e)return"";let t=new Date(e).getTime();if(!isFinite(t))return e;let r=Math.floor((Date.now()-t)/1e3);return r<60?"".concat(r,"s ago"):r<3600?"".concat(Math.floor(r/60),"m ago"):r<86400?"".concat(Math.floor(r/3600),"h ago"):"".concat(Math.floor(r/86400),"d ago")}(d.updated_at)]}),(null==d?void 0:d.content)&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("span",{className:"text-[var(--border)]",children:"\xb7"}),(0,a.jsxs)("span",{title:"~".concat(Math.max(1,Math.ceil(d.content.length/4)).toLocaleString()," tokens (heuristic: chars/4)"),children:["~",(r=Math.max(1,Math.ceil(d.content.length/4)))<1e3?String(r):r<1e4?"".concat((r/1e3).toFixed(1),"k"):r<1e6?"".concat(Math.round(r/1e3),"k"):"".concat((r/1e6).toFixed(1),"M")," tok"]})]}),(0,a.jsx)("button",{onClick:eh,disabled:K,className:"btn btn-md","aria-label":"Refresh file",title:"Refresh file content",children:(0,a.jsxs)("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"w-4 h-4 opacity-70 ".concat(K?"animate-spin":""),children:[(0,a.jsx)("path",{d:"M21 2v6h-6"}),(0,a.jsx)("path",{d:"M3 12a9 9 0 0 1 15-6.7L21 8"}),(0,a.jsx)("path",{d:"M3 22v-6h6"}),(0,a.jsx)("path",{d:"M21 12a9 9 0 0 1-15 6.7L3 16"})]})}),(0,a.jsx)("button",{onClick:async()=>{if(!d)return;let e=!d.favorite;u({...d,favorite:e});try{if(!(await fetch("/api/files/".concat(d.id),{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({favorite:e})})).ok)throw Error("PATCH failed");null==i||i()}catch(r){var t;u({...d,favorite:!e}),l.o.error("Failed to update favorite: ".concat(null!=(t=null==r?void 0:r.message)?t:"Network error"))}},className:"btn btn-md","aria-label":(null==d?void 0:d.favorite)?"Unfavorite":"Favorite",title:(null==d?void 0:d.favorite)?"Remove from favorites":"Add to favorites",children:(0,a.jsx)(ec,{filled:!!(null==d?void 0:d.favorite),className:"w-4 h-4 ".concat((null==d?void 0:d.favorite)?"text-amber-accent":"opacity-60")})}),(0,a.jsx)(h,{trigger:(0,a.jsx)("button",{disabled:eu,className:"btn btn-md","aria-label":"Export file",title:eu?"Generating PDF…":"Export file",children:(0,a.jsx)(eo,{className:"w-4 h-4 opacity-70 ".concat(eu?"animate-pulse":"")})}),items:[{label:"Markdown (.md)",onSelect:()=>{d&&(ei(d.content,"".concat(ee(),".md"),"text/markdown"),l.o.success("Exported Markdown"))}},{label:"Text (.txt)",onSelect:()=>{ed()}},{label:"PDF",onSelect:em}]}),(0,a.jsx)("button",{onClick:()=>M(!0),className:"btn btn-md btn-destructive","aria-label":"Delete file",title:"Delete file",children:(0,a.jsx)(el,{className:"w-4 h-4 opacity-70"})})]})})]}),!p&&!f&&(0,a.jsxs)("div",{className:"px-4 py-2 border-b border-[var(--border)] flex flex-wrap items-center gap-2 text-[12px]",children:[(0,a.jsx)("span",{className:"text-[var(--text-secondary)] uppercase tracking-wider text-[10px] font-bold",children:"Tags"}),(null!=(t=null==d?void 0:d.tags)?t:[]).map(e=>(0,a.jsxs)("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 rounded bg-amber-accent/10 border border-amber-accent/30 text-[var(--text-primary)]",children:[e,(0,a.jsx)("button",{"aria-label":"Remove tag ".concat(e),title:"Remove tag ".concat(e),onClick:async()=>{if(!d)return;let t=d.id,r=d.tags,a=r.filter(t=>t!==e);u(e=>e&&e.id===t?{...e,tags:a}:e);try{if(!(await fetch("/api/files/".concat(t),{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({tags:a})})).ok)throw Error("PATCH failed");null==i||i()}catch(e){var n;u(e=>e&&e.id===t?{...e,tags:r}:e),l.o.error("Failed to remove tag: ".concat(null!=(n=null==e?void 0:e.message)?n:"Network error"))}},className:"text-[var(--text-secondary)] hover:text-[var(--danger)]",children:"\xd7"})]},e)),(0,a.jsx)("input",{type:"text",placeholder:"add tag…",className:"bg-transparent border-b border-transparent focus:border-amber-accent/40 outline-none px-1 py-0.5 w-24",onKeyDown:async e=>{if("Enter"!==e.key||!d)return;let t=(e.currentTarget.value||"").trim();if(!t)return;let r=t.toLowerCase().replace(/\s+/g,"-");if(d.tags.includes(r)){e.currentTarget.value="";return}let a=d.id,n=d.tags,s=[...n,r];u(e=>e&&e.id===a?{...e,tags:s}:e),e.currentTarget.value="";try{if(!(await fetch("/api/files/".concat(a),{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({tags:s})})).ok)throw Error("PATCH failed");null==i||i()}catch(e){var o;u(e=>e&&e.id===a?{...e,tags:n}:e),l.o.error("Failed to add tag: ".concat(null!=(o=null==e?void 0:e.message)?o:"Network error"))}}})]}),(0,a.jsx)("div",{className:"flex-1 overflow-hidden",children:p?(0,a.jsx)(ea,{content:k,onChange:C}):f?(0,a.jsx)("div",{className:"h-full overflow-auto bg-[var(--bg-secondary)] p-6",children:(0,a.jsxs)("div",{className:"max-w-2xl mx-auto space-y-4",children:[(0,a.jsx)("h3",{className:"text-sm font-bold text-[var(--text-secondary)] uppercase tracking-widest mb-6",children:"Version History (Time Travel)"}),w?(0,a.jsx)("div",{className:"space-y-4",children:[1,2,3].map(e=>(0,a.jsx)("div",{className:"skeleton h-20 w-full rounded-lg"},e))}):0===g.length?(0,a.jsx)("div",{className:"text-center py-12",children:(0,a.jsx)("p",{className:"text-[var(--muted)]",children:"No version history found for this file."})}):(0,a.jsx)("div",{className:"space-y-3",children:g.map(e=>(0,a.jsxs)("div",{className:"bg-white dark:bg-[#1a1a1a] border border-[var(--border)] rounded-lg p-4 flex items-center justify-between hover:border-amber-accent/50 transition-colors shadow-sm",children:[(0,a.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,a.jsx)("p",{className:"text-sm font-bold text-[var(--text-primary)] truncate",children:e.message}),(0,a.jsxs)("div",{className:"flex items-center gap-3 mt-1 text-[10px] text-[var(--text-secondary)] uppercase tracking-tighter font-bold",children:[(0,a.jsx)("span",{children:new Date(e.date).toLocaleString()}),(0,a.jsx)("span",{className:"opacity-30",children:"•"}),(0,a.jsx)("span",{className:"font-mono text-amber-accent",children:e.hash.substring(0,7)})]})]}),(0,a.jsx)("button",{onClick:()=>eg(e.hash),className:"ml-4 btn btn-md",children:"RESTORE"})]},e.hash))})]})}):(0,a.jsx)("div",{className:"h-full overflow-auto",children:d.path.endsWith(".mmd")?(0,a.jsx)(et,{source:d.content,className:"p-8",filename:d.title}):(0,a.jsx)(er,{content:d.content,className:"p-8"})})}),(0,a.jsx)(en,{open:P,title:d.title,onClose:()=>M(!1),onConfirm:ew,loading:O}),(0,a.jsx)(es,{open:A,onClose:()=>R(!1),title:I,body:U,detail:H})]},s)}function eu(e){let{open:t,onClose:r,onSelectFile:s}=e,[l,o]=(0,n.useState)(""),[i,c]=(0,n.useState)([]),[d,u]=(0,n.useState)(0),[x,m]=(0,n.useState)(!1),h=(0,n.useRef)(null),p=(0,n.useRef)(void 0);return(0,n.useEffect)(()=>{t&&(o(""),c([]),u(0),setTimeout(()=>{var e;return null==(e=h.current)?void 0:e.focus()},0))},[t]),(0,n.useEffect)(()=>{if(!t||!l.trim()){c([]),u(0);return}p.current&&clearTimeout(p.current);let e=new AbortController;return p.current=setTimeout(async()=>{m(!0);try{let t=await fetch("/api/search?q=".concat(encodeURIComponent(l)),{signal:e.signal});if(t.ok){let r=await t.json();e.signal.aborted||(c(r||[]),u(0))}}catch(e){if((null==e?void 0:e.name)==="AbortError")return;console.error("Search failed:",e),c([])}finally{e.signal.aborted||m(!1)}},200),()=>{p.current&&clearTimeout(p.current),e.abort()}},[l,t]),(0,a.jsx)(B.l,{open:t,onClose:r,title:"Search",hideHeader:!0,widthClass:"max-w-[560px]",positionClass:"left-1/2 top-[20vh] -translate-x-1/2",children:(0,a.jsxs)("div",{className:"-m-5 overflow-hidden rounded-xl",children:[(0,a.jsx)("div",{className:"relative",children:(0,a.jsx)("input",{ref:h,type:"text",value:l,onChange:e=>o(e.target.value),onKeyDown:e=>{"Escape"===e.key?r():"ArrowDown"===e.key?(e.preventDefault(),u(e=>Math.min(e+1,i.length-1))):"ArrowUp"===e.key?(e.preventDefault(),u(e=>Math.max(e-1,0))):"Enter"===e.key&&i.length>0&&(e.preventDefault(),s(i[d]))},placeholder:"Search context files...",className:"w-full px-6 py-5 text-base bg-transparent border-b border-[var(--border)] outline-none text-[var(--text-primary)] placeholder:text-[var(--text-secondary)] focus:ring-1 focus:ring-amber-accent/30 transition-all"})}),(0,a.jsxs)("div",{className:"max-h-[400px] overflow-y-auto scrollbar-thin",children:[x&&(0,a.jsx)("div",{className:"p-6 space-y-4",children:[1,2,3].map(e=>(0,a.jsxs)("div",{className:"flex flex-col gap-2 px-1",children:[(0,a.jsx)("div",{className:"skeleton h-4 w-3/4 opacity-20"}),(0,a.jsx)("div",{className:"skeleton h-3 w-1/4 opacity-10"})]},e))}),!x&&l&&0===i.length&&(0,a.jsxs)("div",{className:"flex flex-col items-center py-12 text-[var(--text-secondary)] gap-3",children:[(0,a.jsx)(D.A,{className:"w-8 h-8 opacity-30","aria-hidden":!0}),(0,a.jsx)("p",{className:"text-sm font-medium",children:"No results found"}),(0,a.jsx)("p",{className:"text-xs opacity-60 italic",children:"Try a different search term"})]}),!x&&i.length>0&&(0,a.jsx)("div",{className:"p-1",children:i.map((e,t)=>(0,a.jsxs)("button",{onClick:()=>{s(e)},onMouseEnter:()=>u(t),className:"w-full px-5 py-4 text-left rounded-lg transition-all duration-200 flex flex-col gap-1 ".concat(t===d?"bg-[var(--accent-soft)]":"hover:bg-[var(--accent-soft)]/60"),children:[(0,a.jsx)("div",{className:"text-sm font-semibold transition-colors text-[var(--text-primary)]",children:e.title}),(0,a.jsxs)("div",{className:"text-xs transition-colors text-[var(--text-secondary)]",children:[e.storage_type," \xb7 ",e.path]})]},e.id))})]})]})})}function ex(e){let{open:t,onClose:r}=e,[s,l]=(0,n.useState)(null),[o,i]=(0,n.useState)(!1);return(0,n.useEffect)(()=>{t&&!s&&(i(!0),fetch("/api/about").then(e=>e.json()).then(e=>{l(e)}).catch(e=>{console.error("Failed to fetch about data:",e)}).finally(()=>{i(!1)}))},[t,s]),(0,a.jsx)(B.l,{open:t,onClose:r,title:"About Kontexta",widthClass:"max-w-xl",hideHeader:!0,children:(0,a.jsxs)("div",{className:"-m-5 flex flex-col max-h-[75vh] overflow-hidden",children:[(0,a.jsxs)("div",{className:"p-6 text-center border-b border-[var(--border)] shrink-0",children:[(0,a.jsx)("div",{className:"flex justify-center -mb-3",children:(0,a.jsx)(u.H,{size:"lg"})}),(0,a.jsx)("h1",{className:"text-3xl font-extrabold tracking-[4px] font-[family-name:var(--font-title)] text-[var(--accent)] dark:text-[var(--text-primary)] drop-shadow-[0_0_14px_color-mix(in_srgb,var(--accent)_55%,transparent)] dark:drop-shadow-none",children:"KONTEXTA"}),(0,a.jsxs)("p",{className:"text-sm font-medium text-[var(--text-secondary)] mt-2",children:["by ",(null==s?void 0:s.author)||"Safiyu"," • v",(null==s?void 0:s.version)||"0.1.0"]}),(0,a.jsx)("p",{className:"text-sm text-[var(--text-secondary)] mt-2",children:"A modern context management system for AI-assisted development"})]}),(0,a.jsxs)("div",{className:"flex-1 min-h-0 overflow-y-auto prose-sm",children:[o&&(0,a.jsxs)("div",{className:"p-6 space-y-3",children:[(0,a.jsx)("div",{className:"skeleton h-4 w-full"}),(0,a.jsx)("div",{className:"skeleton h-4 w-5/6"}),(0,a.jsx)("div",{className:"skeleton h-4 w-4/6"})]}),!o&&(null==s?void 0:s.changelog)&&(0,a.jsx)(er,{content:s.changelog,className:"p-6 prose-sm text-[var(--accent)] marker:text-[var(--accent)] [&_*]:!text-[var(--accent)]"}),!o&&!(null==s?void 0:s.changelog)&&(0,a.jsx)("div",{className:"p-6 text-center text-[var(--text-secondary)]",children:"No changelog available"})]}),(0,a.jsx)("div",{className:"p-3 border-t border-[var(--border)] text-center shrink-0",children:(0,a.jsx)("button",{onClick:r,className:"btn btn-md",children:"Close"})})]})})}function em(e){let{open:t,onClose:r,onCreate:s,currentProjectId:l,availableFolders:o}=e,[i,c]=(0,n.useState)(""),[d,u]=(0,n.useState)(""),[x,m]=(0,n.useState)(""),[h,p]=(0,n.useState)(l?"project":"knowledge"),[b,f]=(0,n.useState)(!1);(0,n.useEffect)(()=>{t&&(p(l?"project":"knowledge"),m(""),c(""),u(""))},[t,l]);let v=async e=>{if(e.preventDefault(),i.trim()){f(!0);try{await s(i,d,h,x||void 0)&&(c(""),u(""),m(""),r())}catch(e){console.error("Failed to create file:",e)}finally{f(!1)}}};return(0,a.jsx)(B.l,{open:t,onClose:r,title:"New file",widthClass:"max-w-lg",children:(0,a.jsxs)("form",{onSubmit:v,children:[(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{className:"grid grid-cols-2 gap-4",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"block text-[10px] font-bold text-[var(--text-secondary)] tracking-widest mb-1.5",children:"TITLE"}),(0,a.jsx)("input",{type:"text",value:i,onChange:e=>c(e.target.value),placeholder:"e.g. Architecture Overview",className:"w-full bg-[var(--bg-secondary)] border border-[var(--border)] rounded px-3 py-2 text-sm text-[var(--text-primary)] outline-none focus:border-amber-accent/50",required:!0,autoFocus:!0})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"block text-[10px] font-bold text-[var(--text-secondary)] tracking-widest mb-1.5",children:"FOLDER"}),o.length>0?(0,a.jsxs)("select",{value:x,onChange:e=>m(e.target.value),className:"w-full bg-[var(--bg-secondary)] border border-[var(--border)] rounded px-3 py-2 text-sm text-[var(--text-primary)] outline-none focus:border-amber-accent/50 cursor-pointer",children:[(0,a.jsx)("option",{value:"",children:"— Root level —"}),o.map(e=>(0,a.jsx)("option",{value:e,children:e},e))]}):(0,a.jsx)("input",{type:"text",value:x,onChange:e=>m(e.target.value),placeholder:"No folders yet — type to create",className:"w-full bg-[var(--bg-secondary)] border border-[var(--border)] rounded px-3 py-2 text-sm text-[var(--text-primary)] outline-none focus:border-amber-accent/50"})]})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"block text-[10px] font-bold text-[var(--text-secondary)] tracking-widest mb-1.5",children:"DESTINATION"}),(0,a.jsxs)("div",{className:"flex gap-3",children:[(0,a.jsx)("button",{type:"button",onClick:()=>p("knowledge"),className:"btn btn-sm flex-1 ".concat("knowledge"===h?"border-[var(--accent)]":""),children:"KNOWLEDGE BASE"}),l&&(0,a.jsx)("button",{type:"button",onClick:()=>p("project"),className:"btn btn-sm flex-1 ".concat("project"===h?"border-[var(--accent)]":""),children:"PROJECT ROOT"})]})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"block text-[10px] font-bold text-[var(--text-secondary)] tracking-widest mb-1.5",children:"CONTENT (MARKDOWN)"}),(0,a.jsx)("textarea",{value:d,onChange:e=>u(e.target.value),placeholder:"# Introduction\nStart typing here...",rows:8,className:"w-full bg-[var(--bg-secondary)] border border-[var(--border)] rounded px-3 py-2 text-sm text-[var(--text-primary)] outline-none focus:border-amber-accent/50 font-mono resize-none"})]})]}),(0,a.jsxs)("div",{className:"flex justify-end gap-3 mt-5",children:[(0,a.jsx)("button",{type:"button",onClick:r,className:"btn btn-md",children:"CANCEL"}),(0,a.jsx)("button",{type:"submit",disabled:b||!i.trim(),className:"btn btn-md",children:b?"CREATING...":"CREATE FILE"})]})]})})}function eh(e){let{open:t,onClose:r,onCreate:s}=e,[l,o]=(0,n.useState)(""),[i,c]=(0,n.useState)(!1);(0,n.useEffect)(()=>{t&&o("")},[t]);let d=async e=>{if(e.preventDefault(),l.trim()){c(!0);try{await s(l)&&(o(""),r())}catch(e){console.error("Failed to create folder:",e)}finally{c(!1)}}};return(0,a.jsx)(B.l,{open:t,onClose:r,title:"New folder",children:(0,a.jsxs)("form",{onSubmit:d,children:[(0,a.jsx)("label",{className:"block text-[10px] font-bold text-[var(--text-secondary)] tracking-widest mb-1.5",children:"FOLDER NAME"}),(0,a.jsx)("input",{type:"text",value:l,onChange:e=>o(e.target.value),placeholder:"e.g. documentation",className:"w-full bg-[var(--bg-secondary)] border border-[var(--border)] rounded px-3 py-2 text-sm text-[var(--text-primary)] outline-none focus:border-amber-accent/50",autoFocus:!0,required:!0}),(0,a.jsx)("p",{className:"text-[10px] text-[var(--text-secondary)] mt-2 italic",children:"Folder will be created in the Knowledge Base."}),(0,a.jsxs)("div",{className:"flex justify-end gap-3 mt-5",children:[(0,a.jsx)("button",{type:"button",onClick:r,className:"btn btn-md",children:"CANCEL"}),(0,a.jsx)("button",{type:"submit",disabled:i||!l.trim(),className:"btn btn-md",children:i?"CREATING...":"CREATE FOLDER"})]})]})})}function ep(e){let{open:t,folderName:r,onClose:n,onConfirm:s,loading:l}=e;return(0,a.jsx)(K.T,{open:t,onClose:n,onConfirm:s,title:"Delete folder",message:(0,a.jsxs)(a.Fragment,{children:["Are you sure you want to delete the folder"," ",(0,a.jsxs)("span",{className:"font-bold text-[var(--text-primary)]",children:['"',r,'"']}),"? This will permanently remove the directory from your disk."]}),confirmLabel:"Delete folder",destructive:!0,loading:l})}function eb(e){let{isOpen:t,onClose:r,onConfirm:n,projectName:s}=e;return(0,a.jsx)(K.T,{open:t,onClose:r,onConfirm:n,title:"Unregister project",message:(0,a.jsxs)(a.Fragment,{children:["Are you sure you want to remove ",(0,a.jsxs)("span",{className:"font-bold text-[var(--text-primary)]",children:['"',s,'"']})," from Kontexta?",(0,a.jsx)("br",{}),(0,a.jsx)("br",{}),"This will remove all associated context files from your AI's memory, but your"," ",(0,a.jsx)("span",{className:"text-amber-accent font-bold",children:"actual source code will remain safe"})," on your disk.",(0,a.jsx)("br",{}),(0,a.jsx)("br",{}),(0,a.jsx)("span",{className:"text-[10px] uppercase tracking-widest font-bold",children:"This action is permanent for Kontexta metadata."})]}),confirmLabel:"Unregister",destructive:!0})}function ef(e){var t,r;let{schema:n}=e,s=null!=(t=n.properties)?t:{},l=new Set(null!=(r=n.required)?r:[]),o=Object.entries(s);return 0===o.length?(0,a.jsx)("div",{className:"text-sm text-[var(--text-secondary)] italic",children:"No parameters."}):(0,a.jsxs)("table",{className:"w-full text-sm border-collapse",children:[(0,a.jsx)("thead",{children:(0,a.jsxs)("tr",{className:"border-b border-[var(--border)] text-left text-xs uppercase text-[var(--text-secondary)]",children:[(0,a.jsx)("th",{className:"py-1 pr-3",children:"Param"}),(0,a.jsx)("th",{className:"py-1 pr-3",children:"Type"}),(0,a.jsx)("th",{className:"py-1 pr-3",children:"Required"}),(0,a.jsx)("th",{className:"py-1",children:"Notes"})]})}),(0,a.jsx)("tbody",{children:o.map(e=>{var t,r;let[n,s]=e;return(0,a.jsxs)("tr",{className:"border-b border-[var(--border)]",children:[(0,a.jsx)("td",{className:"py-1 pr-3 font-mono",children:n}),(0,a.jsx)("td",{className:"py-1 pr-3",children:s.enum?"enum":"array"===s.type&&(null==(t=s.items)?void 0:t.type)?"".concat(s.items.type,"[]"):null!=(r=s.type)?r:"any"}),(0,a.jsx)("td",{className:"py-1 pr-3",children:l.has(n)?"required":"optional"}),(0,a.jsx)("td",{className:"py-1",children:function(e){let t=[];return e.enum&&t.push(e.enum.map(e=>String(e)).join(" | ")),void 0!==e.default&&t.push("default: ".concat(JSON.stringify(e.default))),void 0!==e.minimum&&t.push("min: ".concat(e.minimum)),void 0!==e.maximum&&t.push("max: ".concat(e.maximum)),e.description&&t.push(e.description),t.join(" — ")}(s)})]},n)})})]})}function ev(e){let{tool:t}=e;return(0,a.jsxs)("div",{id:t.name,className:"border border-[var(--border)] rounded-md p-4 mb-3 bg-[var(--bg-secondary)]",children:[(0,a.jsxs)("div",{className:"flex items-baseline justify-between gap-3 mb-2",children:[(0,a.jsx)("h3",{className:"font-mono text-base font-semibold",children:t.name}),(0,a.jsx)("a",{href:"#".concat(t.name),className:"text-xs text-[var(--text-secondary)]",title:"permalink",children:"\xa7"})]}),(0,a.jsx)("p",{className:"text-sm whitespace-pre-wrap mb-3",children:t.description}),(0,a.jsx)(ef,{schema:t.inputSchema})]})}function eg(){let[e,t]=(0,n.useState)(null),[r,s]=(0,n.useState)("");(0,n.useEffect)(()=>{fetch("/api/mcp-tools").then(e=>e.json()).then(t).catch(()=>{})},[]);let l=(0,n.useMemo)(()=>{if(!e)return[];let t=r.trim().toLowerCase();return e.tools.filter(e=>!t||e.name.toLowerCase().includes(t)||e.description.toLowerCase().includes(t))},[e,r]),o=(0,n.useMemo)(()=>{if(!e)return new Map;let t=new Map;for(let r of e.categoryOrder)t.set(r,[]);for(let e of l){var r;let a=null!=(r=t.get(e.category))?r:[];a.push(e),t.set(e.category,a)}return t},[e,l]);return e?(0,a.jsxs)("div",{className:"max-w-4xl mx-auto",children:[(0,a.jsx)("input",{type:"search",value:r,onChange:e=>s(e.target.value),placeholder:"Search tools…",className:"w-full px-3 py-2 mb-4 bg-[var(--bg-secondary)] border border-[var(--border)] rounded sticky top-0 z-10"}),[...o.entries()].map(e=>{let[t,r]=e;return 0===r.length?null:(0,a.jsxs)("section",{className:"mb-6",children:[(0,a.jsx)("h2",{className:"text-xs uppercase tracking-wider text-[var(--text-secondary)] mb-2",children:t}),r.map(e=>(0,a.jsx)(ev,{tool:e},e.name))]},t)})]}):(0,a.jsx)("div",{className:"text-sm",children:"Loading…"})}function ej(e){let{body:t,configPath:r,notes:s}=e,[l,o]=(0,n.useState)(!1),i=async()=>{try{var e;if(null==(e=navigator.clipboard)?void 0:e.writeText)await navigator.clipboard.writeText(t);else{let e=document.createElement("textarea");e.value=t,e.style.position="fixed",e.style.left="-9999px",document.body.appendChild(e),e.select(),document.execCommand("copy"),document.body.removeChild(e)}}catch(e){}o(!0),setTimeout(()=>o(!1),1500)};return(0,a.jsxs)("div",{className:"flex flex-col gap-3",children:[r&&(0,a.jsxs)("div",{className:"p-3 bg-[var(--bg-secondary)] border border-[var(--accent-soft)] rounded text-xs",children:[(0,a.jsx)("div",{className:"text-[var(--text-secondary)] mb-1 uppercase tracking-wider font-bold",children:"Configuration Path"}),(0,a.jsx)("div",{className:"font-mono break-all",children:r})]}),(0,a.jsxs)("div",{className:"relative",children:[(0,a.jsx)("pre",{className:"bg-[var(--bg-secondary)] border border-[var(--border)] rounded p-3 text-xs overflow-x-auto whitespace-pre",children:t}),(0,a.jsx)("button",{onClick:i,className:"absolute top-2 right-2 px-2 py-1 text-xs bg-[var(--bg-primary)] border border-[var(--border)] rounded hover:border-[var(--accent)] transition-colors",children:l?"Copied":"Copy"})]}),s&&s.length>0&&(0,a.jsx)("div",{className:"text-xs text-[var(--text-secondary)] px-1",children:(0,a.jsx)("ul",{className:"list-disc list-inside space-y-1",children:s.map((e,t)=>(0,a.jsx)("li",{children:e},t))})})]})}let ey=[{id:"claude-code",label:"Claude Code"},{id:"claude-desktop",label:"Claude Desktop"},{id:"cursor",label:"Cursor"},{id:"codex",label:"Codex"},{id:"gemini",label:"Gemini"},{id:"antigravity",label:"Antigravity"},{id:"continue",label:"Continue"},{id:"aider",label:"Aider"},{id:"cline",label:"Cline"},{id:"copilot",label:"GitHub Copilot (VS Code Insider)"},{id:"generic",label:"Generic JSON"}],ew=[{id:"docker",label:"Docker"},{id:"npm",label:"npm (npx)"},{id:"source",label:"Source build"}];function eN(){let[e,t]=(0,n.useState)("claude-code"),[r,s]=(0,n.useState)("docker"),[l,o]=(0,n.useState)(null),[i,c]=(0,n.useState)(null),[d,u]=(0,n.useState)(null);return(0,n.useEffect)(()=>{fetch("/api/install-snippets?client=".concat(e,"&install=").concat(r,"&t=").concat(Date.now())).then(e=>e.json()).then(e=>{o(e),e.detectedInstall&&!i&&c(e.detectedInstall),e.dataDir&&u({dataDir:e.dataDir,isDefaultDir:e.isDefaultDir,defaultDirDisplay:e.defaultDirDisplay})}).catch(()=>{})},[e,r,i]),(0,a.jsxs)("div",{className:"max-w-3xl mx-auto",children:[(0,a.jsxs)("div",{className:"flex gap-3 mb-4",children:[(0,a.jsxs)("label",{className:"flex flex-col text-xs",children:[(0,a.jsx)("span",{className:"mb-1 text-[var(--text-secondary)]",children:"AI client"}),(0,a.jsx)("select",{"aria-label":"AI client",value:e,onChange:e=>t(e.target.value),className:"px-2 py-1 bg-[var(--bg-secondary)] border border-[var(--border)] rounded",children:ey.map(e=>(0,a.jsx)("option",{value:e.id,children:e.label},e.id))})]}),(0,a.jsxs)("label",{className:"flex flex-col text-xs",children:[(0,a.jsx)("span",{className:"mb-1 text-[var(--text-secondary)]",children:"Install method"}),(0,a.jsx)("select",{"aria-label":"Install method",value:r,onChange:e=>s(e.target.value),className:"px-2 py-1 bg-[var(--bg-secondary)] border border-[var(--border)] rounded",children:ew.map(e=>(0,a.jsxs)("option",{value:e.id,children:[e.label,i===e.id?" (current)":""]},e.id))})]})]}),d&&(0,a.jsxs)("div",{className:"mb-3 text-xs text-[var(--text-secondary)] flex items-center gap-1.5",children:[(0,a.jsx)(j.A,{className:"w-3.5 h-3.5 opacity-60","aria-hidden":!0}),(0,a.jsxs)("span",{children:["Data directory:"," ",(0,a.jsx)("code",{className:"text-[var(--text-primary)] font-mono",children:d.isDefaultDir?d.defaultDirDisplay:d.dataDir}),d.isDefaultDir&&(0,a.jsx)("span",{className:"ml-1 opacity-60",children:"(OS default)"})]})]}),l&&(0,a.jsx)(ej,{body:l.body,configPath:l.configPath,notes:l.notes})]})}let ek=/\{\{([a-zA-Z_][a-zA-Z0-9_]*)\}\}/g;function eS(e){let{value:t,onChange:r,declaredParams:s}=e,[l,o]=(0,n.useState)(""),i=new Set(s);return(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-1",children:[t.map((e,n)=>{let s=(e=>{let t;for(ek.lastIndex=0;t=ek.exec(e);)if(!i.has(t[1]))return!1;return!0})(e);return(0,a.jsxs)("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 rounded text-xs font-mono border ".concat(s?"border-[var(--border)] bg-[var(--bg-secondary)]":"border-[var(--danger)] text-[var(--danger)]"),children:[e,(0,a.jsx)("button",{"aria-label":"remove ".concat(e),onClick:()=>r(t.filter((e,t)=>t!==n)),className:"text-[var(--text-secondary)] hover:text-[var(--danger)]",children:"\xd7"})]},n)}),(0,a.jsx)("input",{value:l,onChange:e=>o(e.target.value),onKeyDown:e=>{("Enter"===e.key||"Tab"===e.key||","===e.key||" "===e.key&&l.trim().length>0)&&l.trim().length>0&&(e.preventDefault(),r([...t,l.trim()]),o(""))},onBlur:()=>{l.trim().length>0&&(r([...t,l.trim()]),o(""))},placeholder:"+ arg (Enter)",className:"px-2 py-0.5 text-xs bg-transparent border border-dashed border-[var(--border)] rounded font-mono w-32"})]})}function eC(e){let{pattern:t}=e,[r,s]=(0,n.useState)(""),[l,o]=(0,n.useState)(null);return(0,n.useEffect)(()=>{if(!t)return void o(null);let e=setTimeout(()=>{fetch("/api/hands/test-pattern",{method:"POST",body:JSON.stringify({pattern:t,value:r})}).then(e=>e.json()).then(e=>o(e.valid?{matches:e.matches}:{error:e.error})).catch(()=>{})},200);return()=>clearTimeout(e)},[t,r]),(0,a.jsxs)("div",{className:"flex items-center gap-2 mt-1",children:[(0,a.jsx)("input",{value:r,onChange:e=>s(e.target.value),placeholder:"sample value",className:"px-2 py-0.5 text-xs bg-[var(--bg-primary)] border border-[var(--border)] rounded font-mono"}),(null==l?void 0:l.error)&&(0,a.jsx)("span",{className:"text-xs text-[var(--danger)]",children:"invalid pattern"}),(null==l?void 0:l.matches)===!0&&(0,a.jsx)("span",{className:"text-xs text-[var(--success)]",children:"✓ matches"}),(null==l?void 0:l.matches)===!1&&(0,a.jsx)("span",{className:"text-xs text-[var(--text-secondary)]",children:"no match"})]})}function eT(e){var t,r,n;let{name:s,def:l,onChange:o,onRename:i,onDelete:c}=e;return(0,a.jsxs)("div",{className:"border border-[var(--border)] rounded p-2 mb-2 text-xs space-y-1",children:[(0,a.jsxs)("div",{className:"flex gap-2 items-center",children:[(0,a.jsx)("input",{value:s,onChange:e=>i(s,e.target.value),className:"px-2 py-0.5 bg-[var(--bg-primary)] border border-[var(--border)] rounded font-mono",title:"Param name. Reference in command argv as {{name}}."}),(0,a.jsxs)("select",{value:l.type,onChange:e=>o(s,{...l,type:e.target.value}),className:"px-1 py-0.5 bg-[var(--bg-primary)] border border-[var(--border)] rounded",title:"JSON type the agent must supply.",children:[(0,a.jsx)("option",{value:"string",children:"string"}),(0,a.jsx)("option",{value:"number",children:"number"}),(0,a.jsx)("option",{value:"boolean",children:"boolean"})]}),(0,a.jsxs)("label",{className:"flex items-center gap-1",title:"If unchecked, default is used (or empty/0/false).",children:[(0,a.jsx)("input",{type:"checkbox",checked:!!l.required,onChange:e=>o(s,{...l,required:e.target.checked})})," required"]}),(0,a.jsx)("button",{onClick:c,className:"ml-auto text-[var(--text-secondary)] hover:text-[var(--danger)]","aria-label":"delete param ".concat(s),children:"\xd7"})]}),"string"===l.type&&(0,a.jsxs)("div",{children:[(0,a.jsx)("input",{value:null!=(t=l.pattern)?t:"",onChange:e=>o(s,{...l,pattern:e.target.value||void 0}),placeholder:"^[a-zA-Z0-9_-]+$",className:"w-full px-2 py-0.5 bg-[var(--bg-primary)] border border-[var(--border)] rounded font-mono"}),(0,a.jsxs)("span",{className:"block text-[10px] text-[var(--text-secondary)] mt-0.5",children:["re2 regex (linear-time, ReDoS-proof). Empty values always pass. Without an explicit pattern, strings get the default ",(0,a.jsx)("code",{children:"^[^-].*"})," which blocks values starting with a dash (argv-injection guard)."]}),l.pattern&&(0,a.jsx)(eC,{pattern:l.pattern})]}),"number"===l.type&&(0,a.jsxs)("div",{children:[(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)("input",{type:"number",placeholder:"min",value:null!=(r=l.min)?r:"",onChange:e=>o(s,{...l,min:""===e.target.value?void 0:Number(e.target.value)}),className:"px-2 py-0.5 bg-[var(--bg-primary)] border border-[var(--border)] rounded w-24"}),(0,a.jsx)("input",{type:"number",placeholder:"max",value:null!=(n=l.max)?n:"",onChange:e=>o(s,{...l,max:""===e.target.value?void 0:Number(e.target.value)}),className:"px-2 py-0.5 bg-[var(--bg-primary)] border border-[var(--border)] rounded w-24"})]}),(0,a.jsx)("span",{className:"block text-[10px] text-[var(--text-secondary)] mt-0.5",children:"Inclusive bounds. NaN, Infinity, and values outside JS safe-integer range are rejected automatically."})]}),"boolean"===l.type&&(0,a.jsxs)("span",{className:"block text-[10px] text-[var(--text-secondary)] mt-0.5",children:["Strict ",(0,a.jsx)("code",{children:"true"})," / ",(0,a.jsx)("code",{children:"false"})," only. No truthy coercion."]})]})}let e_=/^[a-z][a-z0-9-]*$/;function eE(e){var t,r,s,l,o,i,c;let{initial:d,projectName:u,onSave:x,onCancel:m,inline:h}=e,[p,b]=(0,n.useState)(null!=(t=null==d?void 0:d.name)?t:""),[f,v]=(0,n.useState)(()=>{var e;let t=null!=(e=null==d?void 0:d.def)?e:{description:"",command:[]};return Array.isArray(t.command)||(t.command=[]),t});(0,n.useEffect)(()=>{var e,t;b(null!=(e=null==d?void 0:d.name)?e:"");let r=null!=(t=null==d?void 0:d.def)?t:{description:"",command:[]};Array.isArray(r.command)||(r.command=[]),v(r)},[d]);let g=Object.keys(null!=(r=f.params)?r:{}),j=e_.test(p)&&f.description.trim().length>0&&f.command.length>0&&!f.command[0].includes("{{"),y=e=>{var t;return v({...f,params:e({...null!=(t=f.params)?t:{}})})};return(0,a.jsxs)("div",{className:h?"space-y-6":"space-y-4",children:[!h&&(0,a.jsx)("h2",{className:"text-lg font-semibold",children:d?"Edit tool":"Add tool"}),(0,a.jsxs)("div",{className:"grid gap-6",children:[(0,a.jsxs)("section",{className:"space-y-4",children:[(0,a.jsxs)("label",{className:"block text-xs",children:[(0,a.jsx)("span",{className:"text-[var(--text-secondary)] font-bold uppercase tracking-wider",children:"Tool name"}),(0,a.jsx)("input",{"aria-label":"name",value:p,onChange:e=>b(e.target.value),placeholder:"e.g. run-tests",className:"w-full mt-1 px-3 py-2 bg-[var(--bg-secondary)] border border-[var(--border)] rounded-lg font-mono focus:border-[var(--accent)] outline-none transition"}),(0,a.jsxs)("span",{className:"block text-[10px] text-[var(--text-secondary)] mt-1.5 leading-relaxed",children:["Lowercase letters, digits, hyphens. Kontexta namespaces it automatically — the agent sees"," ",(0,a.jsxs)("code",{className:"text-[var(--accent)]",children:[null!=u?u:"<project>","__",p||"<name>"]})]}),p&&!e_.test(p)&&(0,a.jsx)("span",{className:"text-[var(--danger)] text-[10px]",children:"must match ^[a-z][a-z0-9-]*$"})]}),(0,a.jsxs)("label",{className:"block text-xs",children:[(0,a.jsx)("span",{className:"text-[var(--text-secondary)] font-bold uppercase tracking-wider",children:"Description"}),(0,a.jsx)("input",{"aria-label":"description",value:f.description,onChange:e=>v({...f,description:e.target.value}),className:"w-full mt-1 px-3 py-2 bg-[var(--bg-secondary)] border border-[var(--border)] rounded-lg focus:border-[var(--accent)] outline-none transition",placeholder:"Describe what this tool does..."}),(0,a.jsx)("span",{className:"block text-[10px] text-[var(--text-secondary)] mt-1.5 leading-relaxed",children:"What the agent sees when deciding whether to call this tool. Be specific."})]})]}),(0,a.jsxs)("section",{className:"space-y-3",children:[(0,a.jsx)("span",{className:"text-[var(--text-secondary)] text-xs font-bold uppercase tracking-wider",children:"Command argv"}),(0,a.jsx)("div",{className:"bg-[var(--bg-secondary)] border border-[var(--border)] rounded-lg p-3",children:(0,a.jsx)(eS,{value:f.command,onChange:e=>v({...f,command:e}),declaredParams:g})}),(0,a.jsxs)("span",{className:"block text-[10px] text-[var(--text-secondary)] leading-relaxed",children:["argv passed to ",(0,a.jsx)("code",{children:"spawn"})," (no shell). argv[0] is the executable. Subsequent items can use ",(0,a.jsx)("code",{children:"{{paramName}}"}),"."]})]}),(0,a.jsxs)("section",{className:"grid grid-cols-3 gap-4",children:[(0,a.jsxs)("label",{className:"text-xs",children:[(0,a.jsx)("span",{className:"text-[var(--text-secondary)] font-bold uppercase tracking-wider",children:"Timeout (ms)"}),(0,a.jsx)("input",{type:"number",value:null!=(s=f.timeout)?s:"",onChange:e=>v({...f,timeout:""===e.target.value?void 0:Number(e.target.value)}),className:"w-full mt-1 px-3 py-2 bg-[var(--bg-secondary)] border border-[var(--border)] rounded-lg focus:border-[var(--accent)] outline-none transition",placeholder:"60000"})]}),(0,a.jsxs)("label",{className:"text-xs",children:[(0,a.jsx)("span",{className:"text-[var(--text-secondary)] font-bold uppercase tracking-wider",children:"Max output"}),(0,a.jsx)("input",{type:"number",value:null!=(l=f.maxOutputBytes)?l:"",onChange:e=>v({...f,maxOutputBytes:""===e.target.value?void 0:Number(e.target.value)}),className:"w-full mt-1 px-3 py-2 bg-[var(--bg-secondary)] border border-[var(--border)] rounded-lg focus:border-[var(--accent)] outline-none transition",placeholder:"100000"})]}),(0,a.jsxs)("label",{className:"text-xs",children:[(0,a.jsx)("span",{className:"text-[var(--text-secondary)] font-bold uppercase tracking-wider",children:"Danger"}),(0,a.jsxs)("select",{value:null!=(o=f.danger)?o:"safe",onChange:e=>v({...f,danger:e.target.value}),className:"w-full mt-1 px-3 py-2 bg-[var(--bg-secondary)] border border-[var(--border)] rounded-lg focus:border-[var(--accent)] outline-none transition cursor-pointer",children:[(0,a.jsx)("option",{children:"safe"}),(0,a.jsx)("option",{children:"moderate"}),(0,a.jsx)("option",{children:"high"})]})]})]}),(0,a.jsxs)("section",{className:"bg-[var(--bg-secondary)]/50 border border-[var(--border)] rounded-xl p-4",children:[(0,a.jsxs)("div",{className:"flex gap-6 text-xs mb-3",children:[(0,a.jsxs)("label",{className:"flex items-center gap-2 cursor-pointer group",children:[(0,a.jsx)("input",{type:"checkbox",checked:!!f.confirm,onChange:e=>v({...f,confirm:e.target.checked}),className:"rounded border-[var(--border)] text-[var(--accent)] focus:ring-[var(--accent)]"}),(0,a.jsx)("span",{className:"group-hover:text-[var(--text-primary)] transition",children:"Confirm"})]}),(0,a.jsxs)("label",{className:"flex items-center gap-2 cursor-pointer group",children:[(0,a.jsx)("input",{type:"checkbox",checked:!!f.disabled,onChange:e=>v({...f,disabled:e.target.checked}),className:"rounded border-[var(--border)] text-[var(--accent)] focus:ring-[var(--accent)]"}),(0,a.jsx)("span",{className:"group-hover:text-[var(--text-primary)] transition",children:"Disabled"})]}),(0,a.jsxs)("label",{className:"flex items-center gap-2 cursor-pointer group",children:[(0,a.jsx)("input",{type:"checkbox",checked:!!f.argSeparator,onChange:e=>v({...f,argSeparator:e.target.checked}),className:"rounded border-[var(--border)] text-[var(--accent)] focus:ring-[var(--accent)]"}),(0,a.jsx)("span",{className:"group-hover:text-[var(--text-primary)] transition",children:"ArgSeparator"})]})]}),(0,a.jsxs)("ul",{className:"text-[10px] text-[var(--text-secondary)] space-y-1 opacity-80",children:[(0,a.jsxs)("li",{children:["• ",(0,a.jsx)("b",{children:"confirm"})," — Pause for human approval before execution."]}),(0,a.jsxs)("li",{children:["• ",(0,a.jsx)("b",{children:"disabled"})," — Validated but hidden from the agent."]}),(0,a.jsxs)("li",{children:["• ",(0,a.jsx)("b",{children:"argSeparator"})," — Insert ",(0,a.jsx)("code",{children:"--"})," before the first substituted element."]})]})]}),(0,a.jsxs)("section",{className:"space-y-4",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsx)("span",{className:"text-[var(--text-secondary)] text-xs font-bold uppercase tracking-wider",children:"Parameters"}),(0,a.jsx)("button",{onClick:()=>y(e=>({...e,["param".concat(Object.keys(e).length+1)]:{type:"string"}})),className:"text-[10px] font-bold uppercase tracking-widest px-3 py-1.5 rounded-lg border border-[var(--border)] bg-[var(--bg-secondary)] hover:bg-[var(--accent)] hover:text-black transition-all",children:"+ Add Parameter"})]}),(0,a.jsxs)("div",{className:"space-y-3",children:[Object.entries(null!=(i=f.params)?i:{}).map(e=>{let[t,r]=e;return(0,a.jsx)(eT,{name:t,def:r,onChange:(e,t)=>y(r=>({...r,[e]:t})),onRename:(e,t)=>y(r=>{let{[e]:a,...n}=r;return{...n,[t]:a}}),onDelete:()=>y(e=>{let{[t]:r,...a}=e;return a})},t)}),0===Object.keys(null!=(c=f.params)?c:{}).length&&(0,a.jsx)("div",{className:"text-center py-8 border border-dashed border-[var(--border)] rounded-xl text-[var(--text-secondary)] text-xs italic",children:"No parameters defined for this tool."})]})]})]}),(0,a.jsxs)("div",{className:"flex justify-end gap-3 pt-6 border-t border-[var(--border)] ".concat(h?"sticky bottom-0 bg-[var(--bg-primary)] py-4 mt-8 z-10":""),children:[m&&(0,a.jsx)("button",{onClick:m,className:"btn btn-md",children:"Cancel"}),(0,a.jsx)("button",{disabled:!j,onClick:()=>x(p,f),className:"btn btn-md btn-primary",children:(null==d?void 0:d.name)?"Update Tool":"Create Tool"})]})]})}let eL=[{name:"list-files",oneLiner:"Lists every git-tracked file. Read-only, no params.",def:{description:"List files in the repo (no params, completely safe)",command:["git","ls-files"]}},{name:"run-tests",oneLiner:"Run vitest with an optional regex-validated filter.",def:{description:"Run vitest with optional filter (regex-validated)",command:["npx","vitest","--reporter=verbose","{{filter}}"],timeout:12e4,params:{filter:{type:"string",required:!1,default:"",pattern:"^[a-zA-Z0-9 _/-]*$"}}}},{name:"deploy-staging",oneLiner:"Deploy to staging Cloud Run. Requires human approval.",def:{description:"Deploy to staging Cloud Run (requires human approval)",command:["gcloud","run","deploy","my-service","--region","us-central1"],danger:"moderate",confirm:!0,timeout:18e4}},{name:"remove-temp",oneLiner:"Delete a file under tmp/scratch. Strict pattern + argSeparator.",def:{description:"Delete a temp file under /tmp/scratch (argSeparator guards path)",command:["rm","{{name}}"],argSeparator:!0,workingDir:"tmp/scratch",params:{name:{type:"string",required:!0,pattern:"^[a-zA-Z0-9._-]+$"}}}},{name:"npm-install",oneLiner:"Safely install a new npm package. Restricted to safe package names.",def:{description:"Install a new dependency via npm",command:["npm","install","{{pkg}}"],danger:"moderate",params:{pkg:{type:"string",required:!0,pattern:"^@?[a-z0-9][a-z0-9-._]*$"}}}},{name:"type-check",oneLiner:"Run the TypeScript compiler to catch type errors project-wide.",def:{description:"Run tsc without emitting files to check for type errors.",command:["npx","tsc","--noEmit"],timeout:6e4}},{name:"lint-fix",oneLiner:"Run ESLint to automatically correct code style and auto-fixable errors.",def:{description:"Auto-fix linting and formatting issues.",command:["npx","eslint",".","--fix"],danger:"moderate",timeout:12e4}},{name:"comprehensive-example",oneLiner:"Showcase: params, env, workingDir, confirm, danger, and argSeparator.",def:{description:"A comprehensive example showing off every kontexta.json capability. Use this to understand how to build complex, secure tools.",command:["bash","./scripts/deploy.sh","--target","{{targetEnv}}","--dry-run={{isDryRun}}","--retries={{retries}}"],workingDir:"backend",timeout:3e5,danger:"high",confirm:!0,argSeparator:!0,maxOutputBytes:1048576,env:{FORCE_COLOR:"1",DEBUG:"true"},params:{targetEnv:{type:"string",required:!0,pattern:"^(staging|production|qa)$"},isDryRun:{type:"boolean",required:!1,default:!0},retries:{type:"number",required:!1,default:3,min:0,max:10}}}}];function eP(e){let{onSelectTemplate:t,onBlank:r,heading:n}=e;return(0,a.jsxs)("div",{className:"flex flex-col gap-6 py-2",children:[n&&(0,a.jsx)("p",{className:"text-[10px] font-bold uppercase tracking-widest text-[var(--text-secondary)]",children:n}),(0,a.jsxs)("button",{onClick:r,className:"w-full px-4 py-3 text-xs font-bold uppercase tracking-widest border border-dashed border-[var(--border)] rounded-xl text-[var(--text-secondary)] hover:bg-[var(--accent)]/10 hover:text-[var(--accent)] hover:border-[var(--accent)] transition-all flex items-center justify-center gap-2",children:[(0,a.jsx)("svg",{className:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,a.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 4v16m8-8H4"})}),"Start from scratch"]}),(0,a.jsx)("div",{className:"flex flex-col gap-3",children:eL.map(e=>(0,a.jsxs)("button",{onClick:()=>t(e.name,e.def),className:"text-left p-4 border border-[var(--border)] rounded-xl bg-[var(--bg-secondary)]/50 hover:bg-[var(--accent-soft)] hover:border-[var(--accent)] transition-all group shadow-sm hover:shadow-lg active:scale-[0.98]",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between mb-2",children:[(0,a.jsx)("div",{className:"font-mono font-bold text-[13px] tracking-tight",children:e.name}),(0,a.jsx)("div",{className:"flex gap-1",children:(function(e){var t,r;let a=[];a.push(null!=(t=e.danger)?t:"safe");let n=Object.keys(null!=(r=e.params)?r:{}).length;return n>0&&a.push("".concat(n,"p")),e.confirm&&a.push("confirm"),e.argSeparator&&a.push("argSep"),e.disabled&&a.push("disabled"),a})(e.def).slice(0,2).map(e=>(0,a.jsx)("span",{className:"text-[9px] font-bold uppercase px-1.5 py-0.5 rounded-md bg-[var(--bg-primary)] text-[var(--text-secondary)] group-hover:text-[var(--text-primary)] border border-[var(--border)]",children:e},e))})]}),(0,a.jsx)("p",{className:"text-xs text-[var(--text-secondary)] group-hover:text-[var(--text-primary)] leading-relaxed line-clamp-2",children:e.oneLiner})]},e.name))})]})}function eD(e){let{count:t,errorCount:r,onDiscard:s,onSave:l,inline:o}=e,[i,c]=(0,n.useState)("idle"),[d,u]=(0,n.useState)(!1),x=(0,n.useRef)(null);(0,n.useEffect)(()=>()=>{x.current&&clearTimeout(x.current)},[]);let m=t>0||"saved"===i,h=!o&&0===t&&"saved"!==i,p=r>0||"idle"!==i||0===t,b="saving"===i?"Saving...":"saved"===i?"Saved ✓":r>0?"Fix ".concat(r," error(s)"):"Save Changes",f="saved"===i?"All changes saved":1===t?"1 change":"".concat(t," changes"),v=async()=>{if(!p){c("saving");try{await l(),c("saved"),x.current&&clearTimeout(x.current),x.current=setTimeout(()=>c("idle"),2e3)}catch(e){c("idle")}}},g=()=>u(!0),j=(0,a.jsx)(K.T,{open:d,onClose:()=>u(!1),onConfirm:()=>{u(!1),s()},title:"Discard unsaved changes?",message:1===t?"Your 1 unsaved change will be lost. This action cannot be undone.":"Your ".concat(t," unsaved changes will be lost. This action cannot be undone."),confirmLabel:"Discard",destructive:!0});return o?(0,a.jsxs)("div",{className:"flex items-center gap-4",children:[m&&(0,a.jsxs)("div",{className:"flex items-center gap-3 animate-fade-in",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2 px-3 py-1.5 rounded-lg bg-[var(--accent)]/10 border border-[var(--accent)]/20",children:[(0,a.jsx)("span",{className:"w-1.5 h-1.5 rounded-full bp-keep-round ".concat("saved"===i?"bg-[var(--success)]":"bg-[var(--accent)] animate-pulse")}),(0,a.jsx)("span",{className:"text-[10px] font-bold uppercase tracking-wider text-[var(--text-primary)]",children:f})]}),(0,a.jsx)("button",{onClick:g,disabled:"idle"!==i||0===t,className:"btn btn-sm btn-destructive",children:"Discard"})]}),(0,a.jsx)("button",{onClick:v,disabled:p,className:"btn btn-sm btn-primary",children:b}),j]}):(0,a.jsxs)("div",{role:"region","aria-label":"Unsaved changes",className:"sticky bottom-0 left-0 right-0 z-30 bg-[var(--bg-secondary)] border-t border-[var(--border)] shadow-[0_-4px_12px_rgba(0,0,0,0.08)] px-4 py-2 flex items-center gap-3 transition-transform duration-200 ".concat(h?"translate-y-full":"translate-y-0"),children:[(0,a.jsx)("span",{"aria-hidden":!0,className:"saved"===i?"text-[var(--success)]":"text-[var(--accent)]",children:"saved"===i?"✓":"⚠"}),(0,a.jsx)("span",{className:"text-sm","aria-live":"polite",children:f}),(0,a.jsx)("div",{className:"flex-1"}),(0,a.jsx)("button",{onClick:g,disabled:"idle"!==i||0===t,className:"btn btn-sm btn-destructive",children:"Discard"}),(0,a.jsx)("button",{onClick:v,disabled:p,className:"btn btn-sm btn-primary",children:b}),j]})}function eM(){var e,t;let r=(0,s.useSearchParams)(),[l,o]=(0,n.useState)([]),[i,c]=(0,n.useState)(null),[d,u]=(0,n.useState)({}),[x,m]=(0,n.useState)(null),[h,p]=(0,n.useState)(null),[b,f]=(0,n.useState)(null),[v,g]=(0,n.useState)(null),[j,y]=(0,n.useState)(null),[w,N]=(0,n.useState)(!1),[k,S]=(0,n.useState)(null),[C,T]=(0,n.useState)(null),[_,E]=(0,n.useState)(!1),L=(0,n.useRef)(null),[P,D]=(0,n.useState)(!0),[O,F]=(0,n.useState)({});(0,n.useEffect)(()=>{0===Object.keys(d).length&&D(!1)},[0===Object.keys(d).length]),(0,n.useEffect)(()=>{fetch("/api/projects").then(async e=>{if(!e.ok)throw Error((await e.json().catch(()=>({}))).error||"HTTP ".concat(e.status));return e.json()}).then(e=>{var t,a;o(e);let n=r.get("project"),s=n?Number(n):NaN;c(!isNaN(s)&&e.find(e=>e.id===s)?s:null!=(a=null==(t=e[0])?void 0:t.id)?a:null)}).catch(e=>{console.error("Failed to load projects:",e),y("Failed to load projects: ".concat(e.message))})},[r]),(0,n.useEffect)(()=>{null!==i&&fetch("/api/projects/".concat(i,"/hands-config")).then(e=>{if(!e.ok)throw Error("HTTP ".concat(e.status));return e.json()}).then(e=>{var t,r,a;m(e.mtimeMs),p(null!=(r=e.parseError)?r:null);let n=null!=(a=null==(t=e.parsed)?void 0:t.tools)?a:{};u(n),F(n),Object.keys(n).length>0&&D(!0)}).catch(e=>{console.error("Failed to load hands-config:",e),y("Failed to load project configuration: ".concat(e.message))})},[i]),(0,n.useEffect)(()=>(L.current&&clearTimeout(L.current),L.current=setTimeout(()=>{fetch("/api/hands/validate",{method:"POST",body:JSON.stringify({version:"1",tools:d})}).then(e=>e.json()).then(f).catch(()=>{})},300),()=>{L.current&&clearTimeout(L.current)}),[d]);let A=(0,n.useMemo)(()=>{let e=new Set(Object.keys(O)),t=new Set(Object.keys(d)),r=0;for(let a of t){if(!e.has(a)){r++;continue}JSON.stringify(d[a])!==JSON.stringify(O[a])&&r++}for(let a of e)!t.has(a)&&r++;return r},[d,O]),R=(0,n.useMemo)(()=>{let e=new Map;if(!b)return e;for(let t of[...b.warnings,...b.errors]){let r=t.match(/tool '([^']+)'/);r&&e.set(r[1],t)}return e},[b]),I=(null!=(t=null==b?void 0:b.errors.length)?t:0)+R.size,z=async()=>{if(null===i)return;N(!1),y(null);let e=await fetch("/api/projects/".concat(i,"/hands-config"),{method:"DELETE"});if(!e.ok)return void y((await e.json().catch(()=>({}))).error||"Delete failed: HTTP ".concat(e.status));u({}),F({}),m(null),p(null),D(!1)},U=async()=>{var e;if(null===i)return;y(null);let t=await fetch("/api/projects/".concat(i,"/hands-config"),{method:"PUT",body:JSON.stringify({config:{version:"1",tools:d},ifMtimeMs:x})});if(409===t.status)return void T({currentMtimeMs:(await t.json()).currentMtimeMs});if(t.ok){m((await t.json()).mtimeMs),F({...d});return}let r=await t.json().catch(()=>({}));y(r.error||(null!=(e=r.errors)?e:[]).join("; ")||"Save failed: HTTP ".concat(t.status))},B=async()=>{if(null!==i&&C){E(!0);try{let t=await fetch("/api/projects/".concat(i,"/hands-config"),{method:"PUT",body:JSON.stringify({config:{version:"1",tools:d},ifMtimeMs:C.currentMtimeMs})});if(t.ok){let e=await t.json();m(e.mtimeMs),F({...d})}else{var e;let r=await t.json().catch(()=>({}));y("Retry failed: ".concat(r.error||(null!=(e=r.errors)?e:[]).join("; ")||"HTTP ".concat(t.status)))}}finally{E(!1),T(null)}}};if(0===l.length)return(0,a.jsxs)("div",{className:"max-w-2xl mx-auto text-sm",children:["No projects registered. ",(0,a.jsx)("a",{href:"/",className:"underline",children:"Register one first"}),"."]});let H=Object.keys(d).length>0;return v||Object.keys(d).length>0&&(Object.keys(d)[0],d[Object.keys(d)[0]]),(0,a.jsxs)("div",{className:"flex flex-col h-full -m-6 overflow-hidden bg-[var(--bg-primary)]",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between px-6 py-3 bg-[var(--bg-secondary)] border-b border-[var(--border)] shadow-sm z-10",children:[(0,a.jsxs)("div",{className:"flex items-center gap-6",children:[(0,a.jsxs)("label",{className:"flex items-center gap-3 text-xs font-bold uppercase tracking-widest text-[var(--text-secondary)]",children:["Project",(0,a.jsx)("select",{value:null!=i?i:"",onChange:e=>c(Number(e.target.value)),"aria-label":"project",className:"px-3 py-1.5 bg-[var(--bg-primary)] border border-[var(--border)] rounded-lg font-mono text-[var(--accent)] outline-none focus:border-[var(--accent)] transition-all cursor-pointer min-w-[220px]",children:l.map(e=>(0,a.jsx)("option",{value:e.id,children:e.name},e.id))})]}),null!==x&&(0,a.jsx)("button",{onClick:()=>N(!0),className:"btn btn-md btn-destructive",title:"Remove kontexta.json from this project",children:"Delete Config"})]}),(0,a.jsx)(eD,{inline:!0,count:A,errorCount:I,onDiscard:()=>{u({...O}),y(null)},onSave:U})]}),(0,a.jsxs)("div",{className:"flex flex-1 overflow-hidden",children:[(0,a.jsxs)("div",{className:"w-[300px] flex flex-col border-r border-[var(--border)] bg-[var(--bg-secondary)]/30",children:[(0,a.jsxs)("div",{className:"p-4 border-b border-[var(--border)] flex items-center justify-between bg-[var(--bg-secondary)]/50",children:[(0,a.jsx)("h4",{className:"text-[10px] font-bold uppercase tracking-[0.2em] text-[var(--text-secondary)]",children:"Registry"}),(0,a.jsx)("button",{onClick:()=>{g({name:"",def:{description:"",command:[],params:{},danger:"safe"}})},className:"p-1 rounded hover:bg-[var(--accent)] hover:text-black transition-colors",title:"Add tool from scratch",children:(0,a.jsx)("svg",{className:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,a.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 4v16m8-8H4"})})})]}),(0,a.jsxs)("div",{className:"flex-1 overflow-y-auto p-2 space-y-1 custom-scrollbar",children:[Object.entries(d).map(e=>{let[t,r]=e;return(0,a.jsxs)("div",{role:"button",tabIndex:0,onClick:()=>g({name:t,def:r}),onKeyDown:e=>{("Enter"===e.key||" "===e.key)&&(e.preventDefault(),g({name:t,def:r}))},className:"w-full group flex items-center justify-between px-3 py-2 rounded-lg transition-all border cursor-pointer outline-none focus:ring-1 focus:ring-[var(--accent)] ".concat((null==v?void 0:v.name)===t?"bg-[var(--accent)] text-black border-transparent shadow-lg":"border-transparent text-[var(--text-secondary)] hover:bg-[var(--accent)]/10 hover:text-[var(--text-primary)]"),children:[(0,a.jsxs)("div",{className:"flex items-center gap-3 overflow-hidden",children:[(0,a.jsx)("div",{className:"w-1.5 h-1.5 rounded-full bp-keep-round flex-shrink-0 ".concat((null==v?void 0:v.name)===t?"bg-black":"bg-[var(--accent)]")}),(0,a.jsx)("span",{className:"font-mono text-[13px] truncate",children:t})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[R.has(t)&&(0,a.jsx)("span",{className:"w-2 h-2 rounded-full bp-keep-round bg-[var(--danger)] animate-pulse",title:R.get(t)}),(0,a.jsx)("button",{onClick:e=>{e.stopPropagation(),S(t)},className:"opacity-0 group-hover:opacity-100 p-1 rounded hover:bg-[var(--danger)] hover:text-white transition-all ".concat((null==v?void 0:v.name)===t?"text-black hover:bg-black/20":""),title:"Delete tool",children:(0,a.jsx)("svg",{className:"w-3 h-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,a.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})})]})]},t)}),!H&&(0,a.jsx)("div",{className:"text-center py-8 px-4 text-xs text-[var(--text-secondary)] italic border border-dashed border-[var(--border)] rounded-xl m-2",children:"No tools defined yet."})]})]}),(0,a.jsxs)("div",{className:"flex-1 overflow-y-auto bg-[var(--bg-primary)] custom-scrollbar relative border-r border-[var(--border)]",children:[h&&(0,a.jsxs)("div",{className:"m-6 p-4 bg-[var(--danger-soft)] border border-[var(--danger)]/50 rounded-xl text-sm text-[var(--danger)] animate-fade-in",children:[(0,a.jsx)("span",{className:"font-bold block mb-1",children:"Configuration Error"}),"kontexta.json failed to parse: ",h,". Fix the file manually before continuing."]}),j&&(0,a.jsxs)("div",{className:"m-6 p-4 bg-[var(--danger-soft)] border border-[var(--danger)]/50 rounded-xl text-sm text-[var(--danger)] animate-fade-in",children:[j,(0,a.jsx)("button",{onClick:()=>y(null),className:"ml-2 text-[var(--danger)] hover:opacity-80","aria-label":"Dismiss error",children:(0,a.jsx)(M.A,{className:"w-4 h-4","aria-hidden":!0})})]}),(0,a.jsx)("div",{className:"p-8 max-w-4xl mx-auto",children:v?(0,a.jsxs)("div",{className:"animate-fade-in",children:[(0,a.jsxs)("header",{className:"mb-8 border-b border-[var(--border)] pb-6",children:[(0,a.jsx)("div",{className:"inline-flex items-center px-2 py-0.5 rounded bg-[var(--accent)]/10 border border-[var(--accent)]/20 text-[var(--accent)] text-[10px] font-bold uppercase tracking-wider mb-3",children:v.name?"Editor":"New Tool"}),(0,a.jsx)("h3",{className:"text-3xl font-title font-extrabold text-[var(--text-primary)] tracking-tight",children:v.name||"Untitled Tool"})]}),(0,a.jsx)(eE,{inline:!0,initial:v,projectName:null==(e=l.find(e=>e.id===i))?void 0:e.name,onSave:(e,t)=>{u(r=>{let a={};for(let[n,s]of Object.entries(r))v&&n===v.name?a[e]=t:a[n]=s;return v&&v.name in r||(a[e]=t),a}),g(null)}})]},v.name||"new-tool"):(0,a.jsxs)("div",{className:"h-full flex flex-col items-center justify-center text-center py-20 animate-fade-in",children:[(0,a.jsx)("div",{className:"w-16 h-16 rounded-full bp-keep-round bg-[var(--bg-secondary)] flex items-center justify-center mb-6 border border-[var(--border)]",children:(0,a.jsx)("svg",{className:"w-8 h-8 text-[var(--text-secondary)]",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,a.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.5,d:"M11 4a2 2 0 114 0v1a1 1 0 001 1h3a1 1 0 011 1v3a1 1 0 01-1 1h-1a2 2 0 100 4h1a1 1 0 011 1v3a1 1 0 01-1 1h-3a1 1 0 01-1-1v-1a2 2 0 10-4 0v1a1 1 0 01-1 1H7a1 1 0 01-1-1v-3a1 1 0 00-1-1H4a2 2 0 110-4h1a1 1 0 001-1V7a1 1 0 011-1h3a1 1 0 001-1V4z"})})}),(0,a.jsx)("h3",{className:"text-xl font-bold text-[var(--text-primary)] mb-2",children:"Configure Your Tools"}),(0,a.jsxs)("p",{className:"text-sm text-[var(--text-secondary)] max-w-xs mx-auto",children:["Select an existing tool to edit, or use the ",(0,a.jsx)("strong",{children:"Start from scratch"})," button on the right to create a new one."]})]})})]}),(0,a.jsxs)("div",{className:"bg-[var(--bg-secondary)]/30 border-l border-[var(--border)] transition-all duration-300 flex flex-col ".concat(P?"w-[48px]":"w-[350px]"),children:[(0,a.jsx)("button",{onClick:()=>D(!P),className:"p-4 border-b border-[var(--border)] flex items-center justify-center hover:bg-[var(--accent)] hover:text-black transition-colors group",title:P?"Expand Template Gallery":"Collapse Template Gallery",children:P?(0,a.jsx)("svg",{className:"w-5 h-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,a.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M4 6h16M4 12h16m-7 6h7"})}):(0,a.jsxs)("div",{className:"flex items-center gap-3 w-full",children:[(0,a.jsx)("svg",{className:"w-5 h-5 flex-shrink-0",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,a.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})}),(0,a.jsx)("span",{className:"text-[10px] font-bold uppercase tracking-widest truncate",children:"Template Gallery"})]})}),!P&&(0,a.jsx)("div",{className:"flex-1 overflow-y-auto p-4 custom-scrollbar",children:(0,a.jsx)(eP,{heading:H?"Add from template:":"Start with a template:",onSelectTemplate:(e,t)=>{g({name:e,def:t})},onBlank:()=>{g({name:"",def:{description:"",command:[],params:{},danger:"safe"}})}})})]})]}),(0,a.jsx)(K.T,{open:null!==k,onClose:()=>S(null),onConfirm:()=>{k&&(u(e=>{let{[k]:t,...r}=e;return r}),S(null))},title:'Delete tool "'.concat(k,'"?'),message:"This removes the tool from the draft. Click Save in the top bar to apply.",confirmLabel:"Delete tool",destructive:!0}),(0,a.jsx)(K.T,{open:w,onClose:()=>N(!1),onConfirm:z,title:"Delete kontexta.json?",message:"This removes the configuration file from this project. All Hands tools will be unregistered immediately.",confirmLabel:"Delete file",destructive:!0}),(0,a.jsx)(K.T,{open:null!==C,onClose:()=>T(null),onConfirm:B,title:"Config changed on disk",message:"kontexta.json changed on disk since you loaded it. Overwriting will replace those changes with the version you're editing here.",confirmLabel:"Overwrite",destructive:!0,loading:_})]})}function eO(e){var t,r,s,l;let{projectId:o}=e,[i,c]=(0,n.useState)(null),[d,u]=(0,n.useState)(null);return((0,n.useEffect)(()=>{let e=!1,t=new AbortController,r=async()=>{try{let r=await fetch("/api/projects/".concat(o,"/journal-status"),{signal:t.signal});if(!r.ok){e||u("status request failed: ".concat(r.status));return}let a=await r.json();e||(c(a),u(null))}catch(t){if(e||"AbortError"===t.name)return;u(t instanceof Error?t.message:String(t))}};r();let a=setInterval(r,3e4);return()=>{e=!0,t.abort(),clearInterval(a)}},[o]),d)?(0,a.jsxs)("div",{className:"text-sm text-[var(--danger)]",children:["Status error: ",d]}):i?(0,a.jsxs)("section",{className:"border border-[var(--border)] rounded p-3 bg-[var(--bg-secondary)] text-sm",children:[(0,a.jsx)("h3",{className:"font-medium mb-2",children:"Journal status"}),(0,a.jsxs)("div",{className:"space-y-1",children:[(0,a.jsxs)("div",{children:["Project: ",(0,a.jsx)("span",{className:"font-mono",children:i.slug})]}),(0,a.jsxs)("div",{children:["Last distilled event:"," ",(0,a.jsx)("span",{className:"font-mono",children:null!=(s=null==(t=i.high_water)?void 0:t.last_event_ts)?s:"never"})]}),(0,a.jsxs)("div",{children:["Events processed (cumulative): ",null!=(l=null==(r=i.high_water)?void 0:r.events_processed)?l:0]}),(0,a.jsxs)("div",{children:["Open tasks: ",i.open_tasks_count]}),i.open_tasks.length>0&&(0,a.jsx)("ul",{className:"ml-4 list-disc mt-2",children:i.open_tasks.map(e=>{var t;return(0,a.jsxs)("li",{children:[(0,a.jsx)("span",{className:"font-mono",children:e.task_slug})," — ",null!=(t=e.status_latest)?t:"(no status)"," —"," ",(0,a.jsx)("span",{className:"text-[var(--text-secondary)]",children:e.last_active_at})]},e.task_slug)})})]})]}):(0,a.jsx)("div",{className:"text-sm text-[var(--muted)]",children:"Loading status…"})}let eF={mode:"lenient",retention:{raw_days:90,mechanical_only_days:365,narrative_days:0,archive_cold_after_days:365,purge_archived_after_days:0},ticket_pattern:"[A-Z]+-\\d+",redact:{extra_keys:[],max_arg_size_bytes:1024},webui_scheduler:{enabled:!0,mechanical_distill_interval_minutes:15,housekeep_interval_hours:24}},eA={raw_days:"How long to keep raw JSONL events. Cost of high retention: Increased disk space usage. Low retention saves space but prevents deep auditing of past agent decisions.",mechanical_only_days:"How long to keep basic markdown summaries. Cost of high retention: Increased agent token usage and slower search times as the active index grows. Low retention keeps the index fast but risks losing older context.",narrative_days:"How long to keep rich LLM-generated summaries. Cost of high retention: Significant increase in agent token usage when searching or reading context. Low retention saves token budget but limits human-readable history.",archive_cold_after_days:"When to archive inactive topics. Cost of high retention: Agents will waste tokens reading stale context that clutters search results. Lower values keep the working context sharp.",purge_archived_after_days:"When to permanently delete archived items. Cost of high retention: Increased long-term disk storage. Low retention reclaims space but irreversibly destroys project history. (0 = never delete)."};function eR(){let[e,t]=(0,n.useState)([]),[r,s]=(0,n.useState)(null),[l,o]=(0,n.useState)(eF),[i,c]=(0,n.useState)(null),d=(0,n.useRef)(null),u=(0,n.useMemo)(()=>{var e,t;return t=null!=(e=d.current)?e:eF,Object.keys(l).reduce((e,r)=>e+ +(JSON.stringify(l[r])!==JSON.stringify(t[r])),0)},[l]);function x(e,t){o({...l,[e]:t})}async function m(){if(null!==r)try{let e=await fetch("/api/projects/".concat(r,"/journal-config"),{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({journal:l})});if(!e.ok)throw Error("save failed: ".concat(e.status));d.current=l,o({...l})}catch(e){c(e instanceof Error?e.message:String(e))}}return(0,n.useEffect)(()=>{let e=!1,a=new AbortController;return fetch("/api/projects",{signal:a.signal}).then(e=>{if(!e.ok)throw Error("HTTP ".concat(e.status));return e.json()}).then(a=>{!e&&(t(a),a.length>0&&null===r&&s(a[0].id))}).catch(t=>{e||"AbortError"===t.name||c(t instanceof Error?t.message:String(t))}),()=>{e=!0,a.abort()}},[]),(0,n.useEffect)(()=>{if(null===r)return;let e=!1,t=new AbortController;return fetch("/api/projects/".concat(r,"/journal-config"),{signal:t.signal}).then(e=>{if(!e.ok)throw Error("HTTP ".concat(e.status));return e.json()}).then(t=>{if(!e&&t.journal){let e={...eF,...t.journal};d.current=e,o(e)}}).catch(t=>{e||"AbortError"===t.name||c(t instanceof Error?t.message:String(t))}),()=>{e=!0,t.abort()}},[r]),(0,a.jsxs)("div",{className:"space-y-8 max-w-3xl mx-auto",children:[i&&(0,a.jsx)("div",{className:"border border-[var(--danger)]/30 bg-[var(--danger-soft)] text-[var(--danger)] rounded p-2 text-sm",children:i}),(0,a.jsxs)("section",{children:[(0,a.jsx)("h2",{className:"text-lg font-medium mb-2",children:"Project"}),(0,a.jsxs)("select",{value:null!=r?r:"",onChange:e=>s(Number(e.target.value)),className:"bg-[var(--bg-secondary)] border border-[var(--border)] rounded px-2 py-1 min-w-[200px] text-xs",children:[(0,a.jsx)("option",{value:"",children:"Select project…"}),e.map(e=>(0,a.jsx)("option",{value:e.id,children:e.name},e.id))]})]}),null!==r&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(eO,{projectId:r}),(0,a.jsxs)("section",{children:[(0,a.jsx)("h2",{className:"text-lg font-medium mb-2",children:"Mode"}),(0,a.jsxs)("select",{value:l.mode,onChange:e=>x("mode",e.target.value),className:"bg-[var(--bg-secondary)] border border-[var(--border)] rounded px-2 py-1 text-xs",children:[(0,a.jsx)("option",{value:"lenient",children:"Lenient (recommended)"}),(0,a.jsx)("option",{value:"strict",children:"Strict — block reads when backlog exists"}),(0,a.jsx)("option",{value:"mechanical-only",children:"Mechanical-only — no LLM upgrade"})]}),(0,a.jsxs)("div",{className:"mt-2 p-3 bg-amber-500/5 border border-amber-500/20 rounded text-xs text-[var(--text-secondary)] leading-normal",children:["lenient"===l.mode&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("strong",{children:"Lenient mode"})," is unobtrusive. If undistilled events accumulate, the MCP server automatically runs a fast, background distillation to maintain memory without blocking the agent."]}),"strict"===l.mode&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("strong",{children:"Strict mode"})," enforces memory hygiene. It blocks read tools (like ",(0,a.jsx)("code",{children:"search"})," or ",(0,a.jsx)("code",{children:"read_file"}),") with a ",(0,a.jsx)("code",{children:"JOURNAL_BACKLOG"})," error if undistilled events exist, forcing the agent to summarize its work first. Pass ",(0,a.jsx)("code",{children:"journal_bypass: true"})," to override."]}),"mechanical-only"===l.mode&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("strong",{children:"Mechanical-only mode"})," functions like lenient mode but disables LLM processing. It prevents subagents from upgrading basic markdown logs into richer narratives, saving token costs on large projects."]})]})]}),(0,a.jsxs)("section",{children:[(0,a.jsx)("h2",{className:"text-lg font-medium mb-2",children:"Retention (days; 0 = forever)"}),(0,a.jsx)("div",{className:"grid grid-cols-2 gap-3 max-w-md",children:["raw_days","mechanical_only_days","narrative_days","archive_cold_after_days","purge_archived_after_days"].map(e=>(0,a.jsxs)("label",{className:"flex flex-col text-xs",children:[(0,a.jsxs)("span",{className:"text-[var(--text-secondary)] flex items-center gap-1 mb-0.5",children:[e,(0,a.jsx)("span",{title:eA[e],className:"cursor-help text-[9px] font-bold text-[var(--muted)] border border-[var(--muted)] rounded-full bp-keep-round w-3.5 h-3.5 inline-flex items-center justify-center opacity-60 hover:opacity-100 transition-opacity",children:"?"})]}),(0,a.jsx)("input",{type:"number",min:0,value:l.retention[e],onChange:t=>x("retention",{...l.retention,[e]:Number(t.target.value)}),className:"bg-[var(--bg-secondary)] border border-[var(--border)] rounded px-2 py-1 text-xs"})]},e))})]}),(0,a.jsxs)("section",{children:[(0,a.jsx)("h2",{className:"text-lg font-medium mb-2",children:"Ticket pattern (regex)"}),(0,a.jsx)("input",{value:l.ticket_pattern,onChange:e=>x("ticket_pattern",e.target.value),className:"bg-[var(--bg-secondary)] border border-[var(--border)] rounded px-2 py-1 w-full max-w-md font-mono text-xs",placeholder:"[A-Z]+-\\d+"})]}),(0,a.jsxs)("section",{children:[(0,a.jsx)("h2",{className:"text-lg font-medium mb-2",children:"WebUI scheduler"}),(0,a.jsxs)("label",{className:"flex items-center gap-2 text-xs",children:[(0,a.jsx)("input",{type:"checkbox",checked:l.webui_scheduler.enabled,onChange:e=>x("webui_scheduler",{...l.webui_scheduler,enabled:e.target.checked})}),"Enable scheduled mechanical distillation"]}),(0,a.jsxs)("div",{className:"grid grid-cols-2 gap-3 max-w-md mt-2",children:[(0,a.jsxs)("label",{className:"flex flex-col text-xs",children:[(0,a.jsx)("span",{className:"text-[var(--text-secondary)]",children:"mechanical_distill_interval_minutes"}),(0,a.jsx)("input",{type:"number",min:1,value:l.webui_scheduler.mechanical_distill_interval_minutes,onChange:e=>x("webui_scheduler",{...l.webui_scheduler,mechanical_distill_interval_minutes:Number(e.target.value)}),className:"bg-[var(--bg-secondary)] border border-[var(--border)] rounded px-2 py-1 text-xs"})]}),(0,a.jsxs)("label",{className:"flex flex-col text-xs",children:[(0,a.jsx)("span",{className:"text-[var(--text-secondary)]",children:"housekeep_interval_hours"}),(0,a.jsx)("input",{type:"number",min:1,value:l.webui_scheduler.housekeep_interval_hours,onChange:e=>x("webui_scheduler",{...l.webui_scheduler,housekeep_interval_hours:Number(e.target.value)}),className:"bg-[var(--bg-secondary)] border border-[var(--border)] rounded px-2 py-1 text-xs"})]})]})]}),(0,a.jsx)(eD,{count:u,errorCount:0,onSave:m,onDiscard:function(){var e;o(null!=(e=d.current)?e:eF)}})]})]})}let eI=[{id:"install",label:"MCP SERVER CONFIG"},{id:"journal",label:"JOURNAL CONFIG"},{id:"builder",label:"HANDS TOOLS"},{id:"tools",label:"MCP DOCUMENTATION"}];function ez(e){let{open:t,onClose:r}=e,[s,l]=(0,n.useState)("install");return(0,a.jsx)(B.l,{open:t,onClose:r,title:"Kontexta configuration",widthClass:"max-w-6xl",hideHeader:!0,children:(0,a.jsxs)("div",{className:"-m-5 flex flex-col h-[85vh] overflow-hidden text-[var(--text-secondary)]",children:[(0,a.jsx)("div",{className:"flex items-center border-b border-[var(--border)] pl-4 pr-12 bg-[var(--bg-secondary)] flex-shrink-0",children:(0,a.jsx)("div",{role:"tablist",className:"flex gap-1 flex-1 overflow-x-auto hide-scrollbar",children:eI.map(e=>(0,a.jsx)("button",{role:"tab","aria-selected":s===e.id,onClick:()=>l(e.id),className:"px-4 py-3 transition font-mono font-bold uppercase tracking-wider whitespace-nowrap border-b-2 ".concat(s===e.id?"bg-[var(--accent)] text-black border-transparent":"border-transparent text-[var(--text-secondary)] hover:bg-[var(--accent-soft)] hover:text-[var(--text-primary)] focus:bg-[var(--accent-soft)] focus:text-[var(--text-primary)]"),children:e.label},e.id))})}),(0,a.jsxs)("div",{className:"flex-1 overflow-auto p-6 bg-[var(--bg-primary)] animate-fade-in",children:["tools"===s&&(0,a.jsx)(eg,{}),"install"===s&&(0,a.jsx)(eN,{}),"builder"===s&&(0,a.jsx)(eM,{}),"journal"===s&&(0,a.jsx)(eR,{})]},s)]})})}let eU=[{key:"default",label:"Default",swatches:["#B4781E","#1a1a1a","#e5e5e5","#252525"]},{key:"minimal",label:"Minimal",swatches:["#2563eb","#ffffff","#1a1a1a","#e0e0e0"]},{key:"api-ref",label:"API Ref",swatches:["#0ea5e9","#0c1222","#e2e8f0","#1e293b"]},{key:"flat",label:"Flat",swatches:["#e91e63","#00bcd4","#ff9800","#9c27b0"]},{key:"terminal",label:"Terminal",swatches:["#00ff41","#000000","#33cc33","#1a3a1a"]},{key:"paper",label:"Paper",swatches:["#8b4513","#faf6f1","#2b2620","#d9cdb8"]},{key:"solarized",label:"Solarized",swatches:["#b58900","#268bd2","#2aa198","#dc322f"]},{key:"brutalist",label:"Brutalist",swatches:["#000000","#ffff00","#ffffff","#555555"]},{key:"ocean",label:"Ocean",swatches:["#5eead4","#c4b5fd","#fda4af","#0b1220"]}];function eB(e){var t;let{isOpen:r,onClose:s,mode:l="publish",onSwitchToPublish:o,onPublishSuccess:i}=e,[c,d]=(0,n.useState)([]),[u,x]=(0,n.useState)([]),[m,h]=(0,n.useState)({folders:[],title:"Kontexta Docs",brand:"Kontexta",tagline:"",hero:!0,theme:"default",llmsTxt:!0,seo:!0}),[p,b]=(0,n.useState)(!1),[f,v]=(0,n.useState)(null),[g,j]=(0,n.useState)(null),[y,w]=(0,n.useState)(!1),[N,k]=(0,n.useState)(!1),[S,C]=(0,n.useState)(null),[T,_]=(0,n.useState)([]),[E,L]=(0,n.useState)(null);(0,n.useEffect)(()=>{r&&("view"===l?D():(M(),O(),P()),v(null),j(null))},[r,l]);let P=async()=>{try{let t=await fetch("/api/publish");if(t.ok){var e;let r=await t.json();C(null!=(e=null==r?void 0:r.lastBuilt)?e:null)}}catch(e){}};(0,n.useEffect)(()=>{r&&"publish"===l&&O()},[r,l,E]);let D=async()=>{w(!0);try{let e=await fetch("/api/publish");if(e.ok){let t=await e.json();k(t.exists||!1)}}catch(e){k(!1)}finally{w(!1)}},M=async()=>{try{let e=await fetch("/api/projects");if(e.ok){let t=await e.json();_(t||[])}}catch(e){console.error("Failed to fetch projects:",e)}},O=async()=>{try{let e=E?"/api/folders?projectId=".concat(E):"/api/folders/",t=await fetch(e);if(t.ok){let e=(await t.json()).folders||[];d(e),x(e)}}catch(e){console.error("Failed to fetch folders:",e)}},F=async()=>{if(0===u.length)return void j("Please select at least one folder to publish.");b(!0),j(null),v(null);try{let e=await fetch("/api/publish",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({folders:u,title:m.title,brand:m.brand,tagline:m.tagline,hero:m.hero,theme:m.theme,llmsTxt:m.llmsTxt,seo:m.seo,projectId:E})}),t=await e.json();t.success?(null==i||i(t),s()):(v(t),j(t.error||"Publish failed"))}catch(e){j(e instanceof Error?e.message:"Publish failed")}finally{b(!1)}},A=null!==E,R=T.find(e=>e.id===E),I="view"===l;return(0,a.jsx)(B.l,{open:r,onClose:s,title:I?"View published site":"Publish documentation",widthClass:I?"max-w-[1400px]":"max-w-2xl",hideHeader:!0,children:(0,a.jsxs)("div",{className:"-m-5 flex flex-col max-h-[80vh] overflow-hidden",children:[(0,a.jsx)("div",{className:"flex items-center justify-between px-6 py-4 border-b border-[var(--border)] shrink-0",children:(0,a.jsxs)("div",{className:"flex items-center gap-3",children:[(0,a.jsxs)("svg",{className:"w-5 h-5 text-[var(--accent)]",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[(0,a.jsx)("path",{d:"M4 4h16v16H4z"}),(0,a.jsx)("path",{d:"M9 9h6v6H9z"}),(0,a.jsx)("path",{d:"M9 1v3M15 1v3M9 20v3M15 20v3M20 9h3M20 14h3M1 9h3M1 14h3"})]}),(0,a.jsx)("h2",{className:"text-lg font-semibold text-[var(--text-primary)]",children:I?"View published site":"Publish documentation"})]})}),(0,a.jsx)("div",{className:"flex-1 overflow-hidden flex flex-col",children:I?(0,a.jsx)("div",{className:"flex-1 flex flex-col",children:y?(0,a.jsx)("div",{className:"flex items-center justify-center h-full p-8",children:(0,a.jsxs)("div",{className:"text-center space-y-3",children:[(0,a.jsxs)("svg",{className:"w-8 h-8 animate-spin mx-auto text-[var(--accent)]",viewBox:"0 0 24 24",fill:"none",children:[(0,a.jsx)("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),(0,a.jsx)("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z"})]}),(0,a.jsx)("p",{className:"text-sm text-[var(--text-secondary)]",children:"Checking for published site..."})]})}):N?(0,a.jsx)("iframe",{src:"/api/publish/html",title:"Published Site",className:"w-full h-full border-0 bg-white",sandbox:"allow-same-origin allow-scripts allow-popups"}):(0,a.jsx)("div",{className:"flex items-center justify-center h-full p-8",children:(0,a.jsxs)("div",{className:"text-center space-y-4 max-w-md",children:[(0,a.jsxs)("svg",{className:"w-12 h-12 mx-auto text-[var(--text-tertiary)]",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",children:[(0,a.jsx)("path",{d:"M4 4h16v16H4z"}),(0,a.jsx)("path",{d:"M9 9h6v6H9z"}),(0,a.jsx)("path",{d:"M9 1v3M15 1v3M9 20v3M15 20v3M20 9h3M20 14h3M1 9h3M1 14h3"})]}),(0,a.jsx)("p",{className:"text-sm text-[var(--text-secondary)]",children:"No published site found. Publish some content first to generate a static site."}),(0,a.jsx)("button",{onClick:()=>null==o?void 0:o(),className:"px-4 py-2 rounded-xl text-sm font-medium bg-[var(--accent)] text-white hover:bg-[color-mix(in_srgb,var(--accent)_85%,black)] transition-colors",children:"Create a Publish"})]})})}):(0,a.jsxs)("div",{className:"flex-1 overflow-y-auto p-6 space-y-6",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-2",children:"Source Scope"}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("button",{onClick:()=>L(null),className:"px-3 py-1.5 rounded-lg text-sm font-medium transition-all ".concat(A?"bg-[var(--bg-tertiary)] text-[var(--text-secondary)] border border-[var(--border)] hover:border-[var(--border)]":"bg-[var(--accent)]/10 text-[var(--accent)] border border-[var(--accent)]/30"),children:"Knowledge Base"}),(0,a.jsxs)("button",{onClick:()=>{var e,t;return L(null!=(t=null==(e=T[0])?void 0:e.id)?t:null)},className:"px-3 py-1.5 rounded-lg text-sm font-medium transition-all ".concat(A?"bg-[var(--accent)]/10 text-[var(--accent)] border border-[var(--accent)]/30":"bg-[var(--bg-tertiary)] text-[var(--text-secondary)] border border-[var(--border)] hover:border-[var(--border)]"),children:["Project",R&&(0,a.jsxs)("span",{className:"ml-1 text-xs opacity-70",children:["(",R.name,")"]})]})]})]}),A&&(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-2",children:"Select Project"}),(0,a.jsx)("select",{value:null!=E?E:"",onChange:e=>L(e.target.value?Number(e.target.value):null),className:"w-full px-3 py-2 rounded-xl bg-[var(--bg-tertiary)] border border-[var(--border)] text-[var(--text-primary)] text-sm focus:outline-none focus:ring-2 focus:ring-[var(--accent)]/50",children:T.map(e=>(0,a.jsxs)("option",{value:e.id,children:[e.name," (",e.slug,")"]},e.id))})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-3",children:"Folders to Publish"}),(0,a.jsxs)("div",{className:"flex items-center gap-2 mb-3",children:[(0,a.jsx)("button",{onClick:()=>{x([...c])},className:"text-xs text-[var(--accent)] hover:underline",children:"Select All"}),(0,a.jsx)("span",{className:"text-[var(--text-tertiary)]",children:"•"}),(0,a.jsx)("button",{onClick:()=>{x([])},className:"text-xs text-[var(--text-tertiary)] hover:underline",children:"Clear All"})]}),(0,a.jsx)("div",{className:"space-y-2 max-h-48 overflow-y-auto rounded-xl border border-[var(--border)] p-3 bg-[var(--bg-tertiary)]/30",children:0===c.length?(0,a.jsx)("p",{className:"text-sm text-[var(--text-tertiary)] text-center py-4",children:A?"No folders found in ".concat(null!=(t=null==R?void 0:R.name)?t:"this project"):"No folders found in your vault"}):c.map(e=>{var t,r;return(0,a.jsxs)("label",{className:"flex items-center gap-3 p-2 rounded-lg hover:bg-[var(--bg-secondary)] cursor-pointer transition-colors",children:[(0,a.jsx)("input",{type:"checkbox",checked:u.includes(e),onChange:()=>{x(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},className:"w-4 h-4 rounded border-[var(--border)] text-[var(--accent)] focus:ring-[var(--accent)] focus:ring-offset-0 bg-[var(--bg-tertiary)]"}),(0,a.jsx)("span",{className:"text-sm text-[var(--text-primary)]",children:(r=A&&null!=(t=null==R?void 0:R.slug)?t:null)?"".concat(r,"/").concat(e):e})]},e)})}),u.length>0&&(0,a.jsxs)("p",{className:"text-xs text-[var(--text-tertiary)] mt-2",children:[u.length," folder",1!==u.length?"s":""," selected"]})]}),(0,a.jsxs)("div",{className:"grid grid-cols-2 gap-4",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-2",children:"Site Title"}),(0,a.jsx)("input",{type:"text",value:m.title,onChange:e=>h(t=>({...t,title:e.target.value})),className:"w-full px-3 py-2 rounded-xl bg-[var(--bg-tertiary)] border border-[var(--border)] text-[var(--text-primary)] text-sm focus:outline-none focus:ring-2 focus:ring-[var(--accent)]/50"})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-2",children:"Brand Name"}),(0,a.jsx)("input",{type:"text",value:m.brand,onChange:e=>h(t=>({...t,brand:e.target.value})),className:"w-full px-3 py-2 rounded-xl bg-[var(--bg-tertiary)] border border-[var(--border)] text-[var(--text-primary)] text-sm focus:outline-none focus:ring-2 focus:ring-[var(--accent)]/50"})]})]}),(0,a.jsxs)("div",{children:[(0,a.jsxs)("label",{className:"flex items-center gap-2 cursor-pointer mb-2",children:[(0,a.jsx)("input",{type:"checkbox",checked:m.hero,onChange:e=>h(t=>({...t,hero:e.target.checked})),className:"w-4 h-4 rounded border-[var(--border)] text-[var(--accent)] focus:ring-[var(--accent)] focus:ring-offset-0 bg-[var(--bg-tertiary)]"}),(0,a.jsx)("span",{className:"text-sm font-medium text-[var(--text-secondary)]",children:"Show hero on landing page"})]}),m.hero&&(0,a.jsx)("input",{type:"text",value:m.tagline,onChange:e=>h(t=>({...t,tagline:e.target.value})),placeholder:"Optional tagline shown under the title",className:"w-full px-3 py-2 rounded-xl bg-[var(--bg-tertiary)] border border-[var(--border)] text-[var(--text-primary)] text-sm focus:outline-none focus:ring-2 focus:ring-[var(--accent)]/50"})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"block text-sm font-medium text-[var(--text-secondary)] mb-3",children:"Theme"}),(0,a.jsx)("div",{className:"grid grid-cols-3 gap-3",children:eU.map(e=>{let{key:t,label:r,swatches:n}=e;return(0,a.jsxs)("button",{onClick:()=>h(e=>({...e,theme:t})),className:"px-3 py-3 rounded-xl border-2 text-sm font-medium transition-all flex flex-col items-start gap-2 ".concat(m.theme===t?"border-[var(--accent)] bg-[var(--accent)]/10 text-[var(--accent)]":"border-[var(--border)] bg-[var(--bg-tertiary)]/30 text-[var(--text-secondary)] hover:border-[var(--border)]"),children:[(0,a.jsx)("span",{children:r}),(0,a.jsx)("span",{className:"flex gap-1",children:n.map((e,t)=>(0,a.jsx)("span",{className:"w-3 h-3 rounded-full bp-keep-round border border-black/10",style:{background:e}},t))})]},t)})})]}),(0,a.jsxs)("div",{className:"flex items-center gap-6",children:[(0,a.jsxs)("label",{className:"flex items-center gap-2 cursor-pointer",children:[(0,a.jsx)("input",{type:"checkbox",checked:m.llmsTxt,onChange:e=>h(t=>({...t,llmsTxt:e.target.checked})),className:"w-4 h-4 rounded border-[var(--border)] text-[var(--accent)] focus:ring-[var(--accent)] focus:ring-offset-0 bg-[var(--bg-tertiary)]"}),(0,a.jsx)("span",{className:"text-sm text-[var(--text-primary)]",children:"Generate llms.txt"})]}),(0,a.jsxs)("label",{className:"flex items-center gap-2 cursor-pointer",children:[(0,a.jsx)("input",{type:"checkbox",checked:m.seo,onChange:e=>h(t=>({...t,seo:e.target.checked})),className:"w-4 h-4 rounded border-[var(--border)] text-[var(--accent)] focus:ring-[var(--accent)] focus:ring-offset-0 bg-[var(--bg-tertiary)]"}),(0,a.jsx)("span",{className:"text-sm text-[var(--text-primary)]",children:"SEO Meta Tags"})]})]}),g&&(0,a.jsx)("div",{className:"p-4 rounded-xl bg-[var(--danger-soft)] border border-[var(--danger)]/20",children:(0,a.jsx)("p",{className:"text-sm text-[var(--danger)]",children:g})})]})}),(0,a.jsxs)("div",{className:"flex items-center justify-between gap-3 px-6 py-4 border-t border-[var(--border)] bg-[var(--bg-tertiary)]/30",children:[(0,a.jsx)("div",{className:"text-xs text-[var(--text-secondary)] flex-1",children:!I&&S&&(0,a.jsxs)("span",{title:new Date(S).toLocaleString(),children:["Last built ",function(e){if(!e)return null;let t=new Date(e).getTime();if(!Number.isFinite(t))return null;let r=Date.now()-t;return r<6e4?"just now":r<36e5?"".concat(Math.floor(r/6e4),"m ago"):r<864e5?"".concat(Math.floor(r/36e5),"h ago"):r<6048e5?"".concat(Math.floor(r/864e5),"d ago"):new Date(e).toLocaleDateString()}(S)]})}),(0,a.jsx)("button",{onClick:s,disabled:p,className:"px-4 py-2 rounded-xl text-sm font-medium text-[var(--text-secondary)] hover:bg-[var(--bg-tertiary)] transition-colors disabled:opacity-50",children:"Close"}),!I&&0===u.length&&(0,a.jsx)("span",{className:"text-xs text-[var(--text-secondary)] italic",title:"The orange Publish button is disabled until at least one folder is selected",children:"Select at least one folder to enable Publish"}),!I&&(0,a.jsx)("button",{onClick:F,disabled:p||0===u.length,className:"px-6 py-2 rounded-xl text-sm font-medium bg-[var(--accent)] text-white hover:bg-[color-mix(in_srgb,var(--accent)_85%,black)] transition-colors disabled:opacity-50 disabled:cursor-not-allowed flex items-center gap-2",children:p?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("svg",{className:"w-4 h-4 animate-spin",viewBox:"0 0 24 24",fill:"none",children:[(0,a.jsx)("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),(0,a.jsx)("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z"})]}),"Publishing..."]}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("svg",{className:"w-4 h-4",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[(0,a.jsx)("path",{d:"M4 4h16v16H4z"}),(0,a.jsx)("path",{d:"M12 8v8M8 12h8"})]}),"Publish"]})})]})]})})}function eH(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,[r,a]=(0,n.useState)([]),[s,l]=(0,n.useState)(""),[o,i]=(0,n.useState)(!1);return(0,n.useEffect)(()=>{a([]),l("");let t=!1,r=new AbortController;return async function(){i(!0);try{let n=await fetch(e?"/api/folders?projectId=".concat(e):"/api/folders",{signal:r.signal});if(t)return;if(n.ok){let e=await n.json();if(t)return;a(e.folders),l(e.basePath)}}catch(e){if((null==e?void 0:e.name)==="AbortError")return;console.error("Failed to fetch folders:",e)}finally{t||i(!1)}}(),()=>{t=!0,r.abort()}},[e,t]),{folders:r,basePath:s,loading:o}}var eW=r(31144);function eK(e){let{segments:t}=e;return 0===t.length?null:(0,a.jsx)("nav",{"aria-label":"Breadcrumb",className:"h-8 px-4 flex items-center gap-1.5 text-[13px] border-b border-[var(--border)] bg-[var(--bg-tertiary)] text-[var(--text-secondary)] select-none",children:t.map((e,r)=>{let n=r===t.length-1;return(0,a.jsxs)("span",{className:"flex items-center gap-1.5",children:[r>0&&(0,a.jsx)(w.A,{className:"w-3.5 h-3.5 opacity-40","aria-hidden":!0}),n||!e.onClick?(0,a.jsx)("span",{className:n?"font-bold text-[var(--text-primary)]":"",children:e.label}):(0,a.jsx)("button",{onClick:e.onClick,className:"hover:text-[var(--accent)] transition-colors",children:e.label})]},"".concat(r,"-").concat(e.label))})})}function eJ(e){let{globalRemoteUrl:t,status:r,lastDoneAt:s,stage:l}=e,[,o]=(0,n.useState)(0);(0,n.useEffect)(()=>{let e=setInterval(()=>o(e=>e+1),3e4);return()=>clearInterval(e)},[]);let i="syncing"===r?"syncing...":"error"===r?"sync failed":"no-remote"===r?"no remote configured":"ok"===r||s?"synced ".concat(function(e){if(!e)return"never";let t=Math.floor((Date.now()-e)/1e3);return t<60?"".concat(t,"s ago"):t<3600?"".concat(Math.floor(t/60),"m ago"):t<86400?"".concat(Math.floor(t/3600),"h ago"):"".concat(Math.floor(t/86400),"d ago")}(s)):"ready",c=t?t.replace(/^https?:\/\//,"").replace(/\.git$/,""):null;return(0,a.jsxs)("footer",{className:"relative h-7 border-t border-[var(--border)] bg-[var(--bg-secondary)] px-4 flex items-center gap-2.5 text-[13px] text-[var(--text-secondary)] font-mono",children:[(0,a.jsx)("span",{style:{color:"ok"===r?"var(--success)":"syncing"===r?"var(--warning)":"error"===r?"var(--danger)":"var(--text-secondary)"},className:"syncing"===r?"animate-pulse":"",children:"●"}),(0,a.jsx)("span",{children:i}),(0,a.jsx)("span",{className:"text-[var(--border)]",children:"\xb7"}),(0,a.jsxs)("span",{className:"font-medium ".concat("syncing"===r?"text-[var(--warning)]":""),children:["git: ","syncing"===r?l||"working":"clean"]}),c&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("span",{className:"text-[var(--border)]",children:"\xb7"}),(0,a.jsx)("span",{className:"truncate max-w-[260px] opacity-70",children:c})]})]})}var eG=r(31144);function eV(e){var t;let{items:r,footer:s}=e,[l,o]=(0,n.useState)(null),i=null!=(t=[...r,...s?[s]:[]].find(e=>e.id===l))?t:null;return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"w-14 shrink-0 bg-[var(--bg-secondary)] border-r border-[var(--border)] flex flex-col items-center py-4 gap-4 z-50",children:[(0,a.jsx)("div",{className:"flex flex-col items-center gap-3 w-full",children:r.map(e=>(0,a.jsx)(eq,{item:e,onPeek:()=>o(e.id)},e.id))}),(0,a.jsx)("div",{className:"flex-1"}),s&&(0,a.jsx)("div",{className:"pt-4 border-t border-[var(--border)] w-full flex flex-col items-center",children:(0,a.jsx)(eq,{item:s,onPeek:()=>o(s.id)})})]}),(null==i?void 0:i.peek)&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("div",{className:"fixed inset-0 z-40 bg-black/20 backdrop-blur-sm transition-all",onClick:()=>o(null)}),(0,a.jsxs)("div",{className:"absolute z-50 left-16 top-16 w-64 max-h-[80vh] overflow-auto bg-[var(--bg-secondary)]/90 backdrop-blur-xl border border-amber-accent/20 rounded-xl shadow-2xl p-4 animate-fade-in",children:[(0,a.jsx)("div",{className:"text-[10px] font-black uppercase tracking-[0.2em] text-amber-accent/70 mb-4",children:i.label}),(0,a.jsx)("div",{className:"scrollbar-thin",children:i.peek})]})]})]})}function eq(e){let{item:t,onPeek:r}=e,n=t.label.charAt(0).toUpperCase(),s="kb"===t.id;return(0,a.jsxs)("button",{title:t.label,onClick:()=>{t.onClick(),t.peek&&r()},className:"\n w-10 h-10 flex items-center justify-center relative rounded-xl transition-all duration-300 group hover-lift\n ".concat(t.active?"bg-amber-accent text-white shadow-[0_0_20px_rgba(180,120,30,0.4)]":"bg-[var(--bg-tertiary)] text-[var(--text-secondary)] hover:bg-[var(--accent-soft)] hover:text-[var(--text-primary)] active:scale-95","\n "),"aria-label":t.label,children:[t.active&&(0,a.jsx)("span",{className:"absolute -left-3 top-1/2 -translate-y-1/2 w-1.5 h-6 bg-amber-accent rounded-r-full shadow-[4px_0_15px_rgba(180,120,30,0.6)] bp-keep-round"}),s?(0,a.jsxs)("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",className:"w-5 h-5",children:[(0,a.jsx)("path",{d:"M4 19.5A2.5 2.5 0 0 1 6.5 17H20"}),(0,a.jsx)("path",{d:"M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z"})]}):(0,a.jsx)("span",{className:"font-black text-sm tracking-tighter",children:n})]})}function eZ(){let[e,t]=(0,n.useState)(!1),[r,o]=(0,n.useState)(!1),[i,c]=(0,n.useState)(!1),[d,u]=(0,n.useState)(!1),[x,m]=(0,n.useState)(!1),[h,f]=(0,n.useState)(!1),[g,j]=(0,n.useState)(!1),[y,w]=(0,n.useState)(!1),[N,k]=(0,n.useState)("publish"),[S,C]=(0,n.useState)(!1),[T,_]=(0,n.useState)(!1),[L,P]=(0,n.useState)(null),[D,M]=(0,n.useState)(null),[O,F]=(0,n.useState)(null),[A,R]=(0,n.useState)(null),[I,z]=(0,n.useState)(null),[U,B]=(0,n.useState)("updated_at"),[H,W]=(0,n.useState)(0),K=(0,s.useSearchParams)();(0,n.useEffect)(()=>{if("1"===K.get("setup")){c(!0);let e=new URL(window.location.href);e.searchParams.delete("setup"),window.history.replaceState({},"",e.toString())}},[]),(0,n.useEffect)(()=>{let e=sessionStorage.getItem("selectedSection"),t=sessionStorage.getItem("selectedProjectId");e&&F(e),t&&P(Number(t))},[]);let[G,V]=(0,n.useState)(null),q=function(e){let[t,r]=(0,n.useState)(e?"idle":"no-remote"),[a,s]=(0,n.useState)(null),[l,o]=(0,n.useState)(null),[i,c]=(0,n.useState)([]);(0,n.useEffect)(()=>{r(t=>"syncing"===t||"ok"===t||"error"===t?t:e?"idle":"no-remote")},[e]);let d=(0,n.useRef)(null);return(0,n.useEffect)(()=>{let e={reconnect:null,cancelled:!1,stopReconnecting:!1,attempt:0},t=e=>{e&&(e.onmessage=null,e.onclose=null,e.onerror=null)},a=async()=>{if(e.cancelled||e.stopReconnecting)return;let n="https:"===window.location.protocol?"wss:":"ws:",l=eG.env.NEXT_PUBLIC_WS_TOKEN||"",i="";try{let e=await fetch("/api/auth/token");e.ok&&(i=(await e.json()).token)}catch(e){console.warn("[Kontexta] sync-status WS could not fetch session token:",e)}if(e.cancelled||e.stopReconnecting)return;let u=i||l,x=u?"?token=".concat(encodeURIComponent(u)):"",m="".concat(n,"//").concat(window.location.host,"/_kontexta_ws").concat(x);if(d.current){t(d.current);try{d.current.close()}catch(e){}}let h=new WebSocket(m);d.current=h,h.onopen=()=>{e.attempt=0},h.onmessage=e=>{try{let t=JSON.parse(e.data);if(!function(e){if(!e||"object"!=typeof e)return!1;let t=e.type;return"sync:start"===t||"sync:stage"===t||"sync:done"===t||"sync:error"===t}(t))return;"sync:start"===t.type?(r("syncing"),o("preparing")):"sync:stage"===t.type?o(t.stage):"sync:done"===t.type?(r("ok"),o(null),s(t.at),c(e=>[{projectId:t.projectId,result:"ok",at:t.at},...e].slice(0,50))):"sync:error"===t.type&&(r("error"),o(null),c(e=>[{projectId:t.projectId,result:"error",at:t.at,message:t.message},...e].slice(0,50)))}catch(e){}},h.onclose=t=>{if(e.cancelled)return;if(1008===t.code||4401===t.code){console.warn("[Kontexta] sync-status WS auth failed; stopping reconnect attempts"),e.stopReconnecting=!0;return}e.attempt++;let r=Math.min(3e4,1e3*2**Math.min(e.attempt,5))*(.75+.5*Math.random());e.reconnect=setTimeout(a,r)}};return a(),()=>{e.cancelled=!0,e.reconnect&&clearTimeout(e.reconnect),t(d.current);try{var r;null==(r=d.current)||r.close()}catch(e){}d.current=null}},[]),{status:t,lastDoneAt:a,stage:l,log:i}}(G),Z=(0,n.useCallback)(async()=>{try{let e=await fetch("/api/git/remote");if(e.ok){let t=await e.json();V(t.remote_url)}}catch(e){}},[]);(0,n.useEffect)(()=>{Z()},[Z]);let{projects:$,loading:X,refresh:Y}=function(){let[e,t]=(0,n.useState)([]),[r,a]=(0,n.useState)(!0),s=(0,n.useRef)(0),l=(0,n.useCallback)(async()=>{let e=++s.current;try{a(!0);let r=await fetch("/api/projects");if(r.ok){let a=await r.json();if(e!==s.current)return;t(a)}}catch(e){console.error("Failed to fetch projects:",e)}finally{e===s.current&&a(!1)}},[]);return(0,n.useEffect)(()=>{l()},[l]),{projects:e,loading:r,refresh:l}}(),Q=async()=>{if(L)try{let e=await fetch("/api/projects/".concat(L),{method:"DELETE"});if(e.ok)P(null),F(null),z(null),R(null),sessionStorage.removeItem("selectedSection"),sessionStorage.removeItem("selectedProjectId"),Y(),l.o.success("Project unregistered");else{let t=await e.json().catch(()=>({}));l.o.error(t.error||"Failed to unregister project")}}catch(t){var e;l.o.error("Failed to unregister project: ".concat(null!=(e=null==t?void 0:t.message)?e:"Network error"))}},{files:ee,loading:et,refresh:er}=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},[t,r]=(0,n.useState)([]),[a,s]=(0,n.useState)(!0),l=(0,n.useRef)(e);l.current=e;let o=(0,n.useRef)(0),i=(0,n.useRef)(null),c=(0,n.useCallback)(async()=>{var e;let t=l.current,a=++o.current;null==(e=i.current)||e.abort();let n=new AbortController;i.current=n;try{s(!0);let e=new URLSearchParams;void 0!==t.project_id&&e.append("project_id",null===t.project_id?"none":t.project_id.toString()),t.tag&&e.append("tag",t.tag),void 0!==t.favorite&&e.append("favorite",t.favorite.toString()),t.folder&&e.append("folder",t.folder);let l="/api/files".concat(e.toString()?"?".concat(e.toString()):""),i=await fetch(l,{signal:n.signal});if(a!==o.current)return;if(i.ok){let e=await i.json();if(a!==o.current)return;r(e)}}catch(e){if((null==e?void 0:e.name)==="AbortError")return;console.error("Failed to fetch files:",e)}finally{a===o.current&&s(!1)}},[]);return(0,n.useEffect)(()=>(r([]),c(),()=>{var e;return null==(e=i.current)?void 0:e.abort()}),[e.project_id,e.tag,e.favorite,e.folder,c]),{files:t,loading:a,refresh:c}}({}),ea=(0,n.useMemo)(()=>"favorites"===O?ee.filter(e=>e.favorite):"projects"===O&&null!==L?ee.filter(e=>e.project_id===L):ee,[ee,O,L]),en=(0,n.useMemo)(()=>ee.filter(e=>!e.project_id),[ee]),{folders:es,basePath:el}=eH(null,H),{folders:eo,basePath:ei}=eH("projects"===O?L:null,H),ec=$.find(e=>e.id===L);var ef,ev=(0,n.useCallback)(e=>{er()},[er]);let eg=(0,n.useRef)(ev);eg.current=ev,(0,n.useEffect)(()=>{let e={ws:null,reconnectTimer:null,cancelled:!1,stopReconnecting:!1,attempt:0},t=e=>{e&&(e.onmessage=null,e.onclose=null,e.onerror=null,e.onopen=null)},r=async()=>{if(e.cancelled||e.stopReconnecting)return;let a="https:"===window.location.protocol?"wss:":"ws:",n=eW.env.NEXT_PUBLIC_WS_TOKEN||"",s="";try{let e=await fetch("/api/auth/token");e.ok&&(s=(await e.json()).token)}catch(e){console.warn("[Kontexta] WS could not fetch session token:",e)}if(e.cancelled||e.stopReconnecting)return;let l=s||n,o=l?"?token=".concat(encodeURIComponent(l)):"",i="".concat(a,"//").concat(window.location.host,"/_kontexta_ws").concat(o);if(e.ws){t(e.ws);try{e.ws.close()}catch(e){}e.ws=null}let c=new WebSocket(i);e.ws=c,c.onopen=()=>{e.attempt=0},c.onmessage=e=>{try{let t=JSON.parse(e.data);eg.current(t)}catch(e){}},c.onclose=t=>{if(e.cancelled)return;if(1008===t.code||4401===t.code){console.warn("[Kontexta] WS auth failed; stopping reconnect attempts"),e.stopReconnecting=!0;return}e.attempt++;let a=Math.min(3e4,1e3*2**Math.min(e.attempt,5))*(.75+.5*Math.random());e.reconnectTimer=setTimeout(r,a)},c.onerror=()=>{}};return r(),()=>{e.cancelled=!0,e.reconnectTimer&&clearTimeout(e.reconnectTimer),t(e.ws);try{var r;null==(r=e.ws)||r.close()}catch(e){}e.ws=null}},[]);let ej=b("(max-width: 767px)"),[ey,ew]=(0,n.useState)(!1);(0,n.useEffect)(()=>ew(!0),[]);let eN=(0,n.useRef)(!1),ek=()=>!eN.current||window.confirm("You have unsaved changes in the open file. Discard them?");(0,n.useEffect)(()=>{let e=e=>{eN.current&&(e.preventDefault(),e.returnValue="")};return window.addEventListener("beforeunload",e),()=>window.removeEventListener("beforeunload",e)},[]);let eS=e=>{ek()&&(P(e),F("projects"),R(null),z(null),sessionStorage.setItem("selectedSection","projects"),sessionStorage.setItem("selectedProjectId",String(e)))},eC=()=>{ek()&&(F("knowledge"),P(null),R(null),z(null),sessionStorage.setItem("selectedSection","knowledge"),sessionStorage.removeItem("selectedProjectId"))},eT=()=>{ek()&&(F("favorites"),P(null),R(null),z(null),sessionStorage.setItem("selectedSection","favorites"),sessionStorage.removeItem("selectedProjectId"))},e_=(e,t)=>{if(e!==A&&!ek())return;let r=ee.find(t=>t.id===e);if(r)if(r.project_id){let e=$.find(e=>e.id===r.project_id);F("projects"),P(r.project_id),sessionStorage.setItem("selectedSection","projects"),sessionStorage.setItem("selectedProjectId",String(r.project_id)),(null==e?void 0:e.path)&&r.path.startsWith(e.path)?z(r.path.slice(e.path.length).replace(/^[\/\\]+/,"").split(/[\/\\]/).slice(0,-1).join("/")||null):z(null)}else F("knowledge"),P(null),sessionStorage.setItem("selectedSection","knowledge"),sessionStorage.removeItem("selectedProjectId"),el&&r.path.startsWith(el)?z(r.path.slice(el.length).replace(/^[\/\\]+/,"").split(/[\/\\]/).slice(0,-1).join("/")||null):z(null);R(e)},eE=async()=>{if(!L)return;let e=await fetch("/api/projects/".concat(L,"/sync"),{method:"POST"});if(e.ok)er();else throw Error((await e.json()).error||"Sync failed")},eL=async()=>{C(!0);try{let e=await fetch("/api/refresh",{method:"POST",body:JSON.stringify({projectId:L}),headers:{"Content-Type":"application/json"}});if(e.ok)er(),er(),W(e=>e+1),l.o.success("Index refreshed");else{let t=await e.json().catch(()=>({}));l.o.error(t.error||"Refresh failed")}}catch(t){var e;l.o.error("Failed to refresh: ".concat(null!=(e=null==t?void 0:t.message)?e:"Network error"))}finally{C(!1)}},eP=async()=>{let e=await fetch("/api/git/sync-all",{method:"POST"});if(e.ok||207===e.status)er();else throw Error((await e.json()).error||"Sync All failed")},eD=async e=>{try{if((await fetch("/api/git/remote",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({remote_url:e})})).ok)V(e);else throw Error("Failed to update global remote")}catch(e){throw console.error("Failed to update remote URL:",e),e}},eM=async(e,t,r,a)=>{try{let n=await fetch("/api/files",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({title:e,content:t,destination:r,projectId:L,folder:a})}),s=await n.json().catch(()=>({}));if(n.ok)return u(!1),l.o.success('Created "'.concat(e,'"')),await er(),"number"==typeof s.id&&R(s.id),!0;return l.o.error(s.error||"Failed to create file"),!1}catch(e){var n;return l.o.error("Failed to create file: ".concat(null!=(n=null==e?void 0:e.message)?n:"Network error")),!1}},eO=async e=>{try{let t=await fetch("/api/files/".concat(e),{method:"DELETE"});if(t.ok)er(),W(e=>e+1),R(null),l.o.success("File deleted");else{let e=await t.json().catch(()=>({}));l.o.error(e.error||"Failed to delete file")}}catch(e){var t;l.o.error("Failed to delete file: ".concat(null!=(t=null==e?void 0:e.message)?t:"Network error"))}},eF=async e=>{try{let t=await fetch("/api/folders",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectId:D&&D>0?D:null,name:e})});if(t.ok)return m(!1),D&&0!==D?z(e):(F("knowledge"),P(null),z(e),sessionStorage.setItem("selectedSection","knowledge"),sessionStorage.removeItem("selectedProjectId")),W(e=>e+1),l.o.success('Folder "'.concat(e,'" created')),!0;{let e=await t.json().catch(()=>({}));return l.o.error(e.error||"Failed to create folder"),!1}}catch(e){var t;return l.o.error("Failed to create folder: ".concat(null!=(t=null==e?void 0:e.message)?t:"Network error")),!1}},eA=async()=>{if(I){_(!0);try{let e=await fetch("/api/folders?name=".concat(encodeURIComponent(I),"&projectId=").concat(L||""),{method:"DELETE"});if(e.ok)z(null),W(e=>e+1),f(!1),l.o.success("Folder deleted");else{let t=await e.json().catch(()=>({}));l.o.error(t.error||"Failed to delete folder")}}catch(t){var e;l.o.error("Failed to delete folder: ".concat(null!=(e=null==t?void 0:t.message)?e:"Network error"))}finally{_(!1)}}};(0,n.useEffect)(()=>{let e=e=>{(e.metaKey||e.ctrlKey)&&"k"===e.key&&(e.preventDefault(),t(e=>!e))};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[]);let eR=(0,n.useMemo)(()=>{var e,t;let r=[];"favorites"===O?r.push({label:"Favorites",onClick:eT}):"knowledge"===O?r.push({label:"Knowledge",onClick:eC}):"projects"===O&&ec&&r.push({label:ec.name,onClick:()=>eS(ec.id)});let a=A?ea.find(e=>e.id===A)||ee.find(e=>e.id===A):null,n="projects"===O?null!=(t=null==ec?void 0:ec.path)?t:null:null!=el?el:null,s=[];return a&&n&&(null==(e=a.path)?void 0:e.startsWith(n))?s=a.path.slice(n.length).replace(/^\/+/,"").split("/").filter(Boolean).slice(0,-1):I&&(s=I.split("/").filter(Boolean)),s.forEach(e=>r.push({label:e})),a&&r.push({label:a.title}),r},[O,ec,A,ea,ee,el,I]),eI=$.map(e=>({id:"p-".concat(e.id),label:e.name,active:"projects"===O&&L===e.id,onClick:()=>eS(e.id)}));return ey?ej?(0,a.jsxs)("div",{className:"h-screen flex flex-col items-center justify-center px-6 text-center bg-[var(--bg-primary)] text-[var(--text-primary)]",children:[(0,a.jsx)("div",{className:"text-2xl font-extrabold tracking-[4px] text-[var(--accent)] mb-3",children:"KONTEXTA"}),(0,a.jsx)("p",{className:"text-sm text-[var(--text-secondary)] max-w-xs",children:"Kontexta is best used on a tablet or larger screen. Open this URL on a wider device to continue."})]}):(0,a.jsxs)("div",{className:"h-screen flex flex-col",children:[(0,a.jsx)(p,{onSearch:()=>t(!0),onAbout:()=>o(!0),onConfigure:()=>c(!0),onPublish:()=>{k("publish"),w(!0)},onViewPublished:()=>window.open("/api/publish/html","_blank"),globalRemoteUrl:G,syncLog:q.log,onSyncAll:eP,onUpdateRemote:eD,selectedProjectName:"projects"===O&&null!=(ef=null==ec?void 0:ec.name)?ef:null,onSyncProject:"projects"===O&&L?eE:void 0}),(0,a.jsx)(eK,{segments:eR}),(0,a.jsx)(v,{leftRail:(0,a.jsx)(eV,{items:eI,footer:{id:"kb",label:"Knowledge Base",active:"knowledge"===O,onClick:eC}}),left:(0,a.jsx)(E,{projects:$,projectFiles:ea,knowledgeFiles:en,selectedProjectId:L,selectedSection:O,selectedFolder:I,projectFolders:eo||[],knowledgeFolders:es||[],projectBasePath:ei,knowledgeBasePath:el,onSelectProject:eS,onSelectKnowledge:eC,onSelectFavorites:eT,onSelectKnowledgeFolder:e=>{ek()&&(F("knowledge"),P(null),R(null),z(e),sessionStorage.setItem("selectedSection","knowledge"),sessionStorage.removeItem("selectedProjectId"))},onSelectFolder:e=>{ek()&&(z(e),R(null))},onSelectFile:e=>e_(e,!0),onCreateFolder:e=>{M(e),m(!0)}}),middle:(0,a.jsx)(J,{files:ea,selectedFileId:A,onSelectFile:e_,sortBy:U,onSortChange:B,selectedFolder:I,selectedProject:null!=ec?ec:null,selectedSection:O,basePath:"projects"===O?ei:el,loading:et||X,onSync:eE,onUnregisterProject:()=>j(!0),onDeleteFolder:()=>{I&&f(!0)},projects:$,onUploaded:er,onRefresh:eL,refreshing:S,onNewFile:()=>u(!0)}),right:(0,a.jsx)(ed,{fileId:A,onDelete:eO,onChanged:er,onDirtyChange:e=>{eN.current=e}})}),(0,a.jsx)(eJ,{globalRemoteUrl:G,status:q.status,lastDoneAt:q.lastDoneAt,stage:q.stage}),(0,a.jsx)(eu,{open:e,onClose:()=>t(!1),onSelectFile:e=>{if(e.id===A||ek()){if(e.project_id){let t=$.find(t=>t.id===e.project_id);F("projects"),P(e.project_id),sessionStorage.setItem("selectedSection","projects"),sessionStorage.setItem("selectedProjectId",String(e.project_id)),(null==t?void 0:t.path)&&e.path.startsWith(t.path)?z(e.path.slice(t.path.length).replace(/^[\/\\]+/,"").split(/[\/\\]/).slice(0,-1).join("/")||null):z(null)}else F("knowledge"),P(null),sessionStorage.setItem("selectedSection","knowledge"),sessionStorage.removeItem("selectedProjectId"),el&&e.path.startsWith(el)?z(e.path.slice(el.length).replace(/^[\/\\]+/,"").split(/[\/\\]/).slice(0,-1).join("/")||null):z(null);R(e.id),t(!1)}}}),(0,a.jsx)(ex,{open:r,onClose:()=>o(!1)}),(0,a.jsx)(ez,{open:i,onClose:()=>c(!1)}),(0,a.jsx)(em,{open:d,onClose:()=>u(!1),onCreate:eM,currentProjectId:L,availableFolders:"knowledge"===O?es:eo}),(0,a.jsx)(eh,{open:x,onClose:()=>m(!1),onCreate:eF}),(0,a.jsx)(ep,{open:h,folderName:I||"",onClose:()=>f(!1),onConfirm:eA,loading:T}),(0,a.jsx)(eb,{isOpen:g,projectName:(null==ec?void 0:ec.name)||"",onClose:()=>j(!1),onConfirm:()=>{Q(),j(!1)}}),(0,a.jsx)(eB,{isOpen:y,onClose:()=>{w(!1),k("publish")},mode:N,onSwitchToPublish:()=>{k("publish")},onPublishSuccess:e=>{var t,r;return l.o.success("Publish successful",{duration:1/0,closeButton:!0,description:["".concat(null!=(t=e.docCount)?t:0," docs"),e.endpointCount?"".concat(e.endpointCount," endpoints"):null,e.termCount?"".concat(e.termCount," terms"):null,null!=(r=e.output)?r:null].filter(Boolean).join(" \xb7 "),action:{label:"View Published",onClick:()=>window.open("/api/publish/html","_blank","noopener,noreferrer")}})}})]}):(0,a.jsx)("div",{className:"h-screen bg-[var(--bg-primary)]"})}},56570:(e,t,r)=>{"use strict";r.d(t,{l:()=>l});var a=r(14915),n=r(88691),s=r(29723);function l(e){let{open:t,onClose:r,title:l,description:o,widthClass:i="max-w-md",hideHeader:c=!1,positionClass:d="left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2",children:u}=e;return(0,a.jsx)(n.bL,{open:t,onOpenChange:e=>{e||r()},children:(0,a.jsxs)(n.ZL,{children:[(0,a.jsx)(n.hJ,{className:"fixed inset-0 z-[var(--z-modal)] bg-black/60 backdrop-blur-sm animate-fade-in"}),(0,a.jsx)(n.UC,{className:"fixed ".concat(d," z-[var(--z-modal)] focus:outline-none"),children:(0,a.jsxs)("div",{className:"relative w-[92vw] ".concat(i," rounded-xl border border-[var(--border)] bg-[var(--bg-primary)] shadow-2xl animate-scale-in max-h-[85vh] flex flex-col"),children:[c?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.hE,{className:"sr-only",children:l}),(0,a.jsx)(n.bm,{className:"btn btn-icon-sm absolute right-3 top-3 z-10","aria-label":"Close",children:(0,a.jsx)(s.A,{className:"w-4 h-4","aria-hidden":!0})})]}):(0,a.jsxs)("div",{className:"flex items-center justify-between px-5 pt-4 pb-3 border-b border-[var(--border)] shrink-0",children:[(0,a.jsx)(n.hE,{className:"text-sm font-bold text-[var(--text-primary)] font-title",children:l}),(0,a.jsx)(n.bm,{className:"btn btn-icon-sm","aria-label":"Close",children:(0,a.jsx)(s.A,{className:"w-4 h-4","aria-hidden":!0})})]}),o?(0,a.jsx)(n.VY,{className:"px-5 pt-3 text-xs text-[var(--text-secondary)]",children:o}):(0,a.jsx)(n.VY,{className:"sr-only",children:l}),(0,a.jsx)("div",{className:"p-5 overflow-y-auto",children:u})]})})]})})}},96211:(e,t,r)=>{Promise.resolve().then(r.bind(r,55808))}},e=>{e.O(0,[2377,3068,9794,9922,5159,7358],()=>e(e.s=96211)),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,533,635,1113,1151,1273,1636,1699,1806,2041,2224,2598,2654,2772,3063,3145,3365,3430,3549,3576,3878,4076,4260,4490,4882,4930,5031,5148,5469,5581,5789,6202,7073,7473,7490,7676,7758,7874,8100,8208,8314,8489,8636,8998,9207,9234,9329,9347,9514,9881,9930],{98473:()=>{}},_=>{_.O(0,[9922,5159,7358],()=>_(_.s=98473)),_N_E=_.O()}]);