kontexta 4.4.1 → 4.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (313) hide show
  1. package/README.md +2 -2
  2. package/bundle/standalone/CHANGELOG.md +31 -0
  3. package/bundle/standalone/apps/web/.next/BUILD_ID +1 -1
  4. package/bundle/standalone/apps/web/.next/app-build-manifest.json +142 -128
  5. package/bundle/standalone/apps/web/.next/app-path-routes-manifest.json +9 -7
  6. package/bundle/standalone/apps/web/.next/build-manifest.json +5 -5
  7. package/bundle/standalone/apps/web/.next/prerender-manifest.json +18 -18
  8. package/bundle/standalone/apps/web/.next/react-loadable-manifest.json +5 -5
  9. package/bundle/standalone/apps/web/.next/required-server-files.json +4 -2
  10. package/bundle/standalone/apps/web/.next/routes-manifest.json +16 -0
  11. package/bundle/standalone/apps/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  12. package/bundle/standalone/apps/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  13. package/bundle/standalone/apps/web/.next/server/app/_not-found.html +1 -1
  14. package/bundle/standalone/apps/web/.next/server/app/_not-found.rsc +2 -2
  15. package/bundle/standalone/apps/web/.next/server/app/api/about/route.js.nft.json +1 -1
  16. package/bundle/standalone/apps/web/.next/server/app/api/about/route_client-reference-manifest.js +1 -1
  17. package/bundle/standalone/apps/web/.next/server/app/api/auth/login/route.js.nft.json +1 -1
  18. package/bundle/standalone/apps/web/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  19. package/bundle/standalone/apps/web/.next/server/app/api/auth/logout/route.js.nft.json +1 -1
  20. package/bundle/standalone/apps/web/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  21. package/bundle/standalone/apps/web/.next/server/app/api/auth/setup/route.js.nft.json +1 -1
  22. package/bundle/standalone/apps/web/.next/server/app/api/auth/setup/route_client-reference-manifest.js +1 -1
  23. package/bundle/standalone/apps/web/.next/server/app/api/auth/status/route.js.nft.json +1 -1
  24. package/bundle/standalone/apps/web/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
  25. package/bundle/standalone/apps/web/.next/server/app/api/auth/token/route.js.nft.json +1 -1
  26. package/bundle/standalone/apps/web/.next/server/app/api/auth/token/route_client-reference-manifest.js +1 -1
  27. package/bundle/standalone/apps/web/.next/server/app/api/calendar/conflicts/route.js.nft.json +1 -1
  28. package/bundle/standalone/apps/web/.next/server/app/api/calendar/conflicts/route_client-reference-manifest.js +1 -1
  29. package/bundle/standalone/apps/web/.next/server/app/api/calendar/entities/[id]/route.js.nft.json +1 -1
  30. package/bundle/standalone/apps/web/.next/server/app/api/calendar/entities/[id]/route_client-reference-manifest.js +1 -1
  31. package/bundle/standalone/apps/web/.next/server/app/api/calendar/entities/route.js.nft.json +1 -1
  32. package/bundle/standalone/apps/web/.next/server/app/api/calendar/entities/route_client-reference-manifest.js +1 -1
  33. package/bundle/standalone/apps/web/.next/server/app/api/calendar/events/[id]/route.js.nft.json +1 -1
  34. package/bundle/standalone/apps/web/.next/server/app/api/calendar/events/[id]/route_client-reference-manifest.js +1 -1
  35. package/bundle/standalone/apps/web/.next/server/app/api/calendar/events/route.js.nft.json +1 -1
  36. package/bundle/standalone/apps/web/.next/server/app/api/calendar/events/route_client-reference-manifest.js +1 -1
  37. package/bundle/standalone/apps/web/.next/server/app/api/calendar/ics/route.js.nft.json +1 -1
  38. package/bundle/standalone/apps/web/.next/server/app/api/calendar/ics/route_client-reference-manifest.js +1 -1
  39. package/bundle/standalone/apps/web/.next/server/app/api/calendar/links/route.js.nft.json +1 -1
  40. package/bundle/standalone/apps/web/.next/server/app/api/calendar/links/route_client-reference-manifest.js +1 -1
  41. package/bundle/standalone/apps/web/.next/server/app/api/calendar/settings/route.js.nft.json +1 -1
  42. package/bundle/standalone/apps/web/.next/server/app/api/calendar/settings/route_client-reference-manifest.js +1 -1
  43. package/bundle/standalone/apps/web/.next/server/app/api/clip/route.js.nft.json +1 -1
  44. package/bundle/standalone/apps/web/.next/server/app/api/clip/route_client-reference-manifest.js +1 -1
  45. package/bundle/standalone/apps/web/.next/server/app/api/docker-config/route.js +1 -1
  46. package/bundle/standalone/apps/web/.next/server/app/api/docker-config/route.js.nft.json +1 -1
  47. package/bundle/standalone/apps/web/.next/server/app/api/docker-config/route_client-reference-manifest.js +1 -1
  48. package/bundle/standalone/apps/web/.next/server/app/api/export/zip/route.js.nft.json +1 -1
  49. package/bundle/standalone/apps/web/.next/server/app/api/export/zip/route_client-reference-manifest.js +1 -1
  50. package/bundle/standalone/apps/web/.next/server/app/api/files/[id]/download/route.js.nft.json +1 -1
  51. package/bundle/standalone/apps/web/.next/server/app/api/files/[id]/download/route_client-reference-manifest.js +1 -1
  52. package/bundle/standalone/apps/web/.next/server/app/api/files/[id]/export-html/route.js +1 -0
  53. package/bundle/standalone/apps/web/.next/server/app/api/files/[id]/export-html/route.js.nft.json +1 -0
  54. package/bundle/standalone/apps/web/.next/server/app/api/files/[id]/export-html/route_client-reference-manifest.js +1 -0
  55. package/bundle/standalone/apps/web/.next/server/app/api/files/[id]/export-pdf/route.js.nft.json +1 -1
  56. package/bundle/standalone/apps/web/.next/server/app/api/files/[id]/export-pdf/route_client-reference-manifest.js +1 -1
  57. package/bundle/standalone/apps/web/.next/server/app/api/files/[id]/history/restore/route.js.nft.json +1 -1
  58. package/bundle/standalone/apps/web/.next/server/app/api/files/[id]/history/restore/route_client-reference-manifest.js +1 -1
  59. package/bundle/standalone/apps/web/.next/server/app/api/files/[id]/history/route.js.nft.json +1 -1
  60. package/bundle/standalone/apps/web/.next/server/app/api/files/[id]/history/route_client-reference-manifest.js +1 -1
  61. package/bundle/standalone/apps/web/.next/server/app/api/files/[id]/move/route.js.nft.json +1 -1
  62. package/bundle/standalone/apps/web/.next/server/app/api/files/[id]/move/route_client-reference-manifest.js +1 -1
  63. package/bundle/standalone/apps/web/.next/server/app/api/files/[id]/route.js.nft.json +1 -1
  64. package/bundle/standalone/apps/web/.next/server/app/api/files/[id]/route_client-reference-manifest.js +1 -1
  65. package/bundle/standalone/apps/web/.next/server/app/api/files/route.js.nft.json +1 -1
  66. package/bundle/standalone/apps/web/.next/server/app/api/files/route_client-reference-manifest.js +1 -1
  67. package/bundle/standalone/apps/web/.next/server/app/api/files/upload/route.js +1 -1
  68. package/bundle/standalone/apps/web/.next/server/app/api/files/upload/route.js.nft.json +1 -1
  69. package/bundle/standalone/apps/web/.next/server/app/api/files/upload/route_client-reference-manifest.js +1 -1
  70. package/bundle/standalone/apps/web/.next/server/app/api/folders/route.js +1 -1
  71. package/bundle/standalone/apps/web/.next/server/app/api/folders/route.js.nft.json +1 -1
  72. package/bundle/standalone/apps/web/.next/server/app/api/folders/route_client-reference-manifest.js +1 -1
  73. package/bundle/standalone/apps/web/.next/server/app/api/git/remote/route.js.nft.json +1 -1
  74. package/bundle/standalone/apps/web/.next/server/app/api/git/remote/route_client-reference-manifest.js +1 -1
  75. package/bundle/standalone/apps/web/.next/server/app/api/git/sync-all/route.js.nft.json +1 -1
  76. package/bundle/standalone/apps/web/.next/server/app/api/git/sync-all/route_client-reference-manifest.js +1 -1
  77. package/bundle/standalone/apps/web/.next/server/app/api/hands/test-pattern/route.js.nft.json +1 -1
  78. package/bundle/standalone/apps/web/.next/server/app/api/hands/test-pattern/route_client-reference-manifest.js +1 -1
  79. package/bundle/standalone/apps/web/.next/server/app/api/hands/validate/route.js.nft.json +1 -1
  80. package/bundle/standalone/apps/web/.next/server/app/api/hands/validate/route_client-reference-manifest.js +1 -1
  81. package/bundle/standalone/apps/web/.next/server/app/api/health/route.js.nft.json +1 -1
  82. package/bundle/standalone/apps/web/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
  83. package/bundle/standalone/apps/web/.next/server/app/api/install-snippets/route.js +12 -6
  84. package/bundle/standalone/apps/web/.next/server/app/api/install-snippets/route.js.nft.json +1 -1
  85. package/bundle/standalone/apps/web/.next/server/app/api/install-snippets/route_client-reference-manifest.js +1 -1
  86. package/bundle/standalone/apps/web/.next/server/app/api/mcp-tools/route.js +1 -1
  87. package/bundle/standalone/apps/web/.next/server/app/api/mcp-tools/route.js.nft.json +1 -1
  88. package/bundle/standalone/apps/web/.next/server/app/api/mcp-tools/route_client-reference-manifest.js +1 -1
  89. package/bundle/standalone/apps/web/.next/server/app/api/profile/route.js.nft.json +1 -1
  90. package/bundle/standalone/apps/web/.next/server/app/api/profile/route_client-reference-manifest.js +1 -1
  91. package/bundle/standalone/apps/web/.next/server/app/api/projects/[id]/hands-config/route.js.nft.json +1 -1
  92. package/bundle/standalone/apps/web/.next/server/app/api/projects/[id]/hands-config/route_client-reference-manifest.js +1 -1
  93. package/bundle/standalone/apps/web/.next/server/app/api/projects/[id]/journal-config/route.js.nft.json +1 -1
  94. package/bundle/standalone/apps/web/.next/server/app/api/projects/[id]/journal-config/route_client-reference-manifest.js +1 -1
  95. package/bundle/standalone/apps/web/.next/server/app/api/projects/[id]/journal-status/route.js.nft.json +1 -1
  96. package/bundle/standalone/apps/web/.next/server/app/api/projects/[id]/journal-status/route_client-reference-manifest.js +1 -1
  97. package/bundle/standalone/apps/web/.next/server/app/api/projects/[id]/onboard/route.js.nft.json +1 -1
  98. package/bundle/standalone/apps/web/.next/server/app/api/projects/[id]/onboard/route_client-reference-manifest.js +1 -1
  99. package/bundle/standalone/apps/web/.next/server/app/api/projects/[id]/refresh/route.js.nft.json +1 -1
  100. package/bundle/standalone/apps/web/.next/server/app/api/projects/[id]/refresh/route_client-reference-manifest.js +1 -1
  101. package/bundle/standalone/apps/web/.next/server/app/api/projects/[id]/route.js.nft.json +1 -1
  102. package/bundle/standalone/apps/web/.next/server/app/api/projects/[id]/route_client-reference-manifest.js +1 -1
  103. package/bundle/standalone/apps/web/.next/server/app/api/projects/[id]/sync/route.js.nft.json +1 -1
  104. package/bundle/standalone/apps/web/.next/server/app/api/projects/[id]/sync/route_client-reference-manifest.js +1 -1
  105. package/bundle/standalone/apps/web/.next/server/app/api/projects/onboard/route.js.nft.json +1 -1
  106. package/bundle/standalone/apps/web/.next/server/app/api/projects/onboard/route_client-reference-manifest.js +1 -1
  107. package/bundle/standalone/apps/web/.next/server/app/api/projects/route.js.nft.json +1 -1
  108. package/bundle/standalone/apps/web/.next/server/app/api/projects/route_client-reference-manifest.js +1 -1
  109. package/bundle/standalone/apps/web/.next/server/app/api/publish/html/route.js.nft.json +1 -1
  110. package/bundle/standalone/apps/web/.next/server/app/api/publish/html/route_client-reference-manifest.js +1 -1
  111. package/bundle/standalone/apps/web/.next/server/app/api/publish/route.js +1 -1
  112. package/bundle/standalone/apps/web/.next/server/app/api/publish/route.js.nft.json +1 -1
  113. package/bundle/standalone/apps/web/.next/server/app/api/publish/route_client-reference-manifest.js +1 -1
  114. package/bundle/standalone/apps/web/.next/server/app/api/refresh/route.js.nft.json +1 -1
  115. package/bundle/standalone/apps/web/.next/server/app/api/refresh/route_client-reference-manifest.js +1 -1
  116. package/bundle/standalone/apps/web/.next/server/app/api/reindex/route.js.nft.json +1 -1
  117. package/bundle/standalone/apps/web/.next/server/app/api/reindex/route_client-reference-manifest.js +1 -1
  118. package/bundle/standalone/apps/web/.next/server/app/api/reports/resources/[name]/route.js +1 -0
  119. package/bundle/standalone/apps/web/.next/server/app/api/reports/resources/[name]/route.js.nft.json +1 -0
  120. package/bundle/standalone/apps/web/.next/server/app/api/reports/resources/[name]/route_client-reference-manifest.js +1 -0
  121. package/bundle/standalone/apps/web/.next/server/app/api/search/route.js.nft.json +1 -1
  122. package/bundle/standalone/apps/web/.next/server/app/api/search/route_client-reference-manifest.js +1 -1
  123. package/bundle/standalone/apps/web/.next/server/app/api/tags/route.js.nft.json +1 -1
  124. package/bundle/standalone/apps/web/.next/server/app/api/tags/route_client-reference-manifest.js +1 -1
  125. package/bundle/standalone/apps/web/.next/server/app/api/version-check/route.js.nft.json +1 -1
  126. package/bundle/standalone/apps/web/.next/server/app/api/version-check/route_client-reference-manifest.js +1 -1
  127. package/bundle/standalone/apps/web/.next/server/app/api/ws-config/route.js.nft.json +1 -1
  128. package/bundle/standalone/apps/web/.next/server/app/api/ws-config/route_client-reference-manifest.js +1 -1
  129. package/bundle/standalone/apps/web/.next/server/app/apple-icon.png/route.js.nft.json +1 -1
  130. package/bundle/standalone/apps/web/.next/server/app/calendar/page.js.nft.json +1 -1
  131. package/bundle/standalone/apps/web/.next/server/app/calendar/page_client-reference-manifest.js +1 -1
  132. package/bundle/standalone/apps/web/.next/server/app/favicon.ico/route.js.nft.json +1 -1
  133. package/bundle/standalone/apps/web/.next/server/app/icon.png/route.js.nft.json +1 -1
  134. package/bundle/standalone/apps/web/.next/server/app/login/page.js.nft.json +1 -1
  135. package/bundle/standalone/apps/web/.next/server/app/login/page_client-reference-manifest.js +1 -1
  136. package/bundle/standalone/apps/web/.next/server/app/page.js +4 -4
  137. package/bundle/standalone/apps/web/.next/server/app/page.js.nft.json +1 -1
  138. package/bundle/standalone/apps/web/.next/server/app/page_client-reference-manifest.js +1 -1
  139. package/bundle/standalone/apps/web/.next/server/app/preview/motifs/page.js.nft.json +1 -1
  140. package/bundle/standalone/apps/web/.next/server/app/preview/motifs/page_client-reference-manifest.js +1 -1
  141. package/bundle/standalone/apps/web/.next/server/app/preview/motifs.html +2 -2
  142. package/bundle/standalone/apps/web/.next/server/app/preview/motifs.rsc +2 -2
  143. package/bundle/standalone/apps/web/.next/server/app-paths-manifest.json +9 -7
  144. package/bundle/standalone/apps/web/.next/server/chunks/4290.js +3 -3
  145. package/bundle/standalone/apps/web/.next/server/chunks/4824.js +1 -1
  146. package/bundle/standalone/apps/web/.next/server/chunks/5104.js +1 -1
  147. package/bundle/standalone/apps/web/.next/server/middleware-build-manifest.js +1 -1
  148. package/bundle/standalone/apps/web/.next/server/middleware-react-loadable-manifest.js +1 -1
  149. package/bundle/standalone/apps/web/.next/server/pages/404.html +1 -1
  150. package/bundle/standalone/apps/web/.next/server/pages/500.html +1 -1
  151. package/bundle/standalone/apps/web/.next/server/pages/_app.js.nft.json +1 -1
  152. package/bundle/standalone/apps/web/.next/server/pages/_document.js.nft.json +1 -1
  153. package/bundle/standalone/apps/web/.next/server/pages/_error.js.nft.json +1 -1
  154. package/bundle/standalone/apps/web/.next/server/pages-manifest.json +1 -1
  155. package/bundle/standalone/apps/web/.next/server/server-reference-manifest.json +1 -1
  156. package/bundle/standalone/apps/web/.next/static/{fYtMAWNniIoIPOX4FLoir → 3-XgdPUkib9c8DXcXAxa1}/_buildManifest.js +1 -1
  157. package/bundle/standalone/apps/web/.next/static/chunks/{5514.f969d5c86c590512.js → 5514.104d052cec14d85a.js} +7 -7
  158. package/bundle/standalone/apps/web/.next/static/chunks/{944.ba7dcdca1c72114a.js → 944.6a3d93405d7cb403.js} +1 -1
  159. package/bundle/standalone/apps/web/.next/static/chunks/{9852.e1937ca867a99475.js → 9852.dff25fd2ed9a2763.js} +1 -1
  160. package/bundle/standalone/apps/web/.next/static/chunks/{a118fb18.9c3b4291884abee0.js → a118fb18.88c57fd88bdf91aa.js} +1 -1
  161. package/bundle/standalone/apps/web/.next/static/chunks/app/api/about/{route-5081c2fd4cf53e20.js → route-c6ecffaac8622c61.js} +1 -1
  162. package/bundle/standalone/apps/web/.next/static/chunks/app/api/auth/login/{route-5081c2fd4cf53e20.js → route-c6ecffaac8622c61.js} +1 -1
  163. package/bundle/standalone/apps/web/.next/static/chunks/app/api/auth/logout/{route-5081c2fd4cf53e20.js → route-c6ecffaac8622c61.js} +1 -1
  164. package/bundle/standalone/apps/web/.next/static/chunks/app/api/auth/setup/{route-5081c2fd4cf53e20.js → route-c6ecffaac8622c61.js} +1 -1
  165. package/bundle/standalone/apps/web/.next/static/chunks/app/api/auth/status/route-c6ecffaac8622c61.js +1 -0
  166. package/bundle/standalone/apps/web/.next/static/chunks/app/api/auth/token/route-c6ecffaac8622c61.js +1 -0
  167. package/bundle/standalone/apps/web/.next/static/chunks/app/api/calendar/conflicts/route-c6ecffaac8622c61.js +1 -0
  168. package/bundle/standalone/apps/web/.next/static/chunks/app/api/calendar/entities/[id]/route-c6ecffaac8622c61.js +1 -0
  169. package/bundle/standalone/apps/web/.next/static/chunks/app/api/calendar/entities/route-c6ecffaac8622c61.js +1 -0
  170. package/bundle/standalone/apps/web/.next/static/chunks/app/api/calendar/events/[id]/route-c6ecffaac8622c61.js +1 -0
  171. package/bundle/standalone/apps/web/.next/static/chunks/app/api/calendar/events/route-c6ecffaac8622c61.js +1 -0
  172. package/bundle/standalone/apps/web/.next/static/chunks/app/api/calendar/ics/route-c6ecffaac8622c61.js +1 -0
  173. package/bundle/standalone/apps/web/.next/static/chunks/app/api/calendar/links/route-c6ecffaac8622c61.js +1 -0
  174. package/bundle/standalone/apps/web/.next/static/chunks/app/api/calendar/settings/route-c6ecffaac8622c61.js +1 -0
  175. package/bundle/standalone/apps/web/.next/static/chunks/app/api/clip/route-c6ecffaac8622c61.js +1 -0
  176. package/bundle/standalone/apps/web/.next/static/chunks/app/api/docker-config/route-c6ecffaac8622c61.js +1 -0
  177. package/bundle/standalone/apps/web/.next/static/chunks/app/api/export/zip/route-c6ecffaac8622c61.js +1 -0
  178. package/bundle/standalone/apps/web/.next/static/chunks/app/api/files/[id]/download/route-c6ecffaac8622c61.js +1 -0
  179. package/bundle/standalone/apps/web/.next/static/chunks/app/api/files/[id]/export-html/route-c6ecffaac8622c61.js +1 -0
  180. package/bundle/standalone/apps/web/.next/static/chunks/app/api/files/[id]/export-pdf/route-c6ecffaac8622c61.js +1 -0
  181. package/bundle/standalone/apps/web/.next/static/chunks/app/api/files/[id]/history/restore/route-c6ecffaac8622c61.js +1 -0
  182. package/bundle/standalone/apps/web/.next/static/chunks/app/api/files/[id]/history/route-c6ecffaac8622c61.js +1 -0
  183. package/bundle/standalone/apps/web/.next/static/chunks/app/api/files/[id]/move/route-c6ecffaac8622c61.js +1 -0
  184. package/bundle/standalone/apps/web/.next/static/chunks/app/api/files/[id]/route-c6ecffaac8622c61.js +1 -0
  185. package/bundle/standalone/apps/web/.next/static/chunks/app/api/files/route-c6ecffaac8622c61.js +1 -0
  186. package/bundle/standalone/apps/web/.next/static/chunks/app/api/files/upload/route-c6ecffaac8622c61.js +1 -0
  187. package/bundle/standalone/apps/web/.next/static/chunks/app/api/folders/route-c6ecffaac8622c61.js +1 -0
  188. package/bundle/standalone/apps/web/.next/static/chunks/app/api/git/remote/route-c6ecffaac8622c61.js +1 -0
  189. package/bundle/standalone/apps/web/.next/static/chunks/app/api/git/sync-all/route-c6ecffaac8622c61.js +1 -0
  190. package/bundle/standalone/apps/web/.next/static/chunks/app/api/hands/test-pattern/route-c6ecffaac8622c61.js +1 -0
  191. package/bundle/standalone/apps/web/.next/static/chunks/app/api/hands/validate/route-c6ecffaac8622c61.js +1 -0
  192. package/bundle/standalone/apps/web/.next/static/chunks/app/api/health/route-c6ecffaac8622c61.js +1 -0
  193. package/bundle/standalone/apps/web/.next/static/chunks/app/api/install-snippets/route-c6ecffaac8622c61.js +1 -0
  194. package/bundle/standalone/apps/web/.next/static/chunks/app/api/mcp-tools/route-c6ecffaac8622c61.js +1 -0
  195. package/bundle/standalone/apps/web/.next/static/chunks/app/api/profile/route-c6ecffaac8622c61.js +1 -0
  196. package/bundle/standalone/apps/web/.next/static/chunks/app/api/projects/[id]/hands-config/route-c6ecffaac8622c61.js +1 -0
  197. package/bundle/standalone/apps/web/.next/static/chunks/app/api/projects/[id]/journal-config/route-c6ecffaac8622c61.js +1 -0
  198. package/bundle/standalone/apps/web/.next/static/chunks/app/api/projects/[id]/journal-status/route-c6ecffaac8622c61.js +1 -0
  199. package/bundle/standalone/apps/web/.next/static/chunks/app/api/projects/[id]/onboard/route-c6ecffaac8622c61.js +1 -0
  200. package/bundle/standalone/apps/web/.next/static/chunks/app/api/projects/[id]/refresh/route-c6ecffaac8622c61.js +1 -0
  201. package/bundle/standalone/apps/web/.next/static/chunks/app/api/projects/[id]/route-c6ecffaac8622c61.js +1 -0
  202. package/bundle/standalone/apps/web/.next/static/chunks/app/api/projects/[id]/sync/route-c6ecffaac8622c61.js +1 -0
  203. package/bundle/standalone/apps/web/.next/static/chunks/app/api/projects/onboard/route-c6ecffaac8622c61.js +1 -0
  204. package/bundle/standalone/apps/web/.next/static/chunks/app/api/projects/route-c6ecffaac8622c61.js +1 -0
  205. package/bundle/standalone/apps/web/.next/static/chunks/app/api/publish/html/route-c6ecffaac8622c61.js +1 -0
  206. package/bundle/standalone/apps/web/.next/static/chunks/app/api/publish/route-c6ecffaac8622c61.js +1 -0
  207. package/bundle/standalone/apps/web/.next/static/chunks/app/api/refresh/route-c6ecffaac8622c61.js +1 -0
  208. package/bundle/standalone/apps/web/.next/static/chunks/app/api/reindex/route-c6ecffaac8622c61.js +1 -0
  209. package/bundle/standalone/apps/web/.next/static/chunks/app/api/reports/resources/[name]/route-c6ecffaac8622c61.js +1 -0
  210. package/bundle/standalone/apps/web/.next/static/chunks/app/api/search/route-c6ecffaac8622c61.js +1 -0
  211. package/bundle/standalone/apps/web/.next/static/chunks/app/api/tags/route-c6ecffaac8622c61.js +1 -0
  212. package/bundle/standalone/apps/web/.next/static/chunks/app/api/version-check/route-c6ecffaac8622c61.js +1 -0
  213. package/bundle/standalone/apps/web/.next/static/chunks/app/api/ws-config/route-c6ecffaac8622c61.js +1 -0
  214. package/bundle/standalone/apps/web/.next/static/chunks/app/page-c733552ab47df1c0.js +1 -0
  215. package/bundle/standalone/apps/web/.next/static/chunks/app/preview/motifs/page-c6ecffaac8622c61.js +1 -0
  216. package/bundle/standalone/apps/web/.next/static/chunks/webpack-b1697c3befeaf792.js +1 -0
  217. package/bundle/standalone/apps/web/.next/static/css/3088e309ea0d151a.css +3 -0
  218. package/bundle/standalone/apps/web/package.json +6 -6
  219. package/bundle/standalone/apps/web/server.js +1 -1
  220. package/bundle/standalone/apps/web/src/lib/mcp-tools.json +95 -4
  221. package/bundle/standalone/node_modules/kontexta-mcp/dist/agent-rules/rules-block.md +10 -1
  222. package/bundle/standalone/node_modules/kontexta-mcp/dist/index.js +41 -3
  223. package/bundle/standalone/node_modules/kontexta-mcp/dist/index.js.map +1 -1
  224. package/bundle/standalone/node_modules/kontexta-mcp/package.json +2 -1
  225. package/bundle/standalone/node_modules/kxta-core/dist/agent-rules/rules-block.md +10 -1
  226. package/bundle/standalone/node_modules/kxta-core/dist/files/index.d.ts +3 -1
  227. package/bundle/standalone/node_modules/kxta-core/dist/files/index.d.ts.map +1 -1
  228. package/bundle/standalone/node_modules/kxta-core/dist/files/index.js +17 -7
  229. package/bundle/standalone/node_modules/kxta-core/dist/files/index.js.map +1 -1
  230. package/bundle/standalone/node_modules/kxta-core/dist/index.d.ts +2 -0
  231. package/bundle/standalone/node_modules/kxta-core/dist/index.d.ts.map +1 -1
  232. package/bundle/standalone/node_modules/kxta-core/dist/index.js +2 -0
  233. package/bundle/standalone/node_modules/kxta-core/dist/index.js.map +1 -1
  234. package/bundle/standalone/node_modules/kxta-core/dist/reports/resources.d.ts +18 -0
  235. package/bundle/standalone/node_modules/kxta-core/dist/reports/resources.d.ts.map +1 -0
  236. package/bundle/standalone/node_modules/kxta-core/dist/reports/resources.js +86 -0
  237. package/bundle/standalone/node_modules/kxta-core/dist/reports/resources.js.map +1 -0
  238. package/bundle/standalone/node_modules/kxta-core/dist/reports/sanitize.d.ts +2 -0
  239. package/bundle/standalone/node_modules/kxta-core/dist/reports/sanitize.d.ts.map +1 -0
  240. package/bundle/standalone/node_modules/kxta-core/dist/reports/sanitize.js +33 -0
  241. package/bundle/standalone/node_modules/kxta-core/dist/reports/sanitize.js.map +1 -0
  242. package/bundle/standalone/node_modules/kxta-core/dist/types.d.ts +2 -0
  243. package/bundle/standalone/node_modules/kxta-core/dist/types.d.ts.map +1 -1
  244. package/bundle/standalone/node_modules/kxta-core/dist/util/extensions.d.ts +1 -1
  245. package/bundle/standalone/node_modules/kxta-core/dist/util/extensions.d.ts.map +1 -1
  246. package/bundle/standalone/node_modules/kxta-core/dist/util/extensions.js +1 -1
  247. package/bundle/standalone/node_modules/kxta-core/dist/util/extensions.js.map +1 -1
  248. package/bundle/standalone/node_modules/kxta-core/package.json +2 -1
  249. package/bundle/standalone/node_modules/kxta-publish/dist/pipeline.d.ts +5 -0
  250. package/bundle/standalone/node_modules/kxta-publish/dist/pipeline.js +7 -0
  251. package/bundle/standalone/node_modules/kxta-publish/dist/render/html-export.d.ts +16 -0
  252. package/bundle/standalone/node_modules/kxta-publish/dist/render/html-export.js +146 -0
  253. package/bundle/standalone/node_modules/kxta-publish/dist/render/pdf.d.ts +4 -4
  254. package/bundle/standalone/node_modules/kxta-publish/dist/render/pdf.js +49 -22
  255. package/bundle/standalone/node_modules/kxta-publish/package.json +8 -4
  256. package/bundle/standalone/package.json +2 -2
  257. package/dist/doctor-NTVE43EI.js +134 -0
  258. package/dist/index.js +12 -7
  259. package/dist/{start-MCG73ATY.js → start-66WKQRN5.js} +4 -4
  260. package/package.json +5 -1
  261. package/bundle/standalone/apps/web/.next/static/chunks/app/api/auth/status/route-5081c2fd4cf53e20.js +0 -1
  262. package/bundle/standalone/apps/web/.next/static/chunks/app/api/auth/token/route-5081c2fd4cf53e20.js +0 -1
  263. package/bundle/standalone/apps/web/.next/static/chunks/app/api/calendar/conflicts/route-5081c2fd4cf53e20.js +0 -1
  264. package/bundle/standalone/apps/web/.next/static/chunks/app/api/calendar/entities/[id]/route-5081c2fd4cf53e20.js +0 -1
  265. package/bundle/standalone/apps/web/.next/static/chunks/app/api/calendar/entities/route-5081c2fd4cf53e20.js +0 -1
  266. package/bundle/standalone/apps/web/.next/static/chunks/app/api/calendar/events/[id]/route-5081c2fd4cf53e20.js +0 -1
  267. package/bundle/standalone/apps/web/.next/static/chunks/app/api/calendar/events/route-5081c2fd4cf53e20.js +0 -1
  268. package/bundle/standalone/apps/web/.next/static/chunks/app/api/calendar/ics/route-5081c2fd4cf53e20.js +0 -1
  269. package/bundle/standalone/apps/web/.next/static/chunks/app/api/calendar/links/route-5081c2fd4cf53e20.js +0 -1
  270. package/bundle/standalone/apps/web/.next/static/chunks/app/api/calendar/settings/route-5081c2fd4cf53e20.js +0 -1
  271. package/bundle/standalone/apps/web/.next/static/chunks/app/api/clip/route-5081c2fd4cf53e20.js +0 -1
  272. package/bundle/standalone/apps/web/.next/static/chunks/app/api/docker-config/route-5081c2fd4cf53e20.js +0 -1
  273. package/bundle/standalone/apps/web/.next/static/chunks/app/api/export/zip/route-5081c2fd4cf53e20.js +0 -1
  274. package/bundle/standalone/apps/web/.next/static/chunks/app/api/files/[id]/download/route-5081c2fd4cf53e20.js +0 -1
  275. package/bundle/standalone/apps/web/.next/static/chunks/app/api/files/[id]/export-pdf/route-5081c2fd4cf53e20.js +0 -1
  276. package/bundle/standalone/apps/web/.next/static/chunks/app/api/files/[id]/history/restore/route-5081c2fd4cf53e20.js +0 -1
  277. package/bundle/standalone/apps/web/.next/static/chunks/app/api/files/[id]/history/route-5081c2fd4cf53e20.js +0 -1
  278. package/bundle/standalone/apps/web/.next/static/chunks/app/api/files/[id]/move/route-5081c2fd4cf53e20.js +0 -1
  279. package/bundle/standalone/apps/web/.next/static/chunks/app/api/files/[id]/route-5081c2fd4cf53e20.js +0 -1
  280. package/bundle/standalone/apps/web/.next/static/chunks/app/api/files/route-5081c2fd4cf53e20.js +0 -1
  281. package/bundle/standalone/apps/web/.next/static/chunks/app/api/files/upload/route-5081c2fd4cf53e20.js +0 -1
  282. package/bundle/standalone/apps/web/.next/static/chunks/app/api/folders/route-5081c2fd4cf53e20.js +0 -1
  283. package/bundle/standalone/apps/web/.next/static/chunks/app/api/git/remote/route-5081c2fd4cf53e20.js +0 -1
  284. package/bundle/standalone/apps/web/.next/static/chunks/app/api/git/sync-all/route-5081c2fd4cf53e20.js +0 -1
  285. package/bundle/standalone/apps/web/.next/static/chunks/app/api/hands/test-pattern/route-5081c2fd4cf53e20.js +0 -1
  286. package/bundle/standalone/apps/web/.next/static/chunks/app/api/hands/validate/route-5081c2fd4cf53e20.js +0 -1
  287. package/bundle/standalone/apps/web/.next/static/chunks/app/api/health/route-5081c2fd4cf53e20.js +0 -1
  288. package/bundle/standalone/apps/web/.next/static/chunks/app/api/install-snippets/route-5081c2fd4cf53e20.js +0 -1
  289. package/bundle/standalone/apps/web/.next/static/chunks/app/api/mcp-tools/route-5081c2fd4cf53e20.js +0 -1
  290. package/bundle/standalone/apps/web/.next/static/chunks/app/api/profile/route-5081c2fd4cf53e20.js +0 -1
  291. package/bundle/standalone/apps/web/.next/static/chunks/app/api/projects/[id]/hands-config/route-5081c2fd4cf53e20.js +0 -1
  292. package/bundle/standalone/apps/web/.next/static/chunks/app/api/projects/[id]/journal-config/route-5081c2fd4cf53e20.js +0 -1
  293. package/bundle/standalone/apps/web/.next/static/chunks/app/api/projects/[id]/journal-status/route-5081c2fd4cf53e20.js +0 -1
  294. package/bundle/standalone/apps/web/.next/static/chunks/app/api/projects/[id]/onboard/route-5081c2fd4cf53e20.js +0 -1
  295. package/bundle/standalone/apps/web/.next/static/chunks/app/api/projects/[id]/refresh/route-5081c2fd4cf53e20.js +0 -1
  296. package/bundle/standalone/apps/web/.next/static/chunks/app/api/projects/[id]/route-5081c2fd4cf53e20.js +0 -1
  297. package/bundle/standalone/apps/web/.next/static/chunks/app/api/projects/[id]/sync/route-5081c2fd4cf53e20.js +0 -1
  298. package/bundle/standalone/apps/web/.next/static/chunks/app/api/projects/onboard/route-5081c2fd4cf53e20.js +0 -1
  299. package/bundle/standalone/apps/web/.next/static/chunks/app/api/projects/route-5081c2fd4cf53e20.js +0 -1
  300. package/bundle/standalone/apps/web/.next/static/chunks/app/api/publish/html/route-5081c2fd4cf53e20.js +0 -1
  301. package/bundle/standalone/apps/web/.next/static/chunks/app/api/publish/route-5081c2fd4cf53e20.js +0 -1
  302. package/bundle/standalone/apps/web/.next/static/chunks/app/api/refresh/route-5081c2fd4cf53e20.js +0 -1
  303. package/bundle/standalone/apps/web/.next/static/chunks/app/api/reindex/route-5081c2fd4cf53e20.js +0 -1
  304. package/bundle/standalone/apps/web/.next/static/chunks/app/api/search/route-5081c2fd4cf53e20.js +0 -1
  305. package/bundle/standalone/apps/web/.next/static/chunks/app/api/tags/route-5081c2fd4cf53e20.js +0 -1
  306. package/bundle/standalone/apps/web/.next/static/chunks/app/api/version-check/route-5081c2fd4cf53e20.js +0 -1
  307. package/bundle/standalone/apps/web/.next/static/chunks/app/api/ws-config/route-5081c2fd4cf53e20.js +0 -1
  308. package/bundle/standalone/apps/web/.next/static/chunks/app/page-a4a269ecb5be7a3d.js +0 -1
  309. package/bundle/standalone/apps/web/.next/static/chunks/app/preview/motifs/page-5081c2fd4cf53e20.js +0 -1
  310. package/bundle/standalone/apps/web/.next/static/chunks/webpack-8818fea786a923fe.js +0 -1
  311. package/bundle/standalone/apps/web/.next/static/css/c00514317f297826.css +0 -3
  312. package/dist/doctor-W733U3FD.js +0 -46
  313. /package/bundle/standalone/apps/web/.next/static/{fYtMAWNniIoIPOX4FLoir → 3-XgdPUkib9c8DXcXAxa1}/_ssgManifest.js +0 -0
