@seqyuan/annodex 0.1.12 → 0.1.13

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/chunks/0b9a0da7.9075af772487e743.js +62 -0
  245. package/.next/static/chunks/1413.922d232de90c0c41.js +115 -0
  246. package/.next/static/chunks/1643.467a526a1f24f54d.js +24 -0
  247. package/.next/static/chunks/1852.5543122f11aa7fed.js +1 -0
  248. package/.next/static/chunks/1960.b1e26436d7a5f586.js +1 -0
  249. package/.next/static/chunks/2170a4aa.4213bb2183c9cdf9.js +1 -0
  250. package/.next/static/chunks/2274.6cd173f80a1405a2.js +21 -0
  251. package/.next/static/chunks/2419.347fdfe3c170854d.js +166 -0
  252. package/.next/static/chunks/2619.9aac8983f30c7c8a.js +1 -0
  253. package/.next/static/chunks/2623.d20fabd8e18197c6.js +287 -0
  254. package/.next/static/chunks/2729.f5365061a849d659.js +34 -0
  255. package/.next/static/chunks/2821.934bcf60fbdc28c6.js +1 -0
  256. package/.next/static/chunks/2918becc.abff2ece1de37bc1.js +153 -0
  257. package/.next/static/chunks/2947.114e51cb06d1c01a.js +23 -0
  258. package/.next/static/chunks/3079.4c511fa1144e3adf.js +79 -0
  259. package/.next/static/chunks/3274.208ca44844cd7d95.js +148 -0
  260. package/.next/static/chunks/3308.465a94263d04bfea.js +73 -0
  261. package/.next/static/chunks/3325.e4bfe1ca657f3b5b.js +80 -0
  262. package/.next/static/chunks/3506.2a7eaa08b9f55337.js +90 -0
  263. package/.next/static/chunks/363642f4-043c1475ab9af70e.js +1 -0
  264. package/.next/static/chunks/3794-123fdf632563f469.js +32 -0
  265. package/.next/static/chunks/3837.a755ccfe6f9c1c1c.js +5 -0
  266. package/.next/static/chunks/394.91597771688df6d0.js +1 -0
  267. package/.next/static/chunks/3997.1009c06025691712.js +1 -0
  268. package/.next/static/chunks/4453.91a357dc43c21745.js +1 -0
  269. package/.next/static/chunks/4491.44fdf20580ac72bd.js +24 -0
  270. package/.next/static/chunks/4829.cf1d50e43e6d9db5.js +1 -0
  271. package/.next/static/chunks/498.fe1d9da9ecad6c36.js +1 -0
  272. package/.next/static/chunks/4bd1b696-e356ca5ba0218e27.js +1 -0
  273. package/.next/static/chunks/5019.b5a1a2b8daf17525.js +1 -0
  274. package/.next/static/chunks/5034.8f16c3fa3ce75411.js +1 -0
  275. package/.next/static/chunks/5074.d16651da01ec4e02.js +1 -0
  276. package/.next/static/chunks/51fb665c.0950e1b79671348d.js +45 -0
  277. package/.next/static/chunks/532.5956ed631aff722b.js +9 -0
  278. package/.next/static/chunks/5326.69460442bdcd6cd3.js +1 -0
  279. package/.next/static/chunks/5403.ff110bf5bf600758.js +64 -0
  280. package/.next/static/chunks/547.902a733488cfe3f7.js +77 -0
  281. package/.next/static/chunks/5567.540d7fc108ad6ee5.js +215 -0
  282. package/.next/static/chunks/5590.ef62922166d308b4.js +1 -0
  283. package/.next/static/chunks/5690.9d6eb1edb1399995.js +1 -0
  284. package/.next/static/chunks/5749.25faee4a1e55b854.js +226 -0
  285. package/.next/static/chunks/58bb9007.1ccb6bba34b4c635.js +80 -0
  286. package/.next/static/chunks/6121.f3f43f1896ea0cd9.js +1 -0
  287. package/.next/static/chunks/6600.583c88eef37aa524.js +1 -0
  288. package/.next/static/chunks/6696.a41aec266e657d54.js +141 -0
  289. package/.next/static/chunks/6922.42148793782d2fe7.js +1 -0
  290. package/.next/static/chunks/7006.e191611ffc2b9528.js +43 -0
  291. package/.next/static/chunks/7343.9fbb58204d8ac681.js +1 -0
  292. package/.next/static/chunks/73972abe.25a4cffa03b2bcef.js +119 -0
  293. package/.next/static/chunks/7547.58bda8a2aabba0d4.js +93 -0
  294. package/.next/static/chunks/7648.4ae2f183b4db0353.js +1 -0
  295. package/.next/static/chunks/7874.8db6929b94cdf697.js +1 -0
  296. package/.next/static/chunks/7959.1f20a35df316216a.js +104 -0
  297. package/.next/static/chunks/83.85d62d7fc9850b75.js +29 -0
  298. package/.next/static/chunks/8436.cab94b59cca0a8ff.js +1 -0
  299. package/.next/static/chunks/8451.ff6ff72b57dc52e1.js +1 -0
  300. package/.next/static/chunks/8489.45f22859734f514f.js +36 -0
  301. package/.next/static/chunks/8568.f85d8b36fc9a9037.js +1 -0
  302. package/.next/static/chunks/8771-3e14b6810486df1f.js +1 -0
  303. package/.next/static/chunks/8863.be51033a67436277.js +1 -0
  304. package/.next/static/chunks/90542734.dc1a2723e4f6affb.js +1 -0
  305. package/.next/static/chunks/9500.1488aec06ee78127.js +1 -0
  306. package/.next/static/chunks/9633.155548b5fca6e580.js +1 -0
  307. package/.next/static/chunks/9779.673004a62d70e36a.js +1 -0
  308. package/.next/static/chunks/app/_global-error/page-cc518af6b1ffb191.js +1 -0
  309. package/.next/static/chunks/app/_not-found/page-c72daab99269beff.js +1 -0
  310. package/.next/static/chunks/app/api/agent/[id]/events/route-cc518af6b1ffb191.js +1 -0
  311. package/.next/static/chunks/app/api/agent/[id]/route-cc518af6b1ffb191.js +1 -0
  312. package/.next/static/chunks/app/api/agent/new/route-cc518af6b1ffb191.js +1 -0
  313. package/.next/static/chunks/app/api/auth/all-providers/route-cc518af6b1ffb191.js +1 -0
  314. package/.next/static/chunks/app/api/auth/api-key/[provider]/route-cc518af6b1ffb191.js +1 -0
  315. package/.next/static/chunks/app/api/auth/login/[provider]/route-cc518af6b1ffb191.js +1 -0
  316. package/.next/static/chunks/app/api/auth/login/route-cc518af6b1ffb191.js +1 -0
  317. package/.next/static/chunks/app/api/auth/logout/[provider]/route-cc518af6b1ffb191.js +1 -0
  318. package/.next/static/chunks/app/api/auth/providers/route-cc518af6b1ffb191.js +1 -0
  319. package/.next/static/chunks/app/api/auth/status/route-cc518af6b1ffb191.js +1 -0
  320. package/.next/static/chunks/app/api/default-cwd/route-cc518af6b1ffb191.js +1 -0
  321. package/.next/static/chunks/app/api/files/[...path]/route-cc518af6b1ffb191.js +1 -0
  322. package/.next/static/chunks/app/api/harness/route-cc518af6b1ffb191.js +1 -0
  323. package/.next/static/chunks/app/api/home/route-cc518af6b1ffb191.js +1 -0
  324. package/.next/static/chunks/app/api/internal/runtime/route-cc518af6b1ffb191.js +1 -0
  325. package/.next/static/chunks/app/api/models/route-cc518af6b1ffb191.js +1 -0
  326. package/.next/static/chunks/app/api/models-config/discover/route-cc518af6b1ffb191.js +1 -0
  327. package/.next/static/chunks/app/api/models-config/route-cc518af6b1ffb191.js +1 -0
  328. package/.next/static/chunks/app/api/models-config/test/route-cc518af6b1ffb191.js +1 -0
  329. package/.next/static/chunks/app/api/projects/browse/route-cc518af6b1ffb191.js +1 -0
  330. package/.next/static/chunks/app/api/projects/route-cc518af6b1ffb191.js +1 -0
  331. package/.next/static/chunks/app/api/reports/[id]/route-cc518af6b1ffb191.js +1 -0
  332. package/.next/static/chunks/app/api/search/route-cc518af6b1ffb191.js +1 -0
  333. package/.next/static/chunks/app/api/sessions/[id]/context/route-cc518af6b1ffb191.js +1 -0
  334. package/.next/static/chunks/app/api/sessions/[id]/route-cc518af6b1ffb191.js +1 -0
  335. package/.next/static/chunks/app/api/sessions/new/route-cc518af6b1ffb191.js +1 -0
  336. package/.next/static/chunks/app/api/sessions/route-cc518af6b1ffb191.js +1 -0
  337. package/.next/static/chunks/app/api/settings/route-cc518af6b1ffb191.js +1 -0
  338. package/.next/static/chunks/app/api/skills/install/route-cc518af6b1ffb191.js +1 -0
  339. package/.next/static/chunks/app/api/skills/route-cc518af6b1ffb191.js +1 -0
  340. package/.next/static/chunks/app/api/skills/search/route-cc518af6b1ffb191.js +1 -0
  341. package/.next/static/chunks/app/api/soul/route-cc518af6b1ffb191.js +1 -0
  342. package/.next/static/chunks/app/api/version/route-cc518af6b1ffb191.js +1 -0
  343. package/.next/static/chunks/app/layout-be148b7ae915b22a.js +1 -0
  344. package/.next/static/chunks/app/login/page-ebf0e6de99062783.js +1 -0
  345. package/.next/static/chunks/app/page-0594cb7a3cbb0211.js +260 -0
  346. package/.next/static/chunks/d3ac728e.7964f816a1ca64e5.js +1 -0
  347. package/.next/static/chunks/framework-711ef29bc66f648c.js +1 -0
  348. package/.next/static/chunks/main-app-45a0f19af99d61b6.js +1 -0
  349. package/.next/static/chunks/main-f74964b7ae52493e.js +5 -0
  350. package/.next/static/chunks/next/dist/client/components/builtin/app-error-cc518af6b1ffb191.js +1 -0
  351. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-cc518af6b1ffb191.js +1 -0
  352. package/.next/static/chunks/next/dist/client/components/builtin/global-error-9bfa08b9491621f2.js +1 -0
  353. package/.next/static/chunks/next/dist/client/components/builtin/not-found-cc518af6b1ffb191.js +1 -0
  354. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-cc518af6b1ffb191.js +1 -0
  355. package/.next/static/chunks/polyfills-42372ed130431b0a.js +1 -0
  356. package/.next/static/chunks/webpack-fcf4a889ecbd753c.js +1 -0
  357. package/.next/static/css/45029451a1d7255d.css +3 -0
  358. package/.next/static/media/15605e25b523335c-s.woff2 +0 -0
  359. package/.next/static/media/1a3dce5cfb5f7760-s.woff2 +0 -0
  360. package/.next/static/media/1cdd02902f937a18-s.woff2 +0 -0
  361. package/.next/static/media/4c4b3b30b6bcb2be-s.woff2 +0 -0
  362. package/.next/static/media/641a7b8a5800ee0e-s.woff2 +0 -0
  363. package/.next/static/media/7deddc85b7ffd1dc-s.p.woff2 +0 -0
  364. package/.next/static/media/ec14413c594b3356-s.p.woff2 +0 -0
  365. package/.next/static/media/pdf.worker.min.29aaf158.mjs +6 -0
  366. package/.next/static/nmfQlwnkhzbPmuiCmhW-_/_buildManifest.js +1 -0
  367. package/.next/static/nmfQlwnkhzbPmuiCmhW-_/_ssgManifest.js +1 -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
