@seqyuan/annodex 0.1.12 → 0.1.14

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 (478) hide show
  1. package/.next/BUILD_ID +1 -0
  2. package/.next/app-path-routes-manifest.json +39 -0
  3. package/.next/build-manifest.json +20 -0
  4. package/.next/diagnostics/build-diagnostics.json +6 -0
  5. package/.next/diagnostics/framework.json +1 -0
  6. package/.next/export-marker.json +6 -0
  7. package/.next/images-manifest.json +68 -0
  8. package/.next/next-minimal-server.js.nft.json +1 -0
  9. package/.next/next-server.js.nft.json +1 -0
  10. package/.next/package.json +1 -0
  11. package/.next/prerender-manifest.json +109 -0
  12. package/.next/react-loadable-manifest.json +2320 -0
  13. package/.next/required-server-files.js +343 -0
  14. package/.next/required-server-files.json +343 -0
  15. package/.next/routes-manifest.json +286 -0
  16. package/.next/server/app/_global-error/page.js +32 -0
  17. package/.next/server/app/_global-error/page.js.nft.json +1 -0
  18. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -0
  19. package/.next/server/app/_global-error.html +1 -0
  20. package/.next/server/app/_global-error.meta +16 -0
  21. package/.next/server/app/_global-error.rsc +14 -0
  22. package/.next/server/app/_global-error.segments/_full.segment.rsc +14 -0
  23. package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +5 -0
  24. package/.next/server/app/_global-error.segments/_global-error.segment.rsc +5 -0
  25. package/.next/server/app/_global-error.segments/_head.segment.rsc +5 -0
  26. package/.next/server/app/_global-error.segments/_index.segment.rsc +5 -0
  27. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -0
  28. package/.next/server/app/_not-found/page.js +2 -0
  29. package/.next/server/app/_not-found/page.js.nft.json +1 -0
  30. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -0
  31. package/.next/server/app/_not-found.html +1 -0
  32. package/.next/server/app/_not-found.meta +16 -0
  33. package/.next/server/app/_not-found.rsc +18 -0
  34. package/.next/server/app/_not-found.segments/_full.segment.rsc +18 -0
  35. package/.next/server/app/_not-found.segments/_head.segment.rsc +6 -0
  36. package/.next/server/app/_not-found.segments/_index.segment.rsc +5 -0
  37. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +5 -0
  38. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +5 -0
  39. package/.next/server/app/_not-found.segments/_tree.segment.rsc +4 -0
  40. package/.next/server/app/api/agent/[id]/events/route.js +3 -0
  41. package/.next/server/app/api/agent/[id]/events/route.js.nft.json +1 -0
  42. package/.next/server/app/api/agent/[id]/events/route_client-reference-manifest.js +1 -0
  43. package/.next/server/app/api/agent/[id]/route.js +1 -0
  44. package/.next/server/app/api/agent/[id]/route.js.nft.json +1 -0
  45. package/.next/server/app/api/agent/[id]/route_client-reference-manifest.js +1 -0
  46. package/.next/server/app/api/agent/new/route.js +1 -0
  47. package/.next/server/app/api/agent/new/route.js.nft.json +1 -0
  48. package/.next/server/app/api/agent/new/route_client-reference-manifest.js +1 -0
  49. package/.next/server/app/api/auth/all-providers/route.js +1 -0
  50. package/.next/server/app/api/auth/all-providers/route.js.nft.json +1 -0
  51. package/.next/server/app/api/auth/all-providers/route_client-reference-manifest.js +1 -0
  52. package/.next/server/app/api/auth/api-key/[provider]/route.js +1 -0
  53. package/.next/server/app/api/auth/api-key/[provider]/route.js.nft.json +1 -0
  54. package/.next/server/app/api/auth/api-key/[provider]/route_client-reference-manifest.js +1 -0
  55. package/.next/server/app/api/auth/login/[provider]/route.js +1 -0
  56. package/.next/server/app/api/auth/login/[provider]/route.js.nft.json +1 -0
  57. package/.next/server/app/api/auth/login/[provider]/route_client-reference-manifest.js +1 -0
  58. package/.next/server/app/api/auth/login/route.js +1 -0
  59. package/.next/server/app/api/auth/login/route.js.nft.json +1 -0
  60. package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -0
  61. package/.next/server/app/api/auth/logout/[provider]/route.js +1 -0
  62. package/.next/server/app/api/auth/logout/[provider]/route.js.nft.json +1 -0
  63. package/.next/server/app/api/auth/logout/[provider]/route_client-reference-manifest.js +1 -0
  64. package/.next/server/app/api/auth/providers/route.js +1 -0
  65. package/.next/server/app/api/auth/providers/route.js.nft.json +1 -0
  66. package/.next/server/app/api/auth/providers/route_client-reference-manifest.js +1 -0
  67. package/.next/server/app/api/auth/status/route.js +1 -0
  68. package/.next/server/app/api/auth/status/route.js.nft.json +1 -0
  69. package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -0
  70. package/.next/server/app/api/default-cwd/route.js +1 -0
  71. package/.next/server/app/api/default-cwd/route.js.nft.json +1 -0
  72. package/.next/server/app/api/default-cwd/route_client-reference-manifest.js +1 -0
  73. package/.next/server/app/api/files/[...path]/route.js +4 -0
  74. package/.next/server/app/api/files/[...path]/route.js.nft.json +1 -0
  75. package/.next/server/app/api/files/[...path]/route_client-reference-manifest.js +1 -0
  76. package/.next/server/app/api/harness/route.js +1 -0
  77. package/.next/server/app/api/harness/route.js.nft.json +1 -0
  78. package/.next/server/app/api/harness/route_client-reference-manifest.js +1 -0
  79. package/.next/server/app/api/home/route.js +1 -0
  80. package/.next/server/app/api/home/route.js.nft.json +1 -0
  81. package/.next/server/app/api/home/route_client-reference-manifest.js +1 -0
  82. package/.next/server/app/api/internal/runtime/route.js +1 -0
  83. package/.next/server/app/api/internal/runtime/route.js.nft.json +1 -0
  84. package/.next/server/app/api/internal/runtime/route_client-reference-manifest.js +1 -0
  85. package/.next/server/app/api/models/route.js +1 -0
  86. package/.next/server/app/api/models/route.js.nft.json +1 -0
  87. package/.next/server/app/api/models/route_client-reference-manifest.js +1 -0
  88. package/.next/server/app/api/models-config/discover/route.js +1 -0
  89. package/.next/server/app/api/models-config/discover/route.js.nft.json +1 -0
  90. package/.next/server/app/api/models-config/discover/route_client-reference-manifest.js +1 -0
  91. package/.next/server/app/api/models-config/route.js +1 -0
  92. package/.next/server/app/api/models-config/route.js.nft.json +1 -0
  93. package/.next/server/app/api/models-config/route_client-reference-manifest.js +1 -0
  94. package/.next/server/app/api/models-config/test/route.js +1 -0
  95. package/.next/server/app/api/models-config/test/route.js.nft.json +1 -0
  96. package/.next/server/app/api/models-config/test/route_client-reference-manifest.js +1 -0
  97. package/.next/server/app/api/projects/browse/route.js +1 -0
  98. package/.next/server/app/api/projects/browse/route.js.nft.json +1 -0
  99. package/.next/server/app/api/projects/browse/route_client-reference-manifest.js +1 -0
  100. package/.next/server/app/api/projects/route.js +1 -0
  101. package/.next/server/app/api/projects/route.js.nft.json +1 -0
  102. package/.next/server/app/api/projects/route_client-reference-manifest.js +1 -0
  103. package/.next/server/app/api/reports/[id]/route.js +10 -0
  104. package/.next/server/app/api/reports/[id]/route.js.nft.json +1 -0
  105. package/.next/server/app/api/reports/[id]/route_client-reference-manifest.js +1 -0
  106. package/.next/server/app/api/search/route.js +1 -0
  107. package/.next/server/app/api/search/route.js.nft.json +1 -0
  108. package/.next/server/app/api/search/route_client-reference-manifest.js +1 -0
  109. package/.next/server/app/api/sessions/[id]/context/route.js +1 -0
  110. package/.next/server/app/api/sessions/[id]/context/route.js.nft.json +1 -0
  111. package/.next/server/app/api/sessions/[id]/context/route_client-reference-manifest.js +1 -0
  112. package/.next/server/app/api/sessions/[id]/route.js +1 -0
  113. package/.next/server/app/api/sessions/[id]/route.js.nft.json +1 -0
  114. package/.next/server/app/api/sessions/[id]/route_client-reference-manifest.js +1 -0
  115. package/.next/server/app/api/sessions/new/route.js +1 -0
  116. package/.next/server/app/api/sessions/new/route.js.nft.json +1 -0
  117. package/.next/server/app/api/sessions/new/route_client-reference-manifest.js +1 -0
  118. package/.next/server/app/api/sessions/route.js +1 -0
  119. package/.next/server/app/api/sessions/route.js.nft.json +1 -0
  120. package/.next/server/app/api/sessions/route_client-reference-manifest.js +1 -0
  121. package/.next/server/app/api/settings/route.js +1 -0
  122. package/.next/server/app/api/settings/route.js.nft.json +1 -0
  123. package/.next/server/app/api/settings/route_client-reference-manifest.js +1 -0
  124. package/.next/server/app/api/skills/install/route.js +5 -0
  125. package/.next/server/app/api/skills/install/route.js.nft.json +1 -0
  126. package/.next/server/app/api/skills/install/route_client-reference-manifest.js +1 -0
  127. package/.next/server/app/api/skills/route.js +6 -0
  128. package/.next/server/app/api/skills/route.js.nft.json +1 -0
  129. package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -0
  130. package/.next/server/app/api/skills/search/route.js +1 -0
  131. package/.next/server/app/api/skills/search/route.js.nft.json +1 -0
  132. package/.next/server/app/api/skills/search/route_client-reference-manifest.js +1 -0
  133. package/.next/server/app/api/soul/route.js +1 -0
  134. package/.next/server/app/api/soul/route.js.nft.json +1 -0
  135. package/.next/server/app/api/soul/route_client-reference-manifest.js +1 -0
  136. package/.next/server/app/api/version/route.js +1 -0
  137. package/.next/server/app/api/version/route.js.nft.json +1 -0
  138. package/.next/server/app/api/version/route_client-reference-manifest.js +1 -0
  139. package/.next/server/app/index.html +1 -0
  140. package/.next/server/app/index.meta +14 -0
  141. package/.next/server/app/index.rsc +17 -0
  142. package/.next/server/app/index.segments/__PAGE__.segment.rsc +6 -0
  143. package/.next/server/app/index.segments/_full.segment.rsc +17 -0
  144. package/.next/server/app/index.segments/_head.segment.rsc +6 -0
  145. package/.next/server/app/index.segments/_index.segment.rsc +5 -0
  146. package/.next/server/app/index.segments/_tree.segment.rsc +4 -0
  147. package/.next/server/app/login/page.js +2 -0
  148. package/.next/server/app/login/page.js.nft.json +1 -0
  149. package/.next/server/app/login/page_client-reference-manifest.js +1 -0
  150. package/.next/server/app/login.html +1 -0
  151. package/.next/server/app/login.meta +15 -0
  152. package/.next/server/app/login.rsc +22 -0
  153. package/.next/server/app/login.segments/_full.segment.rsc +22 -0
  154. package/.next/server/app/login.segments/_head.segment.rsc +6 -0
  155. package/.next/server/app/login.segments/_index.segment.rsc +5 -0
  156. package/.next/server/app/login.segments/_tree.segment.rsc +4 -0
  157. package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +9 -0
  158. package/.next/server/app/login.segments/login.segment.rsc +5 -0
  159. package/.next/server/app/page.js +261 -0
  160. package/.next/server/app/page.js.nft.json +1 -0
  161. package/.next/server/app/page_client-reference-manifest.js +1 -0
  162. package/.next/server/app-paths-manifest.json +39 -0
  163. package/.next/server/chunks/1048.js +1 -0
  164. package/.next/server/chunks/1367.js +77 -0
  165. package/.next/server/chunks/1381.js +1 -0
  166. package/.next/server/chunks/165.js +1 -0
  167. package/.next/server/chunks/1681.js +215 -0
  168. package/.next/server/chunks/1688.js +45 -0
  169. package/.next/server/chunks/1703.js +79 -0
  170. package/.next/server/chunks/1712.js +43 -0
  171. package/.next/server/chunks/1813.js +1 -0
  172. package/.next/server/chunks/2325.js +80 -0
  173. package/.next/server/chunks/258.js +1 -0
  174. package/.next/server/chunks/2671.js +287 -0
  175. package/.next/server/chunks/2778.js +1 -0
  176. package/.next/server/chunks/2943.js +1 -0
  177. package/.next/server/chunks/3031.js +226 -0
  178. package/.next/server/chunks/3181.js +1 -0
  179. package/.next/server/chunks/3493.js +1 -0
  180. package/.next/server/chunks/3672.js +1 -0
  181. package/.next/server/chunks/3701.js +104 -0
  182. package/.next/server/chunks/4013.js +1 -0
  183. package/.next/server/chunks/402.js +2 -0
  184. package/.next/server/chunks/4035.js +80 -0
  185. package/.next/server/chunks/4248.js +153 -0
  186. package/.next/server/chunks/4367.js +1 -0
  187. package/.next/server/chunks/4406.js +141 -0
  188. package/.next/server/chunks/4741.js +18 -0
  189. package/.next/server/chunks/4768.js +1 -0
  190. package/.next/server/chunks/4858.js +148 -0
  191. package/.next/server/chunks/4980.js +1 -0
  192. package/.next/server/chunks/5155.js +5 -0
  193. package/.next/server/chunks/5293.js +166 -0
  194. package/.next/server/chunks/5399.js +8 -0
  195. package/.next/server/chunks/5409.js +1 -0
  196. package/.next/server/chunks/5797.js +93 -0
  197. package/.next/server/chunks/5851.js +36 -0
  198. package/.next/server/chunks/6206.js +1 -0
  199. package/.next/server/chunks/6296.js +1 -0
  200. package/.next/server/chunks/63.js +45 -0
  201. package/.next/server/chunks/6346.js +1 -0
  202. package/.next/server/chunks/6406.js +23 -0
  203. package/.next/server/chunks/642.js +1 -0
  204. package/.next/server/chunks/6429.js +50 -0
  205. package/.next/server/chunks/6729.js +64 -0
  206. package/.next/server/chunks/6907.js +115 -0
  207. package/.next/server/chunks/6980.js +1 -0
  208. package/.next/server/chunks/7073.js +24 -0
  209. package/.next/server/chunks/7233.js +24 -0
  210. package/.next/server/chunks/7307.js +1 -0
  211. package/.next/server/chunks/7362.js +9 -0
  212. package/.next/server/chunks/7567.js +29 -0
  213. package/.next/server/chunks/7765.js +1 -0
  214. package/.next/server/chunks/7890.js +1 -0
  215. package/.next/server/chunks/8065.js +1 -0
  216. package/.next/server/chunks/8238.js +34 -0
  217. package/.next/server/chunks/8276.js +1 -0
  218. package/.next/server/chunks/8336.js +1 -0
  219. package/.next/server/chunks/8477.js +3 -0
  220. package/.next/server/chunks/8490.js +1 -0
  221. package/.next/server/chunks/8916.js +1 -0
  222. package/.next/server/chunks/9280.js +252 -0
  223. package/.next/server/chunks/9315.js +1 -0
  224. package/.next/server/chunks/9537.js +90 -0
  225. package/.next/server/chunks/966.js +1 -0
  226. package/.next/server/chunks/9818.js +21 -0
  227. package/.next/server/chunks/static/media/pdf.worker.min.c476e1a0.mjs +6 -0
  228. package/.next/server/functions-config-manifest.json +16 -0
  229. package/.next/server/interception-route-rewrite-manifest.js +1 -0
  230. package/.next/server/middleware-build-manifest.js +1 -0
  231. package/.next/server/middleware-manifest.json +6 -0
  232. package/.next/server/middleware-react-loadable-manifest.js +1 -0
  233. package/.next/server/middleware.js +18 -0
  234. package/.next/server/middleware.js.nft.json +1 -0
  235. package/.next/server/next-font-manifest.js +1 -0
  236. package/.next/server/next-font-manifest.json +1 -0
  237. package/.next/server/pages/404.html +1 -0
  238. package/.next/server/pages/500.html +1 -0
  239. package/.next/server/pages-manifest.json +4 -0
  240. package/.next/server/prefetch-hints.json +1 -0
  241. package/.next/server/server-reference-manifest.js +1 -0
  242. package/.next/server/server-reference-manifest.json +1 -0
  243. package/.next/server/webpack-runtime.js +1 -0
  244. package/.next/static/9tDQsVwah2dRfj3LNFKBR/_buildManifest.js +1 -0
  245. package/.next/static/9tDQsVwah2dRfj3LNFKBR/_ssgManifest.js +1 -0
  246. package/.next/static/chunks/0b9a0da7.9075af772487e743.js +62 -0
  247. package/.next/static/chunks/1413.922d232de90c0c41.js +115 -0
  248. package/.next/static/chunks/1643.467a526a1f24f54d.js +24 -0
  249. package/.next/static/chunks/1852.5543122f11aa7fed.js +1 -0
  250. package/.next/static/chunks/1960.b1e26436d7a5f586.js +1 -0
  251. package/.next/static/chunks/2170a4aa.4213bb2183c9cdf9.js +1 -0
  252. package/.next/static/chunks/2274.6cd173f80a1405a2.js +21 -0
  253. package/.next/static/chunks/2419.347fdfe3c170854d.js +166 -0
  254. package/.next/static/chunks/2619.9aac8983f30c7c8a.js +1 -0
  255. package/.next/static/chunks/2623.d20fabd8e18197c6.js +287 -0
  256. package/.next/static/chunks/2729.f5365061a849d659.js +34 -0
  257. package/.next/static/chunks/2821.934bcf60fbdc28c6.js +1 -0
  258. package/.next/static/chunks/2918becc.abff2ece1de37bc1.js +153 -0
  259. package/.next/static/chunks/2947.114e51cb06d1c01a.js +23 -0
  260. package/.next/static/chunks/3079.4c511fa1144e3adf.js +79 -0
  261. package/.next/static/chunks/3274.208ca44844cd7d95.js +148 -0
  262. package/.next/static/chunks/3308.465a94263d04bfea.js +73 -0
  263. package/.next/static/chunks/3325.e4bfe1ca657f3b5b.js +80 -0
  264. package/.next/static/chunks/3506.2a7eaa08b9f55337.js +90 -0
  265. package/.next/static/chunks/363642f4-043c1475ab9af70e.js +1 -0
  266. package/.next/static/chunks/3794-123fdf632563f469.js +32 -0
  267. package/.next/static/chunks/3837.a755ccfe6f9c1c1c.js +5 -0
  268. package/.next/static/chunks/394.91597771688df6d0.js +1 -0
  269. package/.next/static/chunks/3997.1009c06025691712.js +1 -0
  270. package/.next/static/chunks/4453.91a357dc43c21745.js +1 -0
  271. package/.next/static/chunks/4491.44fdf20580ac72bd.js +24 -0
  272. package/.next/static/chunks/4829.cf1d50e43e6d9db5.js +1 -0
  273. package/.next/static/chunks/498.fe1d9da9ecad6c36.js +1 -0
  274. package/.next/static/chunks/4bd1b696-e356ca5ba0218e27.js +1 -0
  275. package/.next/static/chunks/5019.b5a1a2b8daf17525.js +1 -0
  276. package/.next/static/chunks/5034.8f16c3fa3ce75411.js +1 -0
  277. package/.next/static/chunks/5074.d16651da01ec4e02.js +1 -0
  278. package/.next/static/chunks/51fb665c.0950e1b79671348d.js +45 -0
  279. package/.next/static/chunks/532.5956ed631aff722b.js +9 -0
  280. package/.next/static/chunks/5326.69460442bdcd6cd3.js +1 -0
  281. package/.next/static/chunks/5403.ff110bf5bf600758.js +64 -0
  282. package/.next/static/chunks/547.902a733488cfe3f7.js +77 -0
  283. package/.next/static/chunks/5567.540d7fc108ad6ee5.js +215 -0
  284. package/.next/static/chunks/5590.ef62922166d308b4.js +1 -0
  285. package/.next/static/chunks/5690.9d6eb1edb1399995.js +1 -0
  286. package/.next/static/chunks/5749.25faee4a1e55b854.js +226 -0
  287. package/.next/static/chunks/58bb9007.1ccb6bba34b4c635.js +80 -0
  288. package/.next/static/chunks/6121.f3f43f1896ea0cd9.js +1 -0
  289. package/.next/static/chunks/6600.583c88eef37aa524.js +1 -0
  290. package/.next/static/chunks/6696.a41aec266e657d54.js +141 -0
  291. package/.next/static/chunks/6922.42148793782d2fe7.js +1 -0
  292. package/.next/static/chunks/7006.e191611ffc2b9528.js +43 -0
  293. package/.next/static/chunks/7343.9fbb58204d8ac681.js +1 -0
  294. package/.next/static/chunks/73972abe.25a4cffa03b2bcef.js +119 -0
  295. package/.next/static/chunks/7547.58bda8a2aabba0d4.js +93 -0
  296. package/.next/static/chunks/7648.4ae2f183b4db0353.js +1 -0
  297. package/.next/static/chunks/7874.8db6929b94cdf697.js +1 -0
  298. package/.next/static/chunks/7959.1f20a35df316216a.js +104 -0
  299. package/.next/static/chunks/83.85d62d7fc9850b75.js +29 -0
  300. package/.next/static/chunks/8436.cab94b59cca0a8ff.js +1 -0
  301. package/.next/static/chunks/8451.ff6ff72b57dc52e1.js +1 -0
  302. package/.next/static/chunks/8489.45f22859734f514f.js +36 -0
  303. package/.next/static/chunks/8568.f85d8b36fc9a9037.js +1 -0
  304. package/.next/static/chunks/8771-3e14b6810486df1f.js +1 -0
  305. package/.next/static/chunks/8863.be51033a67436277.js +1 -0
  306. package/.next/static/chunks/90542734.dc1a2723e4f6affb.js +1 -0
  307. package/.next/static/chunks/9500.1488aec06ee78127.js +1 -0
  308. package/.next/static/chunks/9633.155548b5fca6e580.js +1 -0
  309. package/.next/static/chunks/9779.673004a62d70e36a.js +1 -0
  310. package/.next/static/chunks/app/_global-error/page-cc518af6b1ffb191.js +1 -0
  311. package/.next/static/chunks/app/_not-found/page-c72daab99269beff.js +1 -0
  312. package/.next/static/chunks/app/api/agent/[id]/events/route-cc518af6b1ffb191.js +1 -0
  313. package/.next/static/chunks/app/api/agent/[id]/route-cc518af6b1ffb191.js +1 -0
  314. package/.next/static/chunks/app/api/agent/new/route-cc518af6b1ffb191.js +1 -0
  315. package/.next/static/chunks/app/api/auth/all-providers/route-cc518af6b1ffb191.js +1 -0
  316. package/.next/static/chunks/app/api/auth/api-key/[provider]/route-cc518af6b1ffb191.js +1 -0
  317. package/.next/static/chunks/app/api/auth/login/[provider]/route-cc518af6b1ffb191.js +1 -0
  318. package/.next/static/chunks/app/api/auth/login/route-cc518af6b1ffb191.js +1 -0
  319. package/.next/static/chunks/app/api/auth/logout/[provider]/route-cc518af6b1ffb191.js +1 -0
  320. package/.next/static/chunks/app/api/auth/providers/route-cc518af6b1ffb191.js +1 -0
  321. package/.next/static/chunks/app/api/auth/status/route-cc518af6b1ffb191.js +1 -0
  322. package/.next/static/chunks/app/api/default-cwd/route-cc518af6b1ffb191.js +1 -0
  323. package/.next/static/chunks/app/api/files/[...path]/route-cc518af6b1ffb191.js +1 -0
  324. package/.next/static/chunks/app/api/harness/route-cc518af6b1ffb191.js +1 -0
  325. package/.next/static/chunks/app/api/home/route-cc518af6b1ffb191.js +1 -0
  326. package/.next/static/chunks/app/api/internal/runtime/route-cc518af6b1ffb191.js +1 -0
  327. package/.next/static/chunks/app/api/models/route-cc518af6b1ffb191.js +1 -0
  328. package/.next/static/chunks/app/api/models-config/discover/route-cc518af6b1ffb191.js +1 -0
  329. package/.next/static/chunks/app/api/models-config/route-cc518af6b1ffb191.js +1 -0
  330. package/.next/static/chunks/app/api/models-config/test/route-cc518af6b1ffb191.js +1 -0
  331. package/.next/static/chunks/app/api/projects/browse/route-cc518af6b1ffb191.js +1 -0
  332. package/.next/static/chunks/app/api/projects/route-cc518af6b1ffb191.js +1 -0
  333. package/.next/static/chunks/app/api/reports/[id]/route-cc518af6b1ffb191.js +1 -0
  334. package/.next/static/chunks/app/api/search/route-cc518af6b1ffb191.js +1 -0
  335. package/.next/static/chunks/app/api/sessions/[id]/context/route-cc518af6b1ffb191.js +1 -0
  336. package/.next/static/chunks/app/api/sessions/[id]/route-cc518af6b1ffb191.js +1 -0
  337. package/.next/static/chunks/app/api/sessions/new/route-cc518af6b1ffb191.js +1 -0
  338. package/.next/static/chunks/app/api/sessions/route-cc518af6b1ffb191.js +1 -0
  339. package/.next/static/chunks/app/api/settings/route-cc518af6b1ffb191.js +1 -0
  340. package/.next/static/chunks/app/api/skills/install/route-cc518af6b1ffb191.js +1 -0
  341. package/.next/static/chunks/app/api/skills/route-cc518af6b1ffb191.js +1 -0
  342. package/.next/static/chunks/app/api/skills/search/route-cc518af6b1ffb191.js +1 -0
  343. package/.next/static/chunks/app/api/soul/route-cc518af6b1ffb191.js +1 -0
  344. package/.next/static/chunks/app/api/version/route-cc518af6b1ffb191.js +1 -0
  345. package/.next/static/chunks/app/layout-be148b7ae915b22a.js +1 -0
  346. package/.next/static/chunks/app/login/page-ebf0e6de99062783.js +1 -0
  347. package/.next/static/chunks/app/page-a26fde41f0bbe84c.js +260 -0
  348. package/.next/static/chunks/d3ac728e.7964f816a1ca64e5.js +1 -0
  349. package/.next/static/chunks/framework-711ef29bc66f648c.js +1 -0
  350. package/.next/static/chunks/main-app-45a0f19af99d61b6.js +1 -0
  351. package/.next/static/chunks/main-f74964b7ae52493e.js +5 -0
  352. package/.next/static/chunks/next/dist/client/components/builtin/app-error-cc518af6b1ffb191.js +1 -0
  353. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-cc518af6b1ffb191.js +1 -0
  354. package/.next/static/chunks/next/dist/client/components/builtin/global-error-9bfa08b9491621f2.js +1 -0
  355. package/.next/static/chunks/next/dist/client/components/builtin/not-found-cc518af6b1ffb191.js +1 -0
  356. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-cc518af6b1ffb191.js +1 -0
  357. package/.next/static/chunks/polyfills-42372ed130431b0a.js +1 -0
  358. package/.next/static/chunks/webpack-fcf4a889ecbd753c.js +1 -0
  359. package/.next/static/css/45029451a1d7255d.css +3 -0
  360. package/.next/static/media/15605e25b523335c-s.woff2 +0 -0
  361. package/.next/static/media/1a3dce5cfb5f7760-s.woff2 +0 -0
  362. package/.next/static/media/1cdd02902f937a18-s.woff2 +0 -0
  363. package/.next/static/media/4c4b3b30b6bcb2be-s.woff2 +0 -0
  364. package/.next/static/media/641a7b8a5800ee0e-s.woff2 +0 -0
  365. package/.next/static/media/7deddc85b7ffd1dc-s.p.woff2 +0 -0
  366. package/.next/static/media/ec14413c594b3356-s.p.woff2 +0 -0
  367. package/.next/static/media/pdf.worker.min.29aaf158.mjs +6 -0
  368. package/package.json +21 -21
  369. package/app/api/agent/[id]/events/route.ts +0 -94
  370. package/app/api/agent/[id]/route.ts +0 -83
  371. package/app/api/agent/new/route.ts +0 -53
  372. package/app/api/auth/all-providers/route.ts +0 -21
  373. package/app/api/auth/api-key/[provider]/route.ts +0 -7
  374. package/app/api/auth/login/[provider]/route.ts +0 -7
  375. package/app/api/auth/login/route.ts +0 -22
  376. package/app/api/auth/logout/[provider]/route.ts +0 -7
  377. package/app/api/auth/providers/route.ts +0 -15
  378. package/app/api/auth/status/route.ts +0 -6
  379. package/app/api/default-cwd/route.ts +0 -22
  380. package/app/api/files/[...path]/route.ts +0 -621
  381. package/app/api/harness/route.ts +0 -47
  382. package/app/api/home/route.ts +0 -6
  383. package/app/api/internal/runtime/route.ts +0 -26
  384. package/app/api/models/route.ts +0 -67
  385. package/app/api/models-config/discover/route.ts +0 -42
  386. package/app/api/models-config/route.ts +0 -152
  387. package/app/api/models-config/test/route.ts +0 -154
  388. package/app/api/projects/browse/route.ts +0 -51
  389. package/app/api/projects/route.ts +0 -83
  390. package/app/api/reports/[id]/route.ts +0 -108
  391. package/app/api/search/route.ts +0 -122
  392. package/app/api/sessions/[id]/context/route.ts +0 -23
  393. package/app/api/sessions/[id]/route.ts +0 -124
  394. package/app/api/sessions/new/route.ts +0 -5
  395. package/app/api/sessions/route.ts +0 -16
  396. package/app/api/settings/route.ts +0 -51
  397. package/app/api/skills/install/route.ts +0 -249
  398. package/app/api/skills/route.ts +0 -161
  399. package/app/api/skills/search/route.ts +0 -121
  400. package/app/api/soul/route.ts +0 -47
  401. package/app/api/version/route.ts +0 -55
  402. package/app/globals.css +0 -736
  403. package/app/layout.tsx +0 -40
  404. package/app/login/page.tsx +0 -133
  405. package/app/page.tsx +0 -10
  406. package/components/AppShell.tsx +0 -1058
  407. package/components/ChatInput.tsx +0 -1103
  408. package/components/ChatMinimap.tsx +0 -381
  409. package/components/ChatWindow.tsx +0 -576
  410. package/components/CodeMirrorEditor.tsx +0 -137
  411. package/components/ConversationSearch.tsx +0 -369
  412. package/components/DataTableViewer.tsx +0 -248
  413. package/components/FileExplorer.tsx +0 -758
  414. package/components/FileIcons.tsx +0 -241
  415. package/components/FileViewer.tsx +0 -1273
  416. package/components/GlobalFileEditor.tsx +0 -98
  417. package/components/MarkdownRenderer.tsx +0 -331
  418. package/components/MermaidDiagram.tsx +0 -80
  419. package/components/MessageView.tsx +0 -1141
  420. package/components/ModelsConfig.tsx +0 -1991
  421. package/components/ProjectContext.tsx +0 -252
  422. package/components/ProjectFolderPicker.tsx +0 -202
  423. package/components/ProjectsConfig.tsx +0 -288
  424. package/components/ProviderIcons.tsx +0 -91
  425. package/components/ReportPanel.tsx +0 -237
  426. package/components/ResizeHandle.tsx +0 -105
  427. package/components/SessionSidebar.tsx +0 -1464
  428. package/components/SettingsDialog.tsx +0 -287
  429. package/components/SkillsConfig.tsx +0 -1093
  430. package/components/SubagentPanel.tsx +0 -191
  431. package/components/TabBar.tsx +0 -115
  432. package/components/ToolPanel.tsx +0 -131
  433. package/components/WidgetRenderer.tsx +0 -505
  434. package/components/viewers/DocumentToolbar.tsx +0 -78
  435. package/components/viewers/DocxViewer.tsx +0 -97
  436. package/components/viewers/PdfViewer.tsx +0 -206
  437. package/components/viewers/PptxViewer.tsx +0 -240
  438. package/components/viewers/XlsxViewer.tsx +0 -143
  439. package/hooks/useAgentSession.ts +0 -710
  440. package/hooks/useAudio.ts +0 -50
  441. package/hooks/useDragDrop.ts +0 -52
  442. package/hooks/useResizable.ts +0 -60
  443. package/hooks/useTheme.ts +0 -85
  444. package/lib/agent-client.ts +0 -39
  445. package/lib/annodex-config.ts +0 -556
  446. package/lib/auth-token.ts +0 -74
  447. package/lib/auth.ts +0 -90
  448. package/lib/brand.ts +0 -5
  449. package/lib/code-theme.ts +0 -32
  450. package/lib/codex-compat-proxy.ts +0 -1603
  451. package/lib/codex-home.ts +0 -6
  452. package/lib/codex-server.ts +0 -796
  453. package/lib/codex-session.ts +0 -590
  454. package/lib/codex-usage.ts +0 -213
  455. package/lib/file-paths.ts +0 -34
  456. package/lib/model-discovery.ts +0 -379
  457. package/lib/normalize.ts +0 -30
  458. package/lib/npx.ts +0 -87
  459. package/lib/pi-types.ts +0 -49
  460. package/lib/projects.ts +0 -269
  461. package/lib/provider-api.ts +0 -88
  462. package/lib/report-prompt.ts +0 -61
  463. package/lib/report-store.ts +0 -597
  464. package/lib/report-update-parser.ts +0 -66
  465. package/lib/rpc-manager.ts +0 -668
  466. package/lib/runtime-state.ts +0 -117
  467. package/lib/session-reader.ts +0 -903
  468. package/lib/session-runtime.ts +0 -105
  469. package/lib/subagent-progress.ts +0 -279
  470. package/lib/types.ts +0 -241
  471. package/lib/widget-export.ts +0 -318
  472. package/lib/widget-guidelines.ts +0 -288
  473. package/lib/widget-prompt.ts +0 -76
  474. package/lib/widget-utils.ts +0 -523
  475. package/postcss.config.mjs +0 -8
  476. package/proxy.ts +0 -64
  477. package/scripts/postinstall.cjs +0 -25
  478. package/tsconfig.json +0 -41