@@ -6,18 +6,25 @@ import { createRequire } from "node:module";
6
6
  import { dirname, join } from "node:path";
7
7
  import { renderDocBody } from "./markdown.js";
8
8
  const require = createRequire(import.meta.url);
9
- // Read pdfmake's own bundled Roboto TTF files as raw buffers, once, at
10
- // module-load time — in this package's own code, which is never bundled —
11
- // and register them in pdfmake's virtual filesystem under fixed, arbitrary
12
- // string keys, instead of using its "standard font by name" shortcut (e.g.
9
+ // Read DejaVu Sans TTF files as raw buffers, once, at module-load time —
10
+ // in this package's own code, which is never bundled — and register them
11
+ // in pdfmake's virtual filesystem under fixed, arbitrary string keys,
12
+ // instead of using pdfmake's "standard font by name" shortcut (e.g.
13
13
  // `{ Helvetica: { normal: 'Helvetica', ... } }`) or real file paths.
14
14
  //
15
+ // Font choice: pdfmake ships Roboto, but Roboto's bundled TTFs omit common
16
+ // glyphs — arrows (→ ← ↑ ↓ ⇒), check marks (✓ ✗) — that appear all the
17
+ // time in tech-writing markdown; those characters silently render as blank
18
+ // boxes. DejaVu Sans covers the full BMP set we care about (arrows, math,
19
+ // checkmarks, extended Latin/Greek/Cyrillic), ships as TTFs via a stable
20
+ // npm package (`dejavu-fonts-ttf`), and is public domain.
21
+ //
15
22
  // That shortcut makes pdfkit resolve font data via a path built from
