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