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,179 @@
1
+ import * as os from "node:os";
2
+ import * as path from "node:path";
3
+ import * as fs from "node:fs";
4
+ // @vercel/nft — Next's build-time file tracer — statically evaluates
5
+ // os.homedir() and process.env.* inside fs-call arguments and expands any
6
+ // unresolved remainder into a recursive glob rooted at the evaluated
7
+ // prefix. On Windows that means walking C:\Users\<user>\** through
8
+ // protected junctions ("Application Data"), which fails `next build` with
9
+ // EPERM/EACCES. Routing the values through this opaque identity makes the
10
+ // prefix statically unknown, so the tracer skips the expression instead
11
+ // of globbing the user profile. Zero runtime cost.
12
+ const opaque = (v) => v;
13
+ /**
14
+ * Resolves the absolute path to the system default data directory.
15
+ * Falls back to OS-specific standards if KONTEXTA_DATA_DIR is not set.
16
+ *
17
+ * Exported so webpack-bundled consumers (apps/web) never re-implement this
18
+ * with raw os.homedir()/process.env reads — bundled+minified copies of this
19
+ * logic are exactly what @vercel/nft re-folds into user-profile globs.
20
+ */
21
+ export function defaultDataDir() {
22
+ const home = opaque(os.homedir());
23
+ switch (process.platform) {
24
+ case "darwin":
25
+ return path.join(home, "Library", "Application Support", "kontexta");
26
+ case "win32":
27
+ return path.join(opaque(process.env.APPDATA) ?? path.join(home, "AppData", "Roaming"), "kontexta");
28
+ default:
29
+ return path.join(opaque(process.env.XDG_DATA_HOME) ?? path.join(home, ".local", "share"), "kontexta");
30
+ }
31
+ }
32
+ /**
33
+ * Returns the active Kontexta data directory.
34
+ * Centralizes path resolution and ensures synchronization between components.
35
+ *
36
+ * Priority Rules:
37
+ * 1. Web UI Override: If the process is detected as the Web UI and has an override, it WINS.
38
+ * 2. Cached Override: If a path was previously persisted to ~/.kontexta_datadir (e.g. by the Web UI), it WINS.
39
+ * 3. Local Override: If the current process (e.g. MCP) has an override and no cache exists, it is used and cached.
40
+ * 4. OS Default: Fall back to the system standard.
41
+ */
42
+ let _resolvedDataDir = null;
43
+ function isWebContext() {
44
+ return (process.env.npm_package_name === "kxta-web" ||
45
+ !!process.env.NEXT_RUNTIME ||
46
+ !!process.env.__NEXT_PAGES_DIR);
47
+ }
48
+ /** True when a resolved path looks like a temp/test location that must not be persisted to cache. */
49
+ function isTempOrTestPath(p) {
50
+ const lower = p.toLowerCase();
51
+ const tmp = os.tmpdir().toLowerCase();
52
+ const segments = p.split(path.sep).map((s) => s.toLowerCase());
53
+ return (lower.startsWith("/tmp") ||
54
+ lower.startsWith(tmp) ||
55
+ segments.includes("tmp") ||
56
+ segments.includes("test") ||
57
+ lower.includes("-tmp-") ||
58
+ (process.platform === "win32" && segments.includes("temp")));
59
+ }
60
+ /** Resets the in-process data-dir cache. Call in test teardown after changing KONTEXTA_DATA_DIR. */
61
+ export function resetDataDirCache() {
62
+ _resolvedDataDir = null;
63
+ }
64
+ export function getDataDir() {
65
+ if (_resolvedDataDir)
66
+ return _resolvedDataDir;
67
+ const home = opaque(os.homedir());
68
+ const cacheFile = path.join(home, ".kontexta_datadir");
69
+ const envOverride = process.env.KONTEXTA_DATA_DIR;
70
+ const isWeb = isWebContext();
71
+ // 1. Web UI Override takes absolute priority and updates the cache —
72
+ // but never persist temp/test paths so test runs don't poison the cache.
73
+ if (isWeb && envOverride) {
74
+ _resolvedDataDir = path.resolve(envOverride);
75
+ if (!isTempOrTestPath(_resolvedDataDir)) {
76
+ try {
77
+ fs.writeFileSync(cacheFile, _resolvedDataDir, "utf8");
78
+ }
79
+ catch { }
80
+ }
81
+ return _resolvedDataDir;
82
+ }
83
+ // 2. Explicit local override (KONTEXTA_DATA_DIR set on this process).
84
+ // Wins over cache for non-web contexts. Don't persist temp/test paths.
85
+ if (envOverride) {
86
+ _resolvedDataDir = path.resolve(envOverride);
87
+ const isTestEnv = !!process.env.VITEST || process.env.NODE_ENV === "test";
88
+ if (!isTempOrTestPath(_resolvedDataDir) && !isTestEnv) {
89
+ try {
90
+ fs.writeFileSync(cacheFile, _resolvedDataDir, "utf8");
91
+ }
92
+ catch { }
93
+ }
94
+ return _resolvedDataDir;
95
+ }
96
+ // 3. Check for a persisted "Source of Truth" from a previous run (usually Web UI).
97
+ // Only consulted when no local override exists. Skip stale temp-dir entries.
98
+ const isTestEnv = !!process.env.VITEST || process.env.NODE_ENV === "test";
99
+ if (!isTestEnv && fs.existsSync(cacheFile)) {
100
+ try {
101
+ const cached = fs.readFileSync(cacheFile, "utf8").trim();
102
+ if (cached && path.isAbsolute(cached) && !isTempOrTestPath(cached)) {
103
+ _resolvedDataDir = cached;
104
+ return _resolvedDataDir;
105
+ }
106
+ // Cached path is a temp/test path — remove the stale entry.
107
+ try {
108
+ fs.unlinkSync(cacheFile);
109
+ }
110
+ catch { }
111
+ }
112
+ catch { }
113
+ }
114
+ // 4. Default fallthrough to OS-standard directory.
115
+ _resolvedDataDir = defaultDataDir();
116
+ return _resolvedDataDir;
117
+ }
118
+ /**
119
+ * Returns the active SQLite database path.
120
+ * Respects the KONTEXTA_DB_PATH environment variable override,
121
+ * falling back to the data directory + 'kontexta.db'.
122
+ */
123
+ export function getDbPath() {
124
+ return process.env.KONTEXTA_DB_PATH || path.join(getDataDir(), "kontexta.db");
125
+ }
126
+ /** Human-readable tilde-abbreviated version of the OS default data dir. */
127
+ export function defaultDataDirDisplay() {
128
+ const full = defaultDataDir();
129
+ const home = opaque(os.homedir());
130
+ return full.startsWith(home) ? `~${full.slice(home.length)}` : full;
131
+ }
132
+ /**
133
+ * Sensitive home-relative directories that user-supplied paths must never
134
+ * resolve into. Lives here (not in webpack-bundled app code) so os.homedir()
135
+ * never appears in a minified server chunk — see the `opaque` note above.
136
+ */
137
+ export function homeSensitivePrefixes() {
138
+ const home = opaque(os.homedir());
139
+ return [".ssh", ".aws", ".gnupg", ".kube", ".config/gcloud", ".docker"].map((p) => `${home}/${p}`);
140
+ }
141
+ function safeMkdir(dir) {
142
+ try {
143
+ fs.mkdirSync(dir, { recursive: true });
144
+ }
145
+ catch (e) {
146
+ if (e?.code === "EACCES" || e?.code === "EPERM" || e?.code === "EROFS") {
147
+ throw new Error(`Kontexta cannot write to data directory: ${dir} (${e.code}). ` +
148
+ `Set KONTEXTA_DATA_DIR to a writable path, or fix permissions on ${dir}.`);
149
+ }
150
+ throw e;
151
+ }
152
+ }
153
+ /**
154
+ * Ensures the data directory and essential subdirectories exist and are writable.
155
+ */
156
+ export function ensureDataDir() {
157
+ const dataDir = getDataDir();
158
+ if (!fs.existsSync(dataDir)) {
159
+ safeMkdir(dataDir);
160
+ }
161
+ try {
162
+ fs.accessSync(dataDir, fs.constants.W_OK);
163
+ }
164
+ catch {
165
+ throw new Error(`Kontexta data directory ${dataDir} is not writable. ` +
166
+ `Set KONTEXTA_DATA_DIR to a writable path, or fix permissions.`);
167
+ }
168
+ const dirsToCreate = [
169
+ path.join(dataDir, "knowledge"),
170
+ path.join(dataDir, "backups"),
171
+ path.join(dataDir, "projects")
172
+ ];
173
+ for (const dir of dirsToCreate) {
174
+ if (!fs.existsSync(dir)) {
175
+ safeMkdir(dir);
176
+ }
177
+ }
178
+ }
179
+ //# sourceMappingURL=paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/util/paths.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Throws if `name` resolves outside `base`. Rejects absolute paths, ".."
3
+ * traversal, and null bytes. Returns the resolved absolute path on success.
4
+ */
5
+ export declare function assertPathInside(base: string, name: string): string;
6
+ /** Escape SQL LIKE metacharacters (%, _, \). Use with `ESCAPE '\'`. */
7
+ export declare function escapeLike(input: string): string;
8
+ /**
9
+ * Lock key for serialising writes to a single KB file path against the
10
+ * watcher's add/change/unlink handlers. resolve() normalises so callers
11
+ * that pass relative-or-absolute, with-or-without trailing slash, all
12
+ * agree on the same key.
13
+ */
14
+ export declare function fileLockKey(filePath: string): string;
15
+ /**
16
+ * Wrap a promise with in-flight bookkeeping. Use for any long-running op
17
+ * that doesn't already go through `withLock`.
18
+ */
19
+ export declare function track<T>(p: Promise<T>): Promise<T>;
20
+ /** Current count of in-flight tracked operations. */
21
+ export declare function inFlightCount(): number;
22
+ /** Whether `gracefulShutdown` has been initiated. */
23
+ export declare function isShuttingDown(): boolean;
24
+ /**
25
+ * Mark the process as shutting down. New calls to `withLock` and `track`
26
+ * still execute (they're already in flight when the signal arrives), but
27
+ * external callers can check `isShuttingDown()` to refuse new work.
28
+ */
29
+ export declare function setShuttingDown(value: boolean): void;
30
+ /**
31
+ * Resolve once `_inFlight === 0` or `timeoutMs` elapses. Returns the count
32
+ * of still-in-flight operations at resolve time (0 = clean drain;
33
+ * positive = timeout reached with work still pending).
34
+ */
35
+ export declare function awaitDrain(timeoutMs: number): Promise<number>;
36
+ export declare function withLock<T>(key: string, fn: () => Promise<T>): Promise<T>;
37
+ //# sourceMappingURL=safety.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safety.d.ts","sourceRoot":"","sources":["../../src/util/safety.ts"],"names":[],"mappings":"AAOA;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAgBnE;AAED,uEAAuE;AACvE,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEpD;AAgBD;;;GAGG;AACH,wBAAsB,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAWxD;AAED,qDAAqD;AACrD,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,qDAAqD;AACrD,wBAAgB,cAAc,IAAI,OAAO,CAExC;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAEpD;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAuB7D;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAqCzE"}
@@ -0,0 +1,156 @@
1
+ /**
2
+ * Shared safety helpers: path containment validation, SQL LIKE escaping,
3
+ * per-key async mutex.
4
+ */
5
+ import { resolve, sep, isAbsolute } from "node:path";
6
+ import { AsyncLocalStorage } from "node:async_hooks";
7
+ /**
8
+ * Throws if `name` resolves outside `base`. Rejects absolute paths, ".."
9
+ * traversal, and null bytes. Returns the resolved absolute path on success.
10
+ */
11
+ export function assertPathInside(base, name) {
12
+ if (typeof name !== "string" || name.length === 0) {
13
+ throw new Error("Invalid path: empty");
14
+ }
15
+ if (name.includes("\0")) {
16
+ throw new Error("Invalid path: null byte");
17
+ }
18
+ if (isAbsolute(name)) {
19
+ throw new Error("Invalid path: absolute paths are not allowed");
20
+ }
21
+ const baseResolved = resolve(base);
22
+ const target = resolve(baseResolved, name);
23
+ if (target !== baseResolved && !target.startsWith(baseResolved + sep)) {
24
+ throw new Error("Invalid path: escapes base directory");
25
+ }
26
+ return target;
27
+ }
28
+ /** Escape SQL LIKE metacharacters (%, _, \). Use with `ESCAPE '\'`. */
29
+ export function escapeLike(input) {
30
+ return input.replace(/[\\%_]/g, (ch) => "\\" + ch);
31
+ }
32
+ /**
33
+ * Lock key for serialising writes to a single KB file path against the
34
+ * watcher's add/change/unlink handlers. resolve() normalises so callers
35
+ * that pass relative-or-absolute, with-or-without trailing slash, all
36
+ * agree on the same key.
37
+ */
38
+ export function fileLockKey(filePath) {
39
+ return `file:${resolve(filePath)}`;
40
+ }
41
+ /**
42
+ * Per-key serial async mutex. All callers with the same key run one at a time.
43
+ */
44
+ const _locks = new Map();
45
+ const _heldKeys = new AsyncLocalStorage();
46
+ /* ────────────────────────────────────────────────────────────────────────── */
47
+ /* In-flight tracking + graceful shutdown. */
48
+ /* ────────────────────────────────────────────────────────────────────────── */
49
+ let _inFlight = 0;
50
+ let _shuttingDown = false;
51
+ const _drainWaiters = [];
52
+ /**
53
+ * Wrap a promise with in-flight bookkeeping. Use for any long-running op
54
+ * that doesn't already go through `withLock`.
55
+ */
56
+ export async function track(p) {
57
+ _inFlight++;
58
+ try {
59
+ return await p;
60
+ }
61
+ finally {
62
+ _inFlight--;
63
+ if (_inFlight === 0 && _drainWaiters.length > 0) {
64
+ const waiters = _drainWaiters.splice(0);
65
+ for (const w of waiters)
66
+ w();
67
+ }
68
+ }
69
+ }
70
+ /** Current count of in-flight tracked operations. */
71
+ export function inFlightCount() {
72
+ return _inFlight;
73
+ }
74
+ /** Whether `gracefulShutdown` has been initiated. */
75
+ export function isShuttingDown() {
76
+ return _shuttingDown;
77
+ }
78
+ /**
79
+ * Mark the process as shutting down. New calls to `withLock` and `track`
80
+ * still execute (they're already in flight when the signal arrives), but
81
+ * external callers can check `isShuttingDown()` to refuse new work.
82
+ */
83
+ export function setShuttingDown(value) {
84
+ _shuttingDown = value;
85
+ }
86
+ /**
87
+ * Resolve once `_inFlight === 0` or `timeoutMs` elapses. Returns the count
88
+ * of still-in-flight operations at resolve time (0 = clean drain;
89
+ * positive = timeout reached with work still pending).
90
+ */
91
+ export function awaitDrain(timeoutMs) {
92
+ return new Promise((resolve) => {
93
+ if (_inFlight === 0) {
94
+ resolve(0);
95
+ return;
96
+ }
97
+ let settled = false;
98
+ const onDrain = () => {
99
+ if (settled)
100
+ return;
101
+ settled = true;
102
+ clearTimeout(timer);
103
+ resolve(0);
104
+ };
105
+ const timer = setTimeout(() => {
106
+ if (settled)
107
+ return;
108
+ settled = true;
109
+ const idx = _drainWaiters.indexOf(onDrain);
110
+ if (idx >= 0)
111
+ _drainWaiters.splice(idx, 1);
112
+ resolve(_inFlight);
113
+ }, timeoutMs);
114
+ timer.unref?.();
115
+ _drainWaiters.push(onDrain);
116
+ });
117
+ }
118
+ export function withLock(key, fn) {
119
+ // Re-entering the same key would queue behind its own tail → deadlock.
120
+ const held = _heldKeys.getStore();
121
+ if (held?.has(key)) {
122
+ return Promise.reject(new Error(`withLock: re-entrant acquisition of "${key}" would deadlock`));
123
+ }
124
+ const prev = _locks.get(key) ?? Promise.resolve();
125
+ const childHeld = new Set(held ?? []);
126
+ childHeld.add(key);
127
+ const wrapped = () => _heldKeys.run(childHeld, fn);
128
+ // (wrapped, wrapped): proceed regardless of prev's outcome — ordering, not propagation.
129
+ const next = prev.then(wrapped, wrapped);
130
+ // tail swallows rejection only on the chain stored in _locks; callers still see `next`.
131
+ const tail = next.catch(() => { });
132
+ _locks.set(key, tail);
133
+ tail.finally(() => {
134
+ if (_locks.get(key) === tail)
135
+ _locks.delete(key);
136
+ });
137
+ // In-flight bookkeeping: count this as a tracked op.
138
+ _inFlight++;
139
+ next.then(() => {
140
+ _inFlight--;
141
+ if (_inFlight === 0 && _drainWaiters.length > 0) {
142
+ const waiters = _drainWaiters.splice(0);
143
+ for (const w of waiters)
144
+ w();
145
+ }
146
+ }, () => {
147
+ _inFlight--;
148
+ if (_inFlight === 0 && _drainWaiters.length > 0) {
149
+ const waiters = _drainWaiters.splice(0);
150
+ for (const w of waiters)
151
+ w();
152
+ }
153
+ });
154
+ return next;
155
+ }
156
+ //# sourceMappingURL=safety.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safety.js","sourceRoot":"","sources":["../../src/util/safety.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare function estimateTokensFromBuffer(buf: Buffer): number;
2
+ export declare function estimateTokensFromString(s: string): number;
3
+ //# sourceMappingURL=tokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../src/util/tokens.ts"],"names":[],"mappings":"AAIA,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAI5D;AAED,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE1D"}
@@ -0,0 +1,13 @@
1
+ // packages/core/src/util/tokens.ts
2
+ // Heuristic token count: ~4 bytes/token for ASCII-ish text, ~3 for multi-byte.
3
+ // Same approach used by the MCP server before this was hoisted into core.
4
+ export function estimateTokensFromBuffer(buf) {
5
+ if (buf.length === 0)
6
+ return 1;
7
+ const mostlyAscii = buf.toString("utf-8").length > buf.length * 0.7;
8
+ return Math.max(1, Math.ceil(buf.length / (mostlyAscii ? 4 : 3)));
9
+ }
10
+ export function estimateTokensFromString(s) {
11
+ return estimateTokensFromBuffer(Buffer.from(s, "utf-8"));
12
+ }
13
+ //# sourceMappingURL=tokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../src/util/tokens.ts"],"names":[],"mappings":"AAAA,mCAAmC;AACnC,+EAA+E;AAC/E,0EAA0E;AAE1E,MAAM,UAAU,wBAAwB,CAAC,GAAW;IAClD,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAC/B,MAAM,WAAW,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC;IACpE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,CAAS;IAChD,OAAO,wBAAwB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AAC3D,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { type FSWatcher } from "chokidar";
2
+ export interface WatcherEvent {
3
+ type: "change" | "add" | "unlink";
4
+ path: string;
5
+ }
6
+ /** Close every watcher created by createFileWatcher in this process. */
7
+ export declare function closeAllFileWatchers(): Promise<void>;
8
+ export declare function createFileWatcher(watchPaths: string[], onEvent: (event: WatcherEvent) => void): FSWatcher;
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/watcher/index.ts"],"names":[],"mappings":"AAAA,OAAiB,EAAE,KAAK,SAAS,EAAE,MAAM,UAAU,CAAC;AAQpD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,QAAQ,GAAG,KAAK,GAAG,QAAQ,CAAC;IAClC,IAAI,EAAE,MAAM,CAAC;CACd;AAgCD,wEAAwE;AACxE,wBAAgB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAOpD;AAED,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,EAAE,EACpB,OAAO,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,GACrC,SAAS,CAuEX"}
@@ -0,0 +1,214 @@
1
+ import chokidar from "chokidar";
2
+ import { getDatabase } from "../db/index.js";
3
+ import { isIndexedFile, stripIndexedExt } from "../util/extensions.js";
4
+ import { withLock, fileLockKey } from "../util/safety.js";
5
+ import crypto from "node:crypto";
6
+ import fs from "node:fs";
7
+ import path from "node:path";
8
+ /** True when filePath is exactly under baseDir (not a sibling like /foo vs /foo2). */
9
+ function isUnder(filePath, baseDir) {
10
+ const rel = path.relative(baseDir, filePath);
11
+ return !!rel && !rel.startsWith("..") && !path.isAbsolute(rel);
12
+ }
13
+ /**
14
+ * Active watchers — registered so a global shutdown can close them all
15
+ * without each caller wiring its own SIGINT handler. Without this, pending
16
+ * chokidar events fired after the DB was torn down, surfacing as
17
+ * "Database not initialized" noise (filtered above) but still leaking FDs
18
+ * and polling intervals.
19
+ */
20
+ const _activeWatchers = new Set();
21
+ let _shutdownHooksRegistered = false;
22
+ function registerShutdownHooks() {
23
+ if (_shutdownHooksRegistered)
24
+ return;
25
+ _shutdownHooksRegistered = true;
26
+ const closeAll = () => {
27
+ for (const w of _activeWatchers) {
28
+ try {
29
+ void w.close();
30
+ }
31
+ catch { }
32
+ }
33
+ _activeWatchers.clear();
34
+ };
35
+ process.once("beforeExit", closeAll);
36
+ // Don't add SIGINT/SIGTERM here — db/index.ts already owns those and will
37
+ // call closeAllWatchers() via the shutdown chain below if wired in.
38
+ }
39
+ /** Close every watcher created by createFileWatcher in this process. */
40
+ export function closeAllFileWatchers() {
41
+ const promises = [];
42
+ for (const w of _activeWatchers) {
43
+ try {
44
+ promises.push(Promise.resolve(w.close()));
45
+ }
46
+ catch { }
47
+ }
48
+ _activeWatchers.clear();
49
+ return Promise.all(promises).then(() => undefined);
50
+ }
51
+ export function createFileWatcher(watchPaths, onEvent) {
52
+ registerShutdownHooks();
53
+ // Auto-ingest scope: files under <dataDir>/knowledge/ or a registered
54
+ // project. Anything else is ignored (stray files would otherwise be
55
+ // adopted as KB and could then be unlinked from disk on UI delete).
56
+ const knowledgeDirs = watchPaths.map((wp) => path.join(wp, "knowledge"));
57
+ const watcher = chokidar.watch(watchPaths, {
58
+ // Skip the same set discoverFiles skips, plus build-output / cache /
59
+ // virtualenv directories that commonly contain throw-away .md/.mmd files,
60
+ // plus the backup tree owned by syncBackup. The previous regex
61
+ // excluded ANY dot-prefixed segment, which silently dropped all
62
+ // changes under .claude/, .github/, .cursor/ — exactly where
63
+ // AI-context lives. Also ignore the tmp files produced by
64
+ // restoreVersion (`<file>.kontexta-restore-<pid>-<ts>`) so the
65
+ // atomic-rename dance doesn't generate spurious add/unlink events.
66
+ ignored: (p) => /[\/\\](node_modules|\.git|\.next|\.nuxt|\.cache|\.venv|\.tox|\.gradle|\.idea|dist|build|out|target)([\/\\]|$)/.test(p) ||
67
+ /[\/\\]backups[\/\\]/.test(p) ||
68
+ /\.kontexta-restore-\d+-\d+$/.test(p),
69
+ persistent: true,
70
+ ignoreInitial: true,
71
+ awaitWriteFinish: { stabilityThreshold: 300, pollInterval: 100 },
72
+ });
73
+ // Per-path lock around every handler so a watcher event fired during a
74
+ // createFile/updateFile (which hold the same key) queues until the
75
+ // in-flight write commits. The handlers themselves no-op when the
76
+ // already-stored hash matches, so the queued run after our own write
77
+ // is a cheap re-check rather than a duplicate UPSERT.
78
+ const runLocked = (filePath, fn) => {
79
+ void withLock(fileLockKey(filePath), async () => fn()).catch((e) => {
80
+ console.error(`[watcher] locked handler failed for ${filePath}:`, e);
81
+ });
82
+ };
83
+ watcher.on("change", (filePath) => {
84
+ if (!isIndexedFile(filePath))
85
+ return;
86
+ runLocked(filePath, () => {
87
+ // If the row was deleted (e.g. via Time-Travel restore of a previously
88
+ // unlinked file) and the file is back on disk, treat the change as an
89
+ // add so FTS gets repopulated instead of silently no-op'ing.
90
+ updateFileHash(filePath, knowledgeDirs);
91
+ onEvent({ type: "change", path: filePath });
92
+ });
93
+ });
94
+ watcher.on("add", (filePath) => {
95
+ if (!isIndexedFile(filePath))
96
+ return;
97
+ runLocked(filePath, () => {
98
+ handleWatcherAdd(filePath, knowledgeDirs);
99
+ onEvent({ type: "add", path: filePath });
100
+ });
101
+ });
102
+ watcher.on("unlink", (filePath) => {
103
+ if (!isIndexedFile(filePath))
104
+ return;
105
+ runLocked(filePath, () => {
106
+ handleWatcherUnlink(filePath);
107
+ onEvent({ type: "unlink", path: filePath });
108
+ });
109
+ });
110
+ _activeWatchers.add(watcher);
111
+ // Auto-deregister on close so the set doesn't leak references.
112
+ const origClose = watcher.close.bind(watcher);
113
+ watcher.close = (() => {
114
+ _activeWatchers.delete(watcher);
115
+ return origClose();
116
+ });
117
+ return watcher;
118
+ }
119
+ function handleWatcherAdd(filePath, knowledgeDirs) {
120
+ try {
121
+ const db = getDatabase();
122
+ // Check if already in DB
123
+ const existing = db.prepare("SELECT id FROM files WHERE path = ?").get(filePath);
124
+ if (existing)
125
+ return;
126
+ let projectId = null;
127
+ const projects = db.prepare("SELECT id, path FROM projects WHERE path IS NOT NULL").all();
128
+ for (const p of projects) {
129
+ if (isUnder(filePath, p.path)) {
130
+ projectId = p.id;
131
+ break;
132
+ }
133
+ }
134
+ const isKnowledge = knowledgeDirs.some((kd) => isUnder(filePath, kd));
135
+ if (projectId === null && !isKnowledge)
136
+ return;
137
+ const storageType = projectId !== null ? "reference" : "local";
138
+ const content = fs.readFileSync(filePath, "utf-8");
139
+ const hash = crypto.createHash("sha256").update(content).digest("hex");
140
+ const basename = filePath.split(/[/\\]/).pop() || "";
141
+ const title = stripIndexedExt(basename) || "Untitled";
142
+ // OR IGNORE + skip-FTS-on-no-change covers the discoverFiles race.
143
+ const insertStmt = db.prepare("INSERT OR IGNORE INTO files (path, title, project_id, storage_type, content_hash) VALUES (?, ?, ?, ?, ?)");
144
+ const ftsDel = db.prepare("DELETE FROM fts_index WHERE rowid = ?");
145
+ const ftsStmt = db.prepare("INSERT INTO fts_index (rowid, title, content) VALUES (?, ?, ?)");
146
+ db.transaction(() => {
147
+ const result = insertStmt.run(filePath, title, projectId, storageType, hash);
148
+ if (result.changes > 0) {
149
+ // Defensive pre-delete: a stale fts_index row at this rowid (from
150
+ // a crash mid-transaction) would otherwise UNIQUE-fail the insert.
151
+ ftsDel.run(result.lastInsertRowid);
152
+ ftsStmt.run(result.lastInsertRowid, title, content);
153
+ }
154
+ })();
155
+ }
156
+ catch (e) {
157
+ if (e?.message !== "Database not initialized. Call createDatabase() first.") {
158
+ console.error(`[watcher] handleWatcherAdd failed for ${filePath}:`, e);
159
+ }
160
+ }
161
+ }
162
+ function handleWatcherUnlink(filePath) {
163
+ try {
164
+ const db = getDatabase();
165
+ const file = db.prepare("SELECT id FROM files WHERE path = ?").get(filePath);
166
+ if (file) {
167
+ const deleteFtsStmt = db.prepare("DELETE FROM fts_index WHERE rowid = ?");
168
+ const deleteFileStmt = db.prepare("DELETE FROM files WHERE id = ?");
169
+ db.transaction(() => {
170
+ deleteFtsStmt.run(file.id);
171
+ deleteFileStmt.run(file.id);
172
+ })();
173
+ }
174
+ }
175
+ catch (e) {
176
+ if (e?.message !== "Database not initialized. Call createDatabase() first.") {
177
+ console.error(`[watcher] handleWatcherUnlink failed for ${filePath}:`, e);
178
+ }
179
+ }
180
+ }
181
+ function updateFileHash(filePath, knowledgeDirs = []) {
182
+ try {
183
+ const db = getDatabase();
184
+ const content = fs.readFileSync(filePath, "utf-8");
185
+ const hash = crypto.createHash("sha256").update(content).digest("hex");
186
+ const file = db.prepare("SELECT id, title, content_hash FROM files WHERE path = ?").get(filePath);
187
+ if (file) {
188
+ // Short-circuit when the row already reflects this content. Common
189
+ // case: the watcher event was triggered by a createFile/updateFile
190
+ // we just ran — the row is already up to date and rewriting FTS
191
+ // is wasted work plus an extra write-lock acquisition.
192
+ if (file.content_hash === hash)
193
+ return;
194
+ const updateStmt = db.prepare("UPDATE files SET content_hash = ?, updated_at = CURRENT_TIMESTAMP WHERE id = ?");
195
+ const deleteFtsStmt = db.prepare("DELETE FROM fts_index WHERE rowid = ?");
196
+ const insertFtsStmt = db.prepare("INSERT INTO fts_index (rowid, title, content) VALUES (?, ?, ?)");
197
+ db.transaction(() => {
198
+ updateStmt.run(hash, file.id);
199
+ deleteFtsStmt.run(file.id);
200
+ insertFtsStmt.run(file.id, file.title, content);
201
+ })();
202
+ }
203
+ else {
204
+ // Row missing — fall back to the add path so a restored file shows up.
205
+ handleWatcherAdd(filePath, knowledgeDirs);
206
+ }
207
+ }
208
+ catch (e) {
209
+ if (e?.message !== "Database not initialized. Call createDatabase() first.") {
210
+ console.error(`[watcher] updateFileHash failed for ${filePath}:`, e);
211
+ }
212
+ }
213
+ }
214
+ //# sourceMappingURL=index.js.map