16
23
  // pdfkit's OWN `__dirname` at call time. This module is `require()`d from a
17
24
  // Next.js API route; whenever that route ends up bundled (this happened
18
25
  // under both webpack and Turbopack despite various externalization
19
26
  // attempts — see the design doc for what was tried and rejected), the
20
- // bundler relocates the code without its co-located *.afm data files, so
27
+ // bundler relocates the code without its co-located data files, so
21
28
  // `__dirname` no longer points anywhere real and pdfkit's file read throws
22
29
  // ENOENT.
23
30
  //
@@ -32,18 +39,28 @@ const require = createRequire(import.meta.url);
32
39
  // real filesystem or a `__dirname`-relative path, and a plain string key
33
40
  // (not starting with a URL scheme or a slash) passes safely through
34
41
  // resolveUrls's checks as a no-op ("cannot be resolved" → left alone).
35
- const robotoFontsDir = dirname(require.resolve("pdfmake/fonts/Roboto/Roboto-Regular.ttf"));
36
- const ROBOTO_KEYS = {
37
- normal: "roboto-normal.ttf",
38
- bold: "roboto-bold.ttf",
39
- italics: "roboto-italics.ttf",
40
- bolditalics: "roboto-bolditalics.ttf",
42
+ const dejavuFontsDir = dirname(require.resolve("dejavu-fonts-ttf/ttf/DejaVuSans.ttf"));
43
+ const DEJAVU_KEYS = {
44
+ normal: "dejavu-sans-normal.ttf",
45
+ bold: "dejavu-sans-bold.ttf",
46
+ italics: "dejavu-sans-italics.ttf",
47
+ bolditalics: "dejavu-sans-bolditalics.ttf",
48
+ };
49
+ const DEJAVU_MONO_KEYS = {
50
+ normal: "dejavu-sans-mono-normal.ttf",
51
+ bold: "dejavu-sans-mono-bold.ttf",
52
+ italics: "dejavu-sans-mono-italics.ttf",
53
+ bolditalics: "dejavu-sans-mono-bolditalics.ttf",
41
54
  };
42
- pdfMake.virtualfs.writeFileSync(ROBOTO_KEYS.normal, readFileSync(join(robotoFontsDir, "Roboto-Regular.ttf")));
43
- pdfMake.virtualfs.writeFileSync(ROBOTO_KEYS.bold, readFileSync(join(robotoFontsDir, "Roboto-Medium.ttf")));
44
- pdfMake.virtualfs.writeFileSync(ROBOTO_KEYS.italics, readFileSync(join(robotoFontsDir, "Roboto-Italic.ttf")));
45
- pdfMake.virtualfs.writeFileSync(ROBOTO_KEYS.bolditalics, readFileSync(join(robotoFontsDir, "Roboto-MediumItalic.ttf")));
46
- pdfMake.setFonts({ Roboto: ROBOTO_KEYS });
55
+ pdfMake.virtualfs.writeFileSync(DEJAVU_KEYS.normal, readFileSync(join(dejavuFontsDir, "DejaVuSans.ttf")));
56
+ pdfMake.virtualfs.writeFileSync(DEJAVU_KEYS.bold, readFileSync(join(dejavuFontsDir, "DejaVuSans-Bold.ttf")));
57
+ pdfMake.virtualfs.writeFileSync(DEJAVU_KEYS.italics, readFileSync(join(dejavuFontsDir, "DejaVuSans-Oblique.ttf")));
58
+ pdfMake.virtualfs.writeFileSync(DEJAVU_KEYS.bolditalics, readFileSync(join(dejavuFontsDir, "DejaVuSans-BoldOblique.ttf")));
59
+ pdfMake.virtualfs.writeFileSync(DEJAVU_MONO_KEYS.normal, readFileSync(join(dejavuFontsDir, "DejaVuSansMono.ttf")));
60
+ pdfMake.virtualfs.writeFileSync(DEJAVU_MONO_KEYS.bold, readFileSync(join(dejavuFontsDir, "DejaVuSansMono-Bold.ttf")));
61
+ pdfMake.virtualfs.writeFileSync(DEJAVU_MONO_KEYS.italics, readFileSync(join(dejavuFontsDir, "DejaVuSansMono-Oblique.ttf")));
62
+ pdfMake.virtualfs.writeFileSync(DEJAVU_MONO_KEYS.bolditalics, readFileSync(join(dejavuFontsDir, "DejaVuSansMono-BoldOblique.ttf")));
63
+ pdfMake.setFonts({ DejaVuSans: DEJAVU_KEYS, DejaVuSansMono: DEJAVU_MONO_KEYS });
47
64
  // Note: this implementation never wires up `imagesByReference` or any
48
65
  // image-fetching option, so there is no code path here that reads a
49
66
  // markdown-supplied local path or fetches a markdown-supplied URL — images
@@ -52,18 +69,28 @@ pdfMake.setFonts({ Roboto: ROBOTO_KEYS });
52
69
  * Render a markdown file's content to a PDF buffer, on the fly, with no
53
70
  * headless browser. Reuses the same markdown-it pipeline as the static-site
54
71
  * publish feature (renderDocBody), then converts the resulting HTML to a
55
- * pdfmake document definition and renders it with pdfmake's bundled Roboto
56
- * font (loaded as buffers — see above). Content that requires a real
57
- * browser to render (e.g. Mermaid diagrams) is not supported here — it
58
- * appears as its raw fenced-code fallback.
72
+ * pdfmake document definition and renders it with DejaVu Sans (loaded as
73
+ * buffers — see above). Content that requires a real browser to render
74
+ * (e.g. Mermaid diagrams) is not supported here — it appears as its raw
75
+ * fenced-code fallback.
59
76
  */
60
77
  export async function renderMarkdownToPdf(content) {
61
78
  const { html } = renderDocBody(content);
62
79
  const { window } = new JSDOM("");
63
- const body = htmlToPdfmake(html, { window });
80
+ // html-to-pdfmake's own defaults leave `code`/`pre` on the document font,
81
+ // so fenced code renders in a proportional face and indented lines /
82
+ // aligned characters no longer line up. Route those tags to the mono
83
+ // family instead.
84
+ const body = htmlToPdfmake(html, {
85
+ window,
86
+ defaultStyles: {
87
+ code: { font: "DejaVuSansMono", fontSize: 10 },
88
+ pre: { font: "DejaVuSansMono", fontSize: 10, margin: [0, 5, 0, 10] },
89
+ },
90
+ });
64
91
  const doc = pdfMake.createPdf({
65
92
  content: body,
66
- defaultStyle: { font: "Roboto", fontSize: 11 },
93
+ defaultStyle: { font: "DejaVuSans", fontSize: 11 },
67
94
  pageMargins: [40, 40, 40, 40],
68
95
  });
69
96
  return doc.getBuffer();
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kxta-publish",
3
- "version": "4.4.1",
3
+ "version": "4.5.2",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "bin": {
@@ -10,16 +10,20 @@
10
10
  "exports": {
11
11
  "./pipeline": "./dist/pipeline.js",
12
12
  "./render/llms": "./dist/render/llms.js",
13
- "./render/pdf": "./dist/render/pdf.js"
13
+ "./render/pdf": "./dist/render/pdf.js",
14
+ "./render/html-export": "./dist/render/html-export.js"
14
15
  },
15
16
  "dependencies": {
17
+ "@puppeteer/browsers": "^3.2.2",
18
+ "dejavu-fonts-ttf": "^2.37.3",
16
19
  "gray-matter": "^4.0.3",
17
20
  "html-to-pdfmake": "^2.5.33",
18
21
  "js-yaml": "^4.1.0",
19
22
  "jsdom": "^29.1.1",
20
- "kxta-core": "4.4.1",
23
+ "kxta-core": "4.5.2",
21
24
  "markdown-it": "^14.1.0",
22
- "pdfmake": "^0.3.11"
25
+ "pdfmake": "^0.3.11",
26
+ "puppeteer-core": "^25.10.0"
23
27
  },
24
28
  "rulesVersion": "2.3.0"
25
29
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "kontexta",
3
- "version": "4.4.1",
4
- "rulesVersion": "2.3.0",
3
+ "version": "4.5.2",
4
+ "rulesVersion": "2.4.0",
5
5
  "type": "module",
6
6
  "author": "Safiyu",
7
7
  "private": true,
@@ -0,0 +1,134 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ resolveDataDir
4
+ } from "./chunk-KQTCKRN2.js";
5
+
6
+ // src/doctor.ts
7
+ import { createRequire } from "module";
8
+ import { existsSync, readdirSync, statSync, mkdirSync } from "fs";
9
+ import { join } from "path";
10
+ import { homedir, tmpdir } from "os";
11
+ var require2 = createRequire(import.meta.url);
12
+ function chromiumCachePath() {
13
+ return process.env.KONTEXTA_CHROMIUM_CACHE ?? join(homedir() || tmpdir(), ".cache", "kontexta", "chromium");
14
+ }
15
+ async function findInstalledChromium(cache) {
16
+ const b = await import("@puppeteer/browsers");
17
+ const installed = await b.getInstalledBrowsers({ cacheDir: cache });
18
+ const found = installed.find((x) => x.browser === b.Browser.CHROMIUM && existsSync(x.executablePath));
19
+ return found ? { executablePath: found.executablePath, buildId: found.buildId } : null;
20
+ }
21
+ function checkNode() {
22
+ const v = process.versions.node;
23
+ const major = Number(v.split(".")[0]);
24
+ const ok = major >= 22;
25
+ return { name: "Node", ok, detail: `v${v}${ok ? "" : " (required: >= 22)"}` };
26
+ }
27
+ function checkDataDir() {
28
+ const r = resolveDataDir();
29
+ return { name: "Data dir", ok: true, detail: `${r.path} (source: ${r.source})` };
30
+ }
31
+ function checkNative(mod) {
32
+ try {
33
+ require2(mod);
34
+ return { name: mod, ok: true, detail: "OK" };
35
+ } catch (e) {
36
+ return {
37
+ name: mod,
38
+ ok: false,
39
+ detail: `FAIL \u2014 ${e.message}. Try: npm rebuild ${mod}`
40
+ };
41
+ }
42
+ }
43
+ function dirSizeBytes(dir) {
44
+ let total = 0;
45
+ const stack = [dir];
46
+ while (stack.length) {
47
+ const d = stack.pop();
48
+ let entries;
49
+ try {
50
+ entries = readdirSync(d);
51
+ } catch {
52
+ continue;
53
+ }
54
+ for (const e of entries) {
55
+ const p = join(d, e);
56
+ try {
57
+ const s = statSync(p);
58
+ if (s.isDirectory()) stack.push(p);
59
+ else total += s.size;
60
+ } catch {
61
+ }
62
+ }
63
+ }
64
+ return total;
65
+ }
66
+ function humanSize(bytes) {
67
+ const units = ["B", "KB", "MB", "GB"];
68
+ let i = 0, n = bytes;
69
+ while (n >= 1024 && i < units.length - 1) {
70
+ n /= 1024;
71
+ i++;
72
+ }
73
+ return `${n.toFixed(i === 0 ? 0 : 1)} ${units[i]}`;
74
+ }
75
+ async function checkPuppeteerChromium() {
76
+ try {
77
+ const cache = chromiumCachePath();
78
+ if (!existsSync(cache)) {
79
+ return { name: "puppeteer-chromium", ok: false, informational: true, detail: "not installed (run `kontexta doctor install-chromium` or wait for first PDF export)" };
80
+ }
81
+ const found = await findInstalledChromium(cache);
82
+ if (!found) {
83
+ return { name: "puppeteer-chromium", ok: false, informational: true, detail: "not installed (run `kontexta doctor install-chromium` or wait for first PDF export)" };
84
+ }
85
+ const size = humanSize(dirSizeBytes(cache));
86
+ return { name: "puppeteer-chromium", ok: true, informational: true, detail: `${found.buildId} (${size}) in ${cache}` };
87
+ } catch (e) {
88
+ return { name: "puppeteer-chromium", ok: false, informational: true, detail: `check failed: ${e?.message ?? e}` };
89
+ }
90
+ }
91
+ async function installChromium() {
92
+ try {
93
+ const cache = chromiumCachePath();
94
+ mkdirSync(cache, { recursive: true });
95
+ const existing = await findInstalledChromium(cache);
96
+ if (existing) {
97
+ process.stdout.write(`Already present: ${existing.executablePath}
98
+ `);
99
+ return 0;
100
+ }
101
+ const b = await import("@puppeteer/browsers");
102
+ const platform = b.detectBrowserPlatform() ?? b.BrowserPlatform.LINUX;
103
+ const buildId = await b.resolveBuildId(b.Browser.CHROMIUM, platform, "latest");
104
+ const exec = b.computeExecutablePath({ browser: b.Browser.CHROMIUM, buildId, cacheDir: cache });
105
+ process.stdout.write(`Downloading Chromium ${buildId} to ${cache}\u2026
106
+ `);
107
+ await b.install({ browser: b.Browser.CHROMIUM, buildId, cacheDir: cache });
108
+ process.stdout.write(`Installed: ${exec}
109
+ `);
110
+ return 0;
111
+ } catch (e) {
112
+ process.stderr.write(`install-chromium failed: ${e?.message ?? e}
113
+ `);
114
+ return 1;
115
+ }
116
+ }
117
+ async function runDoctor() {
118
+ const results = [
119
+ checkNode(),
120
+ checkDataDir(),
121
+ checkNative("better-sqlite3"),
122
+ checkNative("re2"),
123
+ await checkPuppeteerChromium()
124
+ ];
125
+ for (const r of results) {
126
+ process.stdout.write(`${r.name}: ${r.detail}
127
+ `);
128
+ }
129
+ return results.every((r) => r.ok || r.informational) ? 0 : 1;
130
+ }
131
+ export {
132
+ installChromium,
133
+ runDoctor
134
+ };
package/dist/index.js CHANGED
@@ -5,11 +5,12 @@ import { createRequire } from "module";
5
5
  var HELP = `kontexta \u2014 one-click local dashboard + MCP server
6
6
 
7
7
  Usage:
8
- kontexta start Boot dashboard + MCP on port 3000 (or $PORT)
9
- kontexta mcp Run stdio MCP server (for AI client config)
10
- kontexta doctor Print environment diagnostics
11
- kontexta --version Print version
12
- kontexta --help Print this help
8
+ kontexta start Boot dashboard + MCP on port 23002 (or $PORT)
9
+ kontexta mcp Run stdio MCP server (for AI client config)
10
+ kontexta doctor Print environment diagnostics
11
+ kontexta doctor install-chromium Download the Chromium build used for PDF export
12
+ kontexta --version Print version
13
+ kontexta --help Print this help
13
14
  `;
14
15
  (async () => {
15
16
  const arg = process.argv[2];
@@ -30,11 +31,15 @@ Usage:
30
31
  process.exit(0);
31
32
  }
32
33
  if (arg === "doctor") {
33
- const { runDoctor } = await import("./doctor-W733U3FD.js");
34
+ if (process.argv[3] === "install-chromium") {
35
+ const { installChromium } = await import("./doctor-NTVE43EI.js");
36
+ process.exit(await installChromium());
37
+ }
38
+ const { runDoctor } = await import("./doctor-NTVE43EI.js");
34
39
  process.exit(await runDoctor());
35
40
  }
36
41
  if (arg === "start") {
37
- const { runStart } = await import("./start-MCG73ATY.js");
42
+ const { runStart } = await import("./start-66WKQRN5.js");
38
43
  await runStart();
39
44
  process.exit(0);
40
45
  }
@@ -54,8 +54,8 @@ async function waitHealth(port, timeoutMs = 3e4) {
54
54
  }
55
55
  async function runStart() {
56
56
  const nodeMajor = Number(process.versions.node.split(".")[0]);
57
- if (nodeMajor !== 22) {
58
- process.stderr.write(`kontexta requires Node 22.x LTS (found v${process.versions.node}). See .nvmrc.
57
+ if (nodeMajor < 22) {
58
+ process.stderr.write(`kontexta requires Node >= 22 (found v${process.versions.node}). See .nvmrc.
59
59
  `);
60
60
  process.exit(1);
61
61
  }
@@ -63,9 +63,9 @@ async function runStart() {
63
63
  process.stdout.write(`Using data at ${data.path}
64
64
  `);
65
65
  const rawPort = process.env.PORT;
66
- const preferred = rawPort && /^\d+$/.test(rawPort) ? Number(rawPort) : 3e3;
66
+ const preferred = rawPort && /^\d+$/.test(rawPort) ? Number(rawPort) : 23002;
67
67
  if (rawPort && !/^\d+$/.test(rawPort)) {
68
- process.stderr.write(`PORT=${rawPort} is not a valid integer; using 3000
68
+ process.stderr.write(`PORT=${rawPort} is not a valid integer; using 23002
69
69
  `);
70
70
  }
71
71
  const port = await pickPort(preferred);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kontexta",
3
- "version": "4.4.1",
3
+ "version": "4.5.2",
4
4
  "description": "One-click local dashboard + MCP server for AI coding agents",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
@@ -38,6 +38,7 @@
38
38
  "dependencies": {
39
39
  "@modelcontextprotocol/sdk": "^1.12.0",
40
40
  "@mozilla/readability": "^0.6.0",
41
+ "@puppeteer/browsers": "^3.2.2",
41
42
  "@radix-ui/react-dialog": "^1.1.23",
42
43
  "@radix-ui/react-dropdown-menu": "^2.1.24",
43
44
  "@tiptap/extension-link": "^2.11.0",
@@ -51,6 +52,8 @@
51
52
  "archiver": "^7.0.1",
52
53
  "better-sqlite3": "^12.10.0",
53
54
  "chokidar": "^4.0.0",
55
+ "dejavu-fonts-ttf": "^2.37.3",
56
+ "dompurify": "^3.4.14",
54
57
  "glob": "^11.0.0",
55
58
  "gray-matter": "^4.0.3",
56
59
  "html-to-pdfmake": "^2.5.33",
@@ -63,6 +66,7 @@
63
66
  "next-themes": "^0.4.4",
64
67
  "open": "^10.2.0",
65
68
  "pdfmake": "^0.3.11",
69
+ "puppeteer-core": "^25.10.0",
66
70
  "re2": "^1.24.1",
67
71
  "react": "19.2.6",
68
72
  "react-dom": "19.2.6",
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,533,635,1113,1151,1273,1636,1699,1806,2041,2224,2598,2654,2772,3063,3145,3365,3425,3430,3549,3576,3878,4076,4260,4490,4882,4930,5031,5148,5469,5581,5789,6202,7073,7473,7490,7676,7758,7874,8100,8208,8314,8489,8636,8998,9207,9234,9329,9347,9514,9881,9930],{98473:()=>{}},_=>{_.O(0,[9922,5159,7358],()=>_(_.s=98473)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,533,635,1113,1151,1273,1636,1699,1806,2041,2224,2598,2654,2772,3063,3145,3365,3425,3430,3549,3576,3878,4076,4260,4490,4882,4930,5031,5148,5469,5581,5789,6202,7073,7473,7490,7676,7758,7874,8100,8208,8314,8489,8636,8998,9207,9234,9329,9347,9514,9881,9930],{98473:()=>{}},_=>{_.O(0,[9922,5159,7358],()=>_(_.s=98473)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,533,635,1113,1151,1273,1636,1699,1806,2041,2224,2598,2654,2772,3063,3145,3365,3425,3430,3549,3576,3878,4076,4260,4490,4882,4930,5031,5148,5469,5581,5789,6202,7073,7473,7490,7676,7758,7874,8100,8208,8314,8489,8636,8998,9207,9234,9329,9347,9514,9881,9930],{98473:()=>{}},_=>{_.O(0,[9922,5159,7358],()=>_(_.s=98473)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,533,635,1113,1151,1273,1636,1699,1806,2041,2224,2598,2654,2772,3063,3145,3365,3425,3430,3549,3576,3878,4076,4260,4490,4882,4930,5031,5148,5469,5581,5789,6202,7073,7473,7490,7676,7758,7874,8100,8208,8314,8489,8636,8998,9207,9234,9329,9347,9514,9881,9930],{98473:()=>{}},_=>{_.O(0,[9922,5159,7358],()=>_(_.s=98473)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,533,635,1113,1151,1273,1636,1699,1806,2041,2224,2598,2654,2772,3063,3145,3365,3425,3430,3549,3576,3878,4076,4260,4490,4882,4930,5031,5148,5469,5581,5789,6202,7073,7473,7490,7676,7758,7874,8100,8208,8314,8489,8636,8998,9207,9234,9329,9347,9514,9881,9930],{98473:()=>{}},_=>{_.O(0,[9922,5159,7358],()=>_(_.s=98473)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,533,635,1113,1151,1273,1636,1699,1806,2041,2224,2598,2654,2772,3063,3145,3365,3425,3430,3549,3576,3878,4076,4260,4490,4882,4930,5031,5148,5469,5581,5789,6202,7073,7473,7490,7676,7758,7874,8100,8208,8314,8489,8636,8998,9207,9234,9329,9347,9514,9881,9930],{98473:()=>{}},_=>{_.O(0,[9922,5159,7358],()=>_(_.s=98473)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,533,635,1113,1151,1273,1636,1699,1806,2041,2224,2598,2654,2772,3063,3145,3365,3425,3430,3549,3576,3878,4076,4260,4490,4882,4930,5031,5148,5469,5581,5789,6202,7073,7473,7490,7676,7758,7874,8100,8208,8314,8489,8636,8998,9207,9234,9329,9347,9514,9881,9930],{98473:()=>{}},_=>{_.O(0,[9922,5159,7358],()=>_(_.s=98473)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,533,635,1113,1151,1273,1636,1699,1806,2041,2224,2598,2654,2772,3063,3145,3365,3425,3430,3549,3576,3878,4076,4260,4490,4882,4930,5031,5148,5469,5581,5789,6202,7073,7473,7490,7676,7758,7874,8100,8208,8314,8489,8636,8998,9207,9234,9329,9347,9514,9881,9930],{98473:()=>{}},_=>{_.O(0,[9922,5159,7358],()=>_(_.s=98473)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,533,635,1113,1151,1273,1636,1699,1806,2041,2224,2598,2654,2772,3063,3145,3365,3425,3430,3549,3576,3878,4076,4260,4490,4882,4930,5031,5148,5469,5581,5789,6202,7073,7473,7490,7676,7758,7874,8100,8208,8314,8489,8636,8998,9207,9234,9329,9347,9514,9881,9930],{98473:()=>{}},_=>{_.O(0,[9922,5159,7358],()=>_(_.s=98473)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,533,635,1113,1151,1273,1636,1699,1806,2041,2224,2598,2654,2772,3063,3145,3365,3425,3430,3549,3576,3878,4076,4260,4490,4882,4930,5031,5148,5469,5581,5789,6202,7073,7473,7490,7676,7758,7874,8100,8208,8314,8489,8636,8998,9207,9234,9329,9347,9514,9881,9930],{98473:()=>{}},_=>{_.O(0,[9922,5159,7358],()=>_(_.s=98473)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,533,635,1113,1151,1273,1636,1699,1806,2041,2224,2598,2654,2772,3063,3145,3365,3425,3430,3549,3576,3878,4076,4260,4490,4882,4930,5031,5148,5469,5581,5789,6202,7073,7473,7490,7676,7758,7874,8100,8208,8314,8489,8636,8998,9207,9234,9329,9347,9514,9881,9930],{98473:()=>{}},_=>{_.O(0,[9922,5159,7358],()=>_(_.s=98473)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,533,635,1113,1151,1273,1636,1699,1806,2041,2224,2598,2654,2772,3063,3145,3365,3425,3430,3549,3576,3878,4076,4260,4490,4882,4930,5031,5148,5469,5581,5789,6202,7073,7473,7490,7676,7758,7874,8100,8208,8314,8489,8636,8998,9207,9234,9329,9347,9514,9881,9930],{98473:()=>{}},_=>{_.O(0,[9922,5159,7358],()=>_(_.s=98473)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,533,635,1113,1151,1273,1636,1699,1806,2041,2224,2598,2654,2772,3063,3145,3365,3425,3430,3549,3576,3878,4076,4260,4490,4882,4930,5031,5148,5469,5581,5789,6202,7073,7473,7490,7676,7758,7874,8100,8208,8314,8489,8636,8998,9207,9234,9329,9347,9514,9881,9930],{98473:()=>{}},_=>{_.O(0,[9922,5159,7358],()=>_(_.s=98473)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,533,635,1113,1151,1273,1636,1699,1806,2041,2224,2598,2654,2772,3063,3145,3365,3425,3430,3549,3576,3878,4076,4260,4490,4882,4930,5031,5148,5469,5581,5789,6202,7073,7473,7490,7676,7758,7874,8100,8208,8314,8489,8636,8998,9207,9234,9329,9347,9514,9881,9930],{98473:()=>{}},_=>{_.O(0,[9922,5159,7358],()=>_(_.s=98473)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,533,635,1113,1151,1273,1636,1699,1806,2041,2224,2598,2654,2772,3063,3145,3365,3425,3430,3549,3576,3878,4076,4260,4490,4882,4930,5031,5148,5469,5581,5789,6202,7073,7473,7490,7676,7758,7874,8100,8208,8314,8489,8636,8998,9207,9234,9329,9347,9514,9881,9930],{98473:()=>{}},_=>{_.O(0,[9922,5159,7358],()=>_(_.s=98473)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,533,635,1113,1151,1273,1636,1699,1806,2041,2224,2598,2654,2772,3063,3145,3365,3425,3430,3549,3576,3878,4076,4260,4490,4882,4930,5031,5148,5469,5581,5789,6202,7073,7473,7490,7676,7758,7874,8100,8208,8314,8489,8636,8998,9207,9234,9329,9347,9514,9881,9930],{98473:()=>{}},_=>{_.O(0,[9922,5159,7358],()=>_(_.s=98473)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,533,635,1113,1151,1273,1636,1699,1806,2041,2224,2598,2654,2772,3063,3145,3365,3425,3430,3549,3576,3878,4076,4260,4490,4882,4930,5031,5148,5469,5581,5789,6202,7073,7473,7490,7676,7758,7874,8100,8208,8314,8489,8636,8998,9207,9234,9329,9347,9514,9881,9930],{98473:()=>{}},_=>{_.O(0,[9922,5159,7358],()=>_(_.s=98473)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,533,635,1113,1151,1273,1636,1699,1806,2041,2224,2598,2654,2772,3063,3145,3365,3425,3430,3549,3576,3878,4076,4260,4490,4882,4930,5031,5148,5469,5581,5789,6202,7073,7473,7490,7676,7758,7874,8100,8208,8314,8489,8636,8998,9207,9234,9329,9347,9514,9881,9930],{98473:()=>{}},_=>{_.O(0,[9922,5159,7358],()=>_(_.s=98473)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,533,635,1113,1151,1273,1636,1699,1806,2041,2224,2598,2654,2772,3063,3145,3365,3425,3430,3549,3576,3878,4076,4260,4490,4882,4930,5031,5148,5469,5581,5789,6202,7073,7473,7490,7676,7758,7874,8100,8208,8314,8489,8636,8998,9207,9234,9329,9347,9514,9881,9930],{98473:()=>{}},_=>{_.O(0,[9922,5159,7358],()=>_(_.s=98473)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,533,635,1113,1151,1273,1636,1699,1806,2041,2224,2598,2654,2772,3063,3145,3365,3425,3430,3549,3576,3878,4076,4260,4490,4882,4930,5031,5148,5469,5581,5789,6202,7073,7473,7490,7676,7758,7874,8100,8208,8314,8489,8636,8998,9207,9234,9329,9347,9514,9881,9930],{98473:()=>{}},_=>{_.O(0,[9922,5159,7358],()=>_(_.s=98473)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,533,635,1113,1151,1273,1636,1699,1806,2041,2224,2598,2654,2772,3063,3145,3365,3425,3430,3549,3576,3878,4076,4260,4490,4882,4930,5031,5148,5469,5581,5789,6202,7073,7473,7490,7676,7758,7874,8100,8208,8314,8489,8636,8998,9207,9234,9329,9347,9514,9881,9930],{98473:()=>{}},_=>{_.O(0,[9922,5159,7358],()=>_(_.s=98473)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,533,635,1113,1151,1273,1636,1699,1806,2041,2224,2598,2654,2772,3063,3145,3365,3425,3430,3549,3576,3878,4076,4260,4490,4882,4930,5031,5148,5469,5581,5789,6202,7073,7473,7490,7676,7758,7874,8100,8208,8314,8489,8636,8998,9207,9234,9329,9347,9514,9881,9930],{98473:()=>{}},_=>{_.O(0,[9922,5159,7358],()=>_(_.s=98473)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,533,635,1113,1151,1273,1636,1699,1806,2041,2224,2598,2654,2772,3063,3145,3365,3425,3430,3549,3576,3878,4076,4260,4490,4882,4930,5031,5148,5469,5581,5789,6202,7073,7473,7490,7676,7758,7874,8100,8208,8314,8489,8636,8998,9207,9234,9329,9347,9514,9881,9930],{98473:()=>{}},_=>{_.O(0,[9922,5159,7358],()=>_(_.s=98473)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,533,635,1113,1151,1273,1636,1699,1806,2041,2224,2598,2654,2772,3063,3145,3365,3425,3430,3549,3576,3878,4076,4260,4490,4882,4930,5031,5148,5469,5581,5789,6202,7073,7473,7490,7676,7758,7874,8100,8208,8314,8489,8636,8998,9207,9234,9329,9347,9514,9881,9930],{98473:()=>{}},_=>{_.O(0,[9922,5159,7358],()=>_(_.s=98473)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,533,635,1113,1151,1273,1636,1699,1806,2041,2224,2598,2654,2772,3063,3145,3365,3425,3430,3549,3576,3878,4076,4260,4490,4882,4930,5031,5148,5469,5581,5789,6202,7073,7473,7490,7676,7758,7874,8100,8208,8314,8489,8636,8998,9207,9234,9329,9347,9514,9881,9930],{98473:()=>{}},_=>{_.O(0,[9922,5159,7358],()=>_(_.s=98473)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,533,635,1113,1151,1273,1636,1699,1806,2041,2224,2598,2654,2772,3063,3145,3365,3425,3430,3549,3576,3878,4076,4260,4490,4882,4930,5031,5148,5469,5581,5789,6202,7073,7473,7490,7676,7758,7874,8100,8208,8314,8489,8636,8998,9207,9234,9329,9347,9514,9881,9930],{98473:()=>{}},_=>{_.O(0,[9922,5159,7358],()=>_(_.s=98473)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,533,635,1113,1151,1273,1636,1699,1806,2041,2224,2598,2654,2772,3063,3145,3365,3425,3430,3549,3576,3878,4076,4260,4490,4882,4930,5031,5148,5469,5581,5789,6202,7073,7473,7490,7676,7758,7874,8100,8208,8314,8489,8636,8998,9207,9234,9329,9347,9514,9881,9930],{98473:()=>{}},_=>{_.O(0,[9922,5159,7358],()=>_(_.s=98473)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,533,635,1113,1151,1273,1636,1699,1806,2041,2224,2598,2654,2772,3063,3145,3365,3425,3430,3549,3576,3878,4076,4260,4490,4882,4930,5031,5148,5469,5581,5789,6202,7073,7473,7490,7676,7758,7874,8100,8208,8314,8489,8636,8998,9207,9234,9329,9347,9514,9881,9930],{98473:()=>{}},_=>{_.O(0,[9922,5159,7358],()=>_(_.s=98473)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,533,635,1113,1151,1273,1636,1699,1806,2041,2224,2598,2654,2772,3063,3145,3365,3425,3430,3549,3576,3878,4076,4260,4490,4882,4930,5031,5148,5469,5581,5789,6202,7073,7473,7490,7676,7758,7874,8100,8208,8314,8489,8636,8998,9207,9234,9329,9347,9514,9881,9930],{98473:()=>{}},_=>{_.O(0,[9922,5159,7358],()=>_(_.s=98473)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,533,635,1113,1151,1273,1636,1699,1806,2041,2224,2598,2654,2772,3063,3145,3365,3425,3430,3549,3576,3878,4076,4260,4490,4882,4930,5031,5148,5469,5581,5789,6202,7073,7473,7490,7676,7758,7874,8100,8208,8314,8489,8636,8998,9207,9234,9329,9347,9514,9881,9930],{98473:()=>{}},_=>{_.O(0,[9922,5159,7358],()=>_(_.s=98473)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,533,635,1113,1151,1273,1636,1699,1806,2041,2224,2598,2654,2772,3063,3145,3365,3425,3430,3549,3576,3878,4076,4260,4490,4882,4930,5031,5148,5469,5581,5789,6202,7073,7473,7490,7676,7758,7874,8100,8208,8314,8489,8636,8998,9207,9234,9329,9347,9514,9881,9930],{98473:()=>{}},_=>{_.O(0,[9922,5159,7358],()=>_(_.s=98473)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,533,635,1113,1151,1273,1636,1699,1806,2041,2224,2598,2654,2772,3063,3145,3365,3425,3430,3549,3576,3878,4076,4260,4490,4882,4930,5031,5148,5469,5581,5789,6202,7073,7473,7490,7676,7758,7874,8100,8208,8314,8489,8636,8998,9207,9234,9329,9347,9514,9881,9930],{98473:()=>{}},_=>{_.O(0,[9922,5159,7358],()=>_(_.s=98473)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,533,635,1113,1151,1273,1636,1699,1806,2041,2224,2598,2654,2772,3063,3145,3365,3425,3430,3549,3576,3878,4076,4260,4490,4882,4930,5031,5148,5469,5581,5789,6202,7073,7473,7490,7676,7758,7874,8100,8208,8314,8489,8636,8998,9207,9234,9329,9347,9514,9881,9930],{98473:()=>{}},_=>{_.O(0,[9922,5159,7358],()=>_(_.s=98473)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,533,635,1113,1151,1273,1636,1699,1806,2041,2224,2598,2654,2772,3063,3145,3365,3425,3430,3549,3576,3878,4076,4260,4490,4882,4930,5031,5148,5469,5581,5789,6202,7073,7473,7490,7676,7758,7874,8100,8208,8314,8489,8636,8998,9207,9234,9329,9347,9514,9881,9930],{98473:()=>{}},_=>{_.O(0,[9922,5159,7358],()=>_(_.s=98473)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,533,635,1113,1151,1273,1636,1699,1806,2041,2224,2598,2654,2772,3063,3145,3365,3425,3430,3549,3576,3878,4076,4260,4490,4882,4930,5031,5148,5469,5581,5789,6202,7073,7473,7490,7676,7758,7874,8100,8208,8314,8489,8636,8998,9207,9234,9329,9347,9514,9881,9930],{98473:()=>{}},_=>{_.O(0,[9922,5159,7358],()=>_(_.s=98473)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,533,635,1113,1151,1273,1636,1699,1806,2041,2224,2598,2654,2772,3063,3145,3365,3425,3430,3549,3576,3878,4076,4260,4490,4882,4930,5031,5148,5469,5581,5789,6202,7073,7473,7490,7676,7758,7874,8100,8208,8314,8489,8636,8998,9207,9234,9329,9347,9514,9881,9930],{98473:()=>{}},_=>{_.O(0,[9922,5159,7358],()=>_(_.s=98473)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,533,635,1113,1151,1273,1636,1699,1806,2041,2224,2598,2654,2772,3063,3145,3365,3425,3430,3549,3576,3878,4076,4260,4490,4882,4930,5031,5148,5469,5581,5789,6202,7073,7473,7490,7676,7758,7874,8100,8208,8314,8489,8636,8998,9207,9234,9329,9347,9514,9881,9930],{98473:()=>{}},_=>{_.O(0,[9922,5159,7358],()=>_(_.s=98473)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,533,635,1113,1151,1273,1636,1699,1806,2041,2224,2598,2654,2772,3063,3145,3365,3425,3430,3549,3576,3878,4076,4260,4490,4882,4930,5031,5148,5469,5581,5789,6202,7073,7473,7490,7676,7758,7874,8100,8208,8314,8489,8636,8998,9207,9234,9329,9347,9514,9881,9930],{98473:()=>{}},_=>{_.O(0,[9922,5159,7358],()=>_(_.s=98473)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,533,635,1113,1151,1273,1636,1699,1806,2041,2224,2598,2654,2772,3063,3145,3365,3425,3430,3549,3576,3878,4076,4260,4490,4882,4930,5031,5148,5469,5581,5789,6202,7073,7473,7490,7676,7758,7874,8100,8208,8314,8489,8636,8998,9207,9234,9329,9347,9514,9881,9930],{98473:()=>{}},_=>{_.O(0,[9922,5159,7358],()=>_(_.s=98473)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,533,635,1113,1151,1273,1636,1699,1806,2041,2224,2598,2654,2772,3063,3145,3365,3425,3430,3549,3576,3878,4076,4260,4490,4882,4930,5031,5148,5469,5581,5789,6202,7073,7473,7490,7676,7758,7874,8100,8208,8314,8489,8636,8998,9207,9234,9329,9347,9514,9881,9930],{98473:()=>{}},_=>{_.O(0,[9922,5159,7358],()=>_(_.s=98473)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,533,635,1113,1151,1273,1636,1699,1806,2041,2224,2598,2654,2772,3063,3145,3365,3425,3430,3549,3576,3878,4076,4260,4490,4882,4930,5031,5148,5469,5581,5789,6202,7073,7473,7490,7676,7758,7874,8100,8208,8314,8489,8636,8998,9207,9234,9329,9347,9514,9881,9930],{98473:()=>{}},_=>{_.O(0,[9922,5159,7358],()=>_(_.s=98473)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,533,635,1113,1151,1273,1636,1699,1806,2041,2224,2598,2654,2772,3063,3145,3365,3425,3430,3549,3576,3878,4076,4260,4490,4882,4930,5031,5148,5469,5581,5789,6202,7073,7473,7490,7676,7758,7874,8100,8208,8314,8489,8636,8998,9207,9234,9329,9347,9514,9881,9930],{98473:()=>{}},_=>{_.O(0,[9922,5159,7358],()=>_(_.s=98473)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,533,635,1113,1151,1273,1636,1699,1806,2041,2224,2598,2654,2772,3063,3145,3365,3425,3430,3549,3576,3878,4076,4260,4490,4882,4930,5031,5148,5469,5581,5789,6202,7073,7473,7490,7676,7758,7874,8100,8208,8314,8489,8636,8998,9207,9234,9329,9347,9514,9881,9930],{98473:()=>{}},_=>{_.O(0,[9922,5159,7358],()=>_(_.s=98473)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,533,635,1113,1151,1273,1636,1699,1806,2041,2224,2598,2654,2772,3063,3145,3365,3425,3430,3549,3576,3878,4076,4260,4490,4882,4930,5031,5148,5469,5581,5789,6202,7073,7473,7490,7676,7758,7874,8100,8208,8314,8489,8636,8998,9207,9234,9329,9347,9514,9881,9930],{98473:()=>{}},_=>{_.O(0,[9922,5159,7358],()=>_(_.s=98473)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,533,635,1113,1151,1273,1636,1699,1806,2041,2224,2598,2654,2772,3063,3145,3365,3425,3430,3549,3576,3878,4076,4260,4490,4882,4930,5031,5148,5469,5581,5789,6202,7073,7473,7490,7676,7758,7874,8100,8208,8314,8489,8636,8998,9207,9234,9329,9347,9514,9881,9930],{98473:()=>{}},_=>{_.O(0,[9922,5159,7358],()=>_(_.s=98473)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,533,635,1113,1151,1273,1636,1699,1806,2041,2224,2598,2654,2772,3063,3145,3365,3425,3430,3549,3576,3878,4076,4260,4490,4882,4930,5031,5148,5469,5581,5789,6202,7073,7473,7490,7676,7758,7874,8100,8208,8314,8489,8636,8998,9207,9234,9329,9347,9514,9881,9930],{98473:()=>{}},_=>{_.O(0,[9922,5159,7358],()=>_(_.s=98473)),_N_E=_.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,533,635,1113,1151,1273,1636,1699,1806,2041,2224,2598,2654,2772,3063,3145,3365,3425,3430,3549,3576,3878,4076,4260,4490,4882,4930,5031,5148,5469,5581,5789,6202,7073,7473,7490,7676,7758,7874,8100,8208,8314,8489,8636,8998,9207,9234,9329,9347,9514,9881,9930],{98473:()=>{}},_=>{_.O(0,[9922,5159,7358],()=>_(_.s=98473)),_N_E=_.O()}]);