@seqyuan/annodex 0.1.28 → 0.1.30

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 (298) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +7 -5
  3. package/.next/build-manifest.json +3 -3
  4. package/.next/diagnostics/build-diagnostics.json +1 -1
  5. package/.next/prerender-manifest.json +297 -4
  6. package/.next/react-loadable-manifest.json +44 -0
  7. package/.next/required-server-files.js +50 -5
  8. package/.next/required-server-files.json +50 -5
  9. package/.next/routes-manifest.json +14 -0
  10. package/.next/server/app/_global-error/page.js +3 -3
  11. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  12. package/.next/server/app/_global-error.html +1 -1
  13. package/.next/server/app/_global-error.rsc +1 -1
  14. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  15. package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  16. package/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  17. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  18. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  19. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  20. package/.next/server/app/_not-found/page.js +2 -2
  21. package/.next/server/app/_not-found/page.js.nft.json +1 -1
  22. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  23. package/.next/server/app/_not-found.html +1 -1
  24. package/.next/server/app/_not-found.rsc +17 -15
  25. package/.next/server/app/_not-found.segments/_full.segment.rsc +17 -15
  26. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  27. package/.next/server/app/_not-found.segments/_index.segment.rsc +6 -4
  28. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  29. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  30. package/.next/server/app/_not-found.segments/_tree.segment.rsc +3 -2
  31. package/.next/server/app/api/agent/[id]/events/route.js +2 -2
  32. package/.next/server/app/api/agent/[id]/events/route.js.nft.json +1 -1
  33. package/.next/server/app/api/agent/[id]/route.js +1 -1
  34. package/.next/server/app/api/agent/[id]/route.js.nft.json +1 -1
  35. package/.next/server/app/api/agent/new/route.js +1 -1
  36. package/.next/server/app/api/agent/new/route.js.nft.json +1 -1
  37. package/.next/server/app/api/agent/runtime/route.js +1 -1
  38. package/.next/server/app/api/agent/runtime/route.js.nft.json +1 -1
  39. package/.next/server/app/api/auth/all-providers/route.js +1 -1
  40. package/.next/server/app/api/auth/all-providers/route.js.nft.json +1 -1
  41. package/.next/server/app/api/auth/api-key/[provider]/route.js +1 -1
  42. package/.next/server/app/api/auth/api-key/[provider]/route.js.nft.json +1 -1
  43. package/.next/server/app/api/auth/login/[provider]/route.js +1 -1
  44. package/.next/server/app/api/auth/login/[provider]/route.js.nft.json +1 -1
  45. package/.next/server/app/api/auth/login/route.js +1 -1
  46. package/.next/server/app/api/auth/login/route.js.nft.json +1 -1
  47. package/.next/server/app/api/auth/logout/[provider]/route.js +1 -1
  48. package/.next/server/app/api/auth/logout/[provider]/route.js.nft.json +1 -1
  49. package/.next/server/app/api/auth/providers/route.js +1 -1
  50. package/.next/server/app/api/auth/providers/route.js.nft.json +1 -1
  51. package/.next/server/app/api/auth/status/route.js +1 -1
  52. package/.next/server/app/api/auth/status/route.js.nft.json +1 -1
  53. package/.next/server/app/api/default-cwd/route.js +1 -1
  54. package/.next/server/app/api/default-cwd/route.js.nft.json +1 -1
  55. package/.next/server/app/api/files/[...path]/route.js +1 -1
  56. package/.next/server/app/api/files/[...path]/route.js.nft.json +1 -1
  57. package/.next/server/app/api/harness/route.js +1 -1
  58. package/.next/server/app/api/harness/route.js.nft.json +1 -1
  59. package/.next/server/app/api/home/route.js +1 -1
  60. package/.next/server/app/api/home/route.js.nft.json +1 -1
  61. package/.next/server/app/api/internal/runtime/route.js +1 -1
  62. package/.next/server/app/api/internal/runtime/route.js.nft.json +1 -1
  63. package/.next/server/app/api/models/route.js +1 -1
  64. package/.next/server/app/api/models/route.js.nft.json +1 -1
  65. package/.next/server/app/api/models-config/discover/route.js +1 -1
  66. package/.next/server/app/api/models-config/discover/route.js.nft.json +1 -1
  67. package/.next/server/app/api/models-config/route.js +1 -1
  68. package/.next/server/app/api/models-config/route.js.nft.json +1 -1
  69. package/.next/server/app/api/models-config/test/route.js +1 -1
  70. package/.next/server/app/api/models-config/test/route.js.nft.json +1 -1
  71. package/.next/server/app/api/projects/browse/route.js +1 -1
  72. package/.next/server/app/api/projects/browse/route.js.nft.json +1 -1
  73. package/.next/server/app/api/projects/route.js +1 -1
  74. package/.next/server/app/api/projects/route.js.nft.json +1 -1
  75. package/.next/server/app/api/search/route.js +1 -1
  76. package/.next/server/app/api/search/route.js.nft.json +1 -1
  77. package/.next/server/app/api/sessions/[id]/context/route.js +1 -1
  78. package/.next/server/app/api/sessions/[id]/context/route.js.nft.json +1 -1
  79. package/.next/server/app/api/sessions/[id]/route.js +1 -1
  80. package/.next/server/app/api/sessions/[id]/route.js.nft.json +1 -1
  81. package/.next/server/app/api/sessions/new/route.js +1 -1
  82. package/.next/server/app/api/sessions/new/route.js.nft.json +1 -1
  83. package/.next/server/app/api/sessions/route.js +1 -1
  84. package/.next/server/app/api/sessions/route.js.nft.json +1 -1
  85. package/.next/server/app/api/settings/route.js +1 -1
  86. package/.next/server/app/api/settings/route.js.nft.json +1 -1
  87. package/.next/server/app/api/skills/install/route.js +2 -2
  88. package/.next/server/app/api/skills/install/route.js.nft.json +1 -1
  89. package/.next/server/app/api/skills/route.js +2 -2
  90. package/.next/server/app/api/skills/route.js.nft.json +1 -1
  91. package/.next/server/app/api/skills/search/route.js +1 -1
  92. package/.next/server/app/api/skills/search/route.js.nft.json +1 -1
  93. package/.next/server/app/api/soul/route.js +1 -1
  94. package/.next/server/app/api/soul/route.js.nft.json +1 -1
  95. package/.next/server/app/api/version/route.js +1 -1
  96. package/.next/server/app/api/version/route.js.nft.json +1 -1
  97. package/.next/server/app/docs/[[...slug]]/page.js +4 -0
  98. package/.next/server/app/docs/[[...slug]]/page.js.nft.json +1 -0
  99. package/.next/server/app/docs/[[...slug]]/page_client-reference-manifest.js +1 -0
  100. package/.next/server/app/docs/architecture.html +26 -0
  101. package/.next/server/app/docs/architecture.meta +16 -0
  102. package/.next/server/app/docs/architecture.rsc +36 -0
  103. package/.next/server/app/docs/architecture.segments/_full.segment.rsc +36 -0
  104. package/.next/server/app/docs/architecture.segments/_head.segment.rsc +6 -0
  105. package/.next/server/app/docs/architecture.segments/_index.segment.rsc +7 -0
  106. package/.next/server/app/docs/architecture.segments/_tree.segment.rsc +5 -0
  107. package/.next/server/app/docs/architecture.segments/docs/$oc$slug/__PAGE__.segment.rsc +12 -0
  108. package/.next/server/app/docs/architecture.segments/docs/$oc$slug.segment.rsc +5 -0
  109. package/.next/server/app/docs/architecture.segments/docs.segment.rsc +6 -0
  110. package/.next/server/app/docs/configuration.html +28 -0
  111. package/.next/server/app/docs/configuration.meta +16 -0
  112. package/.next/server/app/docs/configuration.rsc +34 -0
  113. package/.next/server/app/docs/configuration.segments/_full.segment.rsc +34 -0
  114. package/.next/server/app/docs/configuration.segments/_head.segment.rsc +6 -0
  115. package/.next/server/app/docs/configuration.segments/_index.segment.rsc +7 -0
  116. package/.next/server/app/docs/configuration.segments/_tree.segment.rsc +5 -0
  117. package/.next/server/app/docs/configuration.segments/docs/$oc$slug/__PAGE__.segment.rsc +10 -0
  118. package/.next/server/app/docs/configuration.segments/docs/$oc$slug.segment.rsc +5 -0
  119. package/.next/server/app/docs/configuration.segments/docs.segment.rsc +6 -0
  120. package/.next/server/app/docs/file-and-report-viewing.html +29 -0
  121. package/.next/server/app/docs/file-and-report-viewing.meta +16 -0
  122. package/.next/server/app/docs/file-and-report-viewing.rsc +34 -0
  123. package/.next/server/app/docs/file-and-report-viewing.segments/_full.segment.rsc +34 -0
  124. package/.next/server/app/docs/file-and-report-viewing.segments/_head.segment.rsc +6 -0
  125. package/.next/server/app/docs/file-and-report-viewing.segments/_index.segment.rsc +7 -0
  126. package/.next/server/app/docs/file-and-report-viewing.segments/_tree.segment.rsc +5 -0
  127. package/.next/server/app/docs/file-and-report-viewing.segments/docs/$oc$slug/__PAGE__.segment.rsc +10 -0
  128. package/.next/server/app/docs/file-and-report-viewing.segments/docs/$oc$slug.segment.rsc +5 -0
  129. package/.next/server/app/docs/file-and-report-viewing.segments/docs.segment.rsc +6 -0
  130. package/.next/server/app/docs/installation-and-deployment.html +30 -0
  131. package/.next/server/app/docs/installation-and-deployment.meta +16 -0
  132. package/.next/server/app/docs/installation-and-deployment.rsc +39 -0
  133. package/.next/server/app/docs/installation-and-deployment.segments/_full.segment.rsc +39 -0
  134. package/.next/server/app/docs/installation-and-deployment.segments/_head.segment.rsc +6 -0
  135. package/.next/server/app/docs/installation-and-deployment.segments/_index.segment.rsc +7 -0
  136. package/.next/server/app/docs/installation-and-deployment.segments/_tree.segment.rsc +5 -0
  137. package/.next/server/app/docs/installation-and-deployment.segments/docs/$oc$slug/__PAGE__.segment.rsc +16 -0
  138. package/.next/server/app/docs/installation-and-deployment.segments/docs/$oc$slug.segment.rsc +5 -0
  139. package/.next/server/app/docs/installation-and-deployment.segments/docs.segment.rsc +6 -0
  140. package/.next/server/app/docs/models-and-tools.html +29 -0
  141. package/.next/server/app/docs/models-and-tools.meta +16 -0
  142. package/.next/server/app/docs/models-and-tools.rsc +34 -0
  143. package/.next/server/app/docs/models-and-tools.segments/_full.segment.rsc +34 -0
  144. package/.next/server/app/docs/models-and-tools.segments/_head.segment.rsc +6 -0
  145. package/.next/server/app/docs/models-and-tools.segments/_index.segment.rsc +7 -0
  146. package/.next/server/app/docs/models-and-tools.segments/_tree.segment.rsc +5 -0
  147. package/.next/server/app/docs/models-and-tools.segments/docs/$oc$slug/__PAGE__.segment.rsc +10 -0
  148. package/.next/server/app/docs/models-and-tools.segments/docs/$oc$slug.segment.rsc +5 -0
  149. package/.next/server/app/docs/models-and-tools.segments/docs.segment.rsc +6 -0
  150. package/.next/server/app/docs/quick-start.html +24 -0
  151. package/.next/server/app/docs/quick-start.meta +16 -0
  152. package/.next/server/app/docs/quick-start.rsc +36 -0
  153. package/.next/server/app/docs/quick-start.segments/_full.segment.rsc +36 -0
  154. package/.next/server/app/docs/quick-start.segments/_head.segment.rsc +6 -0
  155. package/.next/server/app/docs/quick-start.segments/_index.segment.rsc +7 -0
  156. package/.next/server/app/docs/quick-start.segments/_tree.segment.rsc +5 -0
  157. package/.next/server/app/docs/quick-start.segments/docs/$oc$slug/__PAGE__.segment.rsc +12 -0
  158. package/.next/server/app/docs/quick-start.segments/docs/$oc$slug.segment.rsc +5 -0
  159. package/.next/server/app/docs/quick-start.segments/docs.segment.rsc +6 -0
  160. package/.next/server/app/docs/runtime-and-sse.html +28 -0
  161. package/.next/server/app/docs/runtime-and-sse.meta +16 -0
  162. package/.next/server/app/docs/runtime-and-sse.rsc +34 -0
  163. package/.next/server/app/docs/runtime-and-sse.segments/_full.segment.rsc +34 -0
  164. package/.next/server/app/docs/runtime-and-sse.segments/_head.segment.rsc +6 -0
  165. package/.next/server/app/docs/runtime-and-sse.segments/_index.segment.rsc +7 -0
  166. package/.next/server/app/docs/runtime-and-sse.segments/_tree.segment.rsc +5 -0
  167. package/.next/server/app/docs/runtime-and-sse.segments/docs/$oc$slug/__PAGE__.segment.rsc +10 -0
  168. package/.next/server/app/docs/runtime-and-sse.segments/docs/$oc$slug.segment.rsc +5 -0
  169. package/.next/server/app/docs/runtime-and-sse.segments/docs.segment.rsc +6 -0
  170. package/.next/server/app/docs/sessions-and-projects.html +27 -0
  171. package/.next/server/app/docs/sessions-and-projects.meta +16 -0
  172. package/.next/server/app/docs/sessions-and-projects.rsc +34 -0
  173. package/.next/server/app/docs/sessions-and-projects.segments/_full.segment.rsc +34 -0
  174. package/.next/server/app/docs/sessions-and-projects.segments/_head.segment.rsc +6 -0
  175. package/.next/server/app/docs/sessions-and-projects.segments/_index.segment.rsc +7 -0
  176. package/.next/server/app/docs/sessions-and-projects.segments/_tree.segment.rsc +5 -0
  177. package/.next/server/app/docs/sessions-and-projects.segments/docs/$oc$slug/__PAGE__.segment.rsc +10 -0
  178. package/.next/server/app/docs/sessions-and-projects.segments/docs/$oc$slug.segment.rsc +5 -0
  179. package/.next/server/app/docs/sessions-and-projects.segments/docs.segment.rsc +6 -0
  180. package/.next/server/app/docs/workspace.html +28 -0
  181. package/.next/server/app/docs/workspace.meta +16 -0
  182. package/.next/server/app/docs/workspace.rsc +34 -0
  183. package/.next/server/app/docs/workspace.segments/_full.segment.rsc +34 -0
  184. package/.next/server/app/docs/workspace.segments/_head.segment.rsc +6 -0
  185. package/.next/server/app/docs/workspace.segments/_index.segment.rsc +7 -0
  186. package/.next/server/app/docs/workspace.segments/_tree.segment.rsc +5 -0
  187. package/.next/server/app/docs/workspace.segments/docs/$oc$slug/__PAGE__.segment.rsc +10 -0
  188. package/.next/server/app/docs/workspace.segments/docs/$oc$slug.segment.rsc +5 -0
  189. package/.next/server/app/docs/workspace.segments/docs.segment.rsc +6 -0
  190. package/.next/server/app/docs.html +41 -0
  191. package/.next/server/app/docs.meta +16 -0
  192. package/.next/server/app/docs.rsc +35 -0
  193. package/.next/server/app/docs.segments/_full.segment.rsc +35 -0
  194. package/.next/server/app/docs.segments/_head.segment.rsc +6 -0
  195. package/.next/server/app/docs.segments/_index.segment.rsc +7 -0
  196. package/.next/server/app/docs.segments/_tree.segment.rsc +5 -0
  197. package/.next/server/app/docs.segments/docs/$oc$slug/__PAGE__.segment.rsc +11 -0
  198. package/.next/server/app/docs.segments/docs/$oc$slug.segment.rsc +5 -0
  199. package/.next/server/app/docs.segments/docs.segment.rsc +6 -0
  200. package/.next/server/app/index.html +2 -1
  201. package/.next/server/app/index.rsc +28 -14
  202. package/.next/server/app/index.segments/__PAGE__.segment.rsc +14 -5
  203. package/.next/server/app/index.segments/_full.segment.rsc +28 -14
  204. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  205. package/.next/server/app/index.segments/_index.segment.rsc +6 -4
  206. package/.next/server/app/index.segments/_tree.segment.rsc +3 -2
  207. package/.next/server/app/login/page.js +2 -2
  208. package/.next/server/app/login/page.js.nft.json +1 -1
  209. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  210. package/.next/server/app/login.html +1 -1
  211. package/.next/server/app/login.rsc +21 -19
  212. package/.next/server/app/login.segments/_full.segment.rsc +21 -19
  213. package/.next/server/app/login.segments/_head.segment.rsc +1 -1
  214. package/.next/server/app/login.segments/_index.segment.rsc +6 -4
  215. package/.next/server/app/login.segments/_tree.segment.rsc +3 -2
  216. package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  217. package/.next/server/app/login.segments/login.segment.rsc +1 -1
  218. package/.next/server/app/page.js +3 -263
  219. package/.next/server/app/page.js.nft.json +1 -1
  220. package/.next/server/app/page_client-reference-manifest.js +1 -1
  221. package/.next/server/app/workspace/page.js +263 -0
  222. package/.next/server/app/workspace/page.js.nft.json +1 -0
  223. package/.next/server/app/workspace/page_client-reference-manifest.js +1 -0
  224. package/.next/server/app/workspace.html +1 -0
  225. package/.next/server/app/workspace.meta +15 -0
  226. package/.next/server/app/workspace.rsc +21 -0
  227. package/.next/server/app/workspace.segments/_full.segment.rsc +21 -0
  228. package/.next/server/app/workspace.segments/_head.segment.rsc +6 -0
  229. package/.next/server/app/workspace.segments/_index.segment.rsc +7 -0
  230. package/.next/server/app/workspace.segments/_tree.segment.rsc +5 -0
  231. package/.next/server/app/workspace.segments/workspace/__PAGE__.segment.rsc +6 -0
  232. package/.next/server/app/workspace.segments/workspace.segment.rsc +5 -0
  233. package/.next/server/app-paths-manifest.json +7 -5
  234. package/.next/server/chunks/1106.js +1 -0
  235. package/.next/server/chunks/1381.js +1 -1
  236. package/.next/server/chunks/1681.js +2 -2
  237. package/.next/server/chunks/1703.js +2 -2
  238. package/.next/server/chunks/2098.js +1 -0
  239. package/.next/server/chunks/2220.js +1 -0
  240. package/.next/server/chunks/3031.js +1 -1
  241. package/.next/server/chunks/3353.js +1 -0
  242. package/.next/server/chunks/3493.js +1 -1
  243. package/.next/server/chunks/402.js +1 -1
  244. package/.next/server/chunks/4035.js +1 -1
  245. package/.next/server/chunks/4091.js +5 -0
  246. package/.next/server/chunks/4443.js +3 -0
  247. package/.next/server/chunks/5293.js +2 -2
  248. package/.next/server/chunks/5488.js +1 -0
  249. package/.next/server/chunks/7073.js +1 -1
  250. package/.next/server/chunks/7526.js +1 -0
  251. package/.next/server/chunks/76.js +1 -0
  252. package/.next/server/chunks/8875.js +1 -0
  253. package/.next/server/chunks/8916.js +1 -1
  254. package/.next/server/chunks/9175.js +10 -0
  255. package/.next/server/chunks/9537.js +1 -1
  256. package/.next/server/chunks/966.js +1 -1
  257. package/.next/server/middleware-build-manifest.js +1 -1
  258. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  259. package/.next/server/middleware.js +1 -1
  260. package/.next/server/pages/404.html +1 -1
  261. package/.next/server/pages/500.html +1 -1
  262. package/.next/server/server-reference-manifest.json +1 -1
  263. package/.next/server/webpack-runtime.js +1 -1
  264. package/.next/static/chunks/2632.f12f984b8009d7f1.js +1 -0
  265. package/.next/static/chunks/2679.f76721dbd8ec617f.js +5 -0
  266. package/.next/static/chunks/4660.6d9fc47e6ed8e7e4.js +10 -0
  267. package/.next/static/chunks/4894-e27a35edd6176226.js +1 -0
  268. package/.next/static/chunks/5122-6e0d29bd15f079e1.js +3 -0
  269. package/.next/static/chunks/5166-58bbf85cbd32ad99.js +1 -0
  270. package/.next/static/chunks/6606.789f1fc26b9150dd.js +1 -0
  271. package/.next/static/chunks/6878.3d114dd7c83aa676.js +1 -0
  272. package/.next/static/chunks/7627-1f8c705195c83044.js +1 -0
  273. package/.next/static/chunks/8500-f62a38ff68ab7f42.js +1 -0
  274. package/.next/static/chunks/9211-21786f967f9c2826.js +1 -0
  275. package/.next/static/chunks/9278-58ee6294b32318a5.js +3 -0
  276. package/.next/static/chunks/9566.2b92edbd162fb97d.js +1 -0
  277. package/.next/static/chunks/9855.1127e644bd68ced0.js +1 -0
  278. package/.next/static/chunks/app/docs/[[...slug]]/page-d232277716ab7921.js +1 -0
  279. package/.next/static/chunks/app/docs/layout-4809bb9dd4b49bff.js +1 -0
  280. package/.next/static/chunks/app/layout-11cc1f48ff425fd0.js +1 -0
  281. package/.next/static/chunks/app/login/page-870e0ee50453c2ba.js +1 -0
  282. package/.next/static/chunks/app/page-eb62ac677a87b790.js +1 -0
  283. package/.next/static/chunks/app/{page-565250b6825f66ad.js → workspace/page-af7e4803e0815c0e.js} +5 -5
  284. package/.next/static/chunks/webpack-ced9e639bb94bd30.js +1 -0
  285. package/.next/static/css/876e881d7ba02ed2.css +1 -0
  286. package/.next/static/css/fddca953485158e4.css +1 -0
  287. package/.next/static/oIqDpdOWwl7oIU6o8NnNp/_buildManifest.js +1 -0
  288. package/.next/static/oIqDpdOWwl7oIU6o8NnNp/_ssgManifest.js +1 -0
  289. package/README.md +3 -3
  290. package/next.config.ts +4 -1
  291. package/package.json +6 -1
  292. package/.next/static/9Y_YDTnjV-FM3PWThKWpw/_buildManifest.js +0 -1
  293. package/.next/static/9Y_YDTnjV-FM3PWThKWpw/_ssgManifest.js +0 -1
  294. package/.next/static/chunks/8771-3e14b6810486df1f.js +0 -1
  295. package/.next/static/chunks/app/layout-be148b7ae915b22a.js +0 -1
  296. package/.next/static/chunks/app/login/page-ebf0e6de99062783.js +0 -1
  297. package/.next/static/chunks/webpack-fcf4a889ecbd753c.js +0 -1
  298. package/.next/static/css/df604d0d99136435.css +0 -3