@@ -1,76 +0,0 @@
1
- export const WIDGET_SYSTEM_PROMPT = `<widget-capability>
2
- You can create interactive visualizations using the \`show-widget\` code fence.
3
-
4
- Use \`show-widget\` by default when visual output is the primary answer. This includes charts, diagrams, flowcharts, dashboards, UI prototypes, mockups, SVG illustrations, icons, logos, infographics, timelines, hierarchies, comparison views, and visual explanations.
5
-
6
- For diagrams, flowcharts, architecture maps, sequence-style explanations, and Markdown-to-diagram requests, prefer \`show-widget\` with SVG/HTML over Mermaid. Widgets stream more reliably in this UI. Use Mermaid only when the user explicitly asks for Mermaid source, raw Mermaid, raw Markdown, or a saved Mermaid/Markdown file.
7
-
8
- Format:
9
- \`\`\`show-widget
10
- {"title":"Human-readable title","widget_code":"<raw HTML/SVG string>"}
11
- \`\`\`
12
-
13
- Detailed specs:
14
- When a \`<widget-guidelines>\` block is present, follow it. It contains the module-specific design rules for the current request.
15
-
16
- Required rules:
17
- 1. \`widget_code\` is a JSON string: escape quotes and newlines. Always close the JSON object and fence.
18
- 2. Do not include DOCTYPE, html, head, body, iframe, object, embed, form, link, base, or meta tags.
19
- 3. Keep outer backgrounds transparent. The host supplies theme variables.
20
- 4. Use a single concise widget per fence. For multiple widgets, interleave prose and use a separate \`show-widget\` fence for each widget.
21
- 5. Streaming order: SVG puts \`<defs>\` before visible shapes; HTML uses \`<style>\`, then visible markup, then \`<script>\` last.
22
- 6. Prefer responsive SVG for static visuals and small HTML widgets for controls.
23
- 7. SVG widgets use \`<svg width="100%" viewBox="0 0 680 H">\` and keep all content inside the viewBox.
24
- 8. Interactive controls must visibly update the output. For Chart.js, call \`chart.update()\` after changes.
25
- 9. Clickable drill-down actions call \`window.__widgetSendMessage("short request")\`.
26
- 10. Cross-widget filters publish with \`window.__widgetPublish("topic", { key: "value" })\`; other widgets listen for \`widget-filter\`.
27
- 11. Allowed CDN hosts: \`cdnjs.cloudflare.com\`, \`cdn.jsdelivr.net\`, \`unpkg.com\`, \`esm.sh\`.
28
- 12. CDN scripts must use an \`onload\` initializer plus an \`if (window.Lib) init();\` fallback.
29
- 13. Use \`min-height\` instead of fixed outer \`height\` to prevent clipping.
30
- 14. Title should be human-readable in the user's language.
31
- 15. Put explanatory prose outside the code fence.
32
- 16. Do not output raw \`\`\`svg, \`\`\`html, or plain Mermaid for visual answers unless the user explicitly asks for source code, raw Markdown, raw Mermaid, or a saved file.
33
- 17. Do not convert Markdown outlines into Mermaid by default. Render them as a \`show-widget\` diagram unless Mermaid/source text is explicitly requested.
34
- </widget-capability>`;
35
-
36
- const WIDGET_BLOCK_PATTERN = /\n?\s*<widget-capability>[\s\S]*?<\/widget-capability>\s*/g;
37
- const HARNESS_BLOCK_PATTERN = /\n?\s*<visualization_harness>[\s\S]*?<\/visualization_harness>\s*/g;
38
- const GUIDELINES_BLOCK_PATTERN = /\n?\s*<widget-guidelines\b[^>]*>[\s\S]*?<\/widget-guidelines>\s*/g;
39
-
40
- export function isVisualizationHarness(content: string): boolean {
41
- const normalized = content.toLowerCase();
42
- return normalized.includes("show-widget")
43
- && (normalized.includes("# visualization harness")
44
- || normalized.includes("## when to visualize")
45
- || normalized.includes("widget format"));
46
- }
47
-
48
- export function hasVisualizationIntent(message: string): boolean {
49
- const normalized = message.toLowerCase();
50
- return /\b(chart|plot|graph|visuali[sz]e|diagram|flowchart|timeline|dashboard|prototype|mockup|wireframe|heatmap|scatter|histogram|tree map|treemap|svg|icon|logo|infographic|comparison|hierarchy|interactive ui|generative ui)\b/.test(normalized)
51
- || /图表|画图|绘图|可视化|流程图|架构图|时序图|原型图|交互式|仪表盘|看板|热图|散点图|折线图|柱状图|饼图|雷达图|网络图|桑基图|甘特图|图标|标志|logo|信息图|对比|层级|单细胞.*流程/.test(message);
52
- }
53
-
54
- export function stripWidgetPromptBlocks(systemPrompt: string): string {
55
- return systemPrompt
56
- .replace(WIDGET_BLOCK_PATTERN, "\n")
57
- .replace(HARNESS_BLOCK_PATTERN, "\n")
58
- .replace(GUIDELINES_BLOCK_PATTERN, "\n")
59
- .replace(/\n{3,}/g, "\n\n")
60
- .trim();
61
- }
62
-
63
- export function withWidgetCapabilityPrompt(systemPrompt: string): string {
64
- if (systemPrompt.includes("<widget-capability>")) return systemPrompt;
65
- return systemPrompt.trim()
66
- ? `${WIDGET_SYSTEM_PROMPT}\n\n${systemPrompt}`
67
- : WIDGET_SYSTEM_PROMPT;
68
- }
69
-
70
- export function withVisualizationHarness(systemPrompt: string, harness: string): string {
71
- const content = harness.trim();
72
- if (!content || systemPrompt.includes("<visualization_harness>")) return systemPrompt;
73
- return systemPrompt.trim()
74
- ? `${systemPrompt.trimEnd()}\n\n<visualization_harness>\n${content}\n</visualization_harness>`
75
- : `<visualization_harness>\n${content}\n</visualization_harness>`;
76
- }
@@ -1,523 +0,0 @@
1
- export interface TextSegment {
2
- type: "text";
3
- content: string;
4
- }
5
-
6
- export interface WidgetSegment {
7
- type: "widget";
8
- title?: string;
9
- code: string;
10
- partial?: boolean;
11
- showOverlay?: boolean;
12
- }
13
-
14
- export type ContentSegment = TextSegment | WidgetSegment;
15
-
16
- /**
17
- * Parse show-widget fences from markdown text. The parser is deliberately
18
- * tolerant because streamed model output often contains incomplete fences or
19
- * partial JSON while the widget is still being generated.
20
- */
21
- export function parseShowWidgets(text: string): ContentSegment[] {
22
- const segments: ContentSegment[] = [];
23
- const markerRegex = /`{1,3}show-widget`{0,3}\s*(?:\n\s*`{3}(?:json|html)?\s*)?\n?/g;
24
- let lastIndex = 0;
25
- let match: RegExpExecArray | null;
26
- let sawMarker = false;
27
-
28
- while ((match = markerRegex.exec(text)) !== null) {
29
- sawMarker = true;
30
- const before = text.slice(lastIndex, match.index).trim();
31
- if (before) segments.push({ type: "text", content: before });
32
-
33
- const afterMarker = match.index + match[0].length;
34
- const fenceClose = text.indexOf("```", afterMarker);
35
- const jsonStart = text.indexOf("{", afterMarker);
36
- const hasNearbyJson =
37
- jsonStart !== -1 &&
38
- jsonStart <= afterMarker + 200 &&
39
- (fenceClose === -1 || jsonStart < fenceClose);
40
-
41
- if (hasNearbyJson) {
42
- const jsonEnd = findJsonEnd(text, jsonStart);
43
- if (jsonEnd === -1) {
44
- const partial = extractTruncatedWidget(text.slice(jsonStart));
45
- if (partial) segments.push({ type: "widget", ...partial, partial: true });
46
- lastIndex = text.length;
47
- break;
48
- }
49
-
50
- const parsed = parseWidgetContent(text.slice(jsonStart, jsonEnd + 1).trim());
51
- if (parsed) segments.push({ type: "widget", ...parsed });
52
-
53
- let endPos = jsonEnd + 1;
54
- const trailingFence = text.slice(endPos, endPos + 16).match(/^\s*\n?`{1,3}\s*/);
55
- if (trailingFence) endPos += trailingFence[0].length;
56
- lastIndex = endPos;
57
- markerRegex.lastIndex = endPos;
58
- continue;
59
- }
60
-
61
- if (fenceClose !== -1) {
62
- const raw = text.slice(afterMarker, fenceClose).trim();
63
- const parsed = parseWidgetContent(raw);
64
- if (parsed) {
65
- segments.push({ type: "widget", ...parsed });
66
- } else if (raw) {
67
- segments.push({ type: "text", content: raw });
68
- }
69
- lastIndex = fenceClose + 3;
70
- markerRegex.lastIndex = lastIndex;
71
- } else {
72
- const raw = text.slice(afterMarker).trim();
73
- const parsed = parseWidgetContent(raw);
74
- if (parsed) {
75
- const truncated = truncateUnclosedScript(parsed.code);
76
- segments.push({
77
- type: "widget",
78
- title: parsed.title,
79
- code: truncated.code,
80
- partial: true,
81
- showOverlay: truncated.truncated,
82
- });
83
- }
84
- lastIndex = text.length;
85
- break;
86
- }
87
- }
88
-
89
- const after = text.slice(lastIndex).trim();
90
- if (after) segments.push({ type: "text", content: after });
91
-
92
- if (!sawMarker && segments.length === 0 && text.trim()) {
93
- segments.push({ type: "text", content: text });
94
- }
95
-
96
- return segments;
97
- }
98
-
99
- function parseWidgetContent(raw: string): { title?: string; code: string } | null {
100
- if (raw.startsWith("{")) {
101
- if (!raw.endsWith("}")) return null;
102
- try {
103
- const obj = JSON.parse(raw) as { title?: string; widget_code?: string; code?: string };
104
- const code = obj.widget_code ?? obj.code;
105
- if (code) {
106
- return { title: obj.title, code };
107
- }
108
- } catch {
109
- return null;
110
- }
111
- }
112
-
113
- if (/<(!DOCTYPE|html|svg|canvas|script|style|div)/i.test(raw)) {
114
- return { code: raw };
115
- }
116
-
117
- return null;
118
- }
119
-
120
- function findJsonEnd(text: string, start: number): number {
121
- let depth = 0;
122
- let inString = false;
123
- let escaped = false;
124
- for (let i = start; i < text.length; i++) {
125
- const ch = text[i];
126
- if (escaped) {
127
- escaped = false;
128
- continue;
129
- }
130
- if (ch === "\\" && inString) {
131
- escaped = true;
132
- continue;
133
- }
134
- if (ch === "\"") {
135
- inString = !inString;
136
- continue;
137
- }
138
- if (inString) continue;
139
- if (ch === "{") depth++;
140
- if (ch === "}") {
141
- depth--;
142
- if (depth === 0) return i;
143
- }
144
- }
145
- return -1;
146
- }
147
-
148
- function extractTruncatedWidget(fenceBody: string): { title?: string; code: string; showOverlay?: boolean } | null {
149
- try {
150
- const parsed = parseWidgetContent(fenceBody);
151
- if (parsed) return parsed;
152
- } catch {
153
- // Expected for partial JSON.
154
- }
155
-
156
- const keyIdx = fenceBody.indexOf("\"widget_code\"");
157
- if (keyIdx === -1) return null;
158
- const colonIdx = fenceBody.indexOf(":", keyIdx + 13);
159
- if (colonIdx === -1) return null;
160
- const quoteIdx = fenceBody.indexOf("\"", colonIdx + 1);
161
- if (quoteIdx === -1) return null;
162
-
163
- let raw = fenceBody.slice(quoteIdx + 1);
164
- raw = raw.replace(/"\s*\}\s*$/, "");
165
- if (raw.endsWith("\\")) raw = raw.slice(0, -1);
166
-
167
- const title = fenceBody.match(/"title"\s*:\s*"([^"]*?)"/)?.[1];
168
- const code = raw
169
- .replace(/\\\\/g, "\x00BACKSLASH\x00")
170
- .replace(/\\n/g, "\n")
171
- .replace(/\\t/g, "\t")
172
- .replace(/\\r/g, "\r")
173
- .replace(/\\"/g, "\"")
174
- .replace(/\\u([0-9a-fA-F]{4})/g, (_m, hex: string) => String.fromCharCode(parseInt(hex, 16)))
175
- .replace(/\x00BACKSLASH\x00/g, "\\");
176
-
177
- const truncated = truncateUnclosedScript(code);
178
- if (!truncated.code.trim()) return null;
179
- return { title, code: truncated.code, showOverlay: truncated.truncated };
180
- }
181
-
182
- function truncateUnclosedScript(code: string): { code: string; truncated: boolean } {
183
- const lastScript = code.lastIndexOf("<script");
184
- if (lastScript === -1) return { code, truncated: false };
185
- const afterScript = code.slice(lastScript);
186
- if (/<script[\s\S]*?<\/script>/i.test(afterScript)) {
187
- return { code, truncated: false };
188
- }
189
- return { code: code.slice(0, lastScript).trim(), truncated: true };
190
- }
191
-
192
- /**
193
- * Check if text contains any show-widget fences (including partial ones during streaming).
194
- */
195
- export function hasWidgetFence(text: string): boolean {
196
- return /`{1,3}show-widget/.test(text);
197
- }
198
-
199
- /**
200
- * Sanitize widget HTML for streaming preview. Preview mode intentionally
201
- * removes scripts and event handlers so partial JS is never shown as text.
202
- */
203
- export function sanitizeForIframe(code: string): string {
204
- return stripDangerousEmbeds(code);
205
- }
206
-
207
- export function sanitizeForStreaming(code: string): string {
208
- return stripDangerousEmbeds(code)
209
- .replace(/\s+on[a-z]+\s*=\s*(?:"[^"]*"|'[^']*'|[^\s>"']*)/gi, "")
210
- .replace(/<script[\s\S]*?<\/script>/gi, "")
211
- .replace(/<script\b[^>]*\/?>/gi, "")
212
- .replace(/\s+(href|src|action)\s*=\s*(?:"([^"]*)"|'([^']*)'|([^\s>"']*))/gi, (match, _attr: string, dq?: string, sq?: string, uq?: string) => {
213
- const url = (dq ?? sq ?? uq ?? "").trim();
214
- return /^\s*(javascript|data)\s*:/i.test(url) ? "" : match;
215
- });
216
- }
217
-
218
- const DANGEROUS_TAGS = /<(iframe|object|embed|meta|link|base|form)[\s>][\s\S]*?<\/\1>/gi;
219
- const DANGEROUS_VOID = /<(iframe|object|embed|meta|link|base)\b[^>]*\/?>/gi;
220
-
221
- function stripDangerousEmbeds(code: string): string {
222
- return code.replace(DANGEROUS_TAGS, "").replace(DANGEROUS_VOID, "");
223
- }
224
-
225
- const THEME_VAR_NAMES = [
226
- "--bg",
227
- "--bg-panel",
228
- "--bg-hover",
229
- "--bg-selected",
230
- "--border",
231
- "--text",
232
- "--text-muted",
233
- "--text-dim",
234
- "--accent",
235
- "--accent-hover",
236
- ];
237
-
238
- export function resolveWidgetThemeVars(): Record<string, string> {
239
- if (typeof document === "undefined") return {};
240
- const computed = getComputedStyle(document.documentElement);
241
- const vars: Record<string, string> = {};
242
- for (const name of THEME_VAR_NAMES) {
243
- const value = computed.getPropertyValue(name).trim();
244
- if (value) vars[name] = value;
245
- }
246
- return vars;
247
- }
248
-
249
- export function getWidgetIframeStyleBlock(vars: Record<string, string>): string {
250
- const mergedVars = {
251
- "--bg": "#ffffff",
252
- "--bg-panel": "#f5f5f5",
253
- "--bg-hover": "#eeeeee",
254
- "--bg-selected": "#e8e8e8",
255
- "--border": "#e0e0e0",
256
- "--text": "#1a1a1a",
257
- "--text-muted": "#6b7280",
258
- "--text-dim": "#9ca3af",
259
- "--accent": "#2563eb",
260
- "--accent-hover": "#1d4ed8",
261
- ...vars,
262
- "--font-mono": "ui-monospace, SFMono-Regular, Menlo, Consolas, monospace",
263
- };
264
- const rootVars = Object.entries(mergedVars)
265
- .map(([key, value]) => ` ${key}: ${value};`)
266
- .join("\n");
267
-
268
- return `
269
- :root {
270
- ${rootVars}
271
- }
272
- .dark { color-scheme: dark; }
273
- body {
274
- --color-background-primary: var(--bg, #fff);
275
- --color-background-secondary: var(--bg-panel, #f5f5f5);
276
- --color-background-tertiary: var(--bg-hover, #eee);
277
- --color-text-primary: var(--text, #1a1a1a);
278
- --color-text-secondary: var(--text-muted, #6b7280);
279
- --color-text-tertiary: var(--text-dim, #9ca3af);
280
- --color-border-tertiary: var(--border, #e0e0e0);
281
- --color-border-secondary: var(--border, #e0e0e0);
282
- --color-border-primary: var(--accent, #2563eb);
283
- --font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;
284
- --border-radius-md: 8px;
285
- --border-radius-lg: 12px;
286
- margin: 0;
287
- padding: 0;
288
- font-family: var(--font-sans);
289
- font-size: 14px;
290
- line-height: 1.6;
291
- color: var(--color-text-primary);
292
- background: transparent;
293
- }
294
- * { box-sizing: border-box; }
295
- svg { max-width: 100%; height: auto; display: block; }
296
- a { color: var(--accent, #2563eb); }
297
- button, input, select, textarea { font: inherit; }
298
- button {
299
- border: 1px solid var(--color-border-tertiary);
300
- border-radius: var(--border-radius-md);
301
- background: var(--color-background-secondary);
302
- color: var(--color-text-primary);
303
- padding: 5px 10px;
304
- cursor: pointer;
305
- }
306
- button:hover { background: var(--color-background-tertiary); }
307
- input[type="range"] { accent-color: var(--accent, #2563eb); }
308
- `;
309
- }
310
-
311
- export function buildReceiverSrcdoc(styleBlock = "", isDark = false): string {
312
- const csp = [
313
- "default-src 'none'",
314
- "script-src 'unsafe-inline' https://cdnjs.cloudflare.com https://cdn.jsdelivr.net https://unpkg.com https://esm.sh",
315
- "style-src 'unsafe-inline'",
316
- "img-src * data: blob:",
317
- "font-src * data:",
318
- "connect-src 'none'",
319
- ].join("; ");
320
-
321
- return `<!DOCTYPE html>
322
- <html class="${isDark ? "dark" : ""}">
323
- <head>
324
- <meta charset="utf-8">
325
- <meta name="viewport" content="width=device-width,initial-scale=1">
326
- <meta http-equiv="Content-Security-Policy" content="${csp}">
327
- <style>
328
- ${styleBlock}
329
- </style>
330
- </head>
331
- <body>
332
- <div id="__root" style="height:fit-content;"></div>
333
- <script>
334
- (function() {
335
- var root = document.getElementById("__root");
336
- var timer = null;
337
- var first = true;
338
- var lastHeight = 0;
339
-
340
- function notifyReady() {
341
- parent.postMessage({ type: "widget:ready" }, "*");
342
- }
343
-
344
- function reportHeight() {
345
- if (timer) clearTimeout(timer);
346
- timer = setTimeout(function() {
347
- var rect = root.getBoundingClientRect();
348
- var h = Math.ceil(Math.max(rect.height, document.body.scrollHeight, document.documentElement.scrollHeight));
349
- if (h > 0 && h !== lastHeight) {
350
- lastHeight = h;
351
- parent.postMessage({ type: "widget:resize", height: h, first: first }, "*");
352
- }
353
- first = false;
354
- }, 60);
355
- }
356
-
357
- function handleUpdate(html) {
358
- root.innerHTML = html;
359
- reportHeight();
360
- }
361
-
362
- function handleFinalize(html) {
363
- var tmp = document.createElement("div");
364
- tmp.innerHTML = html;
365
- var nodes = tmp.querySelectorAll("script");
366
- var scripts = [];
367
- for (var i = 0; i < nodes.length; i++) {
368
- var item = { src: nodes[i].src || "", text: nodes[i].textContent || "", attrs: [] };
369
- for (var j = 0; j < nodes[i].attributes.length; j++) {
370
- var attr = nodes[i].attributes[j];
371
- if (attr.name !== "src" && attr.name !== "onload") item.attrs.push({ name: attr.name, value: attr.value });
372
- }
373
- scripts.push(item);
374
- nodes[i].remove();
375
- }
376
- var visualHtml = tmp.innerHTML;
377
- if (root.innerHTML !== visualHtml) root.innerHTML = visualHtml;
378
-
379
- var cdnScripts = scripts.filter(function(s) { return !!s.src; });
380
- var inlineScripts = scripts.filter(function(s) { return !s.src && s.text; });
381
- function appendInline() {
382
- for (var k = 0; k < inlineScripts.length; k++) {
383
- var s = document.createElement("script");
384
- s.textContent = inlineScripts[k].text;
385
- for (var a = 0; a < inlineScripts[k].attrs.length; a++) {
386
- s.setAttribute(inlineScripts[k].attrs[a].name, inlineScripts[k].attrs[a].value);
387
- }
388
- root.appendChild(s);
389
- }
390
- reportHeight();
391
- setTimeout(function() { parent.postMessage({ type: "widget:scriptsReady" }, "*"); }, 50);
392
- }
393
- if (cdnScripts.length === 0) {
394
- appendInline();
395
- } else {
396
- var pending = cdnScripts.length;
397
- function done() { pending--; if (pending <= 0) appendInline(); }
398
- for (var c = 0; c < cdnScripts.length; c++) {
399
- var n = document.createElement("script");
400
- n.src = cdnScripts[c].src;
401
- n.onload = done;
402
- n.onerror = done;
403
- for (var d = 0; d < cdnScripts[c].attrs.length; d++) {
404
- n.setAttribute(cdnScripts[c].attrs[d].name, cdnScripts[c].attrs[d].value);
405
- }
406
- root.appendChild(n);
407
- }
408
- }
409
- reportHeight();
410
- setTimeout(reportHeight, 150);
411
- setTimeout(reportHeight, 600);
412
- }
413
-
414
- function handleTheme(vars) {
415
- Object.entries(vars || {}).forEach(function(_a) {
416
- var key = _a[0], val = _a[1];
417
- document.documentElement.style.setProperty(key, val);
418
- });
419
- if (typeof arguments[1] === "boolean") {
420
- document.documentElement.className = arguments[1] ? "dark" : "";
421
- }
422
- reportHeight();
423
- }
424
-
425
- function captureRenderedWidget(requestId) {
426
- try {
427
- var html = root.innerHTML;
428
- var styles = "";
429
- var styleEls = document.querySelectorAll("style");
430
- for (var si = 0; si < styleEls.length; si++) {
431
- styles += styleEls[si].textContent || "";
432
- }
433
-
434
- var canvases = document.querySelectorAll("canvas");
435
- var snapshots = [];
436
- var placeholders = [];
437
- var hidden = [];
438
- for (var ci = 0; ci < canvases.length; ci++) {
439
- try {
440
- var canvas = canvases[ci];
441
- var placeholder = document.createElement("img");
442
- placeholder.setAttribute("data-canvas-export", String(ci));
443
- placeholder.style.cssText = "width:" + canvas.offsetWidth + "px;height:" + canvas.offsetHeight + "px;display:block;";
444
- canvas.parentNode.insertBefore(placeholder, canvas);
445
- placeholders.push(placeholder);
446
- hidden.push({ node: canvas, display: canvas.style.display });
447
- canvas.style.display = "none";
448
- snapshots.push({
449
- dataUrl: canvas.toDataURL("image/png"),
450
- width: canvas.offsetWidth,
451
- height: canvas.offsetHeight,
452
- });
453
- } catch (_err) {
454
- snapshots.push(null);
455
- }
456
- }
457
-
458
- html = root.innerHTML;
459
-
460
- for (var pi = 0; pi < placeholders.length; pi++) {
461
- placeholders[pi].remove();
462
- }
463
- for (var hi = 0; hi < hidden.length; hi++) {
464
- hidden[hi].node.style.display = hidden[hi].display;
465
- }
466
-
467
- parent.postMessage({
468
- type: "widget:captured",
469
- requestId: requestId,
470
- html: html,
471
- styles: styles,
472
- canvases: snapshots,
473
- bodyWidth: document.body.scrollWidth,
474
- bodyHeight: document.body.scrollHeight,
475
- }, "*");
476
- } catch (_err) {
477
- parent.postMessage({ type: "widget:captured", requestId: requestId, html: null }, "*");
478
- }
479
- }
480
-
481
- var ro = new ResizeObserver(reportHeight);
482
- ro.observe(root);
483
-
484
- window.addEventListener("message", function(e) {
485
- if (!e.data || typeof e.data.type !== "string") return;
486
- switch (e.data.type) {
487
- case "widget:update": handleUpdate(e.data.html || ""); break;
488
- case "widget:finalize": handleFinalize(e.data.html || ""); break;
489
- case "widget:theme": handleTheme(e.data.vars, e.data.isDark); break;
490
- case "widget:capture": captureRenderedWidget(e.data.requestId); break;
491
- case "widget:crossFilter":
492
- window.dispatchEvent(new CustomEvent("widget-filter", { detail: e.data.payload }));
493
- break;
494
- }
495
- });
496
-
497
- document.addEventListener("click", function(e) {
498
- var a = e.target && e.target.closest ? e.target.closest("a[href]") : null;
499
- if (!a) return;
500
- var href = a.getAttribute("href");
501
- if (!href || href.charAt(0) === "#") return;
502
- e.preventDefault();
503
- parent.postMessage({ type: "widget:link", href: href }, "*");
504
- });
505
-
506
- window.__widgetSendMessage = function(text) {
507
- if (typeof text === "string" && text.length <= 500) {
508
- parent.postMessage({ type: "widget:sendMessage", text: text }, "*");
509
- }
510
- };
511
-
512
- window.__widgetPublish = function(topic, data) {
513
- if (typeof topic === "string") {
514
- parent.postMessage({ type: "widget:publish", topic: topic, data: data }, "*");
515
- }
516
- };
517
-
518
- notifyReady();
519
- })();
520
- </script>
521
- </body>
522
- </html>`;
523
- }
@@ -1,8 +0,0 @@
1
- /** @type {import('postcss').Config} */
2
- const config = {
3
- plugins: {
4
- "@tailwindcss/postcss": {},
5
- },
6
- };
7
-
8
- export default config;
package/proxy.ts DELETED
@@ -1,64 +0,0 @@
1
- import { existsSync, readFileSync } from "fs";
2
- import { homedir } from "os";
3
- import { join } from "path";
4
- import { NextResponse } from "next/server";
5
- import type { NextRequest } from "next/server";
6
- import { verifyAuthToken, COOKIE_NAME, LEGACY_COOKIE_NAME, PIDEX_COOKIE_NAME } from "@/lib/auth-token";
7
-
8
- interface AuthConfig {
9
- passwordHash?: string;
10
- enabled?: boolean;
11
- }
12
-
13
- function getAuthConfig(): AuthConfig | null {
14
- try {
15
- const agentDir = process.env.ANNODEX_CONFIG_DIR
16
- ?? process.env.ANNOVIBE_CONFIG_DIR
17
- ?? join(homedir(), ".config", "annodex");
18
- const authFile = join(agentDir, "web-auth.json");
19
- if (!existsSync(authFile)) return null;
20
- return JSON.parse(readFileSync(authFile, "utf8")) as AuthConfig;
21
- } catch {
22
- return null;
23
- }
24
- }
25
-
26
- function isPublicPath(pathname: string): boolean {
27
- return pathname === "/login" ||
28
- pathname === "/api/auth/login" ||
29
- pathname === "/api/auth/status";
30
- }
31
-
32
- function isAuthEnabled(config: AuthConfig | null): config is AuthConfig & { passwordHash: string } {
33
- return config?.enabled !== false && !!config?.passwordHash;
34
- }
35
-
36
- export async function proxy(request: NextRequest) {
37
- const { pathname, search } = request.nextUrl;
38
- const authConfig = getAuthConfig();
39
-
40
- if (!isAuthEnabled(authConfig)) return NextResponse.next();
41
- if (isPublicPath(pathname)) return NextResponse.next();
42
-
43
- const token = request.cookies.get(COOKIE_NAME)?.value
44
- ?? request.cookies.get(LEGACY_COOKIE_NAME)?.value
45
- ?? request.cookies.get(PIDEX_COOKIE_NAME)?.value;
46
- if (token && await verifyAuthToken(token, authConfig.passwordHash)) {
47
- return NextResponse.next();
48
- }
49
-
50
- if (pathname.startsWith("/api/")) {
51
- return NextResponse.json({ error: "Authentication required" }, { status: 401 });
52
- }
53
-
54
- const loginUrl = new URL("/login", request.url);
55
- const redirect = `${pathname}${search}`;
56
- if (redirect !== "/") loginUrl.searchParams.set("redirect", redirect);
57
- return NextResponse.redirect(loginUrl);
58
- }
59
-
60
- export const config = {
61
- matcher: [
62
- "/((?!_next/static|_next/image|favicon.ico|public).*)",
63
- ],
64
- };
@@ -1,25 +0,0 @@
1
- #!/usr/bin/env node
2
- "use strict";
3
-
4
- const { existsSync } = require("node:fs");
5
- const { join } = require("node:path");
6
- const { execFileSync } = require("node:child_process");
7
-
8
- const pkgDir = join(__dirname, "..");
9
- const nextDir = join(pkgDir, ".next");
10
-
11
- if (existsSync(nextDir)) {
12
- process.exit(0);
13
- }
14
-
15
- console.log("annodex: building Next.js artifacts...");
16
-
17
- const nextBin = require.resolve("next/dist/bin/next", { paths: [pkgDir] });
18
- execFileSync(process.execPath, [nextBin, "build", "--webpack"], {
19
- cwd: pkgDir,
20
- stdio: "inherit",
21
- env: {
22
- ...process.env,
23
- NEXT_TELEMETRY_DISABLED: "1",
24
- },
25
- });