package/lib/npx.ts DELETED
@@ -1,87 +0,0 @@
1
- import { execFile, spawn, type ChildProcessWithoutNullStreams } from "child_process";
2
- import { promisify } from "util";
3
- import { existsSync } from "fs";
4
- import { dirname, join } from "path";
5
- import { execPath } from "process";
6
-
7
- const execFileAsync = promisify(execFile);
8
-
9
- /**
10
- * Locate `npx-cli.js` shipped with the running Node.js installation.
11
- *
12
- * On Windows the `npx` on PATH is actually `npx.cmd`, which Node.js (since
13
- * 20.12 due to CVE-2024-27980) refuses to spawn from `execFile`/`spawn`
14
- * without `shell: true`. Going through a shell reintroduces quoting bugs for
15
- * user-supplied args. Instead we find the real `npx-cli.js` and invoke it
16
- * directly via the current `node` binary, which works identically on every
17
- * platform and needs no shell.
18
- */
19
- function findNpxCli(): string | null {
20
- const nodeDir = dirname(execPath);
21
- const candidates = [
22
- // Windows MSI installer layout: node.exe and node_modules share a dir
23
- join(nodeDir, "node_modules", "npm", "bin", "npx-cli.js"),
24
- // Unix layout: .../bin/node + .../lib/node_modules/npm/bin/npx-cli.js
25
- join(nodeDir, "..", "lib", "node_modules", "npm", "bin", "npx-cli.js"),
26
- ];
27
- for (const p of candidates) {
28
- try {
29
- if (existsSync(p)) return p;
30
- } catch {
31
- // ignore
32
- }
33
- }
34
- return null;
35
- }
36
-
37
- export interface RunNpxOptions {
38
- timeout?: number;
39
- cwd?: string;
40
- env?: NodeJS.ProcessEnv;
41
- maxBuffer?: number;
42
- }
43
-
44
- export interface SpawnNpxOptions {
45
- cwd?: string;
46
- env?: NodeJS.ProcessEnv;
47
- detached?: boolean;
48
- }
49
-
50
- export interface RunNpxResult {
51
- stdout: string;
52
- stderr: string;
53
- }
54
-
55
- function getNpxCommand(args: string[]): { command: string; commandArgs: string[] } {
56
- const npxCli = findNpxCli();
57
- return npxCli
58
- ? { command: execPath, commandArgs: [npxCli, ...args] }
59
- : { command: "npx", commandArgs: args };
60
- }
61
-
62
- /**
63
- * Cross-platform wrapper for invoking `npx <args>` without ever using a
64
- * shell, so user-controlled arguments are never interpreted as shell syntax.
65
- */
66
- export async function runNpx(args: string[], opts: RunNpxOptions = {}): Promise<RunNpxResult> {
67
- const { command, commandArgs } = getNpxCommand(args);
68
- return execFileAsync(command, commandArgs, {
69
- timeout: opts.timeout,
70
- cwd: opts.cwd,
71
- env: opts.env,
72
- maxBuffer: opts.maxBuffer ?? 10 * 1024 * 1024,
73
- });
74
- }
75
-
76
- export function spawnNpx(args: string[], opts: SpawnNpxOptions = {}): ChildProcessWithoutNullStreams {
77
- const { command, commandArgs } = getNpxCommand(args);
78
- const child = spawn(command, commandArgs, {
79
- cwd: opts.cwd,
80
- env: opts.env,
81
- detached: opts.detached,
82
- stdio: ["pipe", "pipe", "pipe"],
83
- windowsHide: true,
84
- });
85
- child.stdin.end();
86
- return child;
87
- }
package/lib/pi-types.ts DELETED
@@ -1,49 +0,0 @@
1
- /**
2
- * Simplified types — no longer depends on pi-coding-agent.
3
- * AgentSessionLike is now defined by CodexSession in lib/codex-session.ts.
4
- */
5
-
6
- export interface ContextUsage {
7
- percent: number | null;
8
- contextWindow: number;
9
- tokens: number | null;
10
- }
11
-
12
- export interface ModelLike {
13
- id: string;
14
- provider: string;
15
- }
16
-
17
- export interface ToolInfo {
18
- name: string;
19
- description: string;
20
- }
21
-
22
- export interface NavigateTreeResult {
23
- editorText?: string;
24
- cancelled: boolean;
25
- aborted?: boolean;
26
- }
27
-
28
- // AgentSessionLike is kept for backward compat with types used in rpc-manager.ts
29
- // The actual implementation is CodexSessionWrapper.
30
- export interface AgentSessionLike {
31
- readonly sessionId: string;
32
- readonly sessionFile: string;
33
- readonly isStreaming: boolean;
34
- readonly isCompacting: boolean;
35
- readonly model: ModelLike | null;
36
- readonly cwd: string;
37
- readonly baseInstructions?: string;
38
- readonly isAlive: boolean;
39
-
40
- onEvent(listener: (event: { type: string; [key: string]: unknown }) => void): () => void;
41
- prompt(message: string, images?: Array<{ data: string; mimeType: string }>): Promise<void>;
42
- abort(): Promise<void>;
43
- setModel(provider: string, modelId: string): Promise<void>;
44
- fork(afterItemId?: string): Promise<{ newThreadId: string } | { cancelled: true }>;
45
- navigateTree(targetId: string): Promise<{ cancelled: boolean }>;
46
- compact(): Promise<void>;
47
- rename(name: string): Promise<void>;
48
- destroy(): void;
49
- }
package/lib/projects.ts DELETED
@@ -1,269 +0,0 @@
1
- import { existsSync, mkdirSync, readFileSync, statSync, writeFileSync } from "fs";
2
- import { dirname, basename, join } from "path";
3
- import { parse as parseToml } from "smol-toml";
4
- import { getAgentDir, listAllSessions } from "./session-reader";
5
- import type { ProjectInfo, SessionInfo } from "./types";
6
- import { getCodexHome } from "./codex-home";
7
-
8
- interface ProjectRecord {
9
- cwd: string;
10
- name?: string;
11
- hidden?: boolean;
12
- addedAt?: string;
13
- lastAccessed?: string;
14
- }
15
-
16
- interface ProjectRegistry {
17
- version: 1;
18
- projects: Record<string, ProjectRecord>;
19
- }
20
-
21
- function getProjectsPath(): string {
22
- return join(getAgentDir(), "annodex-projects.json");
23
- }
24
-
25
- function getLegacyProjectsPaths(): string[] {
26
- return [join(getAgentDir(), "annovibe-projects.json")];
27
- }
28
-
29
- function normalizeCwd(cwd: string): string {
30
- return cwd.trim().replace(/[\\/]+$/, "") || cwd.trim();
31
- }
32
-
33
- function fallbackProjectName(cwd: string): string {
34
- const normalized = normalizeCwd(cwd);
35
- return basename(normalized) || normalized || "No Project";
36
- }
37
-
38
- function readRegistry(): ProjectRegistry {
39
- const paths = [getProjectsPath(), ...getLegacyProjectsPaths()];
40
- const projects: Record<string, ProjectRecord> = {};
41
- let loaded = false;
42
- for (const path of paths) {
43
- if (!existsSync(path)) continue;
44
- loaded = true;
45
- mergeRegistryFile(path, projects);
46
- }
47
- return loaded ? { version: 1, projects } : { version: 1, projects: {} };
48
- }
49
-
50
- function mergeRegistryFile(path: string, projects: Record<string, ProjectRecord>): void {
51
- try {
52
- const raw = JSON.parse(readFileSync(path, "utf8")) as Partial<ProjectRegistry>;
53
- const rawProjects = raw.projects && typeof raw.projects === "object" ? raw.projects : {};
54
- for (const [key, value] of Object.entries(rawProjects)) {
55
- if (!value || typeof value !== "object") continue;
56
- const record = value as Partial<ProjectRecord>;
57
- const cwd = normalizeCwd(typeof record.cwd === "string" ? record.cwd : key);
58
- if (!cwd) continue;
59
- if (projects[cwd]) continue;
60
- projects[cwd] = {
61
- cwd,
62
- ...(typeof record.name === "string" ? { name: record.name } : {}),
63
- ...(typeof record.hidden === "boolean" ? { hidden: record.hidden } : {}),
64
- ...(typeof record.addedAt === "string" ? { addedAt: record.addedAt } : {}),
65
- ...(typeof record.lastAccessed === "string" ? { lastAccessed: record.lastAccessed } : {}),
66
- };
67
- }
68
- } catch {
69
- // ignore malformed registries
70
- }
71
- }
72
-
73
- function writeRegistry(registry: ProjectRegistry): void {
74
- const path = getProjectsPath();
75
- mkdirSync(dirname(path), { recursive: true });
76
- writeFileSync(path, JSON.stringify(registry, null, 2), "utf8");
77
- }
78
-
79
- function projectExists(cwd: string): boolean {
80
- try {
81
- return statSync(cwd).isDirectory();
82
- } catch {
83
- return false;
84
- }
85
- }
86
-
87
- function summarizeSessions(sessions: SessionInfo[]): Map<string, { count: number; last: string | null; created: string | null }> {
88
- const summaries = new Map<string, { count: number; last: string | null; created: string | null }>();
89
- for (const session of sessions) {
90
- const cwd = normalizeCwd(session.cwd || "");
91
- if (!cwd) continue;
92
- const summary = summaries.get(cwd) ?? { count: 0, last: null, created: null };
93
- summary.count += 1;
94
- if (!summary.last || session.modified > summary.last) summary.last = session.modified;
95
- if (!summary.created || session.created < summary.created) summary.created = session.created;
96
- summaries.set(cwd, summary);
97
- }
98
- return summaries;
99
- }
100
-
101
- function readCodexProjectCwds(): Set<string> {
102
- const cwds = new Set<string>();
103
- const codexConfigPath = join(getCodexHome(), "config.toml");
104
- if (!existsSync(codexConfigPath)) return cwds;
105
- try {
106
- const raw = readFileSync(codexConfigPath, "utf-8");
107
- const toml = parseToml(raw) as Record<string, unknown>;
108
- const projects = toml.projects as Record<string, unknown> | undefined;
109
- if (!projects) return cwds;
110
- for (const key of Object.keys(projects)) {
111
- const cwd = normalizeCwd(key.replace(/^"|"$/g, ""));
112
- if (cwd) cwds.add(cwd);
113
- }
114
- } catch {
115
- // ignore malformed codex config
116
- }
117
- return cwds;
118
- }
119
-
120
- export function listProjectsFast(options: { includeHidden?: boolean } = {}): ProjectInfo[] {
121
- const registry = readRegistry();
122
- const cwds = new Set<string>([...readCodexProjectCwds(), ...Object.keys(registry.projects)]);
123
- const projects: ProjectInfo[] = [];
124
-
125
- for (const cwd of cwds) {
126
- const record = registry.projects[cwd];
127
- if (record?.hidden && !options.includeHidden) continue;
128
- projects.push({
129
- cwd,
130
- name: record?.name,
131
- displayName: record?.name?.trim() || fallbackProjectName(cwd),
132
- chatCount: 0,
133
- lastAccessed: record?.lastAccessed ?? null,
134
- created: record?.addedAt ?? null,
135
- hidden: record?.hidden,
136
- exists: existsSync(cwd) ? projectExists(cwd) : false,
137
- source: record ? "manual" : "session",
138
- });
139
- }
140
-
141
- projects.sort((a, b) => {
142
- const aTime = a.lastAccessed ?? a.created ?? "";
143
- const bTime = b.lastAccessed ?? b.created ?? "";
144
- if (aTime !== bTime) return bTime.localeCompare(aTime);
145
- return a.displayName.localeCompare(b.displayName);
146
- });
147
-
148
- return projects;
149
- }
150
-
151
- export async function listProjects(options: { includeHidden?: boolean } = {}): Promise<ProjectInfo[]> {
152
- const [sessions, registry] = await Promise.all([listAllSessions(), Promise.resolve(readRegistry())]);
153
- const sessionSummaries = summarizeSessions(sessions);
154
- const cwds = new Set<string>([
155
- ...readCodexProjectCwds(),
156
- ...sessionSummaries.keys(),
157
- ...Object.keys(registry.projects),
158
- ]);
159
- const projects: ProjectInfo[] = [];
160
-
161
- for (const cwd of cwds) {
162
- const record = registry.projects[cwd];
163
- if (record?.hidden && !options.includeHidden) continue;
164
- const summary = sessionSummaries.get(cwd);
165
- const source = summary && record ? "both" : summary ? "session" : "manual";
166
- const lastAccessed = record?.lastAccessed && (!summary?.last || record.lastAccessed > summary.last)
167
- ? record.lastAccessed
168
- : summary?.last ?? record?.lastAccessed ?? null;
169
-
170
- projects.push({
171
- cwd,
172
- name: record?.name,
173
- displayName: record?.name?.trim() || fallbackProjectName(cwd),
174
- chatCount: summary?.count ?? 0,
175
- lastAccessed,
176
- created: summary?.created ?? record?.addedAt ?? null,
177
- hidden: record?.hidden,
178
- exists: existsSync(cwd) ? projectExists(cwd) : false,
179
- source,
180
- });
181
- }
182
-
183
- projects.sort((a, b) => {
184
- const aTime = a.lastAccessed ?? a.created ?? "";
185
- const bTime = b.lastAccessed ?? b.created ?? "";
186
- if (aTime !== bTime) return bTime.localeCompare(aTime);
187
- return a.displayName.localeCompare(b.displayName);
188
- });
189
-
190
- return projects;
191
- }
192
-
193
- export function upsertProject(cwdInput: string, fields: { name?: string | null; hidden?: boolean } = {}): ProjectInfo {
194
- const cwd = normalizeCwd(cwdInput);
195
- if (!cwd) throw new Error("cwd is required");
196
- const registry = readRegistry();
197
- const now = new Date().toISOString();
198
- const prev = registry.projects[cwd];
199
- const next: ProjectRecord = {
200
- cwd,
201
- addedAt: prev?.addedAt ?? now,
202
- lastAccessed: now,
203
- ...(prev?.name ? { name: prev.name } : {}),
204
- hidden: fields.hidden ?? false,
205
- };
206
- if (fields.name !== undefined) {
207
- const name = fields.name?.trim() ?? "";
208
- if (name) next.name = name;
209
- }
210
- registry.projects[cwd] = next;
211
- writeRegistry(registry);
212
- return {
213
- cwd,
214
- name: next.name,
215
- displayName: next.name?.trim() || fallbackProjectName(cwd),
216
- chatCount: 0,
217
- lastAccessed: next.lastAccessed ?? null,
218
- created: next.addedAt ?? null,
219
- hidden: next.hidden,
220
- exists: projectExists(cwd),
221
- source: "manual",
222
- };
223
- }
224
-
225
- export function renameProject(cwdInput: string, nameInput: string): void {
226
- const cwd = normalizeCwd(cwdInput);
227
- const name = nameInput.trim();
228
- if (!cwd) throw new Error("cwd is required");
229
- const registry = readRegistry();
230
- const prev = registry.projects[cwd];
231
- registry.projects[cwd] = {
232
- cwd,
233
- addedAt: prev?.addedAt ?? new Date().toISOString(),
234
- lastAccessed: new Date().toISOString(),
235
- ...(name ? { name } : {}),
236
- hidden: prev?.hidden ?? false,
237
- };
238
- writeRegistry(registry);
239
- }
240
-
241
- export function removeProject(cwdInput: string): void {
242
- const cwd = normalizeCwd(cwdInput);
243
- if (!cwd) throw new Error("cwd is required");
244
- const registry = readRegistry();
245
- const prev = registry.projects[cwd];
246
- registry.projects[cwd] = {
247
- cwd,
248
- addedAt: prev?.addedAt ?? new Date().toISOString(),
249
- lastAccessed: new Date().toISOString(),
250
- ...(prev?.name ? { name: prev.name } : {}),
251
- hidden: true,
252
- };
253
- writeRegistry(registry);
254
- }
255
-
256
- export function touchProject(cwdInput: string): void {
257
- const cwd = normalizeCwd(cwdInput);
258
- if (!cwd) return;
259
- const registry = readRegistry();
260
- const prev = registry.projects[cwd];
261
- registry.projects[cwd] = {
262
- cwd,
263
- addedAt: prev?.addedAt ?? new Date().toISOString(),
264
- lastAccessed: new Date().toISOString(),
265
- ...(prev?.name ? { name: prev.name } : {}),
266
- hidden: false,
267
- };
268
- writeRegistry(registry);
269
- }
@@ -1,88 +0,0 @@
1
- export const PROVIDER_API_VALUES = ["openai-responses", "openai-completions"] as const;
2
-
3
- export type ProviderApi = typeof PROVIDER_API_VALUES[number];
4
-
5
- // ---- Reasoning / thinking config (per provider) ----
6
- // Mirrors cc-switch's CodexChatReasoningConfig: per-provider mapping of
7
- // thinking parameters when translating from OpenAI Responses → Chat Completions.
8
-
9
- export interface ReasoningConfig {
10
- /** Whether the upstream supports thinking/reasoning at all. */
11
- supportsThinking?: boolean;
12
- /** Whether the upstream supports effort levels (e.g., low/medium/high). */
13
- supportsEffort?: boolean;
14
- /** Chat parameter name for enabling thinking. Default varies by provider. */
15
- thinkingParam?: "thinking" | "enable_thinking";
16
- /** Chat parameter name for reasoning effort level. "none" disables it. */
17
- effortParam?: "reasoning_effort" | "reasoning.effort" | "none" | null;
18
- /** How to map codex effort values for this provider. */
19
- effortValueMode?: "deepseek" | "glm" | "openrouter" | "generic";
20
- /** Where reasoning content appears in the Chat Completions response. */
21
- outputFormat?: "reasoning_content" | "reasoning_details" | "reasoning" | "think_tags";
22
- }
23
-
24
- export const DEFAULT_PROVIDER_API: ProviderApi = "openai-responses";
25
-
26
- const CHAT_COMPLETIONS_PATTERNS = [
27
- /\/chat\/completions(?:$|[?#])/i,
28
- /deepseek/i,
29
- /moonshot|kimi/i,
30
- /dashscope|aliyun|qwen/i,
31
- /zhipu|bigmodel|chatglm|glm/i,
32
- /siliconflow/i,
33
- /volcengine|ark\.cn|doubao/i,
34
- /baichuan/i,
35
- /minimax/i,
36
- /stepfun|step-api/i,
37
- /lingyiwanwu|yi-api/i,
38
- // Router/relay providers (deeprouter, openrouter, crazyrouter, therouter)
39
- // typically support Responses API natively — do NOT force Chat Completions.
40
- // If a specific model needs Chat, set "api": "openai-completions" on it.
41
- ];
42
-
43
- const RESPONSES_PATTERNS = [
44
- /api\.openai\.com/i,
45
- /\/responses(?:$|[?#])/i,
46
- ];
47
-
48
- export function isProviderApi(value: unknown): value is ProviderApi {
49
- return typeof value === "string" && (PROVIDER_API_VALUES as readonly string[]).includes(value);
50
- }
51
-
52
- export function inferProviderApi(baseUrl?: string, providerId?: string, fallback: ProviderApi = DEFAULT_PROVIDER_API): ProviderApi {
53
- const text = `${providerId ?? ""} ${baseUrl ?? ""}`.toLowerCase();
54
- if (!text.trim()) return fallback;
55
- if (RESPONSES_PATTERNS.some((pattern) => pattern.test(text))) return "openai-responses";
56
- if (CHAT_COMPLETIONS_PATTERNS.some((pattern) => pattern.test(text))) return "openai-completions";
57
- return fallback;
58
- }
59
-
60
- export function normalizeProviderApi(value: unknown, baseUrl?: string, providerId?: string): ProviderApi {
61
- if (isProviderApi(value)) return value;
62
- return inferProviderApi(baseUrl, providerId);
63
- }
64
-
65
- export function inferModelApi(modelId: string, providerApi?: ProviderApi, baseUrl?: string, providerId?: string): ProviderApi | undefined {
66
- const model = modelId.toLowerCase();
67
- const providerText = `${providerId ?? ""} ${baseUrl ?? ""}`.toLowerCase();
68
- if (/deepseek|kimi|moonshot|qwen|glm|zhipu|chatglm|siliconflow|doubao|yi-|llama|mistral|baichuan|minimax/.test(model)) {
69
- return "openai-completions";
70
- }
71
- if (/gpt|o\d|openai/.test(model)) {
72
- // GPT models can be served via either Responses or Chat Completions.
73
- // Inherit the provider's API setting instead of unconditionally
74
- // overriding, so routers like DeepRouter/OpenRouter get the compat proxy.
75
- return providerApi ?? "openai-responses";
76
- }
77
- if (/deeprouter|openrouter/.test(providerText)) return providerApi;
78
- return providerApi;
79
- }
80
-
81
- export function apiFromCodexWireApi(wireApi: string | undefined, baseUrl?: string, providerId?: string): ProviderApi | undefined {
82
- if (wireApi === "responses") return "openai-responses";
83
- if (wireApi === "chat" || wireApi === "chat_completions" || wireApi === "chat-completions") {
84
- return "openai-completions";
85
- }
86
- if (baseUrl || providerId) return inferProviderApi(baseUrl, providerId);
87
- return undefined;
88
- }
@@ -1,61 +0,0 @@
1
- export const ANALYSIS_REPORT_PROMPT = `<analysis-report-guidelines>
2
- annodex has a persistent Analysis Report tab. It is for curated analysis deliverables, not a transcript summary.
3
-
4
- When working on scientific or bioinformatics analysis, keep report-worthy content concise and structured:
5
- - Include confirmed analysis objectives, sample/group design, final methods and parameters, successful results, output files, biological interpretation, limitations, and reproducibility notes.
6
- - Do not include ordinary chat, reasoning traces, failed-debug logs, transient guesses, or results superseded by later parameter changes.
7
- - When an upstream input, threshold, parameter, or method changes, explicitly state which downstream results or interpretations are outdated and need refresh.
8
- - Prefer evidence-backed statements that cite generated files, tables, figures, scripts, or command outputs.
9
- - Make the report visually useful when figures exist: include 1-4 representative local image links with Markdown image syntax, for example \`![UMAP colored by cluster](results/umap_clusters.png)\`.
10
- - For each representative figure, add a one-sentence caption that states what the figure shows and why it matters biologically or analytically.
11
- - Do not embed every generated image. Curate representative figures by topic, put the rest in the outputs table, and mention counts/directories.
12
- - Prefer browser-renderable figures in the report preview (PNG/JPG/SVG/HTML). If only PDFs exist, cite the PDF path and, when practical, create or mention a PNG preview.
13
- - If you ran tools for a bioinformatics/scientific analysis or created result directories, tables, figures, scripts, or reports, you MUST emit an analysis report update before finishing the response.
14
- - If the analysis produces many PDFs or figure files, do not expand them all in chat. Summarize them in the report by topic, output directory, counts, representative files, and the biological meaning of the figures.
15
-
16
- If you mention report updates in chat, describe only the analysis-level change. Do not dump the full report unless the user asks for it.
17
-
18
- Emit an update only after a stable, reusable analysis milestone:
19
- - A method or parameter choice is finalized.
20
- - A QC/result/interpretation has been confirmed from generated evidence.
21
- - A durable output file, figure, table, or script has been created and should be tracked.
22
- - A prior result is invalidated by a changed input, threshold, or method.
23
-
24
- Do not emit updates for ordinary chat, brief status messages, failed attempts, transient debugging, file paths alone, or speculative interpretations. This exception does not apply to completed bioinformatics analyses: if the only final chat content would be a file/directory inventory, convert that inventory into the report outputs section with concise context.
25
-
26
- Topic handling:
27
- - Use the \`topic\` field to distinguish separate analysis questions within the same chat session or branch.
28
- - Keep using the same \`topic\` when refining or rerunning the same analysis.
29
- - Start a new \`topic\` when the user switches to a different biological question, cell type, comparison, dataset, or branch of analysis.
30
- - The report update should summarize only the current topic/branch unless you are explicitly revising a previous topic.
31
-
32
- When you have a compact report-worthy update, emit one or more fenced JSON blocks:
33
-
34
- \`\`\`analysis-report-update
35
- {"topic":"Short current analysis topic","section":"objective|input_data|methods|quality_control|results|interpretation|outputs|reproducibility","action":"append|replace","status":"draft|verified|needs_review|outdated","markdown":"Concise Markdown for the report section.","sources":["results/file.csv","HSPCs/"],"invalidates":["results"],"note":"Short change note."}
36
- \`\`\`
37
-
38
- Markdown quality requirements:
39
- - Use short paragraphs, compact tables, and local links to evidence files.
40
- - In \`results\`, lead with the main finding, then show representative figures and captions when available.
41
- - In \`outputs\`, group files by result type instead of listing a raw directory dump.
42
- - In \`interpretation\`, distinguish observed result, biological interpretation, and remaining uncertainty.
43
-
44
- Only use this fence for durable analysis summaries, not for chat narration or raw logs.
45
- </analysis-report-guidelines>`;
46
-
47
- const REPORT_BLOCK_PATTERN = /\n?\s*<analysis-report-guidelines>[\s\S]*?<\/analysis-report-guidelines>\s*/g;
48
-
49
- export function stripAnalysisReportPrompt(systemPrompt: string): string {
50
- return systemPrompt
51
- .replace(REPORT_BLOCK_PATTERN, "\n")
52
- .replace(/\n{3,}/g, "\n\n")
53
- .trim();
54
- }
55
-
56
- export function withAnalysisReportPrompt(systemPrompt: string): string {
57
- if (systemPrompt.includes("<analysis-report-guidelines>")) return systemPrompt;
58
- return systemPrompt.trim()
59
- ? `${systemPrompt.trimEnd()}\n\n${ANALYSIS_REPORT_PROMPT}`
60
- : ANALYSIS_REPORT_PROMPT;
61
- }