@@ -0,0 +1 @@
1
+ {"version":1,"files":["../../../../../content/docs/architecture.mdx","../../../../../content/docs/configuration.mdx","../../../../../content/docs/file-and-report-viewing.mdx","../../../../../content/docs/index.mdx","../../../../../content/docs/installation-and-deployment.mdx","../../../../../content/docs/meta.json","../../../../../content/docs/models-and-tools.mdx","../../../../../content/docs/quick-start.mdx","../../../../../content/docs/runtime-and-sse.mdx","../../../../../content/docs/sessions-and-projects.mdx","../../../../../content/docs/workspace.mdx","../../../../../node_modules/@swc/helpers/_/_interop_require_default/package.json","../../../../../node_modules/@swc/helpers/cjs/_interop_require_default.cjs","../../../../../node_modules/@swc/helpers/package.json","../../../../../node_modules/next/dist/build/adapter/setup-node-env.external.js","../../../../../node_modules/next/dist/client/components/app-router-headers.js","../../../../../node_modules/next/dist/client/components/hooks-server-context.js","../../../../../node_modules/next/dist/client/components/static-generation-bailout.js","../../../../../node_modules/next/dist/client/lib/console.js","../../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../../node_modules/next/dist/compiled/bytes/index.js","../../../../../node_modules/next/dist/compiled/bytes/package.json","../../../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../../../node_modules/next/dist/compiled/next-server/app-page.runtime.prod.js","../../../../../node_modules/next/dist/compiled/react-dom/cjs/react-dom-server.node.production.js","../../../../../node_modules/next/dist/compiled/react-dom/cjs/react-dom.development.js","../../../../../node_modules/next/dist/compiled/react-dom/cjs/react-dom.production.js","../../../../../node_modules/next/dist/compiled/react-dom/index.js","../../../../../node_modules/next/dist/compiled/react-dom/package.json","../../../../../node_modules/next/dist/compiled/react/cjs/react.development.js","../../../../../node_modules/next/dist/compiled/react/cjs/react.production.js","../../../../../node_modules/next/dist/compiled/react/index.js","../../../../../node_modules/next/dist/compiled/react/package.json","../../../../../node_modules/next/dist/compiled/source-map/package.json","../../../../../node_modules/next/dist/compiled/source-map/source-map.js","../../../../../node_modules/next/dist/compiled/stacktrace-parser/package.json","../../../../../node_modules/next/dist/compiled/stacktrace-parser/stack-trace-parser.cjs.js","../../../../../node_modules/next/dist/compiled/ws/index.js","../../../../../node_modules/next/dist/compiled/ws/package.json","../../../../../node_modules/next/dist/lib/client-and-server-references.js","../../../../../node_modules/next/dist/lib/constants.js","../../../../../node_modules/next/dist/lib/framework/boundary-constants.js","../../../../../node_modules/next/dist/lib/interop-default.js","../../../../../node_modules/next/dist/lib/is-error.js","../../../../../node_modules/next/dist/lib/picocolors.js","../../../../../node_modules/next/dist/lib/scheduler.js","../../../../../node_modules/next/dist/lib/semver-noop.js","../../../../../node_modules/next/dist/server/app-render/action-async-storage-instance.js","../../../../../node_modules/next/dist/server/app-render/action-async-storage.external.js","../../../../../node_modules/next/dist/server/app-render/after-task-async-storage-instance.js","../../../../../node_modules/next/dist/server/app-render/after-task-async-storage.external.js","../../../../../node_modules/next/dist/server/app-render/async-local-storage.js","../../../../../node_modules/next/dist/server/app-render/cache-signal.js","../../../../../node_modules/next/dist/server/app-render/console-async-storage-instance.js","../../../../../node_modules/next/dist/server/app-render/console-async-storage.external.js","../../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage-instance.js","../../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage.external.js","../../../../../node_modules/next/dist/server/app-render/dynamic-rendering.js","../../../../../node_modules/next/dist/server/app-render/instant-validation/boundary-constants.js","../../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.external.js","../../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js","../../../../../node_modules/next/dist/server/app-render/staged-rendering.js","../../../../../node_modules/next/dist/server/app-render/work-async-storage-instance.js","../../../../../node_modules/next/dist/server/app-render/work-async-storage.external.js","../../../../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js","../../../../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.js","../../../../../node_modules/next/dist/server/dev/browser-logs/file-logger.js","../../../../../node_modules/next/dist/server/dynamic-rendering-utils.js","../../../../../node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js","../../../../../node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js","../../../../../node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js","../../../../../node_modules/next/dist/server/lib/lru-cache.js","../../../../../node_modules/next/dist/server/lib/parse-stack.js","../../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js","../../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js","../../../../../node_modules/next/dist/server/lib/source-maps.js","../../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../../node_modules/next/dist/server/load-manifest.external.js","../../../../../node_modules/next/dist/server/node-environment-baseline.js","../../../../../node_modules/next/dist/server/node-environment-extensions/console-dim.external.js","../../../../../node_modules/next/dist/server/node-environment-extensions/console-exit.js","../../../../../node_modules/next/dist/server/node-environment-extensions/console-file.js","../../../../../node_modules/next/dist/server/node-environment-extensions/date.js","../../../../../node_modules/next/dist/server/node-environment-extensions/error-inspect.js","../../../../../node_modules/next/dist/server/node-environment-extensions/fast-set-immediate.external.js","../../../../../node_modules/next/dist/server/node-environment-extensions/io-utils.js","../../../../../node_modules/next/dist/server/node-environment-extensions/node-crypto.js","../../../../../node_modules/next/dist/server/node-environment-extensions/random.js","../../../../../node_modules/next/dist/server/node-environment-extensions/unhandled-rejection.external.js","../../../../../node_modules/next/dist/server/node-environment-extensions/web-crypto.js","../../../../../node_modules/next/dist/server/node-environment.js","../../../../../node_modules/next/dist/server/node-polyfill-crypto.js","../../../../../node_modules/next/dist/server/patch-error-inspect.js","../../../../../node_modules/next/dist/server/require-hook.js","../../../../../node_modules/next/dist/server/response-cache/types.js","../../../../../node_modules/next/dist/server/runtime-reacts.external.js","../../../../../node_modules/next/dist/shared/lib/deep-freeze.js","../../../../../node_modules/next/dist/shared/lib/invariant-error.js","../../../../../node_modules/next/dist/shared/lib/is-plain-object.js","../../../../../node_modules/next/dist/shared/lib/is-thenable.js","../../../../../node_modules/next/dist/shared/lib/lazy-dynamic/bailout-to-csr.js","../../../../../node_modules/next/dist/shared/lib/no-fallback-error.external.js","../../../../../node_modules/next/dist/shared/lib/page-path/ensure-leading-slash.js","../../../../../node_modules/next/dist/shared/lib/promise-with-resolvers.js","../../../../../node_modules/next/dist/shared/lib/router/utils/app-paths.js","../../../../../node_modules/next/dist/shared/lib/router/utils/get-segment-param.js","../../../../../node_modules/next/dist/shared/lib/router/utils/html-bots.js","../../../../../node_modules/next/dist/shared/lib/router/utils/interception-routes.js","../../../../../node_modules/next/dist/shared/lib/router/utils/is-bot.js","../../../../../node_modules/next/dist/shared/lib/segment.js","../../../../../node_modules/next/dist/shared/lib/server-reference-info.js","../../../../../node_modules/next/dist/shared/lib/size-limit.js","../../../../../node_modules/next/package.json","../../../../../node_modules/react/cjs/react.development.js","../../../../../node_modules/react/cjs/react.production.js","../../../../../node_modules/react/index.js","../../../../../node_modules/react/package.json","../../../../package.json","../../../chunks/1106.js","../../../chunks/2098.js","../../../chunks/2220.js","../../../chunks/3353.js","../../../chunks/4091.js","../../../chunks/4443.js","../../../chunks/4741.js","../../../chunks/5488.js","../../../chunks/63.js","../../../chunks/7526.js","../../../chunks/76.js","../../../chunks/8875.js","../../../chunks/9175.js","../../../webpack-runtime.js","page_client-reference-manifest.js"]}
@@ -0,0 +1 @@
1
+ globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/docs/[[...slug]]/page"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{"2993":{"*":{"id":"60791","name":"*","chunks":[],"async":false}},"13768":{"*":{"id":"75890","name":"*","chunks":[],"async":false}},"23963":{"*":{"id":"55317","name":"*","chunks":[],"async":false}},"27123":{"*":{"id":"81921","name":"*","chunks":[],"async":false}},"38774":{"*":{"id":"84124","name":"*","chunks":[],"async":false}},"39006":{"*":{"id":"21377","name":"*","chunks":[],"async":false}},"42309":{"*":{"id":"28447","name":"*","chunks":[],"async":false}},"44660":{"*":{"id":"46386","name":"*","chunks":[],"async":false}},"57121":{"*":{"id":"35421","name":"*","chunks":[],"async":false}},"61304":{"*":{"id":"60440","name":"*","chunks":[],"async":false}},"64777":{"*":{"id":"82265","name":"*","chunks":[],"async":false}},"67197":{"*":{"id":"85759","name":"*","chunks":[],"async":false}},"67504":{"*":{"id":"42386","name":"*","chunks":[],"async":false}},"74581":{"*":{"id":"61335","name":"*","chunks":[],"async":false}},"78616":{"*":{"id":"84342","name":"*","chunks":[],"async":false}},"84579":{"*":{"id":"8423","name":"*","chunks":[],"async":false}},"86869":{"*":{"id":"74661","name":"*","chunks":[],"async":false}},"88518":{"*":{"id":"49652","name":"*","chunks":[],"async":false}},"90484":{"*":{"id":"70664","name":"*","chunks":[],"async":false}},"98500":{"*":{"id":"2116","name":"*","chunks":[],"async":false}},"99535":{"*":{"id":"90900","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/home/runner/work/annodex/annodex/node_modules/next/dist/client/components/builtin/global-error.js":{"id":27123,"name":"*","chunks":[],"async":false},"/home/runner/work/annodex/annodex/node_modules/next/dist/esm/client/components/builtin/global-error.js":{"id":27123,"name":"*","chunks":[],"async":false},"/home/runner/work/annodex/annodex/node_modules/next/dist/client/components/client-page.js":{"id":61304,"name":"*","chunks":[],"async":false},"/home/runner/work/annodex/annodex/node_modules/next/dist/esm/client/components/client-page.js":{"id":61304,"name":"*","chunks":[],"async":false},"/home/runner/work/annodex/annodex/node_modules/next/dist/client/components/client-segment.js":{"id":78616,"name":"*","chunks":[],"async":false},"/home/runner/work/annodex/annodex/node_modules/next/dist/esm/client/components/client-segment.js":{"id":78616,"name":"*","chunks":[],"async":false},"/home/runner/work/annodex/annodex/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"id":64777,"name":"*","chunks":[],"async":false},"/home/runner/work/annodex/annodex/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":64777,"name":"*","chunks":[],"async":false},"/home/runner/work/annodex/annodex/node_modules/next/dist/client/components/layout-router.js":{"id":57121,"name":"*","chunks":[],"async":false},"/home/runner/work/annodex/annodex/node_modules/next/dist/esm/client/components/layout-router.js":{"id":57121,"name":"*","chunks":[],"async":false},"/home/runner/work/annodex/annodex/node_modules/next/dist/client/components/render-from-template-context.js":{"id":74581,"name":"*","chunks":[],"async":false},"/home/runner/work/annodex/annodex/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":74581,"name":"*","chunks":[],"async":false},"/home/runner/work/annodex/annodex/node_modules/next/dist/lib/framework/boundary-components.js":{"id":90484,"name":"*","chunks":[],"async":false},"/home/runner/work/annodex/annodex/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":90484,"name":"*","chunks":[],"async":false},"/home/runner/work/annodex/annodex/node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"id":86869,"name":"*","chunks":[],"async":false},"/home/runner/work/annodex/annodex/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":86869,"name":"*","chunks":[],"async":false},"/home/runner/work/annodex/annodex/node_modules/fumadocs-ui/dist/provider/next.js":{"id":67504,"name":"*","chunks":["8500","static/chunks/8500-f62a38ff68ab7f42.js","5122","static/chunks/5122-6e0d29bd15f079e1.js","7177","static/chunks/app/layout-11cc1f48ff425fd0.js"],"async":false},"/home/runner/work/annodex/annodex/node_modules/next/font/google/target.css?{\"path\":\"app/layout.tsx\",\"import\":\"Noto_Sans_Mono\",\"arguments\":[{\"subsets\":[\"latin\",\"cyrillic\"],\"variable\":\"--font-noto-mono\",\"display\":\"swap\"}],\"variableName\":\"notoSansMono\"}":{"id":83683,"name":"*","chunks":["8500","static/chunks/8500-f62a38ff68ab7f42.js","5122","static/chunks/5122-6e0d29bd15f079e1.js","7177","static/chunks/app/layout-11cc1f48ff425fd0.js"],"async":false},"/home/runner/work/annodex/annodex/app/globals.css":{"id":66872,"name":"*","chunks":["8500","static/chunks/8500-f62a38ff68ab7f42.js","5122","static/chunks/5122-6e0d29bd15f079e1.js","7177","static/chunks/app/layout-11cc1f48ff425fd0.js"],"async":false},"/home/runner/work/annodex/annodex/app/login/page.tsx":{"id":42309,"name":"*","chunks":[],"async":false},"/home/runner/work/annodex/annodex/node_modules/lucide-react/dist/esm/Icon.mjs":{"id":99535,"name":"*","chunks":["5166","static/chunks/5166-58bbf85cbd32ad99.js","9278","static/chunks/9278-58ee6294b32318a5.js","4894","static/chunks/4894-e27a35edd6176226.js","7870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-d232277716ab7921.js"],"async":false},"/home/runner/work/annodex/annodex/node_modules/next/dist/client/app-dir/link.js":{"id":98500,"name":"*","chunks":["8500","static/chunks/8500-f62a38ff68ab7f42.js","8974","static/chunks/app/page-eb62ac677a87b790.js"],"async":false},"/home/runner/work/annodex/annodex/node_modules/next/dist/esm/client/app-dir/link.js":{"id":98500,"name":"*","chunks":["8500","static/chunks/8500-f62a38ff68ab7f42.js","8974","static/chunks/app/page-eb62ac677a87b790.js"],"async":false},"/home/runner/work/annodex/annodex/components/AppShell.tsx":{"id":44660,"name":"*","chunks":[],"async":false},"/home/runner/work/annodex/annodex/node_modules/fumadocs-ui/dist/layouts/docs/client.js":{"id":67197,"name":"*","chunks":["5166","static/chunks/5166-58bbf85cbd32ad99.js","9278","static/chunks/9278-58ee6294b32318a5.js","4499","static/chunks/app/docs/layout-4809bb9dd4b49bff.js"],"async":false},"/home/runner/work/annodex/annodex/node_modules/fumadocs-ui/dist/layouts/shared/client.js":{"id":2993,"name":"*","chunks":["5166","static/chunks/5166-58bbf85cbd32ad99.js","9278","static/chunks/9278-58ee6294b32318a5.js","4499","static/chunks/app/docs/layout-4809bb9dd4b49bff.js"],"async":false},"/home/runner/work/annodex/annodex/node_modules/fumadocs-core/dist/framework/index.js":{"id":38774,"name":"*","chunks":["5166","static/chunks/5166-58bbf85cbd32ad99.js","9278","static/chunks/9278-58ee6294b32318a5.js","4894","static/chunks/4894-e27a35edd6176226.js","7870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-d232277716ab7921.js"],"async":false},"/home/runner/work/annodex/annodex/node_modules/fumadocs-core/dist/link.js":{"id":84579,"name":"*","chunks":["5166","static/chunks/5166-58bbf85cbd32ad99.js","9278","static/chunks/9278-58ee6294b32318a5.js","4894","static/chunks/4894-e27a35edd6176226.js","7870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-d232277716ab7921.js"],"async":false},"/home/runner/work/annodex/annodex/node_modules/fumadocs-ui/dist/components/codeblock.js":{"id":13768,"name":"*","chunks":["5166","static/chunks/5166-58bbf85cbd32ad99.js","9278","static/chunks/9278-58ee6294b32318a5.js","4894","static/chunks/4894-e27a35edd6176226.js","7870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-d232277716ab7921.js"],"async":false},"/home/runner/work/annodex/annodex/node_modules/fumadocs-ui/dist/components/heading.js":{"id":88518,"name":"*","chunks":["5166","static/chunks/5166-58bbf85cbd32ad99.js","9278","static/chunks/9278-58ee6294b32318a5.js","4894","static/chunks/4894-e27a35edd6176226.js","7870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-d232277716ab7921.js"],"async":false},"/home/runner/work/annodex/annodex/node_modules/fumadocs-ui/dist/page.js":{"id":39006,"name":"*","chunks":["5166","static/chunks/5166-58bbf85cbd32ad99.js","9278","static/chunks/9278-58ee6294b32318a5.js","4894","static/chunks/4894-e27a35edd6176226.js","7870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-d232277716ab7921.js"],"async":false},"/home/runner/work/annodex/annodex/node_modules/lucide-react/dist/esm/context.mjs":{"id":23963,"name":"*","chunks":["5166","static/chunks/5166-58bbf85cbd32ad99.js","9278","static/chunks/9278-58ee6294b32318a5.js","4894","static/chunks/4894-e27a35edd6176226.js","7870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-d232277716ab7921.js"],"async":false}},"entryCSSFiles":{"/home/runner/work/annodex/annodex/":[],"/home/runner/work/annodex/annodex/app/layout":[{"inlined":false,"path":"static/css/fddca953485158e4.css"},{"inlined":false,"path":"static/css/876e881d7ba02ed2.css"}],"/home/runner/work/annodex/annodex/app/page":[],"/home/runner/work/annodex/annodex/app/docs/layout":[],"/home/runner/work/annodex/annodex/app/docs/[[...slug]]/page":[]},"rscModuleMapping":{"2993":{"*":{"id":"46731","name":"*","chunks":[],"async":false}},"13768":{"*":{"id":"6933","name":"*","chunks":[],"async":false}},"23963":{"*":{"id":"115","name":"*","chunks":[],"async":false}},"27123":{"*":{"id":"95547","name":"*","chunks":[],"async":false}},"38774":{"*":{"id":"30846","name":"*","chunks":[],"async":false}},"39006":{"*":{"id":"48475","name":"*","chunks":[],"async":false}},"42309":{"*":{"id":"69613","name":"*","chunks":[],"async":false}},"44660":{"*":{"id":"35790","name":"*","chunks":[],"async":false}},"57121":{"*":{"id":"98099","name":"*","chunks":[],"async":false}},"61304":{"*":{"id":"15098","name":"*","chunks":[],"async":false}},"64777":{"*":{"id":"33859","name":"*","chunks":[],"async":false}},"66872":{"*":{"id":"82704","name":"*","chunks":[],"async":false}},"67197":{"*":{"id":"20189","name":"*","chunks":[],"async":false}},"67504":{"*":{"id":"15185","name":"*","chunks":[],"async":false}},"74581":{"*":{"id":"16237","name":"*","chunks":[],"async":false}},"78616":{"*":{"id":"47644","name":"*","chunks":[],"async":false}},"84579":{"*":{"id":"9253","name":"*","chunks":[],"async":false}},"86869":{"*":{"id":"36675","name":"*","chunks":[],"async":false}},"88518":{"*":{"id":"13017","name":"*","chunks":[],"async":false}},"90484":{"*":{"id":"98562","name":"*","chunks":[],"async":false}},"98500":{"*":{"id":"23318","name":"*","chunks":[],"async":false}},"99535":{"*":{"id":"47613","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{}};
@@ -0,0 +1,26 @@
1
+ <!DOCTYPE html><html lang="en" class="__variable_66b8ca"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/7deddc85b7ffd1dc-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/ec14413c594b3356-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/css/fddca953485158e4.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/876e881d7ba02ed2.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-ced9e639bb94bd30.js"/><script src="/_next/static/chunks/4bd1b696-e356ca5ba0218e27.js" async=""></script><script src="/_next/static/chunks/3794-123fdf632563f469.js" async=""></script><script src="/_next/static/chunks/main-app-45a0f19af99d61b6.js" async=""></script><script src="/_next/static/chunks/8500-f62a38ff68ab7f42.js" async=""></script><script src="/_next/static/chunks/5122-6e0d29bd15f079e1.js" async=""></script><script src="/_next/static/chunks/app/layout-11cc1f48ff425fd0.js" async=""></script><script src="/_next/static/chunks/5166-58bbf85cbd32ad99.js" async=""></script><script src="/_next/static/chunks/9278-58ee6294b32318a5.js" async=""></script><script src="/_next/static/chunks/app/docs/layout-4809bb9dd4b49bff.js" async=""></script><script src="/_next/static/chunks/4894-e27a35edd6176226.js" async=""></script><script src="/_next/static/chunks/app/docs/%5B%5B...slug%5D%5D/page-d232277716ab7921.js" async=""></script><meta name="next-size-adjust" content=""/><title>Architecture</title><meta name="description" content="annodex 的核心结构与数据流。"/><link rel="shortcut icon" href="/favicon.svg" type="image/svg+xml"/><link rel="icon" href="/favicon.svg" type="image/svg+xml"/><script>(function(){try{var t=localStorage.getItem("annodex-theme");if(t==="dark")document.documentElement.classList.add("dark")}catch(e){}})();</script><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body style="min-height:100dvh;display:flex;flex-direction:column"><div hidden=""><!--$--><!--/$--></div><script>((a,b,c,d,e,f,g,h)=>{let i=document.documentElement,j=["light","dark"];function k(b){var c;(Array.isArray(a)?a:[a]).forEach(a=>{let c="class"===a,d=c&&f?e.map(a=>f[a]||a):e;c?(i.classList.remove(...d),i.classList.add(f&&f[b]?f[b]:b)):i.setAttribute(a,b)}),c=b,h&&j.includes(c)&&(i.style.colorScheme=c)}if(d)k(d);else try{let a=localStorage.getItem(b)||c,d=g&&"system"===a?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":a;k(d)}catch(a){}})("class","theme","system",null,["light","dark"],null,true,true)</script><!--$--><div class="bg-fd-secondary/50 p-3 empty:hidden"></div><!--/$--><div id="nd-docs-layout" data-sidebar-collapsed="false" data-column-changed="false" style="grid-template:&quot;sidebar sidebar header toc toc&quot;
2
+ &quot;sidebar sidebar toc-popover toc toc&quot;
3
+ &quot;sidebar sidebar main toc toc&quot; 1fr / minmax(min-content, 1fr) var(--fd-sidebar-col) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) var(--fd-toc-width) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)" class="grid overflow-x-clip min-h-(--fd-docs-height) [--fd-docs-height:100dvh] [--fd-header-height:0px] [--fd-toc-popover-height:0px] [--fd-sidebar-width:0px] [--fd-toc-width:0px] data-[column-changed=true]:transition-[grid-template-columns]"><header id="nd-subnav" data-transparent="false" class="[grid-area:header] sticky top-(--fd-docs-row-1) z-30 flex items-center ps-4 pe-2.5 border-b transition-colors backdrop-blur-sm h-(--fd-header-height) md:hidden max-md:layout:[--fd-header-height:--spacing(14)] data-[transparent=false]:bg-fd-background/80"><a class="inline-flex items-center gap-2.5 font-semibold" href="/"><span style="display:inline-flex;align-items:center;gap:10px;font-weight:700"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-panels-top-left" aria-hidden="true"><rect width="18" height="18" x="3" y="3" rx="2"></rect><path d="M3 9h18"></path><path d="M9 21V9"></path></svg>annodex</span></a><div class="flex-1"></div><button type="button" class="inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-fd-ring hover:bg-fd-accent hover:text-fd-accent-foreground [&amp;_svg]:size-4.5 p-2" data-search="" aria-label="Open Search"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-search" aria-hidden="true"><path d="m21 21-4.34-4.34"></path><circle cx="11" cy="11" r="8"></circle></svg></button><button aria-label="Open Sidebar" class="inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-fd-ring hover:bg-fd-accent hover:text-fd-accent-foreground [&amp;_svg]:size-4.5 p-2"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-panel-left" aria-hidden="true"><rect width="18" height="18" x="3" y="3" rx="2"></rect><path d="M9 3v18"></path></svg></button></header><div data-sidebar-placeholder="" class="sticky top-(--fd-docs-row-1) z-20 [grid-area:sidebar] pointer-events-none *:pointer-events-auto h-[calc(var(--fd-docs-height)-var(--fd-docs-row-1))] md:layout:[--fd-sidebar-width:268px] max-md:hidden"><aside id="nd-sidebar" data-collapsed="false" data-hovered="false" class="absolute flex flex-col w-full inset-s-0 inset-y-0 items-end bg-fd-card text-sm border-e duration-250 *:w-(--fd-sidebar-width)"><div class="flex flex-col gap-3 p-4 pb-2"><div class="flex"><a class="inline-flex text-[0.9375rem] items-center gap-2.5 font-medium me-auto" href="/"><span style="display:inline-flex;align-items:center;gap:10px;font-weight:700"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-panels-top-left" aria-hidden="true"><rect width="18" height="18" x="3" y="3" rx="2"></rect><path d="M3 9h18"></path><path d="M9 21V9"></path></svg>annodex</span></a><button type="button" aria-label="Collapse Sidebar" data-collapsed="false" class="inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-fd-ring hover:bg-fd-accent hover:text-fd-accent-foreground p-1.5 [&amp;_svg]:size-4.5 mb-auto text-fd-muted-foreground"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-panel-left" aria-hidden="true"><rect width="18" height="18" x="3" y="3" rx="2"></rect><path d="M9 3v18"></path></svg></button></div><button type="button" data-search-full="" class="inline-flex items-center gap-2 rounded-lg border bg-fd-secondary/50 p-1.5 ps-2 text-sm text-fd-muted-foreground transition-colors hover:bg-fd-accent hover:text-fd-accent-foreground"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-search size-4" aria-hidden="true"><path d="m21 21-4.34-4.34"></path><circle cx="11" cy="11" r="8"></circle></svg>Search<div class="ms-auto inline-flex gap-0.5"><kbd class="rounded-md border bg-fd-background px-1.5">⌘</kbd><kbd class="rounded-md border bg-fd-background px-1.5">K</kbd></div></button></div><div dir="ltr" class="overflow-hidden min-h-0 flex-1" style="position:relative;--radix-scroll-area-corner-width:0px;--radix-scroll-area-corner-height:0px"><style>[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}</style><div data-radix-scroll-area-viewport="" class="size-full rounded-[inherit] *:flex! *:flex-col! *:gap-0.5! p-4 overscroll-contain mask-[linear-gradient(to_bottom,transparent,white_12px,white_calc(100%-12px),transparent)]" style="overflow-x:hidden;overflow-y:hidden"><div style="min-width:100%;display:table"><a data-active="true" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors" style="padding-inline-start:calc(2 * var(--spacing))" href="/docs"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-book-open-text" aria-hidden="true"><path d="M12 7v14"></path><path d="M16 12h2"></path><path d="M16 8h2"></path><path d="M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z"></path><path d="M6 12h2"></path><path d="M6 8h2"></path></svg>Docs</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors" style="padding-inline-start:calc(2 * var(--spacing))" href="/workspace"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-square-terminal" aria-hidden="true"><path d="m7 11 2-2-2-2"></path><path d="M11 13h4"></path><rect width="18" height="18" x="3" y="3" rx="2" ry="2"></rect></svg>Workspace</a><a href="https://github.com/seqyuan/annodex" rel="noreferrer noopener" target="_blank" data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors mb-4" style="padding-inline-start:calc(2 * var(--spacing))"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-external-link" aria-hidden="true"><path d="M15 3h6v6"></path><path d="M10 14 21 3"></path><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path></svg>GitHub</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors" style="padding-inline-start:calc(2 * var(--spacing))" href="/docs">Annodex</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors" style="padding-inline-start:calc(2 * var(--spacing))" href="/docs/quick-start">Quick Start</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors" style="padding-inline-start:calc(2 * var(--spacing))" href="/docs/installation-and-deployment">Installation and Deployment</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors" style="padding-inline-start:calc(2 * var(--spacing))" href="/docs/configuration">Configuration</a><a data-active="true" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors" style="padding-inline-start:calc(2 * var(--spacing))" href="/docs/architecture">Architecture</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors" style="padding-inline-start:calc(2 * var(--spacing))" href="/docs/workspace">Workspace</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors" style="padding-inline-start:calc(2 * var(--spacing))" href="/docs/sessions-and-projects">Sessions and Projects</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors" style="padding-inline-start:calc(2 * var(--spacing))" href="/docs/models-and-tools">Models and Tools</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors" style="padding-inline-start:calc(2 * var(--spacing))" href="/docs/runtime-and-sse">Runtime and SSE</a><a data-active="false" class="relative flex flex-row items-center gap-2 rounded-lg p-2 text-start text-fd-muted-foreground wrap-anywhere [&amp;_svg]:size-4 [&amp;_svg]:shrink-0 transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none data-[active=true]:bg-fd-primary/10 data-[active=true]:text-fd-primary data-[active=true]:hover:transition-colors" style="padding-inline-start:calc(2 * var(--spacing))" href="/docs/file-and-report-viewing">File Viewing and Outputs</a></div></div></div><div class="flex flex-col p-4 pt-2"><div class="flex text-fd-muted-foreground items-center border bg-fd-secondary/50 p-0.5 pe-0 rounded-lg empty:hidden"><button class="inline-flex items-center border p-1 overflow-hidden px-1 py-0 border-y-0 border-e-0 rounded-none ms-auto *:rounded-md" aria-label="Toggle Theme" data-theme-toggle=""><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="currentColor" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-sun size-6.5 p-1.5 text-fd-muted-foreground" aria-hidden="true"><circle cx="12" cy="12" r="4"></circle><path d="M12 2v2"></path><path d="M12 20v2"></path><path d="m4.93 4.93 1.41 1.41"></path><path d="m17.66 17.66 1.41 1.41"></path><path d="M2 12h2"></path><path d="M20 12h2"></path><path d="m6.34 17.66-1.41 1.41"></path><path d="m19.07 4.93-1.41 1.41"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="currentColor" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-moon size-6.5 p-1.5 text-fd-muted-foreground" aria-hidden="true"><path d="M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401"></path></svg></button></div></div></aside></div><div data-sidebar-panel="" class="fixed flex top-[calc(--spacing(4)+var(--fd-docs-row-3))] inset-s-4 shadow-lg transition-opacity rounded-xl p-0.5 border bg-fd-muted text-fd-muted-foreground z-10 pointer-events-none opacity-0"><button type="button" aria-label="Collapse Sidebar" data-collapsed="false" class="inline-flex items-center justify-center text-sm font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-fd-ring hover:bg-fd-accent hover:text-fd-accent-foreground p-1.5 [&amp;_svg]:size-4.5 rounded-lg"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-panel-left" aria-hidden="true"><rect width="18" height="18" x="3" y="3" rx="2"></rect><path d="M9 3v18"></path></svg></button><button type="button" class="inline-flex items-center justify-center text-sm font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-fd-ring hover:bg-fd-accent hover:text-fd-accent-foreground p-1.5 [&amp;_svg]:size-4.5 rounded-lg" data-search="" aria-label="Open Search"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-search" aria-hidden="true"><path d="m21 21-4.34-4.34"></path><circle cx="11" cy="11" r="8"></circle></svg></button></div><div data-state="closed" data-toc-popover="" class="sticky top-(--fd-docs-row-2) z-10 [grid-area:toc-popover] h-(--fd-toc-popover-height) xl:hidden max-xl:layout:[--fd-toc-popover-height:--spacing(10)]"><header class="border-b backdrop-blur-sm transition-colors bg-fd-background/80"><button type="button" aria-expanded="false" data-state="closed" class="flex w-full h-10 items-center text-sm text-fd-muted-foreground gap-2.5 px-4 py-2.5 text-start focus-visible:outline-none [&amp;_svg]:size-4 md:px-6" data-toc-popover-trigger=""><svg role="progressbar" viewBox="0 0 18 18" aria-valuenow="0" aria-valuemin="0" aria-valuemax="1" style="width:18px;height:18px" class="shrink-0"><circle cx="9" cy="9" r="7.5" fill="none" stroke-width="1.5" class="stroke-current/25"></circle><circle cx="9" cy="9" r="7.5" fill="none" stroke-width="1.5" stroke="currentColor" stroke-dasharray="47.12388980384689" stroke-dashoffset="47.12388980384689" stroke-linecap="round" transform="rotate(-90 9 9)" class="transition-all"></circle></svg><span class="grid flex-1 *:my-auto *:row-start-1 *:col-start-1"><span class="truncate transition-[opacity,translate,color]">Architecture</span><span class="truncate transition-[opacity,translate] opacity-0 translate-y-full pointer-events-none"></span></span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down shrink-0 transition-transform mx-0.5" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button><div data-state="closed" id="radix-_R_5bsnp5ulb_" hidden="" data-toc-popover-content="" class="overflow-hidden"></div></header></div><article id="nd-page" data-full="false" class="flex flex-col w-full max-w-[900px] mx-auto [grid-area:main] px-4 py-6 gap-4 md:px-6 md:pt-8 xl:px-8 xl:pt-14"><h1 class="text-[1.75em] font-semibold">Architecture</h1><p class="mb-8 text-lg text-fd-muted-foreground">annodex 的核心结构与数据流。</p><div class="prose flex-1"><h2 id="核心结构" class="group/heading flex scroll-m-28 flex-row items-center gap-1"><a data-card="" href="#核心结构">核心结构</a><button aria-label="Copy Anchor Link" class="inline-flex items-center justify-center rounded-md text-sm font-medium duration-100 disabled:pointer-events-none disabled:opacity-50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-fd-ring hover:bg-fd-accent hover:text-fd-accent-foreground p-1 [&amp;_svg]:size-4 not-prose shrink-0 text-fd-muted-foreground opacity-0 transition-opacity group-hover/heading:opacity-100"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-link" aria-hidden="true"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></svg></button></h2>
4
+ <p>系统由三部分组成:</p>
5
+ <ol>
6
+ <li><strong>Browser UI</strong> — 负责聊天、文件浏览、会话切换与状态展示</li>
7
+ <li><strong>Next.js Server</strong> — 负责 API、SSE、会话包装与配置管理</li>
8
+ <li><strong>Codex app-server</strong> — 提供底层线程与 turn 协议能力</li>
9
+ </ol>
10
+ <h2 id="数据流" class="group/heading flex scroll-m-28 flex-row items-center gap-1"><a data-card="" href="#数据流">数据流</a><button aria-label="Copy Anchor Link" class="inline-flex items-center justify-center rounded-md text-sm font-medium duration-100 disabled:pointer-events-none disabled:opacity-50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-fd-ring hover:bg-fd-accent hover:text-fd-accent-foreground p-1 [&amp;_svg]:size-4 not-prose shrink-0 text-fd-muted-foreground opacity-0 transition-opacity group-hover/heading:opacity-100"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-link" aria-hidden="true"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></svg></button></h2>
11
+ <figure dir="ltr" class="my-4 bg-fd-card rounded-xl shiki relative border shadow-sm not-prose overflow-hidden text-sm shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e" tabindex="-1"><div class="empty:hidden absolute top-3 right-2 z-2 backdrop-blur-lg rounded-lg text-fd-muted-foreground"><button type="button" class="inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-fd-ring p-1 [&amp;_svg]:size-4 hover:text-fd-accent-foreground data-checked:text-fd-accent-foreground" aria-label="Copy Text"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-clipboard" aria-hidden="true"><rect width="8" height="4" x="8" y="2" rx="1" ry="1"></rect><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path></svg></button></div><div role="region" tabindex="0" class="text-[0.8125rem] py-3.5 overflow-auto max-h-[600px] fd-scroll-container focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-fd-ring" style="--padding-right:calc(var(--spacing) * 8)"><pre class="min-w-full w-max *:flex *:flex-col"><code><span class="line"><span>Browser -&gt; Next.js API -&gt; Codex app-server</span></span>
12
+ <span class="line"><span> &lt;- SSE &lt;-</span></span></code></pre></div></figure>
13
+ <h2 id="关键模块" class="group/heading flex scroll-m-28 flex-row items-center gap-1"><a data-card="" href="#关键模块">关键模块</a><button aria-label="Copy Anchor Link" class="inline-flex items-center justify-center rounded-md text-sm font-medium duration-100 disabled:pointer-events-none disabled:opacity-50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-fd-ring hover:bg-fd-accent hover:text-fd-accent-foreground p-1 [&amp;_svg]:size-4 not-prose shrink-0 text-fd-muted-foreground opacity-0 transition-opacity group-hover/heading:opacity-100"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-link" aria-hidden="true"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></svg></button></h2>
14
+ <ul>
15
+ <li><code>lib/codex-server.ts</code>: 启动或连接 Codex app-server</li>
16
+ <li><code>lib/codex-session.ts</code>: 将 Codex 事件映射为前端可消费事件</li>
17
+ <li><code>lib/rpc-manager.ts</code>: 管理活跃 session wrapper 生命周期</li>
18
+ <li><code>lib/session-reader.ts</code>: 读取线程、turn 与会话历史</li>
19
+ </ul>
20
+ <h2 id="设计重点" class="group/heading flex scroll-m-28 flex-row items-center gap-1"><a data-card="" href="#设计重点">设计重点</a><button aria-label="Copy Anchor Link" class="inline-flex items-center justify-center rounded-md text-sm font-medium duration-100 disabled:pointer-events-none disabled:opacity-50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-fd-ring hover:bg-fd-accent hover:text-fd-accent-foreground p-1 [&amp;_svg]:size-4 not-prose shrink-0 text-fd-muted-foreground opacity-0 transition-opacity group-hover/heading:opacity-100"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-link" aria-hidden="true"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></svg></button></h2>
21
+ <ul>
22
+ <li>让项目成为组织会话的基本单位</li>
23
+ <li>让运行状态对用户可见</li>
24
+ <li>让文件查看与聊天协作发生在同一界面</li>
25
+ <li>保持对多 provider / model 配置的兼容</li>
26
+ </ul></div><div class="flex flex-row flex-wrap items-center justify-between gap-4 empty:hidden"></div><div class="@container grid gap-4 grid-cols-2"><a class="flex flex-col gap-2 rounded-lg border p-4 text-sm transition-colors hover:bg-fd-accent/80 hover:text-fd-accent-foreground @max-lg:col-span-full" href="/docs/configuration"><div class="inline-flex items-center gap-1.5 font-medium"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-left -mx-1 size-4 shrink-0 rtl:rotate-180" aria-hidden="true"><path d="m15 18-6-6 6-6"></path></svg><p>Configuration</p></div><p class="text-fd-muted-foreground truncate">annodex 的配置位置与主要配置对象。</p></a><a class="flex flex-col gap-2 rounded-lg border p-4 text-sm transition-colors hover:bg-fd-accent/80 hover:text-fd-accent-foreground @max-lg:col-span-full text-end" href="/docs/workspace"><div class="inline-flex items-center gap-1.5 font-medium flex-row-reverse"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-right -mx-1 size-4 shrink-0 rtl:rotate-180" aria-hidden="true"><path d="m9 18 6-6-6-6"></path></svg><p>Workspace</p></div><p class="text-fd-muted-foreground truncate">annodex 工作台的主要界面组成。</p></a></div></article><div id="nd-toc" class="sticky top-(--fd-docs-row-1) h-[calc(var(--fd-docs-height)-var(--fd-docs-row-1))] flex flex-col [grid-area:toc] w-(--fd-toc-width) pt-12 pe-4 pb-2 xl:layout:[--fd-toc-width:268px] max-xl:hidden"><h3 id="toc-title" class="inline-flex items-center gap-1.5 text-sm text-fd-muted-foreground"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-text-align-start size-4" aria-hidden="true"><path d="M21 5H3"></path><path d="M15 12H3"></path><path d="M17 19H3"></path></svg>On this page</h3><div class="relative min-h-0 text-sm ms-px overflow-auto [scrollbar-width:none] mask-[linear-gradient(to_bottom,transparent,white_16px,white_calc(100%-16px),transparent)] py-3"><div class="relative"><div class="flex flex-col border-s border-fd-foreground/10"><a data-active="false" href="#核心结构" class="prose py-1.5 text-sm text-fd-muted-foreground scroll-m-4 transition-colors wrap-anywhere first:pt-0 last:pb-0 data-[active=true]:text-fd-primary hover:text-fd-accent-foreground ps-3">核心结构</a><a data-active="false" href="#数据流" class="prose py-1.5 text-sm text-fd-muted-foreground scroll-m-4 transition-colors wrap-anywhere first:pt-0 last:pb-0 data-[active=true]:text-fd-primary hover:text-fd-accent-foreground ps-3">数据流</a><a data-active="false" href="#关键模块" class="prose py-1.5 text-sm text-fd-muted-foreground scroll-m-4 transition-colors wrap-anywhere first:pt-0 last:pb-0 data-[active=true]:text-fd-primary hover:text-fd-accent-foreground ps-3">关键模块</a><a data-active="false" href="#设计重点" class="prose py-1.5 text-sm text-fd-muted-foreground scroll-m-4 transition-colors wrap-anywhere first:pt-0 last:pb-0 data-[active=true]:text-fd-primary hover:text-fd-accent-foreground ps-3">设计重点</a></div></div></div></div><!--$--><!--/$--></div><script src="/_next/static/chunks/webpack-ced9e639bb94bd30.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[67504,[\"8500\",\"static/chunks/8500-f62a38ff68ab7f42.js\",\"5122\",\"static/chunks/5122-6e0d29bd15f079e1.js\",\"7177\",\"static/chunks/app/layout-11cc1f48ff425fd0.js\"],\"RootProvider\"]\n3:I[57121,[],\"\"]\n4:I[74581,[],\"\"]\n5:I[67197,[\"5166\",\"static/chunks/5166-58bbf85cbd32ad99.js\",\"9278\",\"static/chunks/9278-58ee6294b32318a5.js\",\"4499\",\"static/chunks/app/docs/layout-4809bb9dd4b49bff.js\"],\"LayoutBody\"]\n6:I[99535,[\"5166\",\"static/chunks/5166-58bbf85cbd32ad99.js\",\"9278\",\"static/chunks/9278-58ee6294b32318a5.js\",\"4894\",\"static/chunks/4894-e27a35edd6176226.js\",\"7870\",\"static/chunks/app/docs/%5B%5B...slug%5D%5D/page-d232277716ab7921.js\"],\"default\"]\ne:I[27123,[],\"default\",1]\n:HL[\"/_next/static/media/7deddc85b7ffd1dc-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/ec14413c594b3356-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/fddca953485158e4.css\",\"style\"]\n:HL[\"/_next/static/css/876e881d7ba02ed2.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"docs\",\"architecture\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"docs\",{\"children\":[[\"slug\",\"architecture\",\"oc\",null],{\"children\":[\"__PAGE__\",{}]}]}]},\"$undefined\",\"$undefined\",16],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/fddca953485158e4.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/876e881d7ba02ed2.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"__variable_66b8ca\",\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"head\",null,{\"children\":[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"(function(){try{var t=localStorage.getItem(\\\"annodex-theme\\\");if(t===\\\"dark\\\")document.documentElement.classList.add(\\\"dark\\\")}catch(e){}})();\"}}]}],[\"$\",\"body\",null,{\"style\":{\"minHeight\":\"100dvh\",\"display\":\"flex\",\"flexDirection\":\"column\"},\"children\":[\"$\",\"$L2\",null,{\"children\":[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"tree\":{\"type\":\"root\",\"$ref\":{\"folder\":\"\",\"meta\":\"meta.json\"},\"$id\":\"root\",\"name\":\"Documentation\",\"description\":\"$undefined\",\"children\":[{\"$id\":\"index.mdx\",\"type\":\"page\",\"name\":\"Annodex\",\"description\":\"浏览器原生的 Codex 工作台。\",\"icon\":\"$undefined\",\"url\":\"/docs\",\"$ref\":\"index.mdx\"},{\"$id\":\"quick-start.mdx\",\"type\":\"page\",\"name\":\"Quick Start\",\"description\":\"安装并启动 annodex。\",\"icon\":\"$undefined\",\"url\":\"/docs/quick-start\",\"$ref\":\"quick-start.mdx\"},{\"$id\":\"installation-and-deployment.mdx\",\"type\":\"page\",\"name\":\"Installation and Deployment\",\"description\":\"如何安装、启动并部署 annodex。\",\"icon\":\"$undefined\",\"url\":\"/docs/installation-and-deployment\",\"$ref\":\"installation-and-deployment.mdx\"},{\"$id\":\"configuration.mdx\",\"type\":\"page\",\"name\":\"Configuration\",\"description\":\"annodex 的配置位置与主要配置对象。\",\"icon\":\"$undefined\",\"url\":\"/docs/configuration\",\"$ref\":\"configuration.mdx\"},{\"$id\":\"architecture.mdx\",\"type\":\"page\",\"name\":\"Architecture\",\"description\":\"annodex 的核心结构与数据流。\",\"icon\":\"$undefined\",\"url\":\"/docs/architecture\",\"$ref\":\"architecture.mdx\"},{\"$id\":\"workspace.mdx\",\"type\":\"page\",\"name\":\"Workspace\",\"description\":\"annodex 工作台的主要界面组成。\",\"icon\":\"$undefined\",\"url\":\"/docs/workspace\",\"$ref\":\"workspace.mdx\"},{\"$id\":\"sessions-and-projects.mdx\",\"type\":\"page\",\"name\":\"Sessions and Projects\",\"description\":\"为什么 annodex 以项目为中心组织会话。\",\"icon\":\"$undefined\",\"url\":\"/docs/sessions-and-projects\",\"$ref\":\"sessions-and-projects.mdx\"},{\"$id\":\"models-and-tools.mdx\",\"type\":\"page\",\"name\":\"Models and Tools\",\"description\":\"provider、模型、thinking level 与工具预设的作用。\",\"icon\":\"$undefined\",\"url\":\"/docs/models-and-tools\",\"$ref\":\"models-and-tools.mdx\"},{\"$id\":\"runtime-and-sse.mdx\",\"type\":\"page\",\"name\":\"Runtime and SSE\",\"description\":\"annodex 如何显示 agent 的运行态与实时事件。\",\"icon\":\"$undefined\",\"url\":\"/docs/runtime-and-sse\",\"$ref\":\"runtime-and-sse.mdx\"},{\"$id\":\"file-and-report-viewing.mdx\",\"type\":\"page\",\"name\":\"File Viewing and Outputs\",\"description\":\"annodex 如何让文件审阅与结果产物查看发生在同一界面。\",\"icon\":\"$undefined\",\"url\":\"/docs/file-and-report-viewing\",\"$ref\":\"file-and-report-viewing.mdx\"}]},\"tabs\":[],\"tabMode\":\"$undefined\",\"sidebar\":{},\"nav\":{\"title\":[\"$\",\"span\",null,{\"style\":{\"display\":\"inline-flex\",\"alignItems\":\"center\",\"gap\":10,\"fontWeight\":700},\"children\":[[\"$\",\"$L6\",null,{\"ref\":\"$undefined\",\"iconNode\":[[\"rect\",{\"width\":\"18\",\"height\":\"18\",\"x\":\"3\",\"y\":\"3\",\"rx\":\"2\",\"key\":\"afitv7\"}],[\"path\",{\"d\":\"M3 9h18\",\"key\":\"1pudct\"}],[\"path\",{\"d\":\"M9 21V9\",\"key\":\"1oto5p\"}]],\"className\":\"lucide-panels-top-left\",\"size\":18}],\"annodex\"]}]},\"links\":[{\"text\":\"Docs\",\"url\":\"/docs\",\"icon\":\"$L7\",\"active\":\"nested-url\"},{\"text\":\"Workspace\",\"url\":\"/workspace\",\"icon\":\"$L8\",\"active\":\"nested-url\"},{\"text\":\"GitHub\",\"url\":\"https://github.com/seqyuan/annodex\",\"external\":true}],\"children\":\"$L9\"}]]}],{\"children\":[\"$La\",{\"children\":[\"$Lb\",{},null,false,null]},null,false,\"$@c\"]},null,false,null]},null,false,null],\"$Ld\",false]],\"m\":\"$undefined\",\"G\":[\"$e\",[]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"oIqDpdOWwl7oIU6o8NnNp\"}\n"])</script><script>self.__next_f.push([1,"10:I[90484,[],\"OutletBoundary\"]\n11:\"$Sreact.suspense\"\n14:I[90484,[],\"ViewportBoundary\"]\n16:I[90484,[],\"MetadataBoundary\"]\n7:[\"$\",\"$L6\",null,{\"ref\":\"$undefined\",\"iconNode\":[[\"path\",{\"d\":\"M12 7v14\",\"key\":\"1akyts\"}],[\"path\",{\"d\":\"M16 12h2\",\"key\":\"7q9ll5\"}],[\"path\",{\"d\":\"M16 8h2\",\"key\":\"msurwy\"}],[\"path\",{\"d\":\"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z\",\"key\":\"ruj8y\"}],[\"path\",{\"d\":\"M6 12h2\",\"key\":\"32wvfc\"}],[\"path\",{\"d\":\"M6 8h2\",\"key\":\"30oboj\"}]],\"className\":\"lucide-book-open-text\",\"size\":16}]\n8:[\"$\",\"$L6\",null,{\"ref\":\"$undefined\",\"iconNode\":[[\"path\",{\"d\":\"m7 11 2-2-2-2\",\"key\":\"1lz0vl\"}],[\"path\",{\"d\":\"M11 13h4\",\"key\":\"1p7l4v\"}],[\"rect\",{\"width\":\"18\",\"height\":\"18\",\"x\":\"3\",\"y\":\"3\",\"rx\":\"2\",\"ry\":\"2\",\"key\":\"1m3agn\"}]],\"className\":\"lucide-square-terminal\",\"size\":16}]\n9:[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]\na:[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}]\nb:[\"$\",\"$1\",\"c\",{\"children\":[\"$Lf\",null,[\"$\",\"$L10\",null,{\"children\":[\"$\",\"$11\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@12\"}]}]]}]\n13:[]\nc:\"$W13\"\nd:[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L14\",null,{\"children\":\"$L15\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L16\",null,{\"children\":[\"$\",\"$11\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L17\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}]\n"])</script><script>self.__next_f.push([1,"18:I[39006,[\"5166\",\"static/chunks/5166-58bbf85cbd32ad99.js\",\"9278\",\"static/chunks/9278-58ee6294b32318a5.js\",\"4894\",\"static/chunks/4894-e27a35edd6176226.js\",\"7870\",\"static/chunks/app/docs/%5B%5B...slug%5D%5D/page-d232277716ab7921.js\"],\"DocsPage\"]\n19:I[39006,[\"5166\",\"static/chunks/5166-58bbf85cbd32ad99.js\",\"9278\",\"static/chunks/9278-58ee6294b32318a5.js\",\"4894\",\"static/chunks/4894-e27a35edd6176226.js\",\"7870\",\"static/chunks/app/docs/%5B%5B...slug%5D%5D/page-d232277716ab7921.js\"],\"DocsTitle\"]\n1a:I[39006,[\"5166\",\"static/chunks/5166-58bbf85cbd32ad99.js\",\"9278\",\"static/chunks/9278-58ee6294b32318a5.js\",\"4894\",\"static/chunks/4894-e27a35edd6176226.js\",\"7870\",\"static/chunks/app/docs/%5B%5B...slug%5D%5D/page-d232277716ab7921.js\"],\"DocsDescription\"]\n1b:I[39006,[\"5166\",\"static/chunks/5166-58bbf85cbd32ad99.js\",\"9278\",\"static/chunks/9278-58ee6294b32318a5.js\",\"4894\",\"static/chunks/4894-e27a35edd6176226.js\",\"7870\",\"static/chunks/app/docs/%5B%5B...slug%5D%5D/page-d232277716ab7921.js\"],\"DocsBody\"]\n1c:I[88518,[\"5166\",\"static/chunks/5166-58bbf85cbd32ad99.js\",\"9278\",\"static/chunks/9278-58ee6294b32318a5.js\",\"4894\",\"static/chunks/4894-e27a35edd6176226.js\",\"7870\",\"static/chunks/app/docs/%5B%5B...slug%5D%5D/page-d232277716ab7921.js\"],\"Heading\"]\n1d:I[13768,[\"5166\",\"static/chunks/5166-58bbf85cbd32ad99.js\",\"9278\",\"static/chunks/9278-58ee6294b32318a5.js\",\"4894\",\"static/chunks/4894-e27a35edd6176226.js\",\"7870\",\"static/chunks/app/docs/%5B%5B...slug%5D%5D/page-d232277716ab7921.js\"],\"CodeBlock\"]\n1e:I[13768,[\"5166\",\"static/chunks/5166-58bbf85cbd32ad99.js\",\"9278\",\"static/chunks/9278-58ee6294b32318a5.js\",\"4894\",\"static/chunks/4894-e27a35edd6176226.js\",\"7870\",\"static/chunks/app/docs/%5B%5B...slug%5D%5D/page-d232277716ab7921.js\"],\"Pre\"]\n"])</script><script>self.__next_f.push([1,"f:[\"$\",\"$L18\",null,{\"toc\":[{\"depth\":2,\"url\":\"#核心结构\",\"title\":\"核心结构\"},{\"depth\":2,\"url\":\"#数据流\",\"title\":\"数据流\"},{\"depth\":2,\"url\":\"#关键模块\",\"title\":\"关键模块\"},{\"depth\":2,\"url\":\"#设计重点\",\"title\":\"设计重点\"}],\"full\":\"$undefined\",\"children\":[[\"$\",\"$L19\",null,{\"children\":\"Architecture\"}],[\"$\",\"$L1a\",null,{\"children\":\"annodex 的核心结构与数据流。\"}],[\"$\",\"$L1b\",null,{\"children\":[[\"$\",\"$L1c\",null,{\"as\":\"h2\",\"id\":\"核心结构\",\"children\":\"核心结构\"}],\"\\n\",[\"$\",\"p\",null,{\"children\":\"系统由三部分组成:\"}],\"\\n\",[\"$\",\"ol\",null,{\"children\":[\"\\n\",[\"$\",\"li\",null,{\"children\":[[\"$\",\"strong\",null,{\"children\":\"Browser UI\"}],\" — 负责聊天、文件浏览、会话切换与状态展示\"]}],\"\\n\",[\"$\",\"li\",null,{\"children\":[[\"$\",\"strong\",null,{\"children\":\"Next.js Server\"}],\" — 负责 API、SSE、会话包装与配置管理\"]}],\"\\n\",[\"$\",\"li\",null,{\"children\":[[\"$\",\"strong\",null,{\"children\":\"Codex app-server\"}],\" — 提供底层线程与 turn 协议能力\"]}],\"\\n\"]}],\"\\n\",[\"$\",\"$L1c\",null,{\"as\":\"h2\",\"id\":\"数据流\",\"children\":\"数据流\"}],\"\\n\",[\"$\",\"$L1d\",null,{\"className\":\"shiki shiki-themes github-light github-dark\",\"style\":{\"--shiki-light\":\"#24292e\",\"--shiki-dark\":\"#e1e4e8\",\"--shiki-light-bg\":\"#fff\",\"--shiki-dark-bg\":\"#24292e\"},\"tabIndex\":\"0\",\"icon\":\"\u003csvg viewBox=\\\"0 0 24 24\\\"\u003e\u003cpath d=\\\"M 6,1 C 4.354992,1 3,2.354992 3,4 v 16 c 0,1.645008 1.354992,3 3,3 h 12 c 1.645008,0 3,-1.354992 3,-3 V 8 7 A 1.0001,1.0001 0 0 0 20.707031,6.2929687 l -5,-5 A 1.0001,1.0001 0 0 0 15,1 h -1 z m 0,2 h 7 v 3 c 0,1.645008 1.354992,3 3,3 h 3 v 11 c 0,0.564129 -0.435871,1 -1,1 H 6 C 5.4358712,21 5,20.564129 5,20 V 4 C 5,3.4358712 5.4358712,3 6,3 Z M 15,3.4140625 18.585937,7 H 16 C 15.435871,7 15,6.5641288 15,6 Z\\\" fill=\\\"currentColor\\\" /\u003e\u003c/svg\u003e\",\"children\":[\"$\",\"$L1e\",null,{\"children\":[\"$\",\"code\",null,{\"children\":[[\"$\",\"span\",null,{\"className\":\"line\",\"children\":[\"$\",\"span\",null,{\"children\":\"Browser -\u003e Next.js API -\u003e Codex app-server\"}]}],\"\\n\",[\"$\",\"span\",null,{\"className\":\"line\",\"children\":[\"$\",\"span\",null,{\"children\":\" \u003c- SSE \u003c-\"}]}]]}]}]}],\"\\n\",[\"$\",\"$L1c\",null,{\"as\":\"h2\",\"id\":\"关键模块\",\"children\":\"关键模块\"}],\"\\n\",[\"$\",\"ul\",null,{\"children\":[\"\\n\",[\"$\",\"li\",null,{\"children\":[[\"$\",\"code\",null,{\"children\":\"lib/codex-server.ts\"}],\": 启动或连接 Codex app-server\"]}],\"\\n\",[\"$\",\"li\",null,{\"children\":[[\"$\",\"code\",null,{\"children\":\"lib/codex-session.ts\"}],\": 将 Codex 事件映射为前端可消费事件\"]}],\"\\n\",[\"$\",\"li\",null,{\"children\":[[\"$\",\"code\",null,{\"children\":\"lib/rpc-manager.ts\"}],\": 管理活跃 session wrapper 生命周期\"]}],\"\\n\",[\"$\",\"li\",null,{\"children\":[[\"$\",\"code\",null,{\"children\":\"lib/session-reader.ts\"}],\": 读取线程、turn 与会话历史\"]}],\"\\n\"]}],\"\\n\",[\"$\",\"$L1c\",null,{\"as\":\"h2\",\"id\":\"设计重点\",\"children\":\"设计重点\"}],\"\\n\",[\"$\",\"ul\",null,{\"children\":[\"\\n\",[\"$\",\"li\",null,{\"children\":\"让项目成为组织会话的基本单位\"}],\"\\n\",[\"$\",\"li\",null,{\"children\":\"让运行状态对用户可见\"}],\"\\n\",[\"$\",\"li\",null,{\"children\":\"让文件查看与聊天协作发生在同一界面\"}],\"\\n\",[\"$\",\"li\",null,{\"children\":\"保持对多 provider / model 配置的兼容\"}],\"\\n\"]}]]}]]}]\n"])</script><script>self.__next_f.push([1,"15:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"1f:I[86869,[],\"IconMark\"]\n12:null\n17:[[\"$\",\"title\",\"0\",{\"children\":\"Architecture\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"annodex 的核心结构与数据流。\"}],[\"$\",\"link\",\"2\",{\"rel\":\"shortcut icon\",\"href\":\"/favicon.svg\",\"type\":\"image/svg+xml\"}],[\"$\",\"link\",\"3\",{\"rel\":\"icon\",\"href\":\"/favicon.svg\",\"type\":\"image/svg+xml\"}],[\"$\",\"$L1f\",\"4\",{}]]\n"])</script></body></html>
@@ -0,0 +1,16 @@
1
+ {
2
+ "headers": {
3
+ "x-nextjs-stale-time": "300",
4
+ "x-nextjs-prerender": "1",
5
+ "x-next-cache-tags": "_N_T_/layout,_N_T_/docs/layout,_N_T_/docs/[[...slug]]/layout,_N_T_/docs/[[...slug]]/page,_N_T_/docs/architecture"
6
+ },
7
+ "segmentPaths": [
8
+ "/_tree",
9
+ "/_full",
10
+ "/docs/$oc$slug/__PAGE__",
11
+ "/docs/$oc$slug",
12
+ "/docs",
13
+ "/_index",
14
+ "/_head"
15
+ ]
16
+ }
@@ -0,0 +1,36 @@
1
+ 1:"$Sreact.fragment"
2
+ 2:I[67504,["8500","static/chunks/8500-f62a38ff68ab7f42.js","5122","static/chunks/5122-6e0d29bd15f079e1.js","7177","static/chunks/app/layout-11cc1f48ff425fd0.js"],"RootProvider"]
3
+ 3:I[57121,[],""]
4
+ 4:I[74581,[],""]
5
+ 5:I[67197,["5166","static/chunks/5166-58bbf85cbd32ad99.js","9278","static/chunks/9278-58ee6294b32318a5.js","4499","static/chunks/app/docs/layout-4809bb9dd4b49bff.js"],"LayoutBody"]
6
+ 6:I[99535,["5166","static/chunks/5166-58bbf85cbd32ad99.js","9278","static/chunks/9278-58ee6294b32318a5.js","4894","static/chunks/4894-e27a35edd6176226.js","7870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-d232277716ab7921.js"],"default"]
7
+ e:I[27123,[],"default",1]
8
+ :HL["/_next/static/media/7deddc85b7ffd1dc-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
9
+ :HL["/_next/static/media/ec14413c594b3356-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
10
+ :HL["/_next/static/css/fddca953485158e4.css","style"]
11
+ :HL["/_next/static/css/876e881d7ba02ed2.css","style"]
12
+ 0:{"P":null,"c":["","docs","architecture"],"q":"","i":false,"f":[[["",{"children":["docs",{"children":[["slug","architecture","oc",null],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/fddca953485158e4.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/876e881d7ba02ed2.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"__variable_66b8ca","suppressHydrationWarning":true,"children":[["$","head",null,{"children":["$","script",null,{"dangerouslySetInnerHTML":{"__html":"(function(){try{var t=localStorage.getItem(\"annodex-theme\");if(t===\"dark\")document.documentElement.classList.add(\"dark\")}catch(e){}})();"}}]}],["$","body",null,{"style":{"minHeight":"100dvh","display":"flex","flexDirection":"column"},"children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L5",null,{"tree":{"type":"root","$ref":{"folder":"","meta":"meta.json"},"$id":"root","name":"Documentation","description":"$undefined","children":[{"$id":"index.mdx","type":"page","name":"Annodex","description":"浏览器原生的 Codex 工作台。","icon":"$undefined","url":"/docs","$ref":"index.mdx"},{"$id":"quick-start.mdx","type":"page","name":"Quick Start","description":"安装并启动 annodex。","icon":"$undefined","url":"/docs/quick-start","$ref":"quick-start.mdx"},{"$id":"installation-and-deployment.mdx","type":"page","name":"Installation and Deployment","description":"如何安装、启动并部署 annodex。","icon":"$undefined","url":"/docs/installation-and-deployment","$ref":"installation-and-deployment.mdx"},{"$id":"configuration.mdx","type":"page","name":"Configuration","description":"annodex 的配置位置与主要配置对象。","icon":"$undefined","url":"/docs/configuration","$ref":"configuration.mdx"},{"$id":"architecture.mdx","type":"page","name":"Architecture","description":"annodex 的核心结构与数据流。","icon":"$undefined","url":"/docs/architecture","$ref":"architecture.mdx"},{"$id":"workspace.mdx","type":"page","name":"Workspace","description":"annodex 工作台的主要界面组成。","icon":"$undefined","url":"/docs/workspace","$ref":"workspace.mdx"},{"$id":"sessions-and-projects.mdx","type":"page","name":"Sessions and Projects","description":"为什么 annodex 以项目为中心组织会话。","icon":"$undefined","url":"/docs/sessions-and-projects","$ref":"sessions-and-projects.mdx"},{"$id":"models-and-tools.mdx","type":"page","name":"Models and Tools","description":"provider、模型、thinking level 与工具预设的作用。","icon":"$undefined","url":"/docs/models-and-tools","$ref":"models-and-tools.mdx"},{"$id":"runtime-and-sse.mdx","type":"page","name":"Runtime and SSE","description":"annodex 如何显示 agent 的运行态与实时事件。","icon":"$undefined","url":"/docs/runtime-and-sse","$ref":"runtime-and-sse.mdx"},{"$id":"file-and-report-viewing.mdx","type":"page","name":"File Viewing and Outputs","description":"annodex 如何让文件审阅与结果产物查看发生在同一界面。","icon":"$undefined","url":"/docs/file-and-report-viewing","$ref":"file-and-report-viewing.mdx"}]},"tabs":[],"tabMode":"$undefined","sidebar":{},"nav":{"title":["$","span",null,{"style":{"display":"inline-flex","alignItems":"center","gap":10,"fontWeight":700},"children":[["$","$L6",null,{"ref":"$undefined","iconNode":[["rect",{"width":"18","height":"18","x":"3","y":"3","rx":"2","key":"afitv7"}],["path",{"d":"M3 9h18","key":"1pudct"}],["path",{"d":"M9 21V9","key":"1oto5p"}]],"className":"lucide-panels-top-left","size":18}],"annodex"]}]},"links":[{"text":"Docs","url":"/docs","icon":"$L7","active":"nested-url"},{"text":"Workspace","url":"/workspace","icon":"$L8","active":"nested-url"},{"text":"GitHub","url":"https://github.com/seqyuan/annodex","external":true}],"children":"$L9"}]]}],{"children":["$La",{"children":["$Lb",{},null,false,null]},null,false,"$@c"]},null,false,null]},null,false,null],"$Ld",false]],"m":"$undefined","G":["$e",[]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"oIqDpdOWwl7oIU6o8NnNp"}
13
+ 10:I[90484,[],"OutletBoundary"]
14
+ 11:"$Sreact.suspense"
15
+ 14:I[90484,[],"ViewportBoundary"]
16
+ 16:I[90484,[],"MetadataBoundary"]
17
+ 7:["$","$L6",null,{"ref":"$undefined","iconNode":[["path",{"d":"M12 7v14","key":"1akyts"}],["path",{"d":"M16 12h2","key":"7q9ll5"}],["path",{"d":"M16 8h2","key":"msurwy"}],["path",{"d":"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z","key":"ruj8y"}],["path",{"d":"M6 12h2","key":"32wvfc"}],["path",{"d":"M6 8h2","key":"30oboj"}]],"className":"lucide-book-open-text","size":16}]
18
+ 8:["$","$L6",null,{"ref":"$undefined","iconNode":[["path",{"d":"m7 11 2-2-2-2","key":"1lz0vl"}],["path",{"d":"M11 13h4","key":"1p7l4v"}],["rect",{"width":"18","height":"18","x":"3","y":"3","rx":"2","ry":"2","key":"1m3agn"}]],"className":"lucide-square-terminal","size":16}]
19
+ 9:["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]
20
+ a:["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}]
21
+ b:["$","$1","c",{"children":["$Lf",null,["$","$L10",null,{"children":["$","$11",null,{"name":"Next.MetadataOutlet","children":"$@12"}]}]]}]
22
+ 13:[]
23
+ c:"$W13"
24
+ d:["$","$1","h",{"children":[null,["$","$L14",null,{"children":"$L15"}],["$","div",null,{"hidden":true,"children":["$","$L16",null,{"children":["$","$11",null,{"name":"Next.Metadata","children":"$L17"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}]
25
+ 18:I[39006,["5166","static/chunks/5166-58bbf85cbd32ad99.js","9278","static/chunks/9278-58ee6294b32318a5.js","4894","static/chunks/4894-e27a35edd6176226.js","7870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-d232277716ab7921.js"],"DocsPage"]
26
+ 19:I[39006,["5166","static/chunks/5166-58bbf85cbd32ad99.js","9278","static/chunks/9278-58ee6294b32318a5.js","4894","static/chunks/4894-e27a35edd6176226.js","7870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-d232277716ab7921.js"],"DocsTitle"]
27
+ 1a:I[39006,["5166","static/chunks/5166-58bbf85cbd32ad99.js","9278","static/chunks/9278-58ee6294b32318a5.js","4894","static/chunks/4894-e27a35edd6176226.js","7870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-d232277716ab7921.js"],"DocsDescription"]
28
+ 1b:I[39006,["5166","static/chunks/5166-58bbf85cbd32ad99.js","9278","static/chunks/9278-58ee6294b32318a5.js","4894","static/chunks/4894-e27a35edd6176226.js","7870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-d232277716ab7921.js"],"DocsBody"]
29
+ 1c:I[88518,["5166","static/chunks/5166-58bbf85cbd32ad99.js","9278","static/chunks/9278-58ee6294b32318a5.js","4894","static/chunks/4894-e27a35edd6176226.js","7870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-d232277716ab7921.js"],"Heading"]
30
+ 1d:I[13768,["5166","static/chunks/5166-58bbf85cbd32ad99.js","9278","static/chunks/9278-58ee6294b32318a5.js","4894","static/chunks/4894-e27a35edd6176226.js","7870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-d232277716ab7921.js"],"CodeBlock"]
31
+ 1e:I[13768,["5166","static/chunks/5166-58bbf85cbd32ad99.js","9278","static/chunks/9278-58ee6294b32318a5.js","4894","static/chunks/4894-e27a35edd6176226.js","7870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-d232277716ab7921.js"],"Pre"]
32
+ f:["$","$L18",null,{"toc":[{"depth":2,"url":"#核心结构","title":"核心结构"},{"depth":2,"url":"#数据流","title":"数据流"},{"depth":2,"url":"#关键模块","title":"关键模块"},{"depth":2,"url":"#设计重点","title":"设计重点"}],"full":"$undefined","children":[["$","$L19",null,{"children":"Architecture"}],["$","$L1a",null,{"children":"annodex 的核心结构与数据流。"}],["$","$L1b",null,{"children":[["$","$L1c",null,{"as":"h2","id":"核心结构","children":"核心结构"}],"\n",["$","p",null,{"children":"系统由三部分组成:"}],"\n",["$","ol",null,{"children":["\n",["$","li",null,{"children":[["$","strong",null,{"children":"Browser UI"}]," — 负责聊天、文件浏览、会话切换与状态展示"]}],"\n",["$","li",null,{"children":[["$","strong",null,{"children":"Next.js Server"}]," — 负责 API、SSE、会话包装与配置管理"]}],"\n",["$","li",null,{"children":[["$","strong",null,{"children":"Codex app-server"}]," — 提供底层线程与 turn 协议能力"]}],"\n"]}],"\n",["$","$L1c",null,{"as":"h2","id":"数据流","children":"数据流"}],"\n",["$","$L1d",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"<svg viewBox=\"0 0 24 24\"><path d=\"M 6,1 C 4.354992,1 3,2.354992 3,4 v 16 c 0,1.645008 1.354992,3 3,3 h 12 c 1.645008,0 3,-1.354992 3,-3 V 8 7 A 1.0001,1.0001 0 0 0 20.707031,6.2929687 l -5,-5 A 1.0001,1.0001 0 0 0 15,1 h -1 z m 0,2 h 7 v 3 c 0,1.645008 1.354992,3 3,3 h 3 v 11 c 0,0.564129 -0.435871,1 -1,1 H 6 C 5.4358712,21 5,20.564129 5,20 V 4 C 5,3.4358712 5.4358712,3 6,3 Z M 15,3.4140625 18.585937,7 H 16 C 15.435871,7 15,6.5641288 15,6 Z\" fill=\"currentColor\" /></svg>","children":["$","$L1e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":["$","span",null,{"children":"Browser -> Next.js API -> Codex app-server"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"children":" <- SSE <-"}]}]]}]}]}],"\n",["$","$L1c",null,{"as":"h2","id":"关键模块","children":"关键模块"}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"lib/codex-server.ts"}],": 启动或连接 Codex app-server"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"lib/codex-session.ts"}],": 将 Codex 事件映射为前端可消费事件"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"lib/rpc-manager.ts"}],": 管理活跃 session wrapper 生命周期"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"lib/session-reader.ts"}],": 读取线程、turn 与会话历史"]}],"\n"]}],"\n",["$","$L1c",null,{"as":"h2","id":"设计重点","children":"设计重点"}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":"让项目成为组织会话的基本单位"}],"\n",["$","li",null,{"children":"让运行状态对用户可见"}],"\n",["$","li",null,{"children":"让文件查看与聊天协作发生在同一界面"}],"\n",["$","li",null,{"children":"保持对多 provider / model 配置的兼容"}],"\n"]}]]}]]}]
33
+ 15:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
34
+ 1f:I[86869,[],"IconMark"]
35
+ 12:null
36
+ 17:[["$","title","0",{"children":"Architecture"}],["$","meta","1",{"name":"description","content":"annodex 的核心结构与数据流。"}],["$","link","2",{"rel":"shortcut icon","href":"/favicon.svg","type":"image/svg+xml"}],["$","link","3",{"rel":"icon","href":"/favicon.svg","type":"image/svg+xml"}],["$","$L1f","4",{}]]
@@ -0,0 +1,36 @@
1
+ 1:"$Sreact.fragment"
2
+ 2:I[67504,["8500","static/chunks/8500-f62a38ff68ab7f42.js","5122","static/chunks/5122-6e0d29bd15f079e1.js","7177","static/chunks/app/layout-11cc1f48ff425fd0.js"],"RootProvider"]
3
+ 3:I[57121,[],""]
4
+ 4:I[74581,[],""]
5
+ 5:I[67197,["5166","static/chunks/5166-58bbf85cbd32ad99.js","9278","static/chunks/9278-58ee6294b32318a5.js","4499","static/chunks/app/docs/layout-4809bb9dd4b49bff.js"],"LayoutBody"]
6
+ 6:I[99535,["5166","static/chunks/5166-58bbf85cbd32ad99.js","9278","static/chunks/9278-58ee6294b32318a5.js","4894","static/chunks/4894-e27a35edd6176226.js","7870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-d232277716ab7921.js"],"default"]
7
+ e:I[27123,[],"default",1]
8
+ :HL["/_next/static/media/7deddc85b7ffd1dc-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
9
+ :HL["/_next/static/media/ec14413c594b3356-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
10
+ :HL["/_next/static/css/fddca953485158e4.css","style"]
11
+ :HL["/_next/static/css/876e881d7ba02ed2.css","style"]
12
+ 0:{"P":null,"c":["","docs","architecture"],"q":"","i":false,"f":[[["",{"children":["docs",{"children":[["slug","architecture","oc",null],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/fddca953485158e4.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/876e881d7ba02ed2.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"__variable_66b8ca","suppressHydrationWarning":true,"children":[["$","head",null,{"children":["$","script",null,{"dangerouslySetInnerHTML":{"__html":"(function(){try{var t=localStorage.getItem(\"annodex-theme\");if(t===\"dark\")document.documentElement.classList.add(\"dark\")}catch(e){}})();"}}]}],["$","body",null,{"style":{"minHeight":"100dvh","display":"flex","flexDirection":"column"},"children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L5",null,{"tree":{"type":"root","$ref":{"folder":"","meta":"meta.json"},"$id":"root","name":"Documentation","description":"$undefined","children":[{"$id":"index.mdx","type":"page","name":"Annodex","description":"浏览器原生的 Codex 工作台。","icon":"$undefined","url":"/docs","$ref":"index.mdx"},{"$id":"quick-start.mdx","type":"page","name":"Quick Start","description":"安装并启动 annodex。","icon":"$undefined","url":"/docs/quick-start","$ref":"quick-start.mdx"},{"$id":"installation-and-deployment.mdx","type":"page","name":"Installation and Deployment","description":"如何安装、启动并部署 annodex。","icon":"$undefined","url":"/docs/installation-and-deployment","$ref":"installation-and-deployment.mdx"},{"$id":"configuration.mdx","type":"page","name":"Configuration","description":"annodex 的配置位置与主要配置对象。","icon":"$undefined","url":"/docs/configuration","$ref":"configuration.mdx"},{"$id":"architecture.mdx","type":"page","name":"Architecture","description":"annodex 的核心结构与数据流。","icon":"$undefined","url":"/docs/architecture","$ref":"architecture.mdx"},{"$id":"workspace.mdx","type":"page","name":"Workspace","description":"annodex 工作台的主要界面组成。","icon":"$undefined","url":"/docs/workspace","$ref":"workspace.mdx"},{"$id":"sessions-and-projects.mdx","type":"page","name":"Sessions and Projects","description":"为什么 annodex 以项目为中心组织会话。","icon":"$undefined","url":"/docs/sessions-and-projects","$ref":"sessions-and-projects.mdx"},{"$id":"models-and-tools.mdx","type":"page","name":"Models and Tools","description":"provider、模型、thinking level 与工具预设的作用。","icon":"$undefined","url":"/docs/models-and-tools","$ref":"models-and-tools.mdx"},{"$id":"runtime-and-sse.mdx","type":"page","name":"Runtime and SSE","description":"annodex 如何显示 agent 的运行态与实时事件。","icon":"$undefined","url":"/docs/runtime-and-sse","$ref":"runtime-and-sse.mdx"},{"$id":"file-and-report-viewing.mdx","type":"page","name":"File Viewing and Outputs","description":"annodex 如何让文件审阅与结果产物查看发生在同一界面。","icon":"$undefined","url":"/docs/file-and-report-viewing","$ref":"file-and-report-viewing.mdx"}]},"tabs":[],"tabMode":"$undefined","sidebar":{},"nav":{"title":["$","span",null,{"style":{"display":"inline-flex","alignItems":"center","gap":10,"fontWeight":700},"children":[["$","$L6",null,{"ref":"$undefined","iconNode":[["rect",{"width":"18","height":"18","x":"3","y":"3","rx":"2","key":"afitv7"}],["path",{"d":"M3 9h18","key":"1pudct"}],["path",{"d":"M9 21V9","key":"1oto5p"}]],"className":"lucide-panels-top-left","size":18}],"annodex"]}]},"links":[{"text":"Docs","url":"/docs","icon":"$L7","active":"nested-url"},{"text":"Workspace","url":"/workspace","icon":"$L8","active":"nested-url"},{"text":"GitHub","url":"https://github.com/seqyuan/annodex","external":true}],"children":"$L9"}]]}],{"children":["$La",{"children":["$Lb",{},null,false,null]},null,false,"$@c"]},null,false,null]},null,false,null],"$Ld",false]],"m":"$undefined","G":["$e",[]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"oIqDpdOWwl7oIU6o8NnNp"}
13
+ 10:I[90484,[],"OutletBoundary"]
14
+ 11:"$Sreact.suspense"
15
+ 14:I[90484,[],"ViewportBoundary"]
16
+ 16:I[90484,[],"MetadataBoundary"]
17
+ 7:["$","$L6",null,{"ref":"$undefined","iconNode":[["path",{"d":"M12 7v14","key":"1akyts"}],["path",{"d":"M16 12h2","key":"7q9ll5"}],["path",{"d":"M16 8h2","key":"msurwy"}],["path",{"d":"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z","key":"ruj8y"}],["path",{"d":"M6 12h2","key":"32wvfc"}],["path",{"d":"M6 8h2","key":"30oboj"}]],"className":"lucide-book-open-text","size":16}]
18
+ 8:["$","$L6",null,{"ref":"$undefined","iconNode":[["path",{"d":"m7 11 2-2-2-2","key":"1lz0vl"}],["path",{"d":"M11 13h4","key":"1p7l4v"}],["rect",{"width":"18","height":"18","x":"3","y":"3","rx":"2","ry":"2","key":"1m3agn"}]],"className":"lucide-square-terminal","size":16}]
19
+ 9:["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]
20
+ a:["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}]
21
+ b:["$","$1","c",{"children":["$Lf",null,["$","$L10",null,{"children":["$","$11",null,{"name":"Next.MetadataOutlet","children":"$@12"}]}]]}]
22
+ 13:[]
23
+ c:"$W13"
24
+ d:["$","$1","h",{"children":[null,["$","$L14",null,{"children":"$L15"}],["$","div",null,{"hidden":true,"children":["$","$L16",null,{"children":["$","$11",null,{"name":"Next.Metadata","children":"$L17"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}]
25
+ 18:I[39006,["5166","static/chunks/5166-58bbf85cbd32ad99.js","9278","static/chunks/9278-58ee6294b32318a5.js","4894","static/chunks/4894-e27a35edd6176226.js","7870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-d232277716ab7921.js"],"DocsPage"]
26
+ 19:I[39006,["5166","static/chunks/5166-58bbf85cbd32ad99.js","9278","static/chunks/9278-58ee6294b32318a5.js","4894","static/chunks/4894-e27a35edd6176226.js","7870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-d232277716ab7921.js"],"DocsTitle"]
27
+ 1a:I[39006,["5166","static/chunks/5166-58bbf85cbd32ad99.js","9278","static/chunks/9278-58ee6294b32318a5.js","4894","static/chunks/4894-e27a35edd6176226.js","7870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-d232277716ab7921.js"],"DocsDescription"]
28
+ 1b:I[39006,["5166","static/chunks/5166-58bbf85cbd32ad99.js","9278","static/chunks/9278-58ee6294b32318a5.js","4894","static/chunks/4894-e27a35edd6176226.js","7870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-d232277716ab7921.js"],"DocsBody"]
29
+ 1c:I[88518,["5166","static/chunks/5166-58bbf85cbd32ad99.js","9278","static/chunks/9278-58ee6294b32318a5.js","4894","static/chunks/4894-e27a35edd6176226.js","7870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-d232277716ab7921.js"],"Heading"]
30
+ 1d:I[13768,["5166","static/chunks/5166-58bbf85cbd32ad99.js","9278","static/chunks/9278-58ee6294b32318a5.js","4894","static/chunks/4894-e27a35edd6176226.js","7870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-d232277716ab7921.js"],"CodeBlock"]
31
+ 1e:I[13768,["5166","static/chunks/5166-58bbf85cbd32ad99.js","9278","static/chunks/9278-58ee6294b32318a5.js","4894","static/chunks/4894-e27a35edd6176226.js","7870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-d232277716ab7921.js"],"Pre"]
32
+ f:["$","$L18",null,{"toc":[{"depth":2,"url":"#核心结构","title":"核心结构"},{"depth":2,"url":"#数据流","title":"数据流"},{"depth":2,"url":"#关键模块","title":"关键模块"},{"depth":2,"url":"#设计重点","title":"设计重点"}],"full":"$undefined","children":[["$","$L19",null,{"children":"Architecture"}],["$","$L1a",null,{"children":"annodex 的核心结构与数据流。"}],["$","$L1b",null,{"children":[["$","$L1c",null,{"as":"h2","id":"核心结构","children":"核心结构"}],"\n",["$","p",null,{"children":"系统由三部分组成:"}],"\n",["$","ol",null,{"children":["\n",["$","li",null,{"children":[["$","strong",null,{"children":"Browser UI"}]," — 负责聊天、文件浏览、会话切换与状态展示"]}],"\n",["$","li",null,{"children":[["$","strong",null,{"children":"Next.js Server"}]," — 负责 API、SSE、会话包装与配置管理"]}],"\n",["$","li",null,{"children":[["$","strong",null,{"children":"Codex app-server"}]," — 提供底层线程与 turn 协议能力"]}],"\n"]}],"\n",["$","$L1c",null,{"as":"h2","id":"数据流","children":"数据流"}],"\n",["$","$L1d",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"<svg viewBox=\"0 0 24 24\"><path d=\"M 6,1 C 4.354992,1 3,2.354992 3,4 v 16 c 0,1.645008 1.354992,3 3,3 h 12 c 1.645008,0 3,-1.354992 3,-3 V 8 7 A 1.0001,1.0001 0 0 0 20.707031,6.2929687 l -5,-5 A 1.0001,1.0001 0 0 0 15,1 h -1 z m 0,2 h 7 v 3 c 0,1.645008 1.354992,3 3,3 h 3 v 11 c 0,0.564129 -0.435871,1 -1,1 H 6 C 5.4358712,21 5,20.564129 5,20 V 4 C 5,3.4358712 5.4358712,3 6,3 Z M 15,3.4140625 18.585937,7 H 16 C 15.435871,7 15,6.5641288 15,6 Z\" fill=\"currentColor\" /></svg>","children":["$","$L1e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":["$","span",null,{"children":"Browser -> Next.js API -> Codex app-server"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"children":" <- SSE <-"}]}]]}]}]}],"\n",["$","$L1c",null,{"as":"h2","id":"关键模块","children":"关键模块"}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"lib/codex-server.ts"}],": 启动或连接 Codex app-server"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"lib/codex-session.ts"}],": 将 Codex 事件映射为前端可消费事件"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"lib/rpc-manager.ts"}],": 管理活跃 session wrapper 生命周期"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"lib/session-reader.ts"}],": 读取线程、turn 与会话历史"]}],"\n"]}],"\n",["$","$L1c",null,{"as":"h2","id":"设计重点","children":"设计重点"}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":"让项目成为组织会话的基本单位"}],"\n",["$","li",null,{"children":"让运行状态对用户可见"}],"\n",["$","li",null,{"children":"让文件查看与聊天协作发生在同一界面"}],"\n",["$","li",null,{"children":"保持对多 provider / model 配置的兼容"}],"\n"]}]]}]]}]
33
+ 15:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
34
+ 1f:I[86869,[],"IconMark"]
35
+ 12:null
36
+ 17:[["$","title","0",{"children":"Architecture"}],["$","meta","1",{"name":"description","content":"annodex 的核心结构与数据流。"}],["$","link","2",{"rel":"shortcut icon","href":"/favicon.svg","type":"image/svg+xml"}],["$","link","3",{"rel":"icon","href":"/favicon.svg","type":"image/svg+xml"}],["$","$L1f","4",{}]]
@@ -0,0 +1,6 @@
1
+ 1:"$Sreact.fragment"
2
+ 2:I[90484,[],"ViewportBoundary"]
3
+ 3:I[90484,[],"MetadataBoundary"]
4
+ 4:"$Sreact.suspense"
5
+ 5:I[86869,[],"IconMark"]
6
+ 0:{"rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"Architecture"}],["$","meta","1",{"name":"description","content":"annodex 的核心结构与数据流。"}],["$","link","2",{"rel":"shortcut icon","href":"/favicon.svg","type":"image/svg+xml"}],["$","link","3",{"rel":"icon","href":"/favicon.svg","type":"image/svg+xml"}],["$","$L5","4",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"oIqDpdOWwl7oIU6o8NnNp"}
@@ -0,0 +1,7 @@
1
+ 1:"$Sreact.fragment"
2
+ 2:I[67504,["8500","static/chunks/8500-f62a38ff68ab7f42.js","5122","static/chunks/5122-6e0d29bd15f079e1.js","7177","static/chunks/app/layout-11cc1f48ff425fd0.js"],"RootProvider"]
3
+ 3:I[57121,[],""]
4
+ 4:I[74581,[],""]
5
+ :HL["/_next/static/css/fddca953485158e4.css","style"]
6
+ :HL["/_next/static/css/876e881d7ba02ed2.css","style"]
7
+ 0:{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/fddca953485158e4.css","precedence":"next"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/876e881d7ba02ed2.css","precedence":"next"}]],["$","html",null,{"lang":"en","className":"__variable_66b8ca","suppressHydrationWarning":true,"children":[["$","head",null,{"children":["$","script",null,{"dangerouslySetInnerHTML":{"__html":"(function(){try{var t=localStorage.getItem(\"annodex-theme\");if(t===\"dark\")document.documentElement.classList.add(\"dark\")}catch(e){}})();"}}]}],["$","body",null,{"style":{"minHeight":"100dvh","display":"flex","flexDirection":"column"},"children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","template":["$","$L4",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]}]}]]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"oIqDpdOWwl7oIU6o8NnNp"}
@@ -0,0 +1,5 @@
1
+ :HL["/_next/static/media/7deddc85b7ffd1dc-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
2
+ :HL["/_next/static/media/ec14413c594b3356-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
3
+ :HL["/_next/static/css/fddca953485158e4.css","style"]
4
+ :HL["/_next/static/css/876e881d7ba02ed2.css","style"]
5
+ 0:{"tree":{"name":"","param":null,"prefetchHints":16,"slots":{"children":{"name":"docs","param":null,"prefetchHints":0,"slots":{"children":{"name":"slug","param":{"type":"oc","key":"architecture","siblings":null},"prefetchHints":0,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":0,"slots":null}}}}}}},"staleTime":300,"buildId":"oIqDpdOWwl7oIU6o8NnNp"}
@@ -0,0 +1,12 @@
1
+ 1:"$Sreact.fragment"
2
+ 2:I[39006,["5166","static/chunks/5166-58bbf85cbd32ad99.js","9278","static/chunks/9278-58ee6294b32318a5.js","4894","static/chunks/4894-e27a35edd6176226.js","7870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-d232277716ab7921.js"],"DocsPage"]
3
+ 3:I[39006,["5166","static/chunks/5166-58bbf85cbd32ad99.js","9278","static/chunks/9278-58ee6294b32318a5.js","4894","static/chunks/4894-e27a35edd6176226.js","7870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-d232277716ab7921.js"],"DocsTitle"]
4
+ 4:I[39006,["5166","static/chunks/5166-58bbf85cbd32ad99.js","9278","static/chunks/9278-58ee6294b32318a5.js","4894","static/chunks/4894-e27a35edd6176226.js","7870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-d232277716ab7921.js"],"DocsDescription"]
5
+ 5:I[39006,["5166","static/chunks/5166-58bbf85cbd32ad99.js","9278","static/chunks/9278-58ee6294b32318a5.js","4894","static/chunks/4894-e27a35edd6176226.js","7870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-d232277716ab7921.js"],"DocsBody"]
6
+ 6:I[88518,["5166","static/chunks/5166-58bbf85cbd32ad99.js","9278","static/chunks/9278-58ee6294b32318a5.js","4894","static/chunks/4894-e27a35edd6176226.js","7870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-d232277716ab7921.js"],"Heading"]
7
+ 7:I[13768,["5166","static/chunks/5166-58bbf85cbd32ad99.js","9278","static/chunks/9278-58ee6294b32318a5.js","4894","static/chunks/4894-e27a35edd6176226.js","7870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-d232277716ab7921.js"],"CodeBlock"]
8
+ 8:I[13768,["5166","static/chunks/5166-58bbf85cbd32ad99.js","9278","static/chunks/9278-58ee6294b32318a5.js","4894","static/chunks/4894-e27a35edd6176226.js","7870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-d232277716ab7921.js"],"Pre"]
9
+ 9:I[90484,[],"OutletBoundary"]
10
+ a:"$Sreact.suspense"
11
+ 0:{"rsc":["$","$1","c",{"children":[["$","$L2",null,{"toc":[{"depth":2,"url":"#核心结构","title":"核心结构"},{"depth":2,"url":"#数据流","title":"数据流"},{"depth":2,"url":"#关键模块","title":"关键模块"},{"depth":2,"url":"#设计重点","title":"设计重点"}],"children":[["$","$L3",null,{"children":"Architecture"}],["$","$L4",null,{"children":"annodex 的核心结构与数据流。"}],["$","$L5",null,{"children":[["$","$L6",null,{"as":"h2","id":"核心结构","children":"核心结构"}],"\n",["$","p",null,{"children":"系统由三部分组成:"}],"\n",["$","ol",null,{"children":["\n",["$","li",null,{"children":[["$","strong",null,{"children":"Browser UI"}]," — 负责聊天、文件浏览、会话切换与状态展示"]}],"\n",["$","li",null,{"children":[["$","strong",null,{"children":"Next.js Server"}]," — 负责 API、SSE、会话包装与配置管理"]}],"\n",["$","li",null,{"children":[["$","strong",null,{"children":"Codex app-server"}]," — 提供底层线程与 turn 协议能力"]}],"\n"]}],"\n",["$","$L6",null,{"as":"h2","id":"数据流","children":"数据流"}],"\n",["$","$L7",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"<svg viewBox=\"0 0 24 24\"><path d=\"M 6,1 C 4.354992,1 3,2.354992 3,4 v 16 c 0,1.645008 1.354992,3 3,3 h 12 c 1.645008,0 3,-1.354992 3,-3 V 8 7 A 1.0001,1.0001 0 0 0 20.707031,6.2929687 l -5,-5 A 1.0001,1.0001 0 0 0 15,1 h -1 z m 0,2 h 7 v 3 c 0,1.645008 1.354992,3 3,3 h 3 v 11 c 0,0.564129 -0.435871,1 -1,1 H 6 C 5.4358712,21 5,20.564129 5,20 V 4 C 5,3.4358712 5.4358712,3 6,3 Z M 15,3.4140625 18.585937,7 H 16 C 15.435871,7 15,6.5641288 15,6 Z\" fill=\"currentColor\" /></svg>","children":["$","$L8",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":["$","span",null,{"children":"Browser -> Next.js API -> Codex app-server"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"children":" <- SSE <-"}]}]]}]}]}],"\n",["$","$L6",null,{"as":"h2","id":"关键模块","children":"关键模块"}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"lib/codex-server.ts"}],": 启动或连接 Codex app-server"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"lib/codex-session.ts"}],": 将 Codex 事件映射为前端可消费事件"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"lib/rpc-manager.ts"}],": 管理活跃 session wrapper 生命周期"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"lib/session-reader.ts"}],": 读取线程、turn 与会话历史"]}],"\n"]}],"\n",["$","$L6",null,{"as":"h2","id":"设计重点","children":"设计重点"}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":"让项目成为组织会话的基本单位"}],"\n",["$","li",null,{"children":"让运行状态对用户可见"}],"\n",["$","li",null,{"children":"让文件查看与聊天协作发生在同一界面"}],"\n",["$","li",null,{"children":"保持对多 provider / model 配置的兼容"}],"\n"]}]]}]]}],null,["$","$L9",null,{"children":["$","$a",null,{"name":"Next.MetadataOutlet","children":"$@b"}]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"oIqDpdOWwl7oIU6o8NnNp"}
12
+ b:null
@@ -0,0 +1,5 @@
1
+ 1:"$Sreact.fragment"
2
+ 2:I[57121,[],""]
3
+ 3:I[74581,[],""]
4
+ 4:[]
5
+ 0:{"rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"isPartial":false,"staleTime":300,"varyParams":"$W4","buildId":"oIqDpdOWwl7oIU6o8NnNp"}
@@ -0,0 +1,6 @@
1
+ 1:"$Sreact.fragment"
2
+ 2:I[67197,["5166","static/chunks/5166-58bbf85cbd32ad99.js","9278","static/chunks/9278-58ee6294b32318a5.js","4499","static/chunks/app/docs/layout-4809bb9dd4b49bff.js"],"LayoutBody"]
3
+ 3:I[99535,["5166","static/chunks/5166-58bbf85cbd32ad99.js","9278","static/chunks/9278-58ee6294b32318a5.js","4894","static/chunks/4894-e27a35edd6176226.js","7870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-d232277716ab7921.js"],"default"]
4
+ 4:I[57121,[],""]
5
+ 5:I[74581,[],""]
6
+ 0:{"rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"tree":{"type":"root","$ref":{"folder":"","meta":"meta.json"},"$id":"root","name":"Documentation","children":[{"$id":"index.mdx","type":"page","name":"Annodex","description":"浏览器原生的 Codex 工作台。","url":"/docs","$ref":"index.mdx"},{"$id":"quick-start.mdx","type":"page","name":"Quick Start","description":"安装并启动 annodex。","url":"/docs/quick-start","$ref":"quick-start.mdx"},{"$id":"installation-and-deployment.mdx","type":"page","name":"Installation and Deployment","description":"如何安装、启动并部署 annodex。","url":"/docs/installation-and-deployment","$ref":"installation-and-deployment.mdx"},{"$id":"configuration.mdx","type":"page","name":"Configuration","description":"annodex 的配置位置与主要配置对象。","url":"/docs/configuration","$ref":"configuration.mdx"},{"$id":"architecture.mdx","type":"page","name":"Architecture","description":"annodex 的核心结构与数据流。","url":"/docs/architecture","$ref":"architecture.mdx"},{"$id":"workspace.mdx","type":"page","name":"Workspace","description":"annodex 工作台的主要界面组成。","url":"/docs/workspace","$ref":"workspace.mdx"},{"$id":"sessions-and-projects.mdx","type":"page","name":"Sessions and Projects","description":"为什么 annodex 以项目为中心组织会话。","url":"/docs/sessions-and-projects","$ref":"sessions-and-projects.mdx"},{"$id":"models-and-tools.mdx","type":"page","name":"Models and Tools","description":"provider、模型、thinking level 与工具预设的作用。","url":"/docs/models-and-tools","$ref":"models-and-tools.mdx"},{"$id":"runtime-and-sse.mdx","type":"page","name":"Runtime and SSE","description":"annodex 如何显示 agent 的运行态与实时事件。","url":"/docs/runtime-and-sse","$ref":"runtime-and-sse.mdx"},{"$id":"file-and-report-viewing.mdx","type":"page","name":"File Viewing and Outputs","description":"annodex 如何让文件审阅与结果产物查看发生在同一界面。","url":"/docs/file-and-report-viewing","$ref":"file-and-report-viewing.mdx"}]},"tabs":[],"sidebar":{},"nav":{"title":["$","span",null,{"style":{"display":"inline-flex","alignItems":"center","gap":10,"fontWeight":700},"children":[["$","$L3",null,{"iconNode":[["rect",{"width":"18","height":"18","x":"3","y":"3","rx":"2","key":"afitv7"}],["path",{"d":"M3 9h18","key":"1pudct"}],["path",{"d":"M9 21V9","key":"1oto5p"}]],"className":"lucide-panels-top-left","size":18}],"annodex"]}]},"links":[{"text":"Docs","url":"/docs","icon":["$","$L3",null,{"iconNode":[["path",{"d":"M12 7v14","key":"1akyts"}],["path",{"d":"M16 12h2","key":"7q9ll5"}],["path",{"d":"M16 8h2","key":"msurwy"}],["path",{"d":"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z","key":"ruj8y"}],["path",{"d":"M6 12h2","key":"32wvfc"}],["path",{"d":"M6 8h2","key":"30oboj"}]],"className":"lucide-book-open-text","size":16}],"active":"nested-url"},{"text":"Workspace","url":"/workspace","icon":["$","$L3",null,{"iconNode":[["path",{"d":"m7 11 2-2-2-2","key":"1lz0vl"}],["path",{"d":"M11 13h4","key":"1p7l4v"}],["rect",{"width":"18","height":"18","x":"3","y":"3","rx":"2","ry":"2","key":"1m3agn"}]],"className":"lucide-square-terminal","size":16}],"active":"nested-url"},{"text":"GitHub","url":"https://github.com/seqyuan/annodex","external":true}],"children":["$","$L4",null,{"parallelRouterKey":"children","template":["$","$L5",null,{}]}]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"oIqDpdOWwl7oIU6o8NnNp"}