wiki-viewer 3.0.0 → 3.0.1
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/standalone/.backup-authdb/auth.db.bak-20260917-161414 +0 -0
- package/.next/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/build-manifest.json +3 -3
- package/.next/standalone/.next/prerender-manifest.json +3 -3
- package/.next/standalone/.next/required-server-files.json +5 -5
- package/.next/standalone/.next/server/app/_global-error.html +1 -1
- package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/agent/activity/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/agent/events/[...path]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/agent/files/[...path]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/agent/fs/file/[...path]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/agent/fs/ls/[[...path]]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/agent/fs/move/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/agent/fs/search/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/agent/settings/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/agent/sidecar/[...path]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/app-proxy/[...path]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/assets/[...path]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/pdf/save/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/share/[token]/asset/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/share/[token]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/share/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/system/browse/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/system/reveal/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/system/workspaces/[id]/branch/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/system/workspaces/[id]/open/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/system/workspaces/[id]/refresh/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/system/workspaces/[id]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/system/workspaces/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/upload/[...path]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/wiki/app/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/wiki/backlinks/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/wiki/content/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/wiki/download/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/wiki/folder/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/wiki/git-branches/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/wiki/git-checkout/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/wiki/git-diff/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/wiki/git-file-info/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/wiki/git-history/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/wiki/git-pull/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/wiki/hosted-apps/[slug]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/wiki/hosted-apps/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/wiki/move/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/wiki/new-file/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/wiki/outlinks/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/wiki/page/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/wiki/presence/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/wiki/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/wiki/scratch/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/wiki/search/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/wiki/slugs/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/wiki/upload/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/wiki/watch/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/app/[slug]/[[...rest]]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/s/[token]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/signin/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/chunks/0.u4_next_dist_0k.q4j~._.js +1 -1
- package/.next/standalone/.next/server/chunks/0.u4_next_dist_esm_build_templates_app-route_0.4w~2_.js +1 -1
- package/.next/standalone/.next/server/chunks/0.u4_next_dist_esm_build_templates_app-route_024r~hj.js +1 -1
- package/.next/standalone/.next/server/chunks/0.u4_next_dist_esm_build_templates_app-route_0hlp8kc.js +1 -1
- package/.next/standalone/.next/server/chunks/0.u4_next_dist_esm_build_templates_app-route_0kj1.1o.js +1 -1
- package/.next/standalone/.next/server/chunks/0.u4_next_dist_esm_build_templates_app-route_12fsa9t.js +1 -1
- package/.next/standalone/.next/server/chunks/0.u4_next_dist_esm_build_templates_app-route_12qnjz7.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0.fl467._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__00dflrb._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__01aj28~._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__01gvb63._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__02dkper._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__02nhhnt._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__02ovz0q._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__034zu-9._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__03eilzu._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__03ivskm._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__04smpj8._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__05h6fe-._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__05s.pyr._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__07757zz._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0780pzf._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0_2j7pq._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0__5_f3._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0_u7i7z._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0_yp6y3._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ah~dki._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0apz83x._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0b1c__~._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0cjpldw._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0cm0bo-._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0cqahds._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0d3bkh3._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0dya7sd._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0f.q.gf._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0fkfkc.._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0gri8a8._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0gugnl-._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ivbizg._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0j3mjvx._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0l.mcpo._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0l.w~4m._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0l2wp1m._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ltsov-._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0mar4ob._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0mpkhjm._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0owf77v._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0pftyle._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ppgs1m._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0puvgme._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0p~gv_2._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0qgog4p._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0qwikxp._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0rdc.sv._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0rqm3om._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0shc-wa._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0shhawu._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0tjcm.o._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0tl7-s6._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0tuu3y1._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0u7wq9p._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ul.gyt._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0w2ba2x._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0w648ao._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0yzumg-._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0z2-rh.._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0~a6cyg._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0~q~4xc._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__101dr96._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__10i6erq._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__128augu._.js +2 -2
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__12e_piv._.js +1 -1
- package/.next/standalone/.next/server/chunks/node_modules__pnpm_0~gj5.~._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{0~w0_katex_dist_katex_mjs_01swx_l._.js → 0~w0_katex_dist_katex_mjs_0gmvgrf._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/12y~_mermaid_dist_chunks_mermaid_core_sequenceDiagram-3UESZ5HK_mjs_015n5fb._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0xl7e3h._.js → [root-of-the-server]__0cvdst3._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_0k6g8yo._.js +12 -12
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_05s3rp_._.js → node_modules__pnpm_0-y2e10._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0wyvqp7._.js → node_modules__pnpm_00tpvdu._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0yyt.qr._.js → node_modules__pnpm_0883ifk._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_08wjj_6._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0hajaki._.js → node_modules__pnpm_09h4wu8._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0gguvd4._.js → node_modules__pnpm_0a6kqvf._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0hy39av._.js → node_modules__pnpm_0cxv0mk._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0oexapu._.js → node_modules__pnpm_0d34dhx._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0aca6hd._.js → node_modules__pnpm_0djcgeo._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0jq2ef9._.js → node_modules__pnpm_0fbxocr._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0o~vvgs._.js → node_modules__pnpm_0g_0et~._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0j_.d8m._.js → node_modules__pnpm_0gh6xw7._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0-xbi6q._.js → node_modules__pnpm_0gict7y._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_12v9693._.js → node_modules__pnpm_0h5~9y~._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0rs15iz._.js → node_modules__pnpm_0hptidd._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0ptozb4._.js → node_modules__pnpm_0mwe-i3._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0a2ww-4._.js → node_modules__pnpm_0orvks9._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_03~9v2y._.js → node_modules__pnpm_0oupw24._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_047iyar._.js → node_modules__pnpm_0qhuwah._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0gy4l1q._.js → node_modules__pnpm_0t6xsn9._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_03cxqnc._.js → node_modules__pnpm_0tc8zr6._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0btk5kj._.js → node_modules__pnpm_0ue8lv5._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0ryy9ik._.js → node_modules__pnpm_0v~pnm.._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_04qoa_.._.js → node_modules__pnpm_0w.m8_8._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_034eonm._.js → node_modules__pnpm_0w5u-~w._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0hvnqml._.js → node_modules__pnpm_0ws7ot~._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_124jh7j._.js → node_modules__pnpm_0~ycrqy._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_06ti8hd._.js → node_modules__pnpm_13icm5c._.js} +2 -2
- package/.next/standalone/.next/server/middleware-build-manifest.js +3 -3
- package/.next/standalone/.next/server/pages/500.html +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/static/chunks/{0kml2.eor4-mh.js → 08j6bfg5a72bm.js} +12 -12
- package/.next/standalone/.next/static/chunks/0qc4l9u44oy5b.css +1 -0
- package/.next/standalone/.proof/README.md.json +780 -0
- package/.next/standalone/node_modules/@vscode/ripgrep-linux-x64/bin/rg +0 -0
- package/.next/standalone/package.json +1 -1
- package/.next/standalone/server.js +1 -1
- package/.next/standalone/wp-test-9dKQzu/shared.txt +1 -0
- package/README.md +1 -1
- package/package.json +133 -135
- package/.next/standalone/.next/static/chunks/17khi18hxwx5d.css +0 -1
- /package/.next/standalone/.next/static/{fJ3GtWg-nxX07oIencv35 → 0dK3SvrVBhTTBM-LZzcJP}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{fJ3GtWg-nxX07oIencv35 → 0dK3SvrVBhTTBM-LZzcJP}/_clientMiddlewareManifest.js +0 -0
- /package/.next/standalone/.next/static/{fJ3GtWg-nxX07oIencv35 → 0dK3SvrVBhTTBM-LZzcJP}/_ssgManifest.js +0 -0
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[814747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},224361,(e,t,r)=>{t.exports=e.x("util",()=>require("util"))},688947,(e,t,r)=>{t.exports=e.x("stream",()=>require("stream"))},427699,(e,t,r)=>{t.exports=e.x("events",()=>require("events"))},228064,e=>{"use strict";var t=e.i(666680),r=e.i(912714),n=e.i(660526),a=e.i(750227),s=e.i(832852);let i="__registry__",o=new Map;function l(){let e=process.env.HOME??n.default.homedir();return a.default.join(e,".wiki-viewer")}function u(){return a.default.join(l(),"agents.json")}function d(e){return(0,t.createHash)("sha256").update(e,"utf8").digest("hex")}async function c(){try{let e=await (0,r.readFile)(u(),"utf8"),t=JSON.parse(e);return{version:1,agents:Array.isArray(t.agents)?t.agents:[]}}catch{return null}}async function f(e){await (0,r.mkdir)(l(),{recursive:!0});let t=u()+".tmp";await (0,r.writeFile)(t,JSON.stringify(e,null,2),{encoding:"utf8",mode:384});try{await (0,r.chmod)(t,384)}catch{}await (0,r.rename)(t,u())}async function h(){let e=await c();if(e)return e;let t={version:1,agents:[]};return await f(t),t}async function p(e){let r=await c();if(!r)return null;let n=d(e);for(let e of r.agents)if(function(e,r){let n=Buffer.from(e.padEnd(64,"0"),"utf8"),a=Buffer.from(r.padEnd(64,"0"),"utf8");return n.length===a.length&&(0,t.timingSafeEqual)(n,a)&&e.length===r.length}(e.tokenHash,n))return e;return null}async function g(e){let t=await c();return t?t.agents.find(t=>t.id===e)??null:null}async function m(e){await (0,s.withFileMutex)(i,async()=>{let t=await h(),r=t.agents.findIndex(t=>t.id===e.id);r>=0?t.agents[r]=e:t.agents.push(e),await f(t)})}async function w(e){return(0,s.withFileMutex)(i,async()=>{let t=await c();if(!t)return!1;let r=t.agents.length;return t.agents=t.agents.filter(t=>t.id!==e),t.agents.length!==r&&(await f(t),!0)})}async function v(e){Date.now()-(o.get(e)??0)<3e4||await (0,s.withFileMutex)(i,async()=>{let t=await c();if(!t)return;let r=t.agents.find(t=>t.id===e);r&&(r.lastSeen=new Date().toISOString(),o.set(e,Date.now()),await f(t))})}e.s(["addAgent",0,m,"hashToken",0,d,"lookupAgentById",0,g,"lookupAgentByToken",0,p,"readRegistry",0,c,"removeAgent",0,w,"updateLastSeen",0,v])},215043,552350,e=>{"use strict";var t=e.i(228064);function r(e,t){return(function(e){let t="^",r=0;for(;r<e.length;)"*"===e[r]&&"*"===e[r+1]?(t+=".*","/"===e[r+=2]&&(t+="(?:.+/)?",r++)):("*"===e[r]?t+="[^/]*":"?"===e[r]?t+="[^/]":t+=e[r].replace(/[.+^${}()|[\]\\]/g,"\\$&"),r++);return new RegExp(t+="$")})(e).test(t)}e.s(["matchGlob",0,r],552350);var n=e.i(254226);async function a(e){let r=await (0,n.getSessionFromRequest)(e);if(r?.user){let e=r.user;return{ok:!0,agent:{id:`user:${e.id}`,displayName:e.name,tokenHash:"",scope:{paths:["**/*"],ops:["read","mutate","delete"]},createdAt:"",lastSeen:""}}}let a=e.headers.get("authorization")??"",s=a.startsWith("Bearer ")?a.slice(7).trim():"";if(!s)return{ok:!1,code:"UNAUTHORIZED",message:"No credentials"};let i=await (0,t.lookupAgentByToken)(s);if(!i)return{ok:!1,code:"UNAUTHORIZED",message:"Unknown or invalid token"};let o=e.headers.get("x-agent-id")??"";return o?o!==i.id?{ok:!1,code:"UNAUTHORIZED",message:"X-Agent-Id does not match token owner"}:((0,t.updateLastSeen)(i.id),{ok:!0,agent:i}):{ok:!1,code:"UNAUTHORIZED",message:"X-Agent-Id header required"}}process.env.AGENT_BEARER_TOKEN&&console.warn("[wiki-viewer] AGENT_BEARER_TOKEN is no longer used; manage agents via the AI Panel."),e.s(["checkAuth",0,a,"enforceScope",0,function(e,t){let{scope:n}=e;return void 0!==n.workspaceId&&void 0!==t.workspaceId&&n.workspaceId!==t.workspaceId?{ok:!1,code:"FORBIDDEN",message:`Agent scope does not cover workspace "${t.workspaceId}" (granted: "${n.workspaceId}")`}:n.ops.includes(t.op)?t.filePath&&!n.paths.some(e=>r(e,t.filePath))?{ok:!1,code:"FORBIDDEN",message:`Agent scope does not cover path "${t.filePath}"`}:{ok:!0}:{ok:!1,code:"FORBIDDEN",message:`Agent scope does not allow "${t.op}"`}},"verifyBy",0,function(e,t){return e.id.startsWith("user:")?!t||"owner"===t||"human"===t||t.startsWith("human:")||t===e.id?{ok:!0}:{ok:!1,code:"FORBIDDEN",message:'User agent must use "human", "owner", or own id in "by" field'}:t!==e.id?{ok:!1,code:"FORBIDDEN",message:`"by" field must equal agent id "${e.id}"`}:{ok:!0}}],215043)},857764,(e,t,r)=>{t.exports=e.x("node:url",()=>require("node:url"))},59639,(e,t,r)=>{t.exports=e.x("node:process",()=>require("node:process"))},462711,651212,316552,e=>{"use strict";var t=e.i(750227);e.s(["minpath",()=>t.default],462711);var r=e.i(59639);e.s(["minproc",()=>r.default],651212);var n=e.i(857764);e.s(["urlToPath",()=>n.fileURLToPath],316552)},794776,e=>{"use strict";let t,r=Number.isFinite(t=parseInt(process.env.AGENT_RATE_LIMIT??"",10))&&t>0?t:60;e.s(["OPS_PER_MINUTE",0,r,"SIDECAR_EVENT_TRIM_SIZE",0,1e3,"SIDECAR_TRIM_EVERY_N_MUTATIONS",0,100])},973909,605,e=>{"use strict";var t=e.i(912714),r=e.i(750227);let n=0;function a(e=new Set){for(;;){n=(n+1)%0xffffff;let t=`a${n.toString(16).padStart(6,"0")}`;if(!e.has(t))return t}}function s(e,t,r){return{prefix:e.slice(Math.max(0,t-32),t),suffix:e.slice(t+r,t+r+32)}}function i(e,t,r,n){return{id:a(n),ref:t,offset:0,length:0,quote:e,prefix:"",suffix:"",createdAt:r,updatedAt:r}}function o(e,t){if(!t)return[];let r=[],n=e.indexOf(t);for(;-1!==n;)r.push(n),n=e.indexOf(t,n+1);return r}function l(e,t,r,n){let a=0;if(n.prefix){let r=e.slice(Math.max(0,t-n.prefix.length),t),s=0;for(;s<r.length&&s<n.prefix.length&&r[r.length-1-s]===n.prefix[n.prefix.length-1-s];)s+=1;a+=s}if(n.suffix){let s=e.slice(t+r,t+r+n.suffix.length),i=0;for(;i<s.length&&i<n.suffix.length&&s[i]===n.suffix[i];)i+=1;a+=i}return a}function u(e,t,r,n,a){if(1===t.length)return{at:t[0],ambiguous:!1};let s=t[0],i=Math.abs(s-r);for(let e of t){let t=Math.abs(e-r);t<i&&(s=e,i=t)}let o=t.filter(e=>Math.abs(e-r)===i);if(1===o.length){let r=t.map(t=>({h:t,s:l(e,t,n,a)})).sort((e,t)=>t.s-e.s);return r.length>1&&r[0].s>r[1].s?{at:r[0].h,ambiguous:!1}:{at:s,ambiguous:!1}}let u=o.map(t=>({h:t,s:l(e,t,n,a)})).sort((e,t)=>t.s-e.s),d=u.filter(e=>e.s===u[0].s);return d.length>1?{at:d[0].h,ambiguous:!0}:{at:u[0].h,ambiguous:!0}}function d(e,t,r){let n=new Map(r.map(e=>[e.ref,e])).get(t.ref);if(0===t.length){if(n)return{ref:n.ref,offset:0,length:0,status:"exact"};let a=c(e,t.ref,r);return a?{ref:a.ref,offset:0,length:0,status:"moved"}:{ref:null,offset:0,length:0,status:"lost"}}if(n){if(n.markdown.slice(t.offset,t.offset+t.length)===t.quote)return{ref:n.ref,offset:t.offset,length:t.length,status:"exact"};let e=o(n.markdown,t.quote);if(e.length>0){let{at:r,ambiguous:a}=u(n.markdown,e,t.offset,t.length,t);return{ref:n.ref,offset:r,length:t.length,status:a?"ambiguous":"moved"}}return{ref:n.ref,offset:0,length:0,status:"ambiguous"}}let a=c(e,t.ref,r);if(a){let r=o(a.markdown,t.quote);if(r.length>0){let{at:e,ambiguous:n}=u(a.markdown,r,t.offset,t.length,t);return{ref:a.ref,offset:e,length:t.length,status:n?"ambiguous":"moved"}}if(e.prevRefOrder)return{ref:a.ref,offset:0,length:0,status:"ambiguous"}}let s=null,i=0;for(let e of r)for(let r of o(e.markdown,t.quote))1===(i+=1)&&(s={block:e,at:r});return 1===i&&s?{ref:s.block.ref,offset:s.at,length:t.length,status:"moved"}:i>1?{ref:null,offset:0,length:0,status:"ambiguous"}:{ref:null,offset:0,length:0,status:"lost"}}function c(e,t,r){let n=(e.prevRefOrder&&e.prevRefOrder.includes(t)?e.prevRefOrder:Object.keys(e.refMap)).indexOf(t);if(-1===n||n>=r.length)return null;let a=r[n];return a&&a.ref!==t?a:null}function f(e,t){if(e.schemaVersion>=3)return{sidecar:e,changed:!1};if(0===t.length&&e.comments.length>0)return{sidecar:{...e,anchors:e.anchors??{}},changed:!1};let r=e.updatedAt||new Date().toISOString(),n={...e.anchors??{}},o=new Set(Object.keys(n)),l=new Map(t.map(e=>[e.ref,e])),u=t=>l.get(t)??l.get(e.refAliases?.[t]??""),d=!1,c=e.comments.map(e=>{if(e.anchorId&&n[e.anchorId])return e;if(d=!0,e.textAnchor){let t=u(e.ref??""),i={id:a(o),ref:t?.ref??e.ref??"",offset:e.textAnchor.start,length:e.textAnchor.end-e.textAnchor.start,quote:e.textAnchor.selectedText,prefix:"",suffix:"",createdAt:e.createdAt||r,updatedAt:r};if(t){let e=s(t.markdown,i.offset,i.length);i.prefix=e.prefix,i.suffix=e.suffix}return n[i.id]=i,{...e,anchorId:i.id}}let t=u(e.ref??"");if(!t)return{...e,anchorStatus:"lost"};let l=i(t.markdown,t.ref,r,o);return n[l.id]=l,{...e,anchorId:l.id}});return{sidecar:{...e,schemaVersion:3,anchors:n,comments:c,updatedAt:r},changed:d}}function h(e,t){return r.default.join(e,".proof",t+".json")}async function p(e,r,n=[]){let a=h(e,r);try{let e=await (0,t.readFile)(a,"utf-8"),r=JSON.parse(e);if(![1,2,3].includes(r.schemaVersion))throw Error(`Sidecar schema version mismatch: expected 1, 2 or 3, got ${r.schemaVersion}`);let s=r.anchors?r:{...r,anchors:{}},{sidecar:i}=f(s,n);return i}catch(e){if(e instanceof Error&&"code"in e&&"ENOENT"===e.code)return null;throw e}}async function g(e,n,a){let s=h(e,n);await (0,t.mkdir)(r.default.dirname(s),{recursive:!0});let i=s+".tmp";await (0,t.writeFile)(i,JSON.stringify(a,null,2),"utf-8"),await (0,t.rename)(i,s)}async function m(e,n,a){let s=h(e,n),i=h(e,a);try{await (0,t.mkdir)(r.default.dirname(i),{recursive:!0}),await (0,t.rename)(s,i)}catch(e){if("ENOENT"===e.code)return;throw e}}async function w(e,r){let n=h(e,r);try{await (0,t.unlink)(n)}catch(e){if("ENOENT"===e.code)return;throw e}}e.s(["anchorForBlock",0,i,"anchorForRange",0,function(e,t,r,n,i,o){let{prefix:l,suffix:u}=s(e,r,n);return{id:a(o),ref:t,offset:r,length:n,quote:e.slice(r,r+n),prefix:l,suffix:u,createdAt:i,updatedAt:i}},"migrateSidecar",0,f,"projectCommentViews",0,function(e,t,r){let n=new Map(r.map(e=>[e.ref,e])),a={};for(let s of t)a[s.id]=function(e,t,r,n){let a=t.anchorId?e.anchors[t.anchorId]:void 0;if(!a){let e=t.ref??null,r=e?n.get(e):void 0;return{id:t.id,ref:e,offset:t.textAnchor?.start??0,length:t.textAnchor?t.textAnchor.end-t.textAnchor.start:0,status:e&&r?"exact":"lost",...r?{blockMarkdown:r.markdown}:{}}}let s=d(e,a,r),i=s.ref?n.get(s.ref):void 0;return{id:t.id,anchorId:a.id,ref:s.ref,offset:s.offset,length:s.length,status:s.status,...i?{blockMarkdown:i.markdown}:{}}}(e,s,r,n);return a},"resolveAnchor",0,d],605),e.s(["deleteSidecar",0,w,"emptySidecar",0,function(e){let t=new Date().toISOString();return{schemaVersion:3,anchors:{},path:e,revision:0,createdAt:t,updatedAt:t,refMap:{},refAliases:{},comments:[],events:[],nextEventId:1,lastAck:{},fingerprint:""}},"moveSidecar",0,m,"readSidecar",0,p,"writeSidecar",0,g],973909)},307764,e=>{"use strict";e.s(["emitEvents",0,function(e,t){let r=[];for(let n of t){let t={...n,id:e.nextEventId++};e.events.push(t),r.push(t)}return r},"pollEvents",0,function(e,t,r){return e.events.filter(e=>e.id>t).slice(0,r)},"trimEvents",0,function(e,t){if(e.events.length<=t)return;let r=Object.values(e.lastAck),n=r.length>0?Math.min(...r):1/0,a=e.events.length-t,s=e.events.filter((e,t)=>t>=a||e.id>n);e.events=s}])},478097,e=>{"use strict";var t=e.i(985426),r=e.i(257574),n=e.i(507835),a=e.i(457789),s=e.i(119791),i=e.i(141062),o=e.i(957291),l=e.i(535899),u=e.i(610241),d=e.i(62749),c=e.i(624891),f=e.i(725836),h=e.i(532736),p=e.i(257858),g=e.i(487476),m=e.i(193695);e.i(484264);var w=e.i(315709),v=e.i(912714),x=e.i(351216),R=e.i(215043),k=e.i(206536),A=e.i(973909),E=e.i(832852),_=e.i(660038),y=e.i(359211);async function N(e,{params:t}){let r=await (0,R.checkAuth)(e);if(!r.ok)return x.NextResponse.json({error:"UNAUTHORIZED"},{status:401});let{path:n}=await t,a=n.join("/");if(n.some(e=>".proof"===e))return x.NextResponse.json({error:"INVALID_PATH",message:"Path must not be under .proof"},{status:400});let s=await (0,_.resolveWorkspaceForAgent)(e);if(!s.ok)return x.NextResponse.json({error:s.code},{status:s.status});let{ws:i,rootDir:o}=s,l=(0,y.safeWorkspacePath)(o,a);if(!l)return x.NextResponse.json({error:"INVALID_PATH",message:"Path traversal rejected"},{status:400});let u=(0,R.enforceScope)(r.agent,{filePath:a,op:"read",workspaceId:i.id});if(!u.ok)return x.NextResponse.json({error:u.code,message:u.message},{status:403});let d=await (0,A.readSidecar)(o,a)??(0,A.emptySidecar)(a);return a.endsWith(".md")||a.endsWith(".markdown")||await (0,E.withFileMutex)((0,E.workspaceLockKey)(o,a),async()=>{try{let e=await (0,v.readFile)(l,"utf-8");await (0,k.reconcileTextCommentAnchors)(o,a,e,d)}catch(e){if("ENOENT"!==e.code)throw e}}),x.NextResponse.json(d)}e.s(["GET",0,N,"runtime",0,"nodejs"],206380);var I=e.i(206380);let S=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/agent/sidecar/[...path]/route",pathname:"/api/agent/sidecar/[...path]",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/agent/sidecar/[...path]/route.ts",nextConfigOutput:"standalone",userland:I,...{}}),{workAsyncStorage:O,workUnitAsyncStorage:T,serverHooks:b}=S;async function P(e,t,n){n.requestMeta&&(0,a.setRequestMeta)(e,n.requestMeta),S.isDev&&(0,a.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let v="/api/agent/sidecar/[...path]/route";v=v.replace(/\/index$/,"")||"/";let x=await S.prepare(e,t,{srcPage:v,multiZoneDraftMode:!1});if(!x)return t.statusCode=400,t.end("Bad Request"),null==n.waitUntil||n.waitUntil.call(n,Promise.resolve()),null;let{buildId:R,params:k,nextConfig:A,parsedUrl:E,isDraftMode:_,prerenderManifest:y,routerServerContext:N,isOnDemandRevalidate:I,revalidateOnlyGenerated:O,resolvedPathname:T,clientReferenceManifest:b,serverActionsManifest:P}=x,q=(0,o.normalizeAppPath)(v),C=!!(y.dynamicRoutes[q]||y.routes[T]),M=async()=>((null==N?void 0:N.render404)?await N.render404(e,t,E,!1):t.end("This page could not be found"),null);if(C&&!_){let e=!!y.routes[T],t=y.dynamicRoutes[q];if(t&&!1===t.fallback&&!e){if(A.adapterPath)return await M();throw new m.NoFallbackError}}let j=null;!C||S.isDev||_||(j="/index"===(j=T)?"/":j);let D=!0===S.isDev||!C,U=C&&!D;P&&b&&(0,i.setManifestsSingleton)({page:v,clientReferenceManifest:b,serverActionsManifest:P});let H=e.method||"GET",F=(0,s.getTracer)(),B=F.getActiveScopeSpan(),$=!!(null==N?void 0:N.isWrappedByNextServer),V=!!(0,a.getRequestMeta)(e,"minimalMode"),K=(0,a.getRequestMeta)(e,"incrementalCache")||await S.getIncrementalCache(e,A,y,V);null==K||K.resetRequestCache(),globalThis.__incrementalCache=K;let L={params:k,previewProps:y.preview,renderOpts:{experimental:{authInterrupts:!!A.experimental.authInterrupts},cacheComponents:!!A.cacheComponents,supportsDynamicResponse:D,incrementalCache:K,cacheLifeProfiles:A.cacheLife,waitUntil:n.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,n,a)=>S.onRequestError(e,t,n,a,N)},sharedContext:{buildId:R}},W=new l.NodeNextRequest(e),G=new l.NodeNextResponse(t),Z=u.NextRequestAdapter.fromNodeNextRequest(W,(0,u.signalFromNodeResponse)(t));try{let a,i=async e=>S.handle(Z,L).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=F.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==d.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=r.get("next.route");if(n){let t=`${H} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t),a&&a!==e&&(a.setAttribute("http.route",n),a.updateName(t))}else e.updateName(`${H} ${v}`)}),o=async a=>{var s,o;let l=async({previousCacheEntry:r})=>{try{if(!V&&I&&O&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await i(a);e.fetchMetrics=L.renderOpts.fetchMetrics;let o=L.renderOpts.pendingWaitUntil;o&&n.waitUntil&&(n.waitUntil(o),o=void 0);let l=L.renderOpts.collectedTags;if(!C)return await (0,f.sendResponse)(W,G,s,L.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(s.headers);l&&(t[g.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==L.renderOpts.collectedRevalidate&&!(L.renderOpts.collectedRevalidate>=g.INFINITE_CACHE)&&L.renderOpts.collectedRevalidate,n=void 0===L.renderOpts.collectedExpire||L.renderOpts.collectedExpire>=g.INFINITE_CACHE?void 0:L.renderOpts.collectedExpire;return{value:{kind:w.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==r?void 0:r.isStale)&&await S.onRequestError(e,t,{routerKind:"App Router",routePath:v,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:U,isOnDemandRevalidate:I})},!1,N),t}},u=await S.handleResponse({req:e,nextConfig:A,cacheKey:j,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:y,isRoutePPREnabled:!1,isOnDemandRevalidate:I,revalidateOnlyGenerated:O,responseGenerator:l,waitUntil:n.waitUntil,isMinimalMode:V});if(!C)return null;if((null==u||null==(s=u.value)?void 0:s.kind)!==w.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(o=u.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});V||t.setHeader("x-nextjs-cache",I?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),_&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let d=(0,h.fromNodeOutgoingHttpHeaders)(u.value.headers);return V&&C||d.delete(g.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||d.get("Cache-Control")||d.set("Cache-Control",(0,p.getCacheControlHeader)(u.cacheControl)),await (0,f.sendResponse)(W,G,new Response(u.value.body,{headers:d,status:u.value.status||200})),null};$&&B?await o(B):(a=F.getActiveScopeSpan(),await F.withPropagatedContext(e.headers,()=>F.trace(d.BaseServerSpan.handleRequest,{spanName:`${H} ${v}`,kind:s.SpanKind.SERVER,attributes:{"http.method":H,"http.target":e.url}},o),void 0,!$))}catch(t){if(t instanceof m.NoFallbackError||await S.onRequestError(e,t,{routerKind:"App Router",routePath:q,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:U,isOnDemandRevalidate:I})},!1,N),C)throw t;return await (0,f.sendResponse)(W,G,new Response(null,{status:500})),null}}e.s(["handler",0,P,"patchFetch",0,function(){return(0,n.patchFetch)({workAsyncStorage:O,workUnitAsyncStorage:T})},"routeModule",0,S,"serverHooks",0,b,"workAsyncStorage",0,O,"workUnitAsyncStorage",0,T],478097)},168315,e=>{e.v(t=>Promise.all(["server/chunks/0sag_@better-auth_memory-adapter_dist_index_mjs_0pvj6im._.js"].map(t=>e.l(t))).then(()=>t(862112)))},769787,e=>{e.v(t=>Promise.all(["server/chunks/01er_better-auth_dist_adapters_kysely-adapter_index_mjs_0s~-4gu._.js"].map(t=>e.l(t))).then(()=>t(717789)))},580632,e=>{e.v(e=>Promise.resolve().then(()=>e(270406)))},947559,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_bun-sqlite-dialect-DzNwOpKv_mjs_0z1z6m4._.js"].map(t=>e.l(t))).then(()=>t(495181)))},715018,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_node-sqlite-dialect_mjs_0qqlvhl._.js"].map(t=>e.l(t))).then(()=>t(698370)))},146843,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_d1-sqlite-dialect-C2B7YsIT_mjs_0wynrz3._.js"].map(t=>e.l(t))).then(()=>t(143740)))},697743,e=>{e.v(t=>Promise.all(["server/chunks/0.u4_next_05jevxw._.js"].map(t=>e.l(t))).then(()=>t(428325)))},99243,e=>{e.v(e=>Promise.resolve().then(()=>e(313414)))},893412,e=>{e.v(e=>Promise.resolve().then(()=>e(499465)))},687903,e=>{e.v(e=>Promise.resolve().then(()=>e(912714)))}];
|
|
1
|
+
module.exports=[814747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},224361,(e,t,r)=>{t.exports=e.x("util",()=>require("util"))},688947,(e,t,r)=>{t.exports=e.x("stream",()=>require("stream"))},427699,(e,t,r)=>{t.exports=e.x("events",()=>require("events"))},228064,e=>{"use strict";var t=e.i(666680),r=e.i(912714),n=e.i(660526),a=e.i(750227),s=e.i(832852);let i="__registry__",o=new Map;function l(){let e=process.env.HOME??n.default.homedir();return a.default.join(e,".wiki-viewer")}function u(){return a.default.join(l(),"agents.json")}function d(e){return(0,t.createHash)("sha256").update(e,"utf8").digest("hex")}async function c(){try{let e=await (0,r.readFile)(u(),"utf8"),t=JSON.parse(e);return{version:1,agents:Array.isArray(t.agents)?t.agents:[]}}catch{return null}}async function f(e){await (0,r.mkdir)(l(),{recursive:!0});let t=u()+".tmp";await (0,r.writeFile)(t,JSON.stringify(e,null,2),{encoding:"utf8",mode:384});try{await (0,r.chmod)(t,384)}catch{}await (0,r.rename)(t,u())}async function h(){let e=await c();if(e)return e;let t={version:1,agents:[]};return await f(t),t}async function p(e){let r=await c();if(!r)return null;let n=d(e);for(let e of r.agents)if(function(e,r){let n=Buffer.from(e.padEnd(64,"0"),"utf8"),a=Buffer.from(r.padEnd(64,"0"),"utf8");return n.length===a.length&&(0,t.timingSafeEqual)(n,a)&&e.length===r.length}(e.tokenHash,n))return e;return null}async function g(e){let t=await c();return t?t.agents.find(t=>t.id===e)??null:null}async function m(e){await (0,s.withFileMutex)(i,async()=>{let t=await h(),r=t.agents.findIndex(t=>t.id===e.id);r>=0?t.agents[r]=e:t.agents.push(e),await f(t)})}async function w(e){return(0,s.withFileMutex)(i,async()=>{let t=await c();if(!t)return!1;let r=t.agents.length;return t.agents=t.agents.filter(t=>t.id!==e),t.agents.length!==r&&(await f(t),!0)})}async function v(e){Date.now()-(o.get(e)??0)<3e4||await (0,s.withFileMutex)(i,async()=>{let t=await c();if(!t)return;let r=t.agents.find(t=>t.id===e);r&&(r.lastSeen=new Date().toISOString(),o.set(e,Date.now()),await f(t))})}e.s(["addAgent",0,m,"hashToken",0,d,"lookupAgentById",0,g,"lookupAgentByToken",0,p,"readRegistry",0,c,"removeAgent",0,w,"updateLastSeen",0,v])},215043,552350,e=>{"use strict";var t=e.i(228064);function r(e,t){return(function(e){let t="^",r=0;for(;r<e.length;)"*"===e[r]&&"*"===e[r+1]?(t+=".*","/"===e[r+=2]&&(t+="(?:.+/)?",r++)):("*"===e[r]?t+="[^/]*":"?"===e[r]?t+="[^/]":t+=e[r].replace(/[.+^${}()|[\]\\]/g,"\\$&"),r++);return new RegExp(t+="$")})(e).test(t)}e.s(["matchGlob",0,r],552350);var n=e.i(254226);async function a(e){let r=await (0,n.getSessionFromRequest)(e);if(r?.user){let e=r.user;return{ok:!0,agent:{id:`user:${e.id}`,displayName:e.name,tokenHash:"",scope:{paths:["**/*"],ops:["read","mutate","delete"]},createdAt:"",lastSeen:""}}}let a=e.headers.get("authorization")??"",s=a.startsWith("Bearer ")?a.slice(7).trim():"";if(!s)return{ok:!1,code:"UNAUTHORIZED",message:"No credentials"};let i=await (0,t.lookupAgentByToken)(s);if(!i)return{ok:!1,code:"UNAUTHORIZED",message:"Unknown or invalid token"};let o=e.headers.get("x-agent-id")??"";return o?o!==i.id?{ok:!1,code:"UNAUTHORIZED",message:"X-Agent-Id does not match token owner"}:((0,t.updateLastSeen)(i.id),{ok:!0,agent:i}):{ok:!1,code:"UNAUTHORIZED",message:"X-Agent-Id header required"}}process.env.AGENT_BEARER_TOKEN&&console.warn("[wiki-viewer] AGENT_BEARER_TOKEN is no longer used; manage agents via the AI Panel."),e.s(["checkAuth",0,a,"enforceScope",0,function(e,t){let{scope:n}=e;return void 0!==n.workspaceId&&void 0!==t.workspaceId&&n.workspaceId!==t.workspaceId?{ok:!1,code:"FORBIDDEN",message:`Agent scope does not cover workspace "${t.workspaceId}" (granted: "${n.workspaceId}")`}:n.ops.includes(t.op)?t.filePath&&!n.paths.some(e=>r(e,t.filePath))?{ok:!1,code:"FORBIDDEN",message:`Agent scope does not cover path "${t.filePath}"`}:{ok:!0}:{ok:!1,code:"FORBIDDEN",message:`Agent scope does not allow "${t.op}"`}},"verifyBy",0,function(e,t){return e.id.startsWith("user:")?!t||"owner"===t||"human"===t||t.startsWith("human:")||t===e.id?{ok:!0}:{ok:!1,code:"FORBIDDEN",message:'User agent must use "human", "owner", or own id in "by" field'}:t!==e.id?{ok:!1,code:"FORBIDDEN",message:`"by" field must equal agent id "${e.id}"`}:{ok:!0}}],215043)},857764,(e,t,r)=>{t.exports=e.x("node:url",()=>require("node:url"))},59639,(e,t,r)=>{t.exports=e.x("node:process",()=>require("node:process"))},462711,651212,316552,e=>{"use strict";var t=e.i(750227);e.s(["minpath",()=>t.default],462711);var r=e.i(59639);e.s(["minproc",()=>r.default],651212);var n=e.i(857764);e.s(["urlToPath",()=>n.fileURLToPath],316552)},794776,e=>{"use strict";let t,r=Number.isFinite(t=parseInt(process.env.AGENT_RATE_LIMIT??"",10))&&t>0?t:60;e.s(["OPS_PER_MINUTE",0,r,"SIDECAR_EVENT_TRIM_SIZE",0,1e3,"SIDECAR_TRIM_EVERY_N_MUTATIONS",0,100])},973909,605,e=>{"use strict";var t=e.i(912714),r=e.i(750227);let n=0;function a(e=new Set){for(;;){n=(n+1)%0xffffff;let t=`a${n.toString(16).padStart(6,"0")}`;if(!e.has(t))return t}}function s(e,t,r){return{prefix:e.slice(Math.max(0,t-32),t),suffix:e.slice(t+r,t+r+32)}}function i(e,t,r,n){return{id:a(n),ref:t,offset:0,length:0,quote:e,prefix:"",suffix:"",createdAt:r,updatedAt:r}}function o(e,t){if(!t)return[];let r=[],n=e.indexOf(t);for(;-1!==n;)r.push(n),n=e.indexOf(t,n+1);return r}function l(e,t,r,n){let a=0;if(n.prefix){let r=e.slice(Math.max(0,t-n.prefix.length),t),s=0;for(;s<r.length&&s<n.prefix.length&&r[r.length-1-s]===n.prefix[n.prefix.length-1-s];)s+=1;a+=s}if(n.suffix){let s=e.slice(t+r,t+r+n.suffix.length),i=0;for(;i<s.length&&i<n.suffix.length&&s[i]===n.suffix[i];)i+=1;a+=i}return a}function u(e,t,r,n,a){if(1===t.length)return{at:t[0],ambiguous:!1};let s=t[0],i=Math.abs(s-r);for(let e of t){let t=Math.abs(e-r);t<i&&(s=e,i=t)}let o=t.filter(e=>Math.abs(e-r)===i);if(1===o.length){let r=t.map(t=>({h:t,s:l(e,t,n,a)})).sort((e,t)=>t.s-e.s);return r.length>1&&r[0].s>r[1].s?{at:r[0].h,ambiguous:!1}:{at:s,ambiguous:!1}}let u=o.map(t=>({h:t,s:l(e,t,n,a)})).sort((e,t)=>t.s-e.s),d=u.filter(e=>e.s===u[0].s);return d.length>1?{at:d[0].h,ambiguous:!0}:{at:u[0].h,ambiguous:!0}}function d(e,t,r){let n=new Map(r.map(e=>[e.ref,e])).get(t.ref);if(0===t.length){if(n)return{ref:n.ref,offset:0,length:0,status:"exact"};let a=c(e,t.ref,r);return a?{ref:a.ref,offset:0,length:0,status:"moved"}:{ref:null,offset:0,length:0,status:"lost"}}if(n){if(n.markdown.slice(t.offset,t.offset+t.length)===t.quote)return{ref:n.ref,offset:t.offset,length:t.length,status:"exact"};let e=o(n.markdown,t.quote);if(e.length>0){let{at:r,ambiguous:a}=u(n.markdown,e,t.offset,t.length,t);return{ref:n.ref,offset:r,length:t.length,status:a?"ambiguous":"moved"}}return{ref:n.ref,offset:0,length:0,status:"ambiguous"}}let a=c(e,t.ref,r);if(a){let r=o(a.markdown,t.quote);if(r.length>0){let{at:e,ambiguous:n}=u(a.markdown,r,t.offset,t.length,t);return{ref:a.ref,offset:e,length:t.length,status:n?"ambiguous":"moved"}}if(e.prevRefOrder)return{ref:a.ref,offset:0,length:0,status:"ambiguous"}}let s=null,i=0;for(let e of r)for(let r of o(e.markdown,t.quote))1===(i+=1)&&(s={block:e,at:r});return 1===i&&s?{ref:s.block.ref,offset:s.at,length:t.length,status:"moved"}:i>1?{ref:null,offset:0,length:0,status:"ambiguous"}:{ref:null,offset:0,length:0,status:"lost"}}function c(e,t,r){let n=(e.prevRefOrder&&e.prevRefOrder.includes(t)?e.prevRefOrder:Object.keys(e.refMap)).indexOf(t);if(-1===n||n>=r.length)return null;let a=r[n];return a&&a.ref!==t?a:null}function f(e,t){if(e.schemaVersion>=3)return{sidecar:e,changed:!1};if(0===t.length&&e.comments.length>0)return{sidecar:{...e,anchors:e.anchors??{}},changed:!1};let r=e.updatedAt||new Date().toISOString(),n={...e.anchors??{}},o=new Set(Object.keys(n)),l=new Map(t.map(e=>[e.ref,e])),u=t=>l.get(t)??l.get(e.refAliases?.[t]??""),d=!1,c=e.comments.map(e=>{if(e.anchorId&&n[e.anchorId])return e;if(d=!0,e.textAnchor){let t=u(e.ref??""),i={id:a(o),ref:t?.ref??e.ref??"",offset:e.textAnchor.start,length:e.textAnchor.end-e.textAnchor.start,quote:e.textAnchor.selectedText,prefix:"",suffix:"",createdAt:e.createdAt||r,updatedAt:r};if(t){let e=s(t.markdown,i.offset,i.length);i.prefix=e.prefix,i.suffix=e.suffix}return n[i.id]=i,{...e,anchorId:i.id}}let t=u(e.ref??"");if(!t)return{...e,anchorStatus:"lost"};let l=i(t.markdown,t.ref,r,o);return n[l.id]=l,{...e,anchorId:l.id}});return{sidecar:{...e,schemaVersion:3,anchors:n,comments:c,updatedAt:r},changed:d}}function h(e,t){return r.default.join(e,".proof",t+".json")}async function p(e,r,n=[]){let a=h(e,r);try{let e=await (0,t.readFile)(a,"utf-8"),r=JSON.parse(e);if(![1,2,3].includes(r.schemaVersion))throw Error(`Sidecar schema version mismatch: expected 1, 2 or 3, got ${r.schemaVersion}`);let s=r.anchors?r:{...r,anchors:{}},{sidecar:i}=f(s,n);return i}catch(e){if(e instanceof Error&&"code"in e&&"ENOENT"===e.code)return null;throw e}}async function g(e,n,a){let s=h(e,n);await (0,t.mkdir)(r.default.dirname(s),{recursive:!0});let i=s+".tmp";await (0,t.writeFile)(i,JSON.stringify(a,null,2),"utf-8"),await (0,t.rename)(i,s)}async function m(e,n,a){let s=h(e,n),i=h(e,a);try{await (0,t.mkdir)(r.default.dirname(i),{recursive:!0}),await (0,t.rename)(s,i)}catch(e){if("ENOENT"===e.code)return;throw e}}async function w(e,r){let n=h(e,r);try{await (0,t.unlink)(n)}catch(e){if("ENOENT"===e.code)return;throw e}}e.s(["anchorForBlock",0,i,"anchorForRange",0,function(e,t,r,n,i,o){let{prefix:l,suffix:u}=s(e,r,n);return{id:a(o),ref:t,offset:r,length:n,quote:e.slice(r,r+n),prefix:l,suffix:u,createdAt:i,updatedAt:i}},"migrateSidecar",0,f,"projectCommentViews",0,function(e,t,r){let n=new Map(r.map(e=>[e.ref,e])),a={};for(let s of t)a[s.id]=function(e,t,r,n){let a=t.anchorId?e.anchors[t.anchorId]:void 0;if(!a){let e=t.ref??null,r=e?n.get(e):void 0;return{id:t.id,ref:e,offset:t.textAnchor?.start??0,length:t.textAnchor?t.textAnchor.end-t.textAnchor.start:0,status:e&&r?"exact":"lost",...r?{blockMarkdown:r.markdown}:{}}}let s=d(e,a,r),i=s.ref?n.get(s.ref):void 0;return{id:t.id,anchorId:a.id,ref:s.ref,offset:s.offset,length:s.length,status:s.status,...i?{blockMarkdown:i.markdown}:{}}}(e,s,r,n);return a},"resolveAnchor",0,d],605),e.s(["deleteSidecar",0,w,"emptySidecar",0,function(e){let t=new Date().toISOString();return{schemaVersion:3,anchors:{},path:e,revision:0,createdAt:t,updatedAt:t,refMap:{},refAliases:{},comments:[],events:[],nextEventId:1,lastAck:{},fingerprint:""}},"moveSidecar",0,m,"readSidecar",0,p,"writeSidecar",0,g],973909)},307764,e=>{"use strict";e.s(["emitEvents",0,function(e,t){let r=[];for(let n of t){let t={...n,id:e.nextEventId++};e.events.push(t),r.push(t)}return r},"pollEvents",0,function(e,t,r){return e.events.filter(e=>e.id>t).slice(0,r)},"trimEvents",0,function(e,t){if(e.events.length<=t)return;let r=Object.values(e.lastAck),n=r.length>0?Math.min(...r):1/0,a=e.events.length-t,s=e.events.filter((e,t)=>t>=a||e.id>n);e.events=s}])},478097,e=>{"use strict";var t=e.i(985426),r=e.i(257574),n=e.i(507835),a=e.i(457789),s=e.i(119791),i=e.i(141062),o=e.i(957291),l=e.i(535899),u=e.i(610241),d=e.i(62749),c=e.i(624891),f=e.i(725836),h=e.i(532736),p=e.i(257858),g=e.i(135288),m=e.i(193695);e.i(484264);var w=e.i(315709),v=e.i(912714),x=e.i(351216),R=e.i(215043),k=e.i(206536),A=e.i(973909),E=e.i(832852),_=e.i(660038),y=e.i(359211);async function N(e,{params:t}){let r=await (0,R.checkAuth)(e);if(!r.ok)return x.NextResponse.json({error:"UNAUTHORIZED"},{status:401});let{path:n}=await t,a=n.join("/");if(n.some(e=>".proof"===e))return x.NextResponse.json({error:"INVALID_PATH",message:"Path must not be under .proof"},{status:400});let s=await (0,_.resolveWorkspaceForAgent)(e);if(!s.ok)return x.NextResponse.json({error:s.code},{status:s.status});let{ws:i,rootDir:o}=s,l=(0,y.safeWorkspacePath)(o,a);if(!l)return x.NextResponse.json({error:"INVALID_PATH",message:"Path traversal rejected"},{status:400});let u=(0,R.enforceScope)(r.agent,{filePath:a,op:"read",workspaceId:i.id});if(!u.ok)return x.NextResponse.json({error:u.code,message:u.message},{status:403});let d=await (0,A.readSidecar)(o,a)??(0,A.emptySidecar)(a);return a.endsWith(".md")||a.endsWith(".markdown")||await (0,E.withFileMutex)((0,E.workspaceLockKey)(o,a),async()=>{try{let e=await (0,v.readFile)(l,"utf-8");await (0,k.reconcileTextCommentAnchors)(o,a,e,d)}catch(e){if("ENOENT"!==e.code)throw e}}),x.NextResponse.json(d)}e.s(["GET",0,N,"runtime",0,"nodejs"],206380);var I=e.i(206380);let S=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/agent/sidecar/[...path]/route",pathname:"/api/agent/sidecar/[...path]",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/agent/sidecar/[...path]/route.ts",nextConfigOutput:"standalone",userland:I,...{}}),{workAsyncStorage:O,workUnitAsyncStorage:T,serverHooks:b}=S;async function P(e,t,n){n.requestMeta&&(0,a.setRequestMeta)(e,n.requestMeta),S.isDev&&(0,a.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let v="/api/agent/sidecar/[...path]/route";v=v.replace(/\/index$/,"")||"/";let x=await S.prepare(e,t,{srcPage:v,multiZoneDraftMode:!1});if(!x)return t.statusCode=400,t.end("Bad Request"),null==n.waitUntil||n.waitUntil.call(n,Promise.resolve()),null;let{buildId:R,params:k,nextConfig:A,parsedUrl:E,isDraftMode:_,prerenderManifest:y,routerServerContext:N,isOnDemandRevalidate:I,revalidateOnlyGenerated:O,resolvedPathname:T,clientReferenceManifest:b,serverActionsManifest:P}=x,q=(0,o.normalizeAppPath)(v),C=!!(y.dynamicRoutes[q]||y.routes[T]),M=async()=>((null==N?void 0:N.render404)?await N.render404(e,t,E,!1):t.end("This page could not be found"),null);if(C&&!_){let e=!!y.routes[T],t=y.dynamicRoutes[q];if(t&&!1===t.fallback&&!e){if(A.adapterPath)return await M();throw new m.NoFallbackError}}let j=null;!C||S.isDev||_||(j="/index"===(j=T)?"/":j);let D=!0===S.isDev||!C,U=C&&!D;P&&b&&(0,i.setManifestsSingleton)({page:v,clientReferenceManifest:b,serverActionsManifest:P});let H=e.method||"GET",F=(0,s.getTracer)(),B=F.getActiveScopeSpan(),$=!!(null==N?void 0:N.isWrappedByNextServer),V=!!(0,a.getRequestMeta)(e,"minimalMode"),K=(0,a.getRequestMeta)(e,"incrementalCache")||await S.getIncrementalCache(e,A,y,V);null==K||K.resetRequestCache(),globalThis.__incrementalCache=K;let L={params:k,previewProps:y.preview,renderOpts:{experimental:{authInterrupts:!!A.experimental.authInterrupts},cacheComponents:!!A.cacheComponents,supportsDynamicResponse:D,incrementalCache:K,cacheLifeProfiles:A.cacheLife,waitUntil:n.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,n,a)=>S.onRequestError(e,t,n,a,N)},sharedContext:{buildId:R}},W=new l.NodeNextRequest(e),G=new l.NodeNextResponse(t),Z=u.NextRequestAdapter.fromNodeNextRequest(W,(0,u.signalFromNodeResponse)(t));try{let a,i=async e=>S.handle(Z,L).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=F.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==d.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=r.get("next.route");if(n){let t=`${H} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t),a&&a!==e&&(a.setAttribute("http.route",n),a.updateName(t))}else e.updateName(`${H} ${v}`)}),o=async a=>{var s,o;let l=async({previousCacheEntry:r})=>{try{if(!V&&I&&O&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await i(a);e.fetchMetrics=L.renderOpts.fetchMetrics;let o=L.renderOpts.pendingWaitUntil;o&&n.waitUntil&&(n.waitUntil(o),o=void 0);let l=L.renderOpts.collectedTags;if(!C)return await (0,f.sendResponse)(W,G,s,L.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(s.headers);l&&(t[g.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==L.renderOpts.collectedRevalidate&&!(L.renderOpts.collectedRevalidate>=g.INFINITE_CACHE)&&L.renderOpts.collectedRevalidate,n=void 0===L.renderOpts.collectedExpire||L.renderOpts.collectedExpire>=g.INFINITE_CACHE?void 0:L.renderOpts.collectedExpire;return{value:{kind:w.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==r?void 0:r.isStale)&&await S.onRequestError(e,t,{routerKind:"App Router",routePath:v,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:U,isOnDemandRevalidate:I})},!1,N),t}},u=await S.handleResponse({req:e,nextConfig:A,cacheKey:j,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:y,isRoutePPREnabled:!1,isOnDemandRevalidate:I,revalidateOnlyGenerated:O,responseGenerator:l,waitUntil:n.waitUntil,isMinimalMode:V});if(!C)return null;if((null==u||null==(s=u.value)?void 0:s.kind)!==w.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(o=u.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});V||t.setHeader("x-nextjs-cache",I?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),_&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let d=(0,h.fromNodeOutgoingHttpHeaders)(u.value.headers);return V&&C||d.delete(g.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||d.get("Cache-Control")||d.set("Cache-Control",(0,p.getCacheControlHeader)(u.cacheControl)),await (0,f.sendResponse)(W,G,new Response(u.value.body,{headers:d,status:u.value.status||200})),null};$&&B?await o(B):(a=F.getActiveScopeSpan(),await F.withPropagatedContext(e.headers,()=>F.trace(d.BaseServerSpan.handleRequest,{spanName:`${H} ${v}`,kind:s.SpanKind.SERVER,attributes:{"http.method":H,"http.target":e.url}},o),void 0,!$))}catch(t){if(t instanceof m.NoFallbackError||await S.onRequestError(e,t,{routerKind:"App Router",routePath:q,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:U,isOnDemandRevalidate:I})},!1,N),C)throw t;return await (0,f.sendResponse)(W,G,new Response(null,{status:500})),null}}e.s(["handler",0,P,"patchFetch",0,function(){return(0,n.patchFetch)({workAsyncStorage:O,workUnitAsyncStorage:T})},"routeModule",0,S,"serverHooks",0,b,"workAsyncStorage",0,O,"workUnitAsyncStorage",0,T],478097)},168315,e=>{e.v(t=>Promise.all(["server/chunks/0sag_@better-auth_memory-adapter_dist_index_mjs_0pvj6im._.js"].map(t=>e.l(t))).then(()=>t(862112)))},769787,e=>{e.v(t=>Promise.all(["server/chunks/01er_better-auth_dist_adapters_kysely-adapter_index_mjs_0s~-4gu._.js"].map(t=>e.l(t))).then(()=>t(717789)))},580632,e=>{e.v(e=>Promise.resolve().then(()=>e(270406)))},947559,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_bun-sqlite-dialect-DzNwOpKv_mjs_0z1z6m4._.js"].map(t=>e.l(t))).then(()=>t(495181)))},715018,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_node-sqlite-dialect_mjs_0qqlvhl._.js"].map(t=>e.l(t))).then(()=>t(698370)))},146843,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_d1-sqlite-dialect-C2B7YsIT_mjs_0wynrz3._.js"].map(t=>e.l(t))).then(()=>t(143740)))},697743,e=>{e.v(t=>Promise.all(["server/chunks/0.u4_next_05jevxw._.js"].map(t=>e.l(t))).then(()=>t(428325)))},99243,e=>{e.v(e=>Promise.resolve().then(()=>e(313414)))},893412,e=>{e.v(e=>Promise.resolve().then(()=>e(499465)))},687903,e=>{e.v(e=>Promise.resolve().then(()=>e(912714)))}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=%5Broot-of-the-server%5D__0ul.gyt._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[536654,e=>{"use strict";var t=e.i(912714),r=e.i(750227);function n(e){return!!(r.default.isAbsolute(e)||".."===e||e.startsWith(".."+r.default.sep)||e.startsWith("../"))}async function a(e,s,i={}){let o;if(!e)return null;let l=function(e){if(e.includes("\0")||r.default.isAbsolute(e))return null;let t=e.replace(/\\/g,"/");return(("."===(t=r.default.posix.normalize(t))||"./"===t)&&(t=""),".."===t||t.startsWith("../")||/^[a-zA-Z]:\//.test(t)||t.startsWith("/"))?null:t}(s);if(null===l)return null;if(i.deniedSegments?.length){for(let e of l.split("/").filter(Boolean))if(i.deniedSegments.includes(e))return null}try{o=await (0,t.realpath)(e)}catch{return null}let u=l?r.default.join(o,l):o;try{let e=await (0,t.realpath)(u),a=r.default.relative(o,e);if(n(a))return null;return{relPath:l,absolutePath:e}}catch{if(!i.allowMissing)return null;let e=u;for(;;){let a=r.default.dirname(e);if(a===e)break;try{let e=await (0,t.realpath)(a),s=r.default.relative(o,e);if(n(s))return null;return{relPath:l,absolutePath:u}}catch{e=a}}return null}}e.s(["resolveWorkspacePath",0,a])},402662,e=>{"use strict";var t=e.i(351216);e.s(["checkOrigin",0,function(e){let r=e.method.toUpperCase();if("GET"===r||"HEAD"===r||"OPTIONS"===r)return null;let n=e.headers.get("origin"),a=e.headers.get("referer");if(!n&&!a)return null;let s=function(e){let t=Array.from(new Set(["localhost","127.0.0.1",e.split(":")[0],...(process.env.WIKI_OWNER_HOSTS??"").split(",").map(e=>e.trim()).filter(Boolean)])),r=["",":3000",":3003"];e.includes(":")&&r.push(":"+e.split(":")[1]);let n=new Set;for(let e of t)for(let t of["http","https"])for(let a of r)n.add(`${t}://${e}${a}`);return n}(e.headers.get("host")??"");if(n)return s.has(n)?null:t.NextResponse.json({error:"FORBIDDEN",message:"Bad origin"},{status:403});if(a){try{let{protocol:e,host:t}=new URL(a);if(s.has(`${e}//${t}`))return null}catch{}return t.NextResponse.json({error:"FORBIDDEN",message:"Bad referer"},{status:403})}return null}])},973909,605,e=>{"use strict";var t=e.i(912714),r=e.i(750227);let n=0;function a(e=new Set){for(;;){n=(n+1)%0xffffff;let t=`a${n.toString(16).padStart(6,"0")}`;if(!e.has(t))return t}}function s(e,t,r){return{prefix:e.slice(Math.max(0,t-32),t),suffix:e.slice(t+r,t+r+32)}}function i(e,t,r,n){return{id:a(n),ref:t,offset:0,length:0,quote:e,prefix:"",suffix:"",createdAt:r,updatedAt:r}}function o(e,t){if(!t)return[];let r=[],n=e.indexOf(t);for(;-1!==n;)r.push(n),n=e.indexOf(t,n+1);return r}function l(e,t,r,n){let a=0;if(n.prefix){let r=e.slice(Math.max(0,t-n.prefix.length),t),s=0;for(;s<r.length&&s<n.prefix.length&&r[r.length-1-s]===n.prefix[n.prefix.length-1-s];)s+=1;a+=s}if(n.suffix){let s=e.slice(t+r,t+r+n.suffix.length),i=0;for(;i<s.length&&i<n.suffix.length&&s[i]===n.suffix[i];)i+=1;a+=i}return a}function u(e,t,r,n,a){if(1===t.length)return{at:t[0],ambiguous:!1};let s=t[0],i=Math.abs(s-r);for(let e of t){let t=Math.abs(e-r);t<i&&(s=e,i=t)}let o=t.filter(e=>Math.abs(e-r)===i);if(1===o.length){let r=t.map(t=>({h:t,s:l(e,t,n,a)})).sort((e,t)=>t.s-e.s);return r.length>1&&r[0].s>r[1].s?{at:r[0].h,ambiguous:!1}:{at:s,ambiguous:!1}}let u=o.map(t=>({h:t,s:l(e,t,n,a)})).sort((e,t)=>t.s-e.s),f=u.filter(e=>e.s===u[0].s);return f.length>1?{at:f[0].h,ambiguous:!0}:{at:u[0].h,ambiguous:!0}}function f(e,t,r){let n=new Map(r.map(e=>[e.ref,e])).get(t.ref);if(0===t.length){if(n)return{ref:n.ref,offset:0,length:0,status:"exact"};let a=d(e,t.ref,r);return a?{ref:a.ref,offset:0,length:0,status:"moved"}:{ref:null,offset:0,length:0,status:"lost"}}if(n){if(n.markdown.slice(t.offset,t.offset+t.length)===t.quote)return{ref:n.ref,offset:t.offset,length:t.length,status:"exact"};let e=o(n.markdown,t.quote);if(e.length>0){let{at:r,ambiguous:a}=u(n.markdown,e,t.offset,t.length,t);return{ref:n.ref,offset:r,length:t.length,status:a?"ambiguous":"moved"}}return{ref:n.ref,offset:0,length:0,status:"ambiguous"}}let a=d(e,t.ref,r);if(a){let r=o(a.markdown,t.quote);if(r.length>0){let{at:e,ambiguous:n}=u(a.markdown,r,t.offset,t.length,t);return{ref:a.ref,offset:e,length:t.length,status:n?"ambiguous":"moved"}}if(e.prevRefOrder)return{ref:a.ref,offset:0,length:0,status:"ambiguous"}}let s=null,i=0;for(let e of r)for(let r of o(e.markdown,t.quote))1===(i+=1)&&(s={block:e,at:r});return 1===i&&s?{ref:s.block.ref,offset:s.at,length:t.length,status:"moved"}:i>1?{ref:null,offset:0,length:0,status:"ambiguous"}:{ref:null,offset:0,length:0,status:"lost"}}function d(e,t,r){let n=(e.prevRefOrder&&e.prevRefOrder.includes(t)?e.prevRefOrder:Object.keys(e.refMap)).indexOf(t);if(-1===n||n>=r.length)return null;let a=r[n];return a&&a.ref!==t?a:null}function c(e,t){if(e.schemaVersion>=3)return{sidecar:e,changed:!1};if(0===t.length&&e.comments.length>0)return{sidecar:{...e,anchors:e.anchors??{}},changed:!1};let r=e.updatedAt||new Date().toISOString(),n={...e.anchors??{}},o=new Set(Object.keys(n)),l=new Map(t.map(e=>[e.ref,e])),u=t=>l.get(t)??l.get(e.refAliases?.[t]??""),f=!1,d=e.comments.map(e=>{if(e.anchorId&&n[e.anchorId])return e;if(f=!0,e.textAnchor){let t=u(e.ref??""),i={id:a(o),ref:t?.ref??e.ref??"",offset:e.textAnchor.start,length:e.textAnchor.end-e.textAnchor.start,quote:e.textAnchor.selectedText,prefix:"",suffix:"",createdAt:e.createdAt||r,updatedAt:r};if(t){let e=s(t.markdown,i.offset,i.length);i.prefix=e.prefix,i.suffix=e.suffix}return n[i.id]=i,{...e,anchorId:i.id}}let t=u(e.ref??"");if(!t)return{...e,anchorStatus:"lost"};let l=i(t.markdown,t.ref,r,o);return n[l.id]=l,{...e,anchorId:l.id}});return{sidecar:{...e,schemaVersion:3,anchors:n,comments:d,updatedAt:r},changed:f}}function h(e,t){return r.default.join(e,".proof",t+".json")}async function p(e,r,n=[]){let a=h(e,r);try{let e=await (0,t.readFile)(a,"utf-8"),r=JSON.parse(e);if(![1,2,3].includes(r.schemaVersion))throw Error(`Sidecar schema version mismatch: expected 1, 2 or 3, got ${r.schemaVersion}`);let s=r.anchors?r:{...r,anchors:{}},{sidecar:i}=c(s,n);return i}catch(e){if(e instanceof Error&&"code"in e&&"ENOENT"===e.code)return null;throw e}}async function m(e,n,a){let s=h(e,n);await (0,t.mkdir)(r.default.dirname(s),{recursive:!0});let i=s+".tmp";await (0,t.writeFile)(i,JSON.stringify(a,null,2),"utf-8"),await (0,t.rename)(i,s)}async function g(e,n,a){let s=h(e,n),i=h(e,a);try{await (0,t.mkdir)(r.default.dirname(i),{recursive:!0}),await (0,t.rename)(s,i)}catch(e){if("ENOENT"===e.code)return;throw e}}async function v(e,r){let n=h(e,r);try{await (0,t.unlink)(n)}catch(e){if("ENOENT"===e.code)return;throw e}}e.s(["anchorForBlock",0,i,"anchorForRange",0,function(e,t,r,n,i,o){let{prefix:l,suffix:u}=s(e,r,n);return{id:a(o),ref:t,offset:r,length:n,quote:e.slice(r,r+n),prefix:l,suffix:u,createdAt:i,updatedAt:i}},"migrateSidecar",0,c,"projectCommentViews",0,function(e,t,r){let n=new Map(r.map(e=>[e.ref,e])),a={};for(let s of t)a[s.id]=function(e,t,r,n){let a=t.anchorId?e.anchors[t.anchorId]:void 0;if(!a){let e=t.ref??null,r=e?n.get(e):void 0;return{id:t.id,ref:e,offset:t.textAnchor?.start??0,length:t.textAnchor?t.textAnchor.end-t.textAnchor.start:0,status:e&&r?"exact":"lost",...r?{blockMarkdown:r.markdown}:{}}}let s=f(e,a,r),i=s.ref?n.get(s.ref):void 0;return{id:t.id,anchorId:a.id,ref:s.ref,offset:s.offset,length:s.length,status:s.status,...i?{blockMarkdown:i.markdown}:{}}}(e,s,r,n);return a},"resolveAnchor",0,f],605),e.s(["deleteSidecar",0,v,"emptySidecar",0,function(e){let t=new Date().toISOString();return{schemaVersion:3,anchors:{},path:e,revision:0,createdAt:t,updatedAt:t,refMap:{},refAliases:{},comments:[],events:[],nextEventId:1,lastAck:{},fingerprint:""}},"moveSidecar",0,g,"readSidecar",0,p,"writeSidecar",0,m],973909)},502768,e=>{"use strict";var t=e.i(985426),r=e.i(257574),n=e.i(507835),a=e.i(457789),s=e.i(119791),i=e.i(141062),o=e.i(957291),l=e.i(535899),u=e.i(610241),f=e.i(62749),d=e.i(624891),c=e.i(725836),h=e.i(532736),p=e.i(257858),m=e.i(487476),g=e.i(193695);e.i(484264);var v=e.i(315709),w=e.i(912714),x=e.i(750227),R=e.i(351216),_=e.i(402662),E=e.i(660038),A=e.i(536654),k=e.i(973909),y=e.i(716234);async function S(e){let t=(0,_.checkOrigin)(e);if(t)return t;let r=await (0,E.resolveWorkspaceForUser)(e,"write");if(!r.ok)return R.NextResponse.json({error:r.code},{status:r.status});let{rootDir:n}=r,a=await e.json();if(!a.from||!a.to||"string"!=typeof a.from||"string"!=typeof a.to)return R.NextResponse.json({error:"Missing from/to paths"},{status:400});let s=await (0,A.resolveWorkspacePath)(n,a.from,{deniedSegments:y.DENIED_SEGMENTS}),i=await (0,A.resolveWorkspacePath)(n,a.to,{allowMissing:!0,deniedSegments:y.DENIED_SEGMENTS});if(!s||!i)return R.NextResponse.json({error:"Invalid path"},{status:400});let o=s.absolutePath,l=i.absolutePath;if(l.startsWith(o+x.default.sep)||l===o)return R.NextResponse.json({error:"Cannot move a folder into itself"},{status:400});try{await (0,w.stat)(o)}catch{return R.NextResponse.json({error:"Source not found"},{status:404})}try{await (0,w.rename)(o,l);let e=x.default.extname(a.from).toLowerCase();return(".md"===e||".markdown"===e)&&await (0,k.moveSidecar)(n,a.from,a.to),R.NextResponse.json({ok:!0})}catch{return R.NextResponse.json({error:"Move failed"},{status:500})}}e.s(["POST",0,S],428957);var b=e.i(428957);let N=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/wiki/move/route",pathname:"/api/wiki/move",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/wiki/move/route.ts",nextConfigOutput:"standalone",userland:b,...{}}),{workAsyncStorage:O,workUnitAsyncStorage:P,serverHooks:C}=N;async function j(e,t,n){n.requestMeta&&(0,a.setRequestMeta)(e,n.requestMeta),N.isDev&&(0,a.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let w="/api/wiki/move/route";w=w.replace(/\/index$/,"")||"/";let x=await N.prepare(e,t,{srcPage:w,multiZoneDraftMode:!1});if(!x)return t.statusCode=400,t.end("Bad Request"),null==n.waitUntil||n.waitUntil.call(n,Promise.resolve()),null;let{buildId:R,params:_,nextConfig:E,parsedUrl:A,isDraftMode:k,prerenderManifest:y,routerServerContext:S,isOnDemandRevalidate:b,revalidateOnlyGenerated:O,resolvedPathname:P,clientReferenceManifest:C,serverActionsManifest:j}=x,T=(0,o.normalizeAppPath)(w),I=!!(y.dynamicRoutes[T]||y.routes[P]),q=async()=>((null==S?void 0:S.render404)?await S.render404(e,t,A,!1):t.end("This page could not be found"),null);if(I&&!k){let e=!!y.routes[P],t=y.dynamicRoutes[T];if(t&&!1===t.fallback&&!e){if(E.adapterPath)return await q();throw new g.NoFallbackError}}let M=null;!I||N.isDev||k||(M="/index"===(M=P)?"/":M);let D=!0===N.isDev||!I,H=I&&!D;j&&C&&(0,i.setManifestsSingleton)({page:w,clientReferenceManifest:C,serverActionsManifest:j});let U=e.method||"GET",$=(0,s.getTracer)(),F=$.getActiveScopeSpan(),B=!!(null==S?void 0:S.isWrappedByNextServer),W=!!(0,a.getRequestMeta)(e,"minimalMode"),K=(0,a.getRequestMeta)(e,"incrementalCache")||await N.getIncrementalCache(e,E,y,W);null==K||K.resetRequestCache(),globalThis.__incrementalCache=K;let V={params:_,previewProps:y.preview,renderOpts:{experimental:{authInterrupts:!!E.experimental.authInterrupts},cacheComponents:!!E.cacheComponents,supportsDynamicResponse:D,incrementalCache:K,cacheLifeProfiles:E.cacheLife,waitUntil:n.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,n,a)=>N.onRequestError(e,t,n,a,S)},sharedContext:{buildId:R}},z=new l.NodeNextRequest(e),L=new l.NodeNextResponse(t),G=u.NextRequestAdapter.fromNodeNextRequest(z,(0,u.signalFromNodeResponse)(t));try{let a,i=async e=>N.handle(G,V).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=$.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==f.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=r.get("next.route");if(n){let t=`${U} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t),a&&a!==e&&(a.setAttribute("http.route",n),a.updateName(t))}else e.updateName(`${U} ${w}`)}),o=async a=>{var s,o;let l=async({previousCacheEntry:r})=>{try{if(!W&&b&&O&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await i(a);e.fetchMetrics=V.renderOpts.fetchMetrics;let o=V.renderOpts.pendingWaitUntil;o&&n.waitUntil&&(n.waitUntil(o),o=void 0);let l=V.renderOpts.collectedTags;if(!I)return await (0,c.sendResponse)(z,L,s,V.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(s.headers);l&&(t[m.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==V.renderOpts.collectedRevalidate&&!(V.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&V.renderOpts.collectedRevalidate,n=void 0===V.renderOpts.collectedExpire||V.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:V.renderOpts.collectedExpire;return{value:{kind:v.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==r?void 0:r.isStale)&&await N.onRequestError(e,t,{routerKind:"App Router",routePath:w,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:b})},!1,S),t}},u=await N.handleResponse({req:e,nextConfig:E,cacheKey:M,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:y,isRoutePPREnabled:!1,isOnDemandRevalidate:b,revalidateOnlyGenerated:O,responseGenerator:l,waitUntil:n.waitUntil,isMinimalMode:W});if(!I)return null;if((null==u||null==(s=u.value)?void 0:s.kind)!==v.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(o=u.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});W||t.setHeader("x-nextjs-cache",b?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),k&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let f=(0,h.fromNodeOutgoingHttpHeaders)(u.value.headers);return W&&I||f.delete(m.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||f.get("Cache-Control")||f.set("Cache-Control",(0,p.getCacheControlHeader)(u.cacheControl)),await (0,c.sendResponse)(z,L,new Response(u.value.body,{headers:f,status:u.value.status||200})),null};B&&F?await o(F):(a=$.getActiveScopeSpan(),await $.withPropagatedContext(e.headers,()=>$.trace(f.BaseServerSpan.handleRequest,{spanName:`${U} ${w}`,kind:s.SpanKind.SERVER,attributes:{"http.method":U,"http.target":e.url}},o),void 0,!B))}catch(t){if(t instanceof g.NoFallbackError||await N.onRequestError(e,t,{routerKind:"App Router",routePath:T,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:b})},!1,S),I)throw t;return await (0,c.sendResponse)(z,L,new Response(null,{status:500})),null}}e.s(["handler",0,j,"patchFetch",0,function(){return(0,n.patchFetch)({workAsyncStorage:O,workUnitAsyncStorage:P})},"routeModule",0,N,"serverHooks",0,C,"workAsyncStorage",0,O,"workUnitAsyncStorage",0,P],502768)},168315,e=>{e.v(t=>Promise.all(["server/chunks/0sag_@better-auth_memory-adapter_dist_index_mjs_0pvj6im._.js"].map(t=>e.l(t))).then(()=>t(862112)))},769787,e=>{e.v(t=>Promise.all(["server/chunks/01er_better-auth_dist_adapters_kysely-adapter_index_mjs_0s~-4gu._.js"].map(t=>e.l(t))).then(()=>t(717789)))},580632,e=>{e.v(e=>Promise.resolve().then(()=>e(270406)))},947559,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_bun-sqlite-dialect-DzNwOpKv_mjs_0z1z6m4._.js"].map(t=>e.l(t))).then(()=>t(495181)))},715018,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_node-sqlite-dialect_mjs_0qqlvhl._.js"].map(t=>e.l(t))).then(()=>t(698370)))},146843,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_d1-sqlite-dialect-C2B7YsIT_mjs_0wynrz3._.js"].map(t=>e.l(t))).then(()=>t(143740)))},697743,e=>{e.v(t=>Promise.all(["server/chunks/0.u4_next_05jevxw._.js"].map(t=>e.l(t))).then(()=>t(428325)))},99243,e=>{e.v(e=>Promise.resolve().then(()=>e(313414)))},893412,e=>{e.v(e=>Promise.resolve().then(()=>e(499465)))},687903,e=>{e.v(e=>Promise.resolve().then(()=>e(912714)))}];
|
|
1
|
+
module.exports=[536654,e=>{"use strict";var t=e.i(912714),r=e.i(750227);function n(e){return!!(r.default.isAbsolute(e)||".."===e||e.startsWith(".."+r.default.sep)||e.startsWith("../"))}async function a(e,s,i={}){let o;if(!e)return null;let l=function(e){if(e.includes("\0")||r.default.isAbsolute(e))return null;let t=e.replace(/\\/g,"/");return(("."===(t=r.default.posix.normalize(t))||"./"===t)&&(t=""),".."===t||t.startsWith("../")||/^[a-zA-Z]:\//.test(t)||t.startsWith("/"))?null:t}(s);if(null===l)return null;if(i.deniedSegments?.length){for(let e of l.split("/").filter(Boolean))if(i.deniedSegments.includes(e))return null}try{o=await (0,t.realpath)(e)}catch{return null}let u=l?r.default.join(o,l):o;try{let e=await (0,t.realpath)(u),a=r.default.relative(o,e);if(n(a))return null;return{relPath:l,absolutePath:e}}catch{if(!i.allowMissing)return null;let e=u;for(;;){let a=r.default.dirname(e);if(a===e)break;try{let e=await (0,t.realpath)(a),s=r.default.relative(o,e);if(n(s))return null;return{relPath:l,absolutePath:u}}catch{e=a}}return null}}e.s(["resolveWorkspacePath",0,a])},402662,e=>{"use strict";var t=e.i(351216);e.s(["checkOrigin",0,function(e){let r=e.method.toUpperCase();if("GET"===r||"HEAD"===r||"OPTIONS"===r)return null;let n=e.headers.get("origin"),a=e.headers.get("referer");if(!n&&!a)return null;let s=function(e){let t=Array.from(new Set(["localhost","127.0.0.1",e.split(":")[0],...(process.env.WIKI_OWNER_HOSTS??"").split(",").map(e=>e.trim()).filter(Boolean)])),r=["",":3000",":3003"];e.includes(":")&&r.push(":"+e.split(":")[1]);let n=new Set;for(let e of t)for(let t of["http","https"])for(let a of r)n.add(`${t}://${e}${a}`);return n}(e.headers.get("host")??"");if(n)return s.has(n)?null:t.NextResponse.json({error:"FORBIDDEN",message:"Bad origin"},{status:403});if(a){try{let{protocol:e,host:t}=new URL(a);if(s.has(`${e}//${t}`))return null}catch{}return t.NextResponse.json({error:"FORBIDDEN",message:"Bad referer"},{status:403})}return null}])},973909,605,e=>{"use strict";var t=e.i(912714),r=e.i(750227);let n=0;function a(e=new Set){for(;;){n=(n+1)%0xffffff;let t=`a${n.toString(16).padStart(6,"0")}`;if(!e.has(t))return t}}function s(e,t,r){return{prefix:e.slice(Math.max(0,t-32),t),suffix:e.slice(t+r,t+r+32)}}function i(e,t,r,n){return{id:a(n),ref:t,offset:0,length:0,quote:e,prefix:"",suffix:"",createdAt:r,updatedAt:r}}function o(e,t){if(!t)return[];let r=[],n=e.indexOf(t);for(;-1!==n;)r.push(n),n=e.indexOf(t,n+1);return r}function l(e,t,r,n){let a=0;if(n.prefix){let r=e.slice(Math.max(0,t-n.prefix.length),t),s=0;for(;s<r.length&&s<n.prefix.length&&r[r.length-1-s]===n.prefix[n.prefix.length-1-s];)s+=1;a+=s}if(n.suffix){let s=e.slice(t+r,t+r+n.suffix.length),i=0;for(;i<s.length&&i<n.suffix.length&&s[i]===n.suffix[i];)i+=1;a+=i}return a}function u(e,t,r,n,a){if(1===t.length)return{at:t[0],ambiguous:!1};let s=t[0],i=Math.abs(s-r);for(let e of t){let t=Math.abs(e-r);t<i&&(s=e,i=t)}let o=t.filter(e=>Math.abs(e-r)===i);if(1===o.length){let r=t.map(t=>({h:t,s:l(e,t,n,a)})).sort((e,t)=>t.s-e.s);return r.length>1&&r[0].s>r[1].s?{at:r[0].h,ambiguous:!1}:{at:s,ambiguous:!1}}let u=o.map(t=>({h:t,s:l(e,t,n,a)})).sort((e,t)=>t.s-e.s),f=u.filter(e=>e.s===u[0].s);return f.length>1?{at:f[0].h,ambiguous:!0}:{at:u[0].h,ambiguous:!0}}function f(e,t,r){let n=new Map(r.map(e=>[e.ref,e])).get(t.ref);if(0===t.length){if(n)return{ref:n.ref,offset:0,length:0,status:"exact"};let a=d(e,t.ref,r);return a?{ref:a.ref,offset:0,length:0,status:"moved"}:{ref:null,offset:0,length:0,status:"lost"}}if(n){if(n.markdown.slice(t.offset,t.offset+t.length)===t.quote)return{ref:n.ref,offset:t.offset,length:t.length,status:"exact"};let e=o(n.markdown,t.quote);if(e.length>0){let{at:r,ambiguous:a}=u(n.markdown,e,t.offset,t.length,t);return{ref:n.ref,offset:r,length:t.length,status:a?"ambiguous":"moved"}}return{ref:n.ref,offset:0,length:0,status:"ambiguous"}}let a=d(e,t.ref,r);if(a){let r=o(a.markdown,t.quote);if(r.length>0){let{at:e,ambiguous:n}=u(a.markdown,r,t.offset,t.length,t);return{ref:a.ref,offset:e,length:t.length,status:n?"ambiguous":"moved"}}if(e.prevRefOrder)return{ref:a.ref,offset:0,length:0,status:"ambiguous"}}let s=null,i=0;for(let e of r)for(let r of o(e.markdown,t.quote))1===(i+=1)&&(s={block:e,at:r});return 1===i&&s?{ref:s.block.ref,offset:s.at,length:t.length,status:"moved"}:i>1?{ref:null,offset:0,length:0,status:"ambiguous"}:{ref:null,offset:0,length:0,status:"lost"}}function d(e,t,r){let n=(e.prevRefOrder&&e.prevRefOrder.includes(t)?e.prevRefOrder:Object.keys(e.refMap)).indexOf(t);if(-1===n||n>=r.length)return null;let a=r[n];return a&&a.ref!==t?a:null}function c(e,t){if(e.schemaVersion>=3)return{sidecar:e,changed:!1};if(0===t.length&&e.comments.length>0)return{sidecar:{...e,anchors:e.anchors??{}},changed:!1};let r=e.updatedAt||new Date().toISOString(),n={...e.anchors??{}},o=new Set(Object.keys(n)),l=new Map(t.map(e=>[e.ref,e])),u=t=>l.get(t)??l.get(e.refAliases?.[t]??""),f=!1,d=e.comments.map(e=>{if(e.anchorId&&n[e.anchorId])return e;if(f=!0,e.textAnchor){let t=u(e.ref??""),i={id:a(o),ref:t?.ref??e.ref??"",offset:e.textAnchor.start,length:e.textAnchor.end-e.textAnchor.start,quote:e.textAnchor.selectedText,prefix:"",suffix:"",createdAt:e.createdAt||r,updatedAt:r};if(t){let e=s(t.markdown,i.offset,i.length);i.prefix=e.prefix,i.suffix=e.suffix}return n[i.id]=i,{...e,anchorId:i.id}}let t=u(e.ref??"");if(!t)return{...e,anchorStatus:"lost"};let l=i(t.markdown,t.ref,r,o);return n[l.id]=l,{...e,anchorId:l.id}});return{sidecar:{...e,schemaVersion:3,anchors:n,comments:d,updatedAt:r},changed:f}}function h(e,t){return r.default.join(e,".proof",t+".json")}async function p(e,r,n=[]){let a=h(e,r);try{let e=await (0,t.readFile)(a,"utf-8"),r=JSON.parse(e);if(![1,2,3].includes(r.schemaVersion))throw Error(`Sidecar schema version mismatch: expected 1, 2 or 3, got ${r.schemaVersion}`);let s=r.anchors?r:{...r,anchors:{}},{sidecar:i}=c(s,n);return i}catch(e){if(e instanceof Error&&"code"in e&&"ENOENT"===e.code)return null;throw e}}async function m(e,n,a){let s=h(e,n);await (0,t.mkdir)(r.default.dirname(s),{recursive:!0});let i=s+".tmp";await (0,t.writeFile)(i,JSON.stringify(a,null,2),"utf-8"),await (0,t.rename)(i,s)}async function g(e,n,a){let s=h(e,n),i=h(e,a);try{await (0,t.mkdir)(r.default.dirname(i),{recursive:!0}),await (0,t.rename)(s,i)}catch(e){if("ENOENT"===e.code)return;throw e}}async function v(e,r){let n=h(e,r);try{await (0,t.unlink)(n)}catch(e){if("ENOENT"===e.code)return;throw e}}e.s(["anchorForBlock",0,i,"anchorForRange",0,function(e,t,r,n,i,o){let{prefix:l,suffix:u}=s(e,r,n);return{id:a(o),ref:t,offset:r,length:n,quote:e.slice(r,r+n),prefix:l,suffix:u,createdAt:i,updatedAt:i}},"migrateSidecar",0,c,"projectCommentViews",0,function(e,t,r){let n=new Map(r.map(e=>[e.ref,e])),a={};for(let s of t)a[s.id]=function(e,t,r,n){let a=t.anchorId?e.anchors[t.anchorId]:void 0;if(!a){let e=t.ref??null,r=e?n.get(e):void 0;return{id:t.id,ref:e,offset:t.textAnchor?.start??0,length:t.textAnchor?t.textAnchor.end-t.textAnchor.start:0,status:e&&r?"exact":"lost",...r?{blockMarkdown:r.markdown}:{}}}let s=f(e,a,r),i=s.ref?n.get(s.ref):void 0;return{id:t.id,anchorId:a.id,ref:s.ref,offset:s.offset,length:s.length,status:s.status,...i?{blockMarkdown:i.markdown}:{}}}(e,s,r,n);return a},"resolveAnchor",0,f],605),e.s(["deleteSidecar",0,v,"emptySidecar",0,function(e){let t=new Date().toISOString();return{schemaVersion:3,anchors:{},path:e,revision:0,createdAt:t,updatedAt:t,refMap:{},refAliases:{},comments:[],events:[],nextEventId:1,lastAck:{},fingerprint:""}},"moveSidecar",0,g,"readSidecar",0,p,"writeSidecar",0,m],973909)},502768,e=>{"use strict";var t=e.i(985426),r=e.i(257574),n=e.i(507835),a=e.i(457789),s=e.i(119791),i=e.i(141062),o=e.i(957291),l=e.i(535899),u=e.i(610241),f=e.i(62749),d=e.i(624891),c=e.i(725836),h=e.i(532736),p=e.i(257858),m=e.i(135288),g=e.i(193695);e.i(484264);var v=e.i(315709),w=e.i(912714),x=e.i(750227),R=e.i(351216),_=e.i(402662),E=e.i(660038),A=e.i(536654),k=e.i(973909),y=e.i(716234);async function S(e){let t=(0,_.checkOrigin)(e);if(t)return t;let r=await (0,E.resolveWorkspaceForUser)(e,"write");if(!r.ok)return R.NextResponse.json({error:r.code},{status:r.status});let{rootDir:n}=r,a=await e.json();if(!a.from||!a.to||"string"!=typeof a.from||"string"!=typeof a.to)return R.NextResponse.json({error:"Missing from/to paths"},{status:400});let s=await (0,A.resolveWorkspacePath)(n,a.from,{deniedSegments:y.DENIED_SEGMENTS}),i=await (0,A.resolveWorkspacePath)(n,a.to,{allowMissing:!0,deniedSegments:y.DENIED_SEGMENTS});if(!s||!i)return R.NextResponse.json({error:"Invalid path"},{status:400});let o=s.absolutePath,l=i.absolutePath;if(l.startsWith(o+x.default.sep)||l===o)return R.NextResponse.json({error:"Cannot move a folder into itself"},{status:400});try{await (0,w.stat)(o)}catch{return R.NextResponse.json({error:"Source not found"},{status:404})}try{await (0,w.rename)(o,l);let e=x.default.extname(a.from).toLowerCase();return(".md"===e||".markdown"===e)&&await (0,k.moveSidecar)(n,a.from,a.to),R.NextResponse.json({ok:!0})}catch{return R.NextResponse.json({error:"Move failed"},{status:500})}}e.s(["POST",0,S],428957);var b=e.i(428957);let N=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/wiki/move/route",pathname:"/api/wiki/move",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/wiki/move/route.ts",nextConfigOutput:"standalone",userland:b,...{}}),{workAsyncStorage:O,workUnitAsyncStorage:P,serverHooks:C}=N;async function j(e,t,n){n.requestMeta&&(0,a.setRequestMeta)(e,n.requestMeta),N.isDev&&(0,a.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let w="/api/wiki/move/route";w=w.replace(/\/index$/,"")||"/";let x=await N.prepare(e,t,{srcPage:w,multiZoneDraftMode:!1});if(!x)return t.statusCode=400,t.end("Bad Request"),null==n.waitUntil||n.waitUntil.call(n,Promise.resolve()),null;let{buildId:R,params:_,nextConfig:E,parsedUrl:A,isDraftMode:k,prerenderManifest:y,routerServerContext:S,isOnDemandRevalidate:b,revalidateOnlyGenerated:O,resolvedPathname:P,clientReferenceManifest:C,serverActionsManifest:j}=x,T=(0,o.normalizeAppPath)(w),I=!!(y.dynamicRoutes[T]||y.routes[P]),q=async()=>((null==S?void 0:S.render404)?await S.render404(e,t,A,!1):t.end("This page could not be found"),null);if(I&&!k){let e=!!y.routes[P],t=y.dynamicRoutes[T];if(t&&!1===t.fallback&&!e){if(E.adapterPath)return await q();throw new g.NoFallbackError}}let M=null;!I||N.isDev||k||(M="/index"===(M=P)?"/":M);let D=!0===N.isDev||!I,H=I&&!D;j&&C&&(0,i.setManifestsSingleton)({page:w,clientReferenceManifest:C,serverActionsManifest:j});let U=e.method||"GET",$=(0,s.getTracer)(),F=$.getActiveScopeSpan(),B=!!(null==S?void 0:S.isWrappedByNextServer),W=!!(0,a.getRequestMeta)(e,"minimalMode"),K=(0,a.getRequestMeta)(e,"incrementalCache")||await N.getIncrementalCache(e,E,y,W);null==K||K.resetRequestCache(),globalThis.__incrementalCache=K;let V={params:_,previewProps:y.preview,renderOpts:{experimental:{authInterrupts:!!E.experimental.authInterrupts},cacheComponents:!!E.cacheComponents,supportsDynamicResponse:D,incrementalCache:K,cacheLifeProfiles:E.cacheLife,waitUntil:n.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,n,a)=>N.onRequestError(e,t,n,a,S)},sharedContext:{buildId:R}},z=new l.NodeNextRequest(e),L=new l.NodeNextResponse(t),G=u.NextRequestAdapter.fromNodeNextRequest(z,(0,u.signalFromNodeResponse)(t));try{let a,i=async e=>N.handle(G,V).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=$.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==f.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=r.get("next.route");if(n){let t=`${U} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t),a&&a!==e&&(a.setAttribute("http.route",n),a.updateName(t))}else e.updateName(`${U} ${w}`)}),o=async a=>{var s,o;let l=async({previousCacheEntry:r})=>{try{if(!W&&b&&O&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await i(a);e.fetchMetrics=V.renderOpts.fetchMetrics;let o=V.renderOpts.pendingWaitUntil;o&&n.waitUntil&&(n.waitUntil(o),o=void 0);let l=V.renderOpts.collectedTags;if(!I)return await (0,c.sendResponse)(z,L,s,V.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(s.headers);l&&(t[m.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==V.renderOpts.collectedRevalidate&&!(V.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&V.renderOpts.collectedRevalidate,n=void 0===V.renderOpts.collectedExpire||V.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:V.renderOpts.collectedExpire;return{value:{kind:v.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==r?void 0:r.isStale)&&await N.onRequestError(e,t,{routerKind:"App Router",routePath:w,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:b})},!1,S),t}},u=await N.handleResponse({req:e,nextConfig:E,cacheKey:M,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:y,isRoutePPREnabled:!1,isOnDemandRevalidate:b,revalidateOnlyGenerated:O,responseGenerator:l,waitUntil:n.waitUntil,isMinimalMode:W});if(!I)return null;if((null==u||null==(s=u.value)?void 0:s.kind)!==v.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(o=u.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});W||t.setHeader("x-nextjs-cache",b?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),k&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let f=(0,h.fromNodeOutgoingHttpHeaders)(u.value.headers);return W&&I||f.delete(m.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||f.get("Cache-Control")||f.set("Cache-Control",(0,p.getCacheControlHeader)(u.cacheControl)),await (0,c.sendResponse)(z,L,new Response(u.value.body,{headers:f,status:u.value.status||200})),null};B&&F?await o(F):(a=$.getActiveScopeSpan(),await $.withPropagatedContext(e.headers,()=>$.trace(f.BaseServerSpan.handleRequest,{spanName:`${U} ${w}`,kind:s.SpanKind.SERVER,attributes:{"http.method":U,"http.target":e.url}},o),void 0,!B))}catch(t){if(t instanceof g.NoFallbackError||await N.onRequestError(e,t,{routerKind:"App Router",routePath:T,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:b})},!1,S),I)throw t;return await (0,c.sendResponse)(z,L,new Response(null,{status:500})),null}}e.s(["handler",0,j,"patchFetch",0,function(){return(0,n.patchFetch)({workAsyncStorage:O,workUnitAsyncStorage:P})},"routeModule",0,N,"serverHooks",0,C,"workAsyncStorage",0,O,"workUnitAsyncStorage",0,P],502768)},168315,e=>{e.v(t=>Promise.all(["server/chunks/0sag_@better-auth_memory-adapter_dist_index_mjs_0pvj6im._.js"].map(t=>e.l(t))).then(()=>t(862112)))},769787,e=>{e.v(t=>Promise.all(["server/chunks/01er_better-auth_dist_adapters_kysely-adapter_index_mjs_0s~-4gu._.js"].map(t=>e.l(t))).then(()=>t(717789)))},580632,e=>{e.v(e=>Promise.resolve().then(()=>e(270406)))},947559,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_bun-sqlite-dialect-DzNwOpKv_mjs_0z1z6m4._.js"].map(t=>e.l(t))).then(()=>t(495181)))},715018,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_node-sqlite-dialect_mjs_0qqlvhl._.js"].map(t=>e.l(t))).then(()=>t(698370)))},146843,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_d1-sqlite-dialect-C2B7YsIT_mjs_0wynrz3._.js"].map(t=>e.l(t))).then(()=>t(143740)))},697743,e=>{e.v(t=>Promise.all(["server/chunks/0.u4_next_05jevxw._.js"].map(t=>e.l(t))).then(()=>t(428325)))},99243,e=>{e.v(e=>Promise.resolve().then(()=>e(313414)))},893412,e=>{e.v(e=>Promise.resolve().then(()=>e(499465)))},687903,e=>{e.v(e=>Promise.resolve().then(()=>e(912714)))}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=%5Broot-of-the-server%5D__0w2ba2x._.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
module.exports=[536654,e=>{"use strict";var t=e.i(912714),r=e.i(750227);function a(e){return!!(r.default.isAbsolute(e)||".."===e||e.startsWith(".."+r.default.sep)||e.startsWith("../"))}async function n(e,s,i={}){let l;if(!e)return null;let o=function(e){if(e.includes("\0")||r.default.isAbsolute(e))return null;let t=e.replace(/\\/g,"/");return(("."===(t=r.default.posix.normalize(t))||"./"===t)&&(t=""),".."===t||t.startsWith("../")||/^[a-zA-Z]:\//.test(t)||t.startsWith("/"))?null:t}(s);if(null===o)return null;if(i.deniedSegments?.length){for(let e of o.split("/").filter(Boolean))if(i.deniedSegments.includes(e))return null}try{l=await (0,t.realpath)(e)}catch{return null}let u=o?r.default.join(l,o):l;try{let e=await (0,t.realpath)(u),n=r.default.relative(l,e);if(a(n))return null;return{relPath:o,absolutePath:e}}catch{if(!i.allowMissing)return null;let e=u;for(;;){let n=r.default.dirname(e);if(n===e)break;try{let e=await (0,t.realpath)(n),s=r.default.relative(l,e);if(a(s))return null;return{relPath:o,absolutePath:u}}catch{e=n}}return null}}e.s(["resolveWorkspacePath",0,n])},402662,e=>{"use strict";var t=e.i(351216);e.s(["checkOrigin",0,function(e){let r=e.method.toUpperCase();if("GET"===r||"HEAD"===r||"OPTIONS"===r)return null;let a=e.headers.get("origin"),n=e.headers.get("referer");if(!a&&!n)return null;let s=function(e){let t=Array.from(new Set(["localhost","127.0.0.1",e.split(":")[0],...(process.env.WIKI_OWNER_HOSTS??"").split(",").map(e=>e.trim()).filter(Boolean)])),r=["",":3000",":3003"];e.includes(":")&&r.push(":"+e.split(":")[1]);let a=new Set;for(let e of t)for(let t of["http","https"])for(let n of r)a.add(`${t}://${e}${n}`);return a}(e.headers.get("host")??"");if(a)return s.has(a)?null:t.NextResponse.json({error:"FORBIDDEN",message:"Bad origin"},{status:403});if(n){try{let{protocol:e,host:t}=new URL(n);if(s.has(`${e}//${t}`))return null}catch{}return t.NextResponse.json({error:"FORBIDDEN",message:"Bad referer"},{status:403})}return null}])},579256,e=>{"use strict";var t=e.i(985426),r=e.i(257574),a=e.i(507835),n=e.i(457789),s=e.i(119791),i=e.i(141062),l=e.i(957291),o=e.i(535899),u=e.i(610241),d=e.i(62749),p=e.i(624891),c=e.i(725836),h=e.i(532736),f=e.i(257858),v=e.i(
|
|
1
|
+
module.exports=[536654,e=>{"use strict";var t=e.i(912714),r=e.i(750227);function a(e){return!!(r.default.isAbsolute(e)||".."===e||e.startsWith(".."+r.default.sep)||e.startsWith("../"))}async function n(e,s,i={}){let l;if(!e)return null;let o=function(e){if(e.includes("\0")||r.default.isAbsolute(e))return null;let t=e.replace(/\\/g,"/");return(("."===(t=r.default.posix.normalize(t))||"./"===t)&&(t=""),".."===t||t.startsWith("../")||/^[a-zA-Z]:\//.test(t)||t.startsWith("/"))?null:t}(s);if(null===o)return null;if(i.deniedSegments?.length){for(let e of o.split("/").filter(Boolean))if(i.deniedSegments.includes(e))return null}try{l=await (0,t.realpath)(e)}catch{return null}let u=o?r.default.join(l,o):l;try{let e=await (0,t.realpath)(u),n=r.default.relative(l,e);if(a(n))return null;return{relPath:o,absolutePath:e}}catch{if(!i.allowMissing)return null;let e=u;for(;;){let n=r.default.dirname(e);if(n===e)break;try{let e=await (0,t.realpath)(n),s=r.default.relative(l,e);if(a(s))return null;return{relPath:o,absolutePath:u}}catch{e=n}}return null}}e.s(["resolveWorkspacePath",0,n])},402662,e=>{"use strict";var t=e.i(351216);e.s(["checkOrigin",0,function(e){let r=e.method.toUpperCase();if("GET"===r||"HEAD"===r||"OPTIONS"===r)return null;let a=e.headers.get("origin"),n=e.headers.get("referer");if(!a&&!n)return null;let s=function(e){let t=Array.from(new Set(["localhost","127.0.0.1",e.split(":")[0],...(process.env.WIKI_OWNER_HOSTS??"").split(",").map(e=>e.trim()).filter(Boolean)])),r=["",":3000",":3003"];e.includes(":")&&r.push(":"+e.split(":")[1]);let a=new Set;for(let e of t)for(let t of["http","https"])for(let n of r)a.add(`${t}://${e}${n}`);return a}(e.headers.get("host")??"");if(a)return s.has(a)?null:t.NextResponse.json({error:"FORBIDDEN",message:"Bad origin"},{status:403});if(n){try{let{protocol:e,host:t}=new URL(n);if(s.has(`${e}//${t}`))return null}catch{}return t.NextResponse.json({error:"FORBIDDEN",message:"Bad referer"},{status:403})}return null}])},579256,e=>{"use strict";var t=e.i(985426),r=e.i(257574),a=e.i(507835),n=e.i(457789),s=e.i(119791),i=e.i(141062),l=e.i(957291),o=e.i(535899),u=e.i(610241),d=e.i(62749),p=e.i(624891),c=e.i(725836),h=e.i(532736),f=e.i(257858),v=e.i(135288),m=e.i(193695);e.i(484264);var g=e.i(315709),R=e.i(912714),w=e.i(750227),_=e.i(351216),E=e.i(402662),y=e.i(660038),x=e.i(536654),N=e.i(716234);let P=new Set(["entities","concepts","comparisons"]),C=/^[a-z0-9-]+$/;async function A(e){let t=(0,E.checkOrigin)(e);if(t)return t;let r=await (0,y.resolveWorkspaceForUser)(e,"write");if(!r.ok)return _.NextResponse.json({error:r.code},{status:r.status});let{rootDir:a}=r,n=await e.json(),{dir:s,slug:i}=n;if(!s||!P.has(s))return _.NextResponse.json({error:"Invalid dir"},{status:400});if(!i||!C.test(i))return _.NextResponse.json({error:"Invalid slug"},{status:400});let l=`${s}/${i}.md`,o=await (0,x.resolveWorkspacePath)(a,l,{allowMissing:!0,deniedSegments:N.DENIED_SEGMENTS});if(!o)return _.NextResponse.json({error:"Invalid path"},{status:400});let u=o.absolutePath;try{return await (0,R.stat)(u),_.NextResponse.json({error:"Page already exists",path:l},{status:409})}catch(e){if("ENOENT"!==e.code)return _.NextResponse.json({error:"Failed to create page"},{status:500})}let d="string"==typeof n.title&&n.title.trim().length>0?n.title:i.split("-").filter(Boolean).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" "),p=`---
|
|
2
2
|
title: ${d}
|
|
3
3
|
type: ${"entities"===s?"entity":"concepts"===s?"concept":"comparison"}
|
|
4
4
|
tags: []
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[814747,(e,t,a)=>{t.exports=e.x("path",()=>require("path"))},224361,(e,t,a)=>{t.exports=e.x("util",()=>require("util"))},688947,(e,t,a)=>{t.exports=e.x("stream",()=>require("stream"))},427699,(e,t,a)=>{t.exports=e.x("events",()=>require("events"))},228064,e=>{"use strict";var t=e.i(666680),a=e.i(912714),n=e.i(660526),r=e.i(750227),s=e.i(832852);let i="__registry__",o=new Map;function l(){let e=process.env.HOME??n.default.homedir();return r.default.join(e,".wiki-viewer")}function u(){return r.default.join(l(),"agents.json")}function d(e){return(0,t.createHash)("sha256").update(e,"utf8").digest("hex")}async function c(){try{let e=await (0,a.readFile)(u(),"utf8"),t=JSON.parse(e);return{version:1,agents:Array.isArray(t.agents)?t.agents:[]}}catch{return null}}async function p(e){await (0,a.mkdir)(l(),{recursive:!0});let t=u()+".tmp";await (0,a.writeFile)(t,JSON.stringify(e,null,2),{encoding:"utf8",mode:384});try{await (0,a.chmod)(t,384)}catch{}await (0,a.rename)(t,u())}async function h(){let e=await c();if(e)return e;let t={version:1,agents:[]};return await p(t),t}async function g(e){let a=await c();if(!a)return null;let n=d(e);for(let e of a.agents)if(function(e,a){let n=Buffer.from(e.padEnd(64,"0"),"utf8"),r=Buffer.from(a.padEnd(64,"0"),"utf8");return n.length===r.length&&(0,t.timingSafeEqual)(n,r)&&e.length===a.length}(e.tokenHash,n))return e;return null}async function f(e){let t=await c();return t?t.agents.find(t=>t.id===e)??null:null}async function m(e){await (0,s.withFileMutex)(i,async()=>{let t=await h(),a=t.agents.findIndex(t=>t.id===e.id);a>=0?t.agents[a]=e:t.agents.push(e),await p(t)})}async function v(e){return(0,s.withFileMutex)(i,async()=>{let t=await c();if(!t)return!1;let a=t.agents.length;return t.agents=t.agents.filter(t=>t.id!==e),t.agents.length!==a&&(await p(t),!0)})}async function w(e){Date.now()-(o.get(e)??0)<3e4||await (0,s.withFileMutex)(i,async()=>{let t=await c();if(!t)return;let a=t.agents.find(t=>t.id===e);a&&(a.lastSeen=new Date().toISOString(),o.set(e,Date.now()),await p(t))})}e.s(["addAgent",0,m,"hashToken",0,d,"lookupAgentById",0,f,"lookupAgentByToken",0,g,"readRegistry",0,c,"removeAgent",0,v,"updateLastSeen",0,w])},215043,552350,e=>{"use strict";var t=e.i(228064);function a(e,t){return(function(e){let t="^",a=0;for(;a<e.length;)"*"===e[a]&&"*"===e[a+1]?(t+=".*","/"===e[a+=2]&&(t+="(?:.+/)?",a++)):("*"===e[a]?t+="[^/]*":"?"===e[a]?t+="[^/]":t+=e[a].replace(/[.+^${}()|[\]\\]/g,"\\$&"),a++);return new RegExp(t+="$")})(e).test(t)}e.s(["matchGlob",0,a],552350);var n=e.i(254226);async function r(e){let a=await (0,n.getSessionFromRequest)(e);if(a?.user){let e=a.user;return{ok:!0,agent:{id:`user:${e.id}`,displayName:e.name,tokenHash:"",scope:{paths:["**/*"],ops:["read","mutate","delete"]},createdAt:"",lastSeen:""}}}let r=e.headers.get("authorization")??"",s=r.startsWith("Bearer ")?r.slice(7).trim():"";if(!s)return{ok:!1,code:"UNAUTHORIZED",message:"No credentials"};let i=await (0,t.lookupAgentByToken)(s);if(!i)return{ok:!1,code:"UNAUTHORIZED",message:"Unknown or invalid token"};let o=e.headers.get("x-agent-id")??"";return o?o!==i.id?{ok:!1,code:"UNAUTHORIZED",message:"X-Agent-Id does not match token owner"}:((0,t.updateLastSeen)(i.id),{ok:!0,agent:i}):{ok:!1,code:"UNAUTHORIZED",message:"X-Agent-Id header required"}}process.env.AGENT_BEARER_TOKEN&&console.warn("[wiki-viewer] AGENT_BEARER_TOKEN is no longer used; manage agents via the AI Panel."),e.s(["checkAuth",0,r,"enforceScope",0,function(e,t){let{scope:n}=e;return void 0!==n.workspaceId&&void 0!==t.workspaceId&&n.workspaceId!==t.workspaceId?{ok:!1,code:"FORBIDDEN",message:`Agent scope does not cover workspace "${t.workspaceId}" (granted: "${n.workspaceId}")`}:n.ops.includes(t.op)?t.filePath&&!n.paths.some(e=>a(e,t.filePath))?{ok:!1,code:"FORBIDDEN",message:`Agent scope does not cover path "${t.filePath}"`}:{ok:!0}:{ok:!1,code:"FORBIDDEN",message:`Agent scope does not allow "${t.op}"`}},"verifyBy",0,function(e,t){return e.id.startsWith("user:")?!t||"owner"===t||"human"===t||t.startsWith("human:")||t===e.id?{ok:!0}:{ok:!1,code:"FORBIDDEN",message:'User agent must use "human", "owner", or own id in "by" field'}:t!==e.id?{ok:!1,code:"FORBIDDEN",message:`"by" field must equal agent id "${e.id}"`}:{ok:!0}}],215043)},989666,e=>{"use strict";var t=e.i(985426),a=e.i(257574),n=e.i(507835),r=e.i(457789),s=e.i(119791),i=e.i(141062),o=e.i(957291),l=e.i(535899),u=e.i(610241),d=e.i(62749),c=e.i(624891),p=e.i(725836),h=e.i(532736),g=e.i(257858),f=e.i(487476),m=e.i(193695);e.i(484264);var v=e.i(315709),w=e.i(351216),R=e.i(215043),y=e.i(660038),_=e.i(912714),k=e.i(750227);async function E(e,t){let a=Math.min(t?.limit??50,200),n=t?.file??null,r=k.default.join(e,".proof"),s=[];async function i(e){let t;try{t=await (0,_.readdir)(e,{withFileTypes:!0})}catch{return}for(let a of t){let t=k.default.join(e,a.name);if(a.isDirectory())await i(t);else if(a.isFile()&&a.name.endsWith(".json")){let e;try{let a=await (0,_.readFile)(t,"utf-8");if(e=JSON.parse(a),![1,2,3].includes(e.schemaVersion))continue}catch{continue}if(n&&e.path!==n)continue;let a=(e.events??[]).map(t=>({...t,path:e.path}));s=s.concat(a)}}}return await i(r),s.sort((e,t)=>e.at<t.at?1:e.at>t.at?-1:0),s.slice(0,a)}var A=e.i(552350);async function x(e){let t=await (0,R.checkAuth)(e);if(!t.ok)return w.NextResponse.json({error:"UNAUTHORIZED"},{status:401});let a=await (0,y.resolveWorkspaceForAgent)(e);if(!a.ok)return w.NextResponse.json({error:a.code},{status:a.status});let{ws:n,rootDir:r}=a,s=(0,R.enforceScope)(t.agent,{op:"read",workspaceId:n.id});if(!s.ok)return w.NextResponse.json({error:s.code,message:s.message},{status:403});let i=new URL(e.url),o=i.searchParams.get("limit"),l=i.searchParams.get("file")??void 0;if(l){let e=(0,R.enforceScope)(t.agent,{filePath:l,op:"read",workspaceId:n.id});if(!e.ok)return w.NextResponse.json({error:e.code,message:e.message},{status:403})}let u=50;if(null!==o){let e=parseInt(o,10);!isNaN(e)&&e>0&&(u=Math.min(e,200))}let d=await E(r,{limit:u,file:l}),c=t.agent.scope.paths,p=d.filter(e=>c.some(t=>(0,A.matchGlob)(t,e.path)));return w.NextResponse.json({events:p,count:p.length})}e.s(["GET",0,x,"runtime",0,"nodejs"],826676);var N=e.i(826676);let I=new t.AppRouteRouteModule({definition:{kind:a.RouteKind.APP_ROUTE,page:"/api/agent/activity/route",pathname:"/api/agent/activity",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/agent/activity/route.ts",nextConfigOutput:"standalone",userland:N,...{}}),{workAsyncStorage:P,workUnitAsyncStorage:T,serverHooks:O}=I;async function C(e,t,n){n.requestMeta&&(0,r.setRequestMeta)(e,n.requestMeta),I.isDev&&(0,r.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let w="/api/agent/activity/route";w=w.replace(/\/index$/,"")||"/";let R=await I.prepare(e,t,{srcPage:w,multiZoneDraftMode:!1});if(!R)return t.statusCode=400,t.end("Bad Request"),null==n.waitUntil||n.waitUntil.call(n,Promise.resolve()),null;let{buildId:y,params:_,nextConfig:k,parsedUrl:E,isDraftMode:A,prerenderManifest:x,routerServerContext:N,isOnDemandRevalidate:P,revalidateOnlyGenerated:T,resolvedPathname:O,clientReferenceManifest:C,serverActionsManifest:S}=R,q=(0,o.normalizeAppPath)(w),b=!!(x.dynamicRoutes[q]||x.routes[O]),D=async()=>((null==N?void 0:N.render404)?await N.render404(e,t,E,!1):t.end("This page could not be found"),null);if(b&&!A){let e=!!x.routes[O],t=x.dynamicRoutes[q];if(t&&!1===t.fallback&&!e){if(k.adapterPath)return await D();throw new m.NoFallbackError}}let j=null;!b||I.isDev||A||(j="/index"===(j=O)?"/":j);let U=!0===I.isDev||!b,H=b&&!U;S&&C&&(0,i.setManifestsSingleton)({page:w,clientReferenceManifest:C,serverActionsManifest:S});let F=e.method||"GET",M=(0,s.getTracer)(),B=M.getActiveScopeSpan(),$=!!(null==N?void 0:N.isWrappedByNextServer),K=!!(0,r.getRequestMeta)(e,"minimalMode"),G=(0,r.getRequestMeta)(e,"incrementalCache")||await I.getIncrementalCache(e,k,x,K);null==G||G.resetRequestCache(),globalThis.__incrementalCache=G;let L={params:_,previewProps:x.preview,renderOpts:{experimental:{authInterrupts:!!k.experimental.authInterrupts},cacheComponents:!!k.cacheComponents,supportsDynamicResponse:U,incrementalCache:G,cacheLifeProfiles:k.cacheLife,waitUntil:n.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,n,r)=>I.onRequestError(e,t,n,r,N)},sharedContext:{buildId:y}},W=new l.NodeNextRequest(e),z=new l.NodeNextResponse(t),Z=u.NextRequestAdapter.fromNodeNextRequest(W,(0,u.signalFromNodeResponse)(t));try{let r,i=async e=>I.handle(Z,L).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=M.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==d.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=a.get("next.route");if(n){let t=`${F} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t),r&&r!==e&&(r.setAttribute("http.route",n),r.updateName(t))}else e.updateName(`${F} ${w}`)}),o=async r=>{var s,o;let l=async({previousCacheEntry:a})=>{try{if(!K&&P&&T&&!a)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await i(r);e.fetchMetrics=L.renderOpts.fetchMetrics;let o=L.renderOpts.pendingWaitUntil;o&&n.waitUntil&&(n.waitUntil(o),o=void 0);let l=L.renderOpts.collectedTags;if(!b)return await (0,p.sendResponse)(W,z,s,L.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(s.headers);l&&(t[f.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==L.renderOpts.collectedRevalidate&&!(L.renderOpts.collectedRevalidate>=f.INFINITE_CACHE)&&L.renderOpts.collectedRevalidate,n=void 0===L.renderOpts.collectedExpire||L.renderOpts.collectedExpire>=f.INFINITE_CACHE?void 0:L.renderOpts.collectedExpire;return{value:{kind:v.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:n}}}}catch(t){throw(null==a?void 0:a.isStale)&&await I.onRequestError(e,t,{routerKind:"App Router",routePath:w,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:P})},!1,N),t}},u=await I.handleResponse({req:e,nextConfig:k,cacheKey:j,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:x,isRoutePPREnabled:!1,isOnDemandRevalidate:P,revalidateOnlyGenerated:T,responseGenerator:l,waitUntil:n.waitUntil,isMinimalMode:K});if(!b)return null;if((null==u||null==(s=u.value)?void 0:s.kind)!==v.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(o=u.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});K||t.setHeader("x-nextjs-cache",P?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),A&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let d=(0,h.fromNodeOutgoingHttpHeaders)(u.value.headers);return K&&b||d.delete(f.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||d.get("Cache-Control")||d.set("Cache-Control",(0,g.getCacheControlHeader)(u.cacheControl)),await (0,p.sendResponse)(W,z,new Response(u.value.body,{headers:d,status:u.value.status||200})),null};$&&B?await o(B):(r=M.getActiveScopeSpan(),await M.withPropagatedContext(e.headers,()=>M.trace(d.BaseServerSpan.handleRequest,{spanName:`${F} ${w}`,kind:s.SpanKind.SERVER,attributes:{"http.method":F,"http.target":e.url}},o),void 0,!$))}catch(t){if(t instanceof m.NoFallbackError||await I.onRequestError(e,t,{routerKind:"App Router",routePath:q,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:P})},!1,N),b)throw t;return await (0,p.sendResponse)(W,z,new Response(null,{status:500})),null}}e.s(["handler",0,C,"patchFetch",0,function(){return(0,n.patchFetch)({workAsyncStorage:P,workUnitAsyncStorage:T})},"routeModule",0,I,"serverHooks",0,O,"workAsyncStorage",0,P,"workUnitAsyncStorage",0,T],989666)},168315,e=>{e.v(t=>Promise.all(["server/chunks/0sag_@better-auth_memory-adapter_dist_index_mjs_0pvj6im._.js"].map(t=>e.l(t))).then(()=>t(862112)))},769787,e=>{e.v(t=>Promise.all(["server/chunks/01er_better-auth_dist_adapters_kysely-adapter_index_mjs_0s~-4gu._.js"].map(t=>e.l(t))).then(()=>t(717789)))},580632,e=>{e.v(e=>Promise.resolve().then(()=>e(270406)))},947559,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_bun-sqlite-dialect-DzNwOpKv_mjs_0z1z6m4._.js"].map(t=>e.l(t))).then(()=>t(495181)))},715018,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_node-sqlite-dialect_mjs_0qqlvhl._.js"].map(t=>e.l(t))).then(()=>t(698370)))},146843,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_d1-sqlite-dialect-C2B7YsIT_mjs_0wynrz3._.js"].map(t=>e.l(t))).then(()=>t(143740)))},697743,e=>{e.v(t=>Promise.all(["server/chunks/0.u4_next_05jevxw._.js"].map(t=>e.l(t))).then(()=>t(428325)))},99243,e=>{e.v(e=>Promise.resolve().then(()=>e(313414)))},893412,e=>{e.v(e=>Promise.resolve().then(()=>e(499465)))},687903,e=>{e.v(e=>Promise.resolve().then(()=>e(912714)))}];
|
|
1
|
+
module.exports=[814747,(e,t,a)=>{t.exports=e.x("path",()=>require("path"))},224361,(e,t,a)=>{t.exports=e.x("util",()=>require("util"))},688947,(e,t,a)=>{t.exports=e.x("stream",()=>require("stream"))},427699,(e,t,a)=>{t.exports=e.x("events",()=>require("events"))},228064,e=>{"use strict";var t=e.i(666680),a=e.i(912714),n=e.i(660526),r=e.i(750227),s=e.i(832852);let i="__registry__",o=new Map;function l(){let e=process.env.HOME??n.default.homedir();return r.default.join(e,".wiki-viewer")}function u(){return r.default.join(l(),"agents.json")}function d(e){return(0,t.createHash)("sha256").update(e,"utf8").digest("hex")}async function c(){try{let e=await (0,a.readFile)(u(),"utf8"),t=JSON.parse(e);return{version:1,agents:Array.isArray(t.agents)?t.agents:[]}}catch{return null}}async function p(e){await (0,a.mkdir)(l(),{recursive:!0});let t=u()+".tmp";await (0,a.writeFile)(t,JSON.stringify(e,null,2),{encoding:"utf8",mode:384});try{await (0,a.chmod)(t,384)}catch{}await (0,a.rename)(t,u())}async function h(){let e=await c();if(e)return e;let t={version:1,agents:[]};return await p(t),t}async function g(e){let a=await c();if(!a)return null;let n=d(e);for(let e of a.agents)if(function(e,a){let n=Buffer.from(e.padEnd(64,"0"),"utf8"),r=Buffer.from(a.padEnd(64,"0"),"utf8");return n.length===r.length&&(0,t.timingSafeEqual)(n,r)&&e.length===a.length}(e.tokenHash,n))return e;return null}async function f(e){let t=await c();return t?t.agents.find(t=>t.id===e)??null:null}async function m(e){await (0,s.withFileMutex)(i,async()=>{let t=await h(),a=t.agents.findIndex(t=>t.id===e.id);a>=0?t.agents[a]=e:t.agents.push(e),await p(t)})}async function v(e){return(0,s.withFileMutex)(i,async()=>{let t=await c();if(!t)return!1;let a=t.agents.length;return t.agents=t.agents.filter(t=>t.id!==e),t.agents.length!==a&&(await p(t),!0)})}async function w(e){Date.now()-(o.get(e)??0)<3e4||await (0,s.withFileMutex)(i,async()=>{let t=await c();if(!t)return;let a=t.agents.find(t=>t.id===e);a&&(a.lastSeen=new Date().toISOString(),o.set(e,Date.now()),await p(t))})}e.s(["addAgent",0,m,"hashToken",0,d,"lookupAgentById",0,f,"lookupAgentByToken",0,g,"readRegistry",0,c,"removeAgent",0,v,"updateLastSeen",0,w])},215043,552350,e=>{"use strict";var t=e.i(228064);function a(e,t){return(function(e){let t="^",a=0;for(;a<e.length;)"*"===e[a]&&"*"===e[a+1]?(t+=".*","/"===e[a+=2]&&(t+="(?:.+/)?",a++)):("*"===e[a]?t+="[^/]*":"?"===e[a]?t+="[^/]":t+=e[a].replace(/[.+^${}()|[\]\\]/g,"\\$&"),a++);return new RegExp(t+="$")})(e).test(t)}e.s(["matchGlob",0,a],552350);var n=e.i(254226);async function r(e){let a=await (0,n.getSessionFromRequest)(e);if(a?.user){let e=a.user;return{ok:!0,agent:{id:`user:${e.id}`,displayName:e.name,tokenHash:"",scope:{paths:["**/*"],ops:["read","mutate","delete"]},createdAt:"",lastSeen:""}}}let r=e.headers.get("authorization")??"",s=r.startsWith("Bearer ")?r.slice(7).trim():"";if(!s)return{ok:!1,code:"UNAUTHORIZED",message:"No credentials"};let i=await (0,t.lookupAgentByToken)(s);if(!i)return{ok:!1,code:"UNAUTHORIZED",message:"Unknown or invalid token"};let o=e.headers.get("x-agent-id")??"";return o?o!==i.id?{ok:!1,code:"UNAUTHORIZED",message:"X-Agent-Id does not match token owner"}:((0,t.updateLastSeen)(i.id),{ok:!0,agent:i}):{ok:!1,code:"UNAUTHORIZED",message:"X-Agent-Id header required"}}process.env.AGENT_BEARER_TOKEN&&console.warn("[wiki-viewer] AGENT_BEARER_TOKEN is no longer used; manage agents via the AI Panel."),e.s(["checkAuth",0,r,"enforceScope",0,function(e,t){let{scope:n}=e;return void 0!==n.workspaceId&&void 0!==t.workspaceId&&n.workspaceId!==t.workspaceId?{ok:!1,code:"FORBIDDEN",message:`Agent scope does not cover workspace "${t.workspaceId}" (granted: "${n.workspaceId}")`}:n.ops.includes(t.op)?t.filePath&&!n.paths.some(e=>a(e,t.filePath))?{ok:!1,code:"FORBIDDEN",message:`Agent scope does not cover path "${t.filePath}"`}:{ok:!0}:{ok:!1,code:"FORBIDDEN",message:`Agent scope does not allow "${t.op}"`}},"verifyBy",0,function(e,t){return e.id.startsWith("user:")?!t||"owner"===t||"human"===t||t.startsWith("human:")||t===e.id?{ok:!0}:{ok:!1,code:"FORBIDDEN",message:'User agent must use "human", "owner", or own id in "by" field'}:t!==e.id?{ok:!1,code:"FORBIDDEN",message:`"by" field must equal agent id "${e.id}"`}:{ok:!0}}],215043)},989666,e=>{"use strict";var t=e.i(985426),a=e.i(257574),n=e.i(507835),r=e.i(457789),s=e.i(119791),i=e.i(141062),o=e.i(957291),l=e.i(535899),u=e.i(610241),d=e.i(62749),c=e.i(624891),p=e.i(725836),h=e.i(532736),g=e.i(257858),f=e.i(135288),m=e.i(193695);e.i(484264);var v=e.i(315709),w=e.i(351216),R=e.i(215043),y=e.i(660038),_=e.i(912714),k=e.i(750227);async function E(e,t){let a=Math.min(t?.limit??50,200),n=t?.file??null,r=k.default.join(e,".proof"),s=[];async function i(e){let t;try{t=await (0,_.readdir)(e,{withFileTypes:!0})}catch{return}for(let a of t){let t=k.default.join(e,a.name);if(a.isDirectory())await i(t);else if(a.isFile()&&a.name.endsWith(".json")){let e;try{let a=await (0,_.readFile)(t,"utf-8");if(e=JSON.parse(a),![1,2,3].includes(e.schemaVersion))continue}catch{continue}if(n&&e.path!==n)continue;let a=(e.events??[]).map(t=>({...t,path:e.path}));s=s.concat(a)}}}return await i(r),s.sort((e,t)=>e.at<t.at?1:e.at>t.at?-1:0),s.slice(0,a)}var A=e.i(552350);async function x(e){let t=await (0,R.checkAuth)(e);if(!t.ok)return w.NextResponse.json({error:"UNAUTHORIZED"},{status:401});let a=await (0,y.resolveWorkspaceForAgent)(e);if(!a.ok)return w.NextResponse.json({error:a.code},{status:a.status});let{ws:n,rootDir:r}=a,s=(0,R.enforceScope)(t.agent,{op:"read",workspaceId:n.id});if(!s.ok)return w.NextResponse.json({error:s.code,message:s.message},{status:403});let i=new URL(e.url),o=i.searchParams.get("limit"),l=i.searchParams.get("file")??void 0;if(l){let e=(0,R.enforceScope)(t.agent,{filePath:l,op:"read",workspaceId:n.id});if(!e.ok)return w.NextResponse.json({error:e.code,message:e.message},{status:403})}let u=50;if(null!==o){let e=parseInt(o,10);!isNaN(e)&&e>0&&(u=Math.min(e,200))}let d=await E(r,{limit:u,file:l}),c=t.agent.scope.paths,p=d.filter(e=>c.some(t=>(0,A.matchGlob)(t,e.path)));return w.NextResponse.json({events:p,count:p.length})}e.s(["GET",0,x,"runtime",0,"nodejs"],826676);var N=e.i(826676);let I=new t.AppRouteRouteModule({definition:{kind:a.RouteKind.APP_ROUTE,page:"/api/agent/activity/route",pathname:"/api/agent/activity",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/agent/activity/route.ts",nextConfigOutput:"standalone",userland:N,...{}}),{workAsyncStorage:P,workUnitAsyncStorage:T,serverHooks:O}=I;async function C(e,t,n){n.requestMeta&&(0,r.setRequestMeta)(e,n.requestMeta),I.isDev&&(0,r.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let w="/api/agent/activity/route";w=w.replace(/\/index$/,"")||"/";let R=await I.prepare(e,t,{srcPage:w,multiZoneDraftMode:!1});if(!R)return t.statusCode=400,t.end("Bad Request"),null==n.waitUntil||n.waitUntil.call(n,Promise.resolve()),null;let{buildId:y,params:_,nextConfig:k,parsedUrl:E,isDraftMode:A,prerenderManifest:x,routerServerContext:N,isOnDemandRevalidate:P,revalidateOnlyGenerated:T,resolvedPathname:O,clientReferenceManifest:C,serverActionsManifest:S}=R,q=(0,o.normalizeAppPath)(w),b=!!(x.dynamicRoutes[q]||x.routes[O]),D=async()=>((null==N?void 0:N.render404)?await N.render404(e,t,E,!1):t.end("This page could not be found"),null);if(b&&!A){let e=!!x.routes[O],t=x.dynamicRoutes[q];if(t&&!1===t.fallback&&!e){if(k.adapterPath)return await D();throw new m.NoFallbackError}}let j=null;!b||I.isDev||A||(j="/index"===(j=O)?"/":j);let U=!0===I.isDev||!b,H=b&&!U;S&&C&&(0,i.setManifestsSingleton)({page:w,clientReferenceManifest:C,serverActionsManifest:S});let F=e.method||"GET",M=(0,s.getTracer)(),B=M.getActiveScopeSpan(),$=!!(null==N?void 0:N.isWrappedByNextServer),K=!!(0,r.getRequestMeta)(e,"minimalMode"),G=(0,r.getRequestMeta)(e,"incrementalCache")||await I.getIncrementalCache(e,k,x,K);null==G||G.resetRequestCache(),globalThis.__incrementalCache=G;let L={params:_,previewProps:x.preview,renderOpts:{experimental:{authInterrupts:!!k.experimental.authInterrupts},cacheComponents:!!k.cacheComponents,supportsDynamicResponse:U,incrementalCache:G,cacheLifeProfiles:k.cacheLife,waitUntil:n.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,n,r)=>I.onRequestError(e,t,n,r,N)},sharedContext:{buildId:y}},W=new l.NodeNextRequest(e),z=new l.NodeNextResponse(t),Z=u.NextRequestAdapter.fromNodeNextRequest(W,(0,u.signalFromNodeResponse)(t));try{let r,i=async e=>I.handle(Z,L).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let a=M.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==d.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=a.get("next.route");if(n){let t=`${F} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t),r&&r!==e&&(r.setAttribute("http.route",n),r.updateName(t))}else e.updateName(`${F} ${w}`)}),o=async r=>{var s,o;let l=async({previousCacheEntry:a})=>{try{if(!K&&P&&T&&!a)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await i(r);e.fetchMetrics=L.renderOpts.fetchMetrics;let o=L.renderOpts.pendingWaitUntil;o&&n.waitUntil&&(n.waitUntil(o),o=void 0);let l=L.renderOpts.collectedTags;if(!b)return await (0,p.sendResponse)(W,z,s,L.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(s.headers);l&&(t[f.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==L.renderOpts.collectedRevalidate&&!(L.renderOpts.collectedRevalidate>=f.INFINITE_CACHE)&&L.renderOpts.collectedRevalidate,n=void 0===L.renderOpts.collectedExpire||L.renderOpts.collectedExpire>=f.INFINITE_CACHE?void 0:L.renderOpts.collectedExpire;return{value:{kind:v.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:n}}}}catch(t){throw(null==a?void 0:a.isStale)&&await I.onRequestError(e,t,{routerKind:"App Router",routePath:w,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:P})},!1,N),t}},u=await I.handleResponse({req:e,nextConfig:k,cacheKey:j,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:x,isRoutePPREnabled:!1,isOnDemandRevalidate:P,revalidateOnlyGenerated:T,responseGenerator:l,waitUntil:n.waitUntil,isMinimalMode:K});if(!b)return null;if((null==u||null==(s=u.value)?void 0:s.kind)!==v.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(o=u.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});K||t.setHeader("x-nextjs-cache",P?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),A&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let d=(0,h.fromNodeOutgoingHttpHeaders)(u.value.headers);return K&&b||d.delete(f.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||d.get("Cache-Control")||d.set("Cache-Control",(0,g.getCacheControlHeader)(u.cacheControl)),await (0,p.sendResponse)(W,z,new Response(u.value.body,{headers:d,status:u.value.status||200})),null};$&&B?await o(B):(r=M.getActiveScopeSpan(),await M.withPropagatedContext(e.headers,()=>M.trace(d.BaseServerSpan.handleRequest,{spanName:`${F} ${w}`,kind:s.SpanKind.SERVER,attributes:{"http.method":F,"http.target":e.url}},o),void 0,!$))}catch(t){if(t instanceof m.NoFallbackError||await I.onRequestError(e,t,{routerKind:"App Router",routePath:q,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:P})},!1,N),b)throw t;return await (0,p.sendResponse)(W,z,new Response(null,{status:500})),null}}e.s(["handler",0,C,"patchFetch",0,function(){return(0,n.patchFetch)({workAsyncStorage:P,workUnitAsyncStorage:T})},"routeModule",0,I,"serverHooks",0,O,"workAsyncStorage",0,P,"workUnitAsyncStorage",0,T],989666)},168315,e=>{e.v(t=>Promise.all(["server/chunks/0sag_@better-auth_memory-adapter_dist_index_mjs_0pvj6im._.js"].map(t=>e.l(t))).then(()=>t(862112)))},769787,e=>{e.v(t=>Promise.all(["server/chunks/01er_better-auth_dist_adapters_kysely-adapter_index_mjs_0s~-4gu._.js"].map(t=>e.l(t))).then(()=>t(717789)))},580632,e=>{e.v(e=>Promise.resolve().then(()=>e(270406)))},947559,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_bun-sqlite-dialect-DzNwOpKv_mjs_0z1z6m4._.js"].map(t=>e.l(t))).then(()=>t(495181)))},715018,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_node-sqlite-dialect_mjs_0qqlvhl._.js"].map(t=>e.l(t))).then(()=>t(698370)))},146843,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_d1-sqlite-dialect-C2B7YsIT_mjs_0wynrz3._.js"].map(t=>e.l(t))).then(()=>t(143740)))},697743,e=>{e.v(t=>Promise.all(["server/chunks/0.u4_next_05jevxw._.js"].map(t=>e.l(t))).then(()=>t(428325)))},99243,e=>{e.v(e=>Promise.resolve().then(()=>e(313414)))},893412,e=>{e.v(e=>Promise.resolve().then(()=>e(499465)))},687903,e=>{e.v(e=>Promise.resolve().then(()=>e(912714)))}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=%5Broot-of-the-server%5D__0yzumg-._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[402662,e=>{"use strict";var t=e.i(351216);e.s(["checkOrigin",0,function(e){let r=e.method.toUpperCase();if("GET"===r||"HEAD"===r||"OPTIONS"===r)return null;let a=e.headers.get("origin"),n=e.headers.get("referer");if(!a&&!n)return null;let s=function(e){let t=Array.from(new Set(["localhost","127.0.0.1",e.split(":")[0],...(process.env.WIKI_OWNER_HOSTS??"").split(",").map(e=>e.trim()).filter(Boolean)])),r=["",":3000",":3003"];e.includes(":")&&r.push(":"+e.split(":")[1]);let a=new Set;for(let e of t)for(let t of["http","https"])for(let n of r)a.add(`${t}://${e}${n}`);return a}(e.headers.get("host")??"");if(a)return s.has(a)?null:t.NextResponse.json({error:"FORBIDDEN",message:"Bad origin"},{status:403});if(n){try{let{protocol:e,host:t}=new URL(n);if(s.has(`${e}//${t}`))return null}catch{}return t.NextResponse.json({error:"FORBIDDEN",message:"Bad referer"},{status:403})}return null}])},610510,e=>{"use strict";var t=e.i(985426),r=e.i(257574),a=e.i(507835),n=e.i(457789),s=e.i(119791),i=e.i(141062),o=e.i(957291),l=e.i(535899),u=e.i(610241),d=e.i(62749),p=e.i(624891),c=e.i(725836),h=e.i(532736),v=e.i(257858),m=e.i(
|
|
1
|
+
module.exports=[402662,e=>{"use strict";var t=e.i(351216);e.s(["checkOrigin",0,function(e){let r=e.method.toUpperCase();if("GET"===r||"HEAD"===r||"OPTIONS"===r)return null;let a=e.headers.get("origin"),n=e.headers.get("referer");if(!a&&!n)return null;let s=function(e){let t=Array.from(new Set(["localhost","127.0.0.1",e.split(":")[0],...(process.env.WIKI_OWNER_HOSTS??"").split(",").map(e=>e.trim()).filter(Boolean)])),r=["",":3000",":3003"];e.includes(":")&&r.push(":"+e.split(":")[1]);let a=new Set;for(let e of t)for(let t of["http","https"])for(let n of r)a.add(`${t}://${e}${n}`);return a}(e.headers.get("host")??"");if(a)return s.has(a)?null:t.NextResponse.json({error:"FORBIDDEN",message:"Bad origin"},{status:403});if(n){try{let{protocol:e,host:t}=new URL(n);if(s.has(`${e}//${t}`))return null}catch{}return t.NextResponse.json({error:"FORBIDDEN",message:"Bad referer"},{status:403})}return null}])},610510,e=>{"use strict";var t=e.i(985426),r=e.i(257574),a=e.i(507835),n=e.i(457789),s=e.i(119791),i=e.i(141062),o=e.i(957291),l=e.i(535899),u=e.i(610241),d=e.i(62749),p=e.i(624891),c=e.i(725836),h=e.i(532736),v=e.i(257858),m=e.i(135288),R=e.i(193695);e.i(484264);var _=e.i(315709),f=e.i(912714),g=e.i(351216),w=e.i(402662),y=e.i(254226),E=e.i(798003);async function C(e){let t=(0,w.checkOrigin)(e);if(t)return t;if(!(await (0,y.requireUser)(e)).ok)return g.NextResponse.json({error:"UNAUTHORIZED"},{status:401});let r=await e.json(),a=r.path?.trim(),n=r.action??"pin";if(!a)return g.NextResponse.json({error:"Missing path"},{status:400});if("pin"===n){try{if(!(await (0,f.stat)(a)).isDirectory())return g.NextResponse.json({error:"Not a directory"},{status:400})}catch{return g.NextResponse.json({error:"Path not found"},{status:404})}let e=(await (0,E.readConfig)()).pinnedPaths??[];e.includes(a)||await (0,E.writeConfig)({pinnedPaths:[...e,a]})}else{let e=((await (0,E.readConfig)()).pinnedPaths??[]).filter(e=>e!==a);await (0,E.writeConfig)({pinnedPaths:e})}return g.NextResponse.json({ok:!0})}e.s(["POST",0,C],962678);var x=e.i(962678);let P=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/system/pins/route",pathname:"/api/system/pins",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/system/pins/route.ts",nextConfigOutput:"standalone",userland:x,...{}}),{workAsyncStorage:N,workUnitAsyncStorage:A,serverHooks:O}=P;async function T(e,t,a){a.requestMeta&&(0,n.setRequestMeta)(e,a.requestMeta),P.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let f="/api/system/pins/route";f=f.replace(/\/index$/,"")||"/";let g=await P.prepare(e,t,{srcPage:f,multiZoneDraftMode:!1});if(!g)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:w,params:y,nextConfig:E,parsedUrl:C,isDraftMode:x,prerenderManifest:N,routerServerContext:A,isOnDemandRevalidate:O,revalidateOnlyGenerated:T,resolvedPathname:b,clientReferenceManifest:j,serverActionsManifest:k}=g,S=(0,o.normalizeAppPath)(f),q=!!(N.dynamicRoutes[S]||N.routes[b]),I=async()=>((null==A?void 0:A.render404)?await A.render404(e,t,C,!1):t.end("This page could not be found"),null);if(q&&!x){let e=!!N.routes[b],t=N.dynamicRoutes[S];if(t&&!1===t.fallback&&!e){if(E.adapterPath)return await I();throw new R.NoFallbackError}}let D=null;!q||P.isDev||x||(D="/index"===(D=b)?"/":D);let U=!0===P.isDev||!q,H=q&&!U;k&&j&&(0,i.setManifestsSingleton)({page:f,clientReferenceManifest:j,serverActionsManifest:k});let M=e.method||"GET",$=(0,s.getTracer)(),B=$.getActiveScopeSpan(),F=!!(null==A?void 0:A.isWrappedByNextServer),K=!!(0,n.getRequestMeta)(e,"minimalMode"),L=(0,n.getRequestMeta)(e,"incrementalCache")||await P.getIncrementalCache(e,E,N,K);null==L||L.resetRequestCache(),globalThis.__incrementalCache=L;let z={params:y,previewProps:N.preview,renderOpts:{experimental:{authInterrupts:!!E.experimental.authInterrupts},cacheComponents:!!E.cacheComponents,supportsDynamicResponse:U,incrementalCache:L,cacheLifeProfiles:E.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,n)=>P.onRequestError(e,t,a,n,A)},sharedContext:{buildId:w}},W=new l.NodeNextRequest(e),G=new l.NodeNextResponse(t),V=u.NextRequestAdapter.fromNodeNextRequest(W,(0,u.signalFromNodeResponse)(t));try{let n,i=async e=>P.handle(V,z).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=$.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==d.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let a=r.get("next.route");if(a){let t=`${M} ${a}`;e.setAttributes({"next.route":a,"http.route":a,"next.span_name":t}),e.updateName(t),n&&n!==e&&(n.setAttribute("http.route",a),n.updateName(t))}else e.updateName(`${M} ${f}`)}),o=async n=>{var s,o;let l=async({previousCacheEntry:r})=>{try{if(!K&&O&&T&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await i(n);e.fetchMetrics=z.renderOpts.fetchMetrics;let o=z.renderOpts.pendingWaitUntil;o&&a.waitUntil&&(a.waitUntil(o),o=void 0);let l=z.renderOpts.collectedTags;if(!q)return await (0,c.sendResponse)(W,G,s,z.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(s.headers);l&&(t[m.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==z.renderOpts.collectedRevalidate&&!(z.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&z.renderOpts.collectedRevalidate,a=void 0===z.renderOpts.collectedExpire||z.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:z.renderOpts.collectedExpire;return{value:{kind:_.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:a}}}}catch(t){throw(null==r?void 0:r.isStale)&&await P.onRequestError(e,t,{routerKind:"App Router",routePath:f,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:O})},!1,A),t}},u=await P.handleResponse({req:e,nextConfig:E,cacheKey:D,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:N,isRoutePPREnabled:!1,isOnDemandRevalidate:O,revalidateOnlyGenerated:T,responseGenerator:l,waitUntil:a.waitUntil,isMinimalMode:K});if(!q)return null;if((null==u||null==(s=u.value)?void 0:s.kind)!==_.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(o=u.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});K||t.setHeader("x-nextjs-cache",O?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),x&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let d=(0,h.fromNodeOutgoingHttpHeaders)(u.value.headers);return K&&q||d.delete(m.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||d.get("Cache-Control")||d.set("Cache-Control",(0,v.getCacheControlHeader)(u.cacheControl)),await (0,c.sendResponse)(W,G,new Response(u.value.body,{headers:d,status:u.value.status||200})),null};F&&B?await o(B):(n=$.getActiveScopeSpan(),await $.withPropagatedContext(e.headers,()=>$.trace(d.BaseServerSpan.handleRequest,{spanName:`${M} ${f}`,kind:s.SpanKind.SERVER,attributes:{"http.method":M,"http.target":e.url}},o),void 0,!F))}catch(t){if(t instanceof R.NoFallbackError||await P.onRequestError(e,t,{routerKind:"App Router",routePath:S,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:O})},!1,A),q)throw t;return await (0,c.sendResponse)(W,G,new Response(null,{status:500})),null}}e.s(["handler",0,T,"patchFetch",0,function(){return(0,a.patchFetch)({workAsyncStorage:N,workUnitAsyncStorage:A})},"routeModule",0,P,"serverHooks",0,O,"workAsyncStorage",0,N,"workUnitAsyncStorage",0,A],610510)},168315,e=>{e.v(t=>Promise.all(["server/chunks/0sag_@better-auth_memory-adapter_dist_index_mjs_0pvj6im._.js"].map(t=>e.l(t))).then(()=>t(862112)))},769787,e=>{e.v(t=>Promise.all(["server/chunks/01er_better-auth_dist_adapters_kysely-adapter_index_mjs_0s~-4gu._.js"].map(t=>e.l(t))).then(()=>t(717789)))},580632,e=>{e.v(e=>Promise.resolve().then(()=>e(270406)))},947559,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_bun-sqlite-dialect-DzNwOpKv_mjs_0z1z6m4._.js"].map(t=>e.l(t))).then(()=>t(495181)))},715018,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_node-sqlite-dialect_mjs_0qqlvhl._.js"].map(t=>e.l(t))).then(()=>t(698370)))},146843,e=>{e.v(t=>Promise.all(["server/chunks/0ugq_@better-auth_kysely-adapter_dist_d1-sqlite-dialect-C2B7YsIT_mjs_0wynrz3._.js"].map(t=>e.l(t))).then(()=>t(143740)))},697743,e=>{e.v(t=>Promise.all(["server/chunks/0.u4_next_05jevxw._.js"].map(t=>e.l(t))).then(()=>t(428325)))},99243,e=>{e.v(e=>Promise.resolve().then(()=>e(313414)))},893412,e=>{e.v(t=>Promise.all(["server/chunks/src_lib_auth_api-key_ts_0t_ma-t._.js"].map(t=>e.l(t))).then(()=>t(499465)))}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=%5Broot-of-the-server%5D__0z2-rh.._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[918622,(e,t,n)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},556704,(e,t,n)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},832319,(e,t,n)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},324725,(e,t,n)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},270406,(e,t,n)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},193695,(e,t,n)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},100705,(e,t,n)=>{"use strict";t.exports=e.r(918622)},294382,(e,t,n)=>{"use strict";t.exports=e.r(100705).vendored["react-rsc"].React},362744,(e,t,n)=>{"use strict";var r=Object.defineProperty,a=Object.getOwnPropertyDescriptor,s=Object.getOwnPropertyNames,i=Object.prototype.hasOwnProperty,o={},l={RequestCookies:()=>f,ResponseCookies:()=>g,parseCookie:()=>c,parseSetCookie:()=>u,stringifyCookie:()=>p};for(var d in l)r(o,d,{get:l[d],enumerable:!0});function p(e){var t;let n=["path"in e&&e.path&&`Path=${e.path}`,"expires"in e&&(e.expires||0===e.expires)&&`Expires=${("number"==typeof e.expires?new Date(e.expires):e.expires).toUTCString()}`,"maxAge"in e&&"number"==typeof e.maxAge&&`Max-Age=${e.maxAge}`,"domain"in e&&e.domain&&`Domain=${e.domain}`,"secure"in e&&e.secure&&"Secure","httpOnly"in e&&e.httpOnly&&"HttpOnly","sameSite"in e&&e.sameSite&&`SameSite=${e.sameSite}`,"partitioned"in e&&e.partitioned&&"Partitioned","priority"in e&&e.priority&&`Priority=${e.priority}`].filter(Boolean),r=`${e.name}=${encodeURIComponent(null!=(t=e.value)?t:"")}`;return 0===n.length?r:`${r}; ${n.join("; ")}`}function c(e){let t=new Map;for(let n of e.split(/; */)){if(!n)continue;let e=n.indexOf("=");if(-1===e){t.set(n,"true");continue}let[r,a]=[n.slice(0,e),n.slice(e+1)];try{t.set(r,decodeURIComponent(null!=a?a:"true"))}catch{}}return t}function u(e){if(!e)return;let[[t,n],...r]=c(e),{domain:a,expires:s,httponly:i,maxage:o,path:l,samesite:d,secure:p,partitioned:u,priority:f}=Object.fromEntries(r.map(([e,t])=>[e.toLowerCase().replace(/-/g,""),t]));{var g,v,y={name:t,value:decodeURIComponent(n),domain:a,...s&&{expires:new Date(s)},...i&&{httpOnly:!0},..."string"==typeof o&&{maxAge:Number(o)},path:l,...d&&{sameSite:h.includes(g=(g=d).toLowerCase())?g:void 0},...p&&{secure:!0},...f&&{priority:m.includes(v=(v=f).toLowerCase())?v:void 0},...u&&{partitioned:!0}};let e={};for(let t in y)y[t]&&(e[t]=y[t]);return e}}t.exports=((e,t,n)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let o of s(t))i.call(e,o)||void 0===o||r(e,o,{get:()=>t[o],enumerable:!(n=a(t,o))||n.enumerable});return e})(r({},"__esModule",{value:!0}),o);var h=["strict","lax","none"],m=["low","medium","high"],f=class{constructor(e){this._parsed=new Map,this._headers=e;const t=e.get("cookie");if(t)for(const[e,n]of c(t))this._parsed.set(e,{name:e,value:n})}[Symbol.iterator](){return this._parsed[Symbol.iterator]()}get size(){return this._parsed.size}get(...e){let t="string"==typeof e[0]?e[0]:e[0].name;return this._parsed.get(t)}getAll(...e){var t;let n=Array.from(this._parsed);if(!e.length)return n.map(([e,t])=>t);let r="string"==typeof e[0]?e[0]:null==(t=e[0])?void 0:t.name;return n.filter(([e])=>e===r).map(([e,t])=>t)}has(e){return this._parsed.has(e)}set(...e){let[t,n]=1===e.length?[e[0].name,e[0].value]:e,r=this._parsed;return r.set(t,{name:t,value:n}),this._headers.set("cookie",Array.from(r).map(([e,t])=>p(t)).join("; ")),this}delete(e){let t=this._parsed,n=Array.isArray(e)?e.map(e=>t.delete(e)):t.delete(e);return this._headers.set("cookie",Array.from(t).map(([e,t])=>p(t)).join("; ")),n}clear(){return this.delete(Array.from(this._parsed.keys())),this}[Symbol.for("edge-runtime.inspect.custom")](){return`RequestCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`}toString(){return[...this._parsed.values()].map(e=>`${e.name}=${encodeURIComponent(e.value)}`).join("; ")}},g=class{constructor(e){var t,n,r;this._parsed=new Map,this._headers=e;const a=null!=(r=null!=(n=null==(t=e.getSetCookie)?void 0:t.call(e))?n:e.get("set-cookie"))?r:[];for(const e of Array.isArray(a)?a:function(e){if(!e)return[];var t,n,r,a,s,i=[],o=0;function l(){for(;o<e.length&&/\s/.test(e.charAt(o));)o+=1;return o<e.length}for(;o<e.length;){for(t=o,s=!1;l();)if(","===(n=e.charAt(o))){for(r=o,o+=1,l(),a=o;o<e.length&&"="!==(n=e.charAt(o))&&";"!==n&&","!==n;)o+=1;o<e.length&&"="===e.charAt(o)?(s=!0,o=a,i.push(e.substring(t,r)),t=o):o=r+1}else o+=1;(!s||o>=e.length)&&i.push(e.substring(t,e.length))}return i}(a)){const t=u(e);t&&this._parsed.set(t.name,t)}}get(...e){let t="string"==typeof e[0]?e[0]:e[0].name;return this._parsed.get(t)}getAll(...e){var t;let n=Array.from(this._parsed.values());if(!e.length)return n;let r="string"==typeof e[0]?e[0]:null==(t=e[0])?void 0:t.name;return n.filter(e=>e.name===r)}has(e){return this._parsed.has(e)}set(...e){let[t,n,r]=1===e.length?[e[0].name,e[0].value,e[0]]:e,a=this._parsed;return a.set(t,function(e={name:"",value:""}){return"number"==typeof e.expires&&(e.expires=new Date(e.expires)),e.maxAge&&(e.expires=new Date(Date.now()+1e3*e.maxAge)),(null===e.path||void 0===e.path)&&(e.path="/"),e}({name:t,value:n,...r})),function(e,t){for(let[,n]of(t.delete("set-cookie"),e)){let e=p(n);t.append("set-cookie",e)}}(a,this._headers),this}delete(...e){let[t,n]="string"==typeof e[0]?[e[0]]:[e[0].name,e[0]];return this.set({...n,name:t,value:"",expires:new Date(0)})}[Symbol.for("edge-runtime.inspect.custom")](){return`ResponseCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`}toString(){return[...this._parsed.values()].map(p).join("; ")}}},754297,e=>{"use strict";e.s(["SKILL_MD",0,'---\nname: wiki-viewer\ndescription: Read and edit markdown files in a running wiki-viewer instance over its HTTP collab API. Use when the user mentions wiki-viewer, asks you to edit local notes, or shares a localhost wiki-viewer URL. Handles agent registration, scoped capabilities, block-level edits with audit-log provenance, comments, and suggestions.\nlicense: MIT\n---\n\n# wiki-viewer agent skill\n\nYou are working with **wiki-viewer**, a local-first markdown viewer that exposes an HTTP API for agents. Files on disk are the source of truth. Every AI-authored edit writes clean markdown; provenance is recorded in the activity feed.\n\n## Quick orientation: two tiers\n\n| Tier | Routes | File types | When to use |\n| ------------------- | ----------------------- | ----------------------------------- | --------------------------------------------------------------------------------- |\n| **Tier 1 — Raw FS** | `/api/agent/fs/*` | All types (markdown, code, binary…) | Fast filework. Read, write, list, move, delete, search. Audited but no review UI. |\n| **Tier 2 — Collab** | `/api/agent/files/*.md` | Markdown only | Block-scoped concurrency-safe writes with activity-log provenance. |\n\nBoth tiers use the same auth (TOFU token). Pick the tier based on `X-Collab-State` (see [Which tier do I use?](#which-tier-do-i-use)).\n\n---\n\n## Discovery\n\nThe server publishes everything you need at one URL:\n\n```\nGET http://<host>:<port>/api/agents/install\n```\n\nThis returns JSON with: bootstrap instructions, route table, op vocabulary, the current registration endpoint, and the human-facing approval workflow. Fetch this first and treat it as authoritative for the running instance you\'re talking to.\n\nIf the user pasted only the wiki-viewer URL, append `/api/agents/install` and fetch it before doing anything else.\n\n## Authentication\n\nwiki-viewer uses **TOFU (Trust On First Use)**:\n\n1. You register anonymously. Server stores a pending request.\n2. The human approves you in the wiki-viewer AI Panel.\n3. You poll, receive a one-shot token, and use it from then on.\n\n**Fast path (same machine only):** when running directly on the wiki-viewer host, send your registration with the header `X-Service-Token: <contents of ~/.wiki-viewer/service-token>` (0600, written by the server at startup, shown/rotated in Settings). Registration then auto-approves: the response is `200 {status:"approved", agentId, token}` immediately — no pending state, no polling, no approval step. Requested scope is granted as-is. Tell the human only if the fast path is rejected.\n\n### Register\n\n```\nPOST /api/agent/register\nContent-Type: application/json\n\n{\n "id": "ai:<your-name>",\n "displayName": "<readable name>",\n "scope": {\n "paths": ["**/*"],\n "ops": ["read", "mutate"]\n }\n}\n```\n\n- `id` must match `^ai:[a-z][a-z0-9-]{0,30}$`. Pick something stable per agent identity (e.g. `ai:claude`, `ai:cursor`, `ai:my-script`).\n- `displayName` 1-80 chars. What the human sees in the approval UI.\n- `scope.paths` is a glob list. Use `**/*` for full repo access, or restrict to a subtree like `notes/**`.\n- `scope.ops` ⊆ `["read", "mutate"]` (add `"delete"` if you need to remove files).\n- `scope.workspaceId` (optional): pin this grant to a single workspace id. Omit\n to request a wildcard grant usable in any workspace (the human can still narrow\n it at approval time).\n\nResponse:\n\n```json\n{\n "registrationId": "reg_<32hex>",\n "pollUrl": "/api/agent/register/<regId>",\n "status": "pending"\n}\n```\n\n**Tell the human**: "Open the wiki-viewer AI Panel and approve my registration."\n\n(With a service-token header you won\'t reach this step — see the fast path above.)\n\n### Poll\n\n```\nGET /api/agent/register/<registrationId>\n```\n\n- `202 {status:"pending"}` — keep polling, every 2-5s.\n- `200 {status:"approved", agentId, token}` — capture token immediately. Pickup is **one-shot**; you cannot fetch it again.\n- `410 {status:"denied"}` or `{status:"consumed"}` — abort or restart registration.\n- `404` — registration expired, re-register.\n\n### Use the token\n\nEvery subsequent request:\n\n```\nAuthorization: Bearer <token>\nX-Agent-Id: ai:<your-name>\nX-Workspace: <workspaceId> # optional but recommended (see Workspaces)\n```\n\nThe `X-Agent-Id` must match the id the token was issued for. Spoofing rejected with `401`.\n\n## Workspaces\n\nA wiki-viewer instance can serve **multiple root directories ("workspaces")**\nat once. Every file path you use is relative to **one** workspace\'s root.\n\n- **Targeting a workspace:** send an `X-Workspace: <workspaceId>` header on every\n request (or append `?ws=<workspaceId>` to the URL). If you omit it, the server\n resolves to a default (the most-recently-opened workspace), which is correct\n for a single-workspace instance but ambiguous when several exist — so prefer\n to be explicit.\n- **Discovering workspace ids:** `GET /api/agent/settings` returns the resolved\n `root` (the active workspace\'s directory) for whatever `X-Workspace` you send.\n The human picks/creates workspaces in the UI; ask them for the id, or read it\n from the `?ws=` param in a wiki-viewer URL they pasted.\n- **Scoped grants:** your token may be pinned to one workspace at approval time.\n A request that resolves to a different workspace is rejected `403 FORBIDDEN`.\n A token with no workspace pin works against any workspace (wildcard).\n- **Isolation:** paths in workspace A never touch workspace B, even if they share\n the same relative path (`notes.md` in A ≠ `notes.md` in B).\n\nWhenever the human is working in a specific workspace, capture its id once and\nsend `X-Workspace: <id>` on all subsequent calls.\n\n## Reading\n\n```\nGET /api/agent/files/<url-encoded-path>.md\n```\n\nReturns a Snapshot:\n\n```json\n{\n "path": "notes/plan.md",\n "revision": 7,\n "fingerprint": "sha256:...",\n "blocks": [\n { "ref": "b1a3f0", "type": "heading", "level": 1, "markdown": "# Plan" },\n { "ref": "b7f2c1", "type": "paragraph", "markdown": "Ship in June." }\n ],\n "comments": [...],\n "lastEventId": 12\n}\n```\n\nBlock `ref` strings are stable across edits. Use them to target mutations. **Always read a fresh snapshot before mutating** so you have the current `revision`.\n\n## Mutating\n\n```\nPOST /api/agent/files/<path>.md\nAuthorization: Bearer <token>\nX-Agent-Id: ai:<your-name>\nContent-Type: application/json\nIdempotency-Key: <uuid you generate per request>\n\n{\n "baseRevision": <revision from snapshot>,\n "by": "ai:<your-name>",\n "ops": [ <op>, ... ]\n}\n```\n\nRequirements:\n\n- `Idempotency-Key` header mandatory. Same key + same body within 5 minutes returns the cached response. Same key + different body returns `409 IDEMPOTENCY_KEY_REUSED`.\n- `by` must equal your `X-Agent-Id` or you get `403 FORBIDDEN`.\n- If `baseRevision` is stale, response is `409 STALE_REVISION` with a fresh snapshot. Read the new revision, rebuild your op against current refs, retry.\n\n### Op vocabulary\n\n**Block ops** — content edits:\n\n```json\n{ "type": "block.replace", "ref": "b7f2c1", "markdown": "New content." }\n{ "type": "block.insertAfter", "ref": "b7f2c1", "markdown": "..." }\n{ "type": "block.insertBefore", "ref": "b7f2c1", "markdown": "..." }\n{ "type": "block.delete", "ref": "b7f2c1" }\n{ "type": "block.append", "markdown": "..." }\n{ "type": "block.prepend", "markdown": "..." }\n```\n\nBlock ops write clean markdown verbatim. Provenance is recorded in the activity feed, not document bytes. Legacy `basis`, `basisDetail`, and `inResponseTo` fields remain accepted but are ignored for backward compatibility.\n\n**Comment ops** — threaded discussion attached to a block:\n\n```json\n{ "type": "comment.add", "ref": "b7f2c1", "text": "Why end of June?" }\n{ "type": "comment.reply", "commentId": "c4a1", "text": "Because of API freeze." }\n{ "type": "comment.resolve", "commentId": "c4a1" }\n{ "type": "comment.reopen", "commentId": "c4a1" }\n```\n\n**Suggestion ops** — document marks for reviewable inline edits:\n\n```json\n{\n "type": "suggestion.add",\n "ref": "b7f2c1",\n "kind": "insert",\n "range": { "start": 5, "end": 5 },\n "markdown": "very "\n}\n```\n\nFor `insert`, `range` is a block-local Markdown offset and `markdown` is the text to insert. For `remove`, use the selected block-local `{start,end}` range; the server writes a `<del data-id="N">…</del>` mark. An insertion is written as `<ins data-id="N">…</ins>`. The mark is the suggestion record and the `.md` file is the source of truth, so adding one changes document bytes and the revision. There is no sidecar suggestion record or agent settle operation. A human accepts or rejects marks in the editor; an agent that wants an immediate change should use the direct `block.*` ops instead.\n\nDirect block ops commit clean markdown immediately; all content changes are recorded in the activity feed/audit log.\n\n## Polling events\n\n```\nGET /api/agent/events/<path>.md?after=<lastEventId>\n```\n\nReturns events emitted since `lastEventId`: human comments, document edits involving suggestion marks, external file edits (the human opened the file in vim), and so on. Use this to react when the human responds to one of your comments or when the document changes.\n\nAcknowledge:\n\n```\nPOST /api/agent/events/<path>.md\n{ "upToId": <id>, "by": "ai:<your-name>" }\n```\n\nAcks are advisory; events are never deleted.\n\n## Error codes\n\n| Status | Code | Meaning |\n| ------ | ---------------------- | --------------------------------------------------------------------------------------- |\n| 401 | UNAUTHORIZED | bad/missing token or X-Agent-Id |\n| 403 | FORBIDDEN | scope/path mismatch, workspace not covered by grant, or `by` doesn\'t match `X-Agent-Id` |\n| 404 | FILE_NOT_FOUND | path doesn\'t exist under server root |\n| 409 | STALE_REVISION | `baseRevision` wrong, retry with included snapshot |\n| 409 | BLOCK_NOT_FOUND | ref no longer exists, refetch snapshot |\n| 409 | IDEMPOTENCY_KEY_REUSED | same key, different body |\n| 422 | INVALID_MARKDOWN | op\'s markdown failed to parse |\n| 429 | RATE_LIMITED | bucket exhausted, honor `Retry-After` header |\n\n---\n\n## Working with files (raw filesystem — Tier 1)\n\nAll Tier-1 routes require `Authorization: Bearer <token>` + `X-Agent-Id: ai:<name>` (same as Tier 2). The agent\'s `scope.paths` glob applies to every surface (reads, ls results, search results, move, delete).\n\n### Scope ops\n\nWhen registering, `scope.ops` can include:\n\n- `read` — read files + list + search\n- `mutate` — create / overwrite / move\n- `delete` — remove files/dirs (separate from mutate so a human can grant edit-but-never-delete)\n\nExample registration with full access:\n\n```json\n{\n "id": "ai:claude",\n "scope": { "paths": ["**/*"], "ops": ["read", "mutate", "delete"] }\n}\n```\n\n### Read a file\n\n```\nGET /api/agent/fs/file/<path>\n```\n\nReturns raw bytes. Metadata in response headers:\n\n```\nETag: "<sha256>"\nX-File-Size: <bytes>\nX-File-Mtime: <ISO-8601>\nContent-Type: <mime>\nX-Collab-State: active | tracked | untracked | not-markdown\nX-Collab-Revision: <n>\nX-Collab-Snapshot: /api/agent/files/<path>.md # when applicable\n```\n\nSupports `Range` header for large/binary files.\n\n### Write a file\n\n```\nPUT /api/agent/fs/file/<path>\nIf-Match: "<sha256>" # required for overwrites; omit for creates\nContent-Type: <mime>\n<raw bytes body>\n```\n\n- **Create** (file doesn\'t exist): omit `If-Match`. Creating a file that already exists without `If-Match` → 412 (no blind clobber).\n- **Overwrite** (file exists): send `If-Match` with the sha256 you read. Mismatch → 412.\n- `?mkdirs=true` — create parent directories.\n- `?force=true` — bypass `If-Match` check (audited; use sparingly).\n\nFor `.md` files, also send:\n\n```\nIf-Collab-Match: <X-Collab-Revision> # prevents writing into a live collab session\n```\n\n(See [Which tier do I use?](#which-tier-do-i-use).)\n\nResponse:\n\n```json\n{\n "path": "...",\n "sha256": "...",\n "size": 1234,\n "mtime": "...",\n "created": false\n}\n```\n\n### Delete a file\n\n```\nDELETE /api/agent/fs/file/<path>\nIf-Match: "<sha256>" # required — you must have read the file first\n```\n\nRequires `delete` in `scope.ops`. Deletes the `.proof/` sidecar too for `.md` files. For directories: `?recursive=true`.\n\n### List a directory\n\n```\nGET /api/agent/fs/ls/<path>?recursive=true&limit=500&depth=3\n```\n\nReturns `{ entries: [{name, type, path, size, mtime}] }`. Unauthorized paths silently omitted. Excludes `.proof/`.\n\n### Move / rename\n\n```\nPOST /api/agent/fs/move\nContent-Type: application/json\n\n{ "from": "notes/old.md", "to": "notes/new.md", "ifMatch": "<sha256>" }\n```\n\nMoves the `.proof/` sidecar for `.md` files automatically.\n\n### Search (grep / glob)\n\n```\nPOST /api/agent/fs/search\nContent-Type: application/json\n\n{ "kind": "grep", "query": "TODO", "path": "src", "glob": "*.ts", "limit": 100 }\n```\n\n```\nPOST /api/agent/fs/search\nContent-Type: application/json\n\n{ "kind": "glob", "query": "**/*.test.ts" }\n```\n\nServer-side: one call replaces dozens of `ls`+`read` round-trips. Results are scope-filtered. Glob dialect: `**`, `*`, `?` only (no braces/negation in v1).\n\n### Error codes (Tier 1)\n\n| Status | Code | Meaning |\n| ------ | ------------------- | --------------------------------------------------------------------------- |\n| 400 | BAD_REQUEST | Invalid path or body |\n| 401 | UNAUTHORIZED | Bad/missing token or X-Agent-Id |\n| 403 | FORBIDDEN | Scope mismatch or missing `delete` op |\n| 404 | NOT_FOUND | Path doesn\'t exist |\n| 409 | COLLAB_ACTIVE | Raw PUT rejected — doc is active-collab; use Tier-2 or send If-Collab-Match |\n| 412 | PRECONDITION_FAILED | If-Match sha mismatch (concurrent modification) |\n| 413 | PAYLOAD_TOO_LARGE | File exceeds 50 MB limit |\n| 429 | RATE_LIMITED | Honor `Retry-After` |\n\n---\n\n## Which tier do I use?\n\nEvery `GET /api/agent/fs/file/<path>` (and every Tier-2 snapshot read) returns `X-Collab-State`.\n\n| `X-Collab-State` | Meaning | Use |\n| ---------------- | --------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- |\n| `active` | Human has this `.md` open in the editor, OR it has unresolved comments. | **Tier 2 block-ops only.** A raw `PUT` returns `409 COLLAB_ACTIVE`. |\n| `tracked` | `.md` has a sidecar (prior collab history), no active session. | Prefer Tier-2 for prose/semantic edits. Raw ok for mechanical/whole-file ops (reformat, regenerate). |\n| `untracked` | `.md`, no sidecar yet. | Raw is fine. Tier-2 creates a sidecar (starts provenance tracking). |\n| `not-markdown` | Any non-`.md` file. | **Tier-1 raw only.** Tier 2 does not apply. |\n\n**Rule (one sentence):** Read the file, check `X-Collab-State`, use Tier-2 if `active`, else use Tier-1. For non-markdown, always Tier-1.\n\n**Editing a `.md` safely:**\n\n```\n1. GET /api/agent/fs/file/<path>.md\n → note ETag (sha256) and X-Collab-Revision + X-Collab-State\n\n2a. If X-Collab-State == "active":\n → POST /api/agent/files/<path>.md (block-ops, Tier-2)\n Use the X-Collab-Snapshot URL. See "Mutating" section below.\n\n2b. Otherwise (tracked / untracked):\n → PUT /api/agent/fs/file/<path>.md (raw Tier-1)\n If-Match: "<ETag from step 1>"\n If-Collab-Match: <X-Collab-Revision from step 1>\n\n3. If you get 409 COLLAB_ACTIVE: the doc became active after your read.\n Switch to Tier-2 (block-ops) using the URL in the response body.\n```\n\n**MCP-capable agents:** run `npx wiki-viewer-mcp` (set `WIKI_VIEWER_URL`, `WIKI_VIEWER_TOKEN`, `WIKI_VIEWER_AGENT_ID`; its `register` command auto-approves when a service token is available). It exposes **Tier-1 file tools only** — `read_file`, `write_file`, `edit_file`, `list_directory`, `search`, `move_file`, `delete_file` — and reads `X-Collab-State` so it won\'t clobber an active doc: it blocks the write and tells you to use the collaborative path instead. The MCP shim has **no Tier-2 (block-ops / suggestion / comment) tools** — to co-write a doc, use the Tier-2 HTTP endpoints described above directly (the skill instructions cover them). Use the MCP for fast filework; use Tier-2 HTTP for reviewable doc collaboration.\n\n---\n\n## Working style\n\n- Read before write. Always GET a fresh snapshot to capture current `revision` and block `ref`s.\n- One file per request. There is no batch-across-files endpoint.\n- Atomic ops. Each POST applies all its ops or none. Order matters within a batch.\n- Write clean markdown. Legacy `basis`, `basisDetail`, and `inResponseTo` fields are accepted but ignored for backward compatibility.\n- Use `suggestion.add` when the human should review an inline marked change; use direct `block.*` ops when the change should apply immediately. The human is your collaborator, not your reviewer-of-last-resort.\n- Poll events between turns when the human is reviewing your work; respond to their comments rather than re-litigating.\n\n## Sample first interaction\n\n```\n1. GET /api/agents/install # discovery\n2. POST /api/agent/register # register (include "delete" in ops if needed)\n # on the server host? add X-Service-Token -> token comes back instantly, skip 3-4\n3. tell human: "approve me in the AI Panel"\n4. GET /api/agent/register/<regId> # poll until approved\n\n# Working mode (Tier-1, e.g. code files or untracked .md)\n5. GET /api/agent/fs/ls/src?recursive=true # list\n6. GET /api/agent/fs/file/src/main.ts # read -> capture ETag\n7. PUT /api/agent/fs/file/src/main.ts (If-Match: <sha>) # write\n\n# Collaborating mode (Tier-2, active .md)\n5. GET /api/agent/fs/file/notes/plan.md # read -> X-Collab-State: active\n6. GET /api/agent/files/notes/plan.md # read snapshot (Tier-2)\n7. POST /api/agent/files/notes/plan.md # suggest or mutate (Tier-2)\n8. GET /api/agent/events/notes/plan.md?after=<id> # listen for replies\n```\n'])},107836,e=>{"use strict";var t=e.i(985426),n=e.i(257574),r=e.i(507835),a=e.i(457789),s=e.i(119791),i=e.i(141062),o=e.i(957291),l=e.i(535899),d=e.i(610241),p=e.i(62749),c=e.i(624891),u=e.i(725836),h=e.i(532736),m=e.i(257858),f=e.i(487476),g=e.i(193695);e.i(484264);var v=e.i(315709),y=e.i(351216),w=e.i(754297);async function k(e){return new y.NextResponse(w.SKILL_MD,{status:200,headers:{"Content-Type":"text/markdown; charset=utf-8","Cache-Control":"no-store"}})}e.s(["GET",0,k,"runtime",0,"nodejs"],480242);var b=e.i(480242);let T=new t.AppRouteRouteModule({definition:{kind:n.RouteKind.APP_ROUTE,page:"/api/agents/skill/route",pathname:"/api/agents/skill",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/agents/skill/route.ts",nextConfigOutput:"standalone",userland:b,...{}}),{workAsyncStorage:R,workUnitAsyncStorage:E,serverHooks:I}=T;async function x(e,t,r){r.requestMeta&&(0,a.setRequestMeta)(e,r.requestMeta),T.isDev&&(0,a.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let y="/api/agents/skill/route";y=y.replace(/\/index$/,"")||"/";let w=await T.prepare(e,t,{srcPage:y,multiZoneDraftMode:!1});if(!w)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:k,params:b,nextConfig:R,parsedUrl:E,isDraftMode:I,prerenderManifest:x,routerServerContext:A,isOnDemandRevalidate:C,revalidateOnlyGenerated:S,resolvedPathname:O,clientReferenceManifest:_,serverActionsManifest:P}=w,U=(0,o.normalizeAppPath)(y),D=!!(x.dynamicRoutes[U]||x.routes[O]),N=async()=>((null==A?void 0:A.render404)?await A.render404(e,t,E,!1):t.end("This page could not be found"),null);if(D&&!I){let e=!!x.routes[O],t=x.dynamicRoutes[U];if(t&&!1===t.fallback&&!e){if(R.adapterPath)return await N();throw new g.NoFallbackError}}let M=null;!D||T.isDev||I||(M="/index"===(M=O)?"/":M);let j=!0===T.isDev||!D,q=D&&!j;P&&_&&(0,i.setManifestsSingleton)({page:y,clientReferenceManifest:_,serverActionsManifest:P});let L=e.method||"GET",F=(0,s.getTracer)(),X=F.getActiveScopeSpan(),B=!!(null==A?void 0:A.isWrappedByNextServer),W=!!(0,a.getRequestMeta)(e,"minimalMode"),H=(0,a.getRequestMeta)(e,"incrementalCache")||await T.getIncrementalCache(e,R,x,W);null==H||H.resetRequestCache(),globalThis.__incrementalCache=H;let G={params:b,previewProps:x.preview,renderOpts:{experimental:{authInterrupts:!!R.experimental.authInterrupts},cacheComponents:!!R.cacheComponents,supportsDynamicResponse:j,incrementalCache:H,cacheLifeProfiles:R.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,n,r,a)=>T.onRequestError(e,t,r,a,A)},sharedContext:{buildId:k}},$=new l.NodeNextRequest(e),K=new l.NodeNextResponse(t),z=d.NextRequestAdapter.fromNodeNextRequest($,(0,d.signalFromNodeResponse)(t));try{let a,i=async e=>T.handle(z,G).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let n=F.getRootSpanAttributes();if(!n)return;if(n.get("next.span_type")!==p.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${n.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let r=n.get("next.route");if(r){let t=`${L} ${r}`;e.setAttributes({"next.route":r,"http.route":r,"next.span_name":t}),e.updateName(t),a&&a!==e&&(a.setAttribute("http.route",r),a.updateName(t))}else e.updateName(`${L} ${y}`)}),o=async a=>{var s,o;let l=async({previousCacheEntry:n})=>{try{if(!W&&C&&S&&!n)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await i(a);e.fetchMetrics=G.renderOpts.fetchMetrics;let o=G.renderOpts.pendingWaitUntil;o&&r.waitUntil&&(r.waitUntil(o),o=void 0);let l=G.renderOpts.collectedTags;if(!D)return await (0,u.sendResponse)($,K,s,G.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(s.headers);l&&(t[f.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let n=void 0!==G.renderOpts.collectedRevalidate&&!(G.renderOpts.collectedRevalidate>=f.INFINITE_CACHE)&&G.renderOpts.collectedRevalidate,r=void 0===G.renderOpts.collectedExpire||G.renderOpts.collectedExpire>=f.INFINITE_CACHE?void 0:G.renderOpts.collectedExpire;return{value:{kind:v.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:n,expire:r}}}}catch(t){throw(null==n?void 0:n.isStale)&&await T.onRequestError(e,t,{routerKind:"App Router",routePath:y,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:q,isOnDemandRevalidate:C})},!1,A),t}},d=await T.handleResponse({req:e,nextConfig:R,cacheKey:M,routeKind:n.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:x,isRoutePPREnabled:!1,isOnDemandRevalidate:C,revalidateOnlyGenerated:S,responseGenerator:l,waitUntil:r.waitUntil,isMinimalMode:W});if(!D)return null;if((null==d||null==(s=d.value)?void 0:s.kind)!==v.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==d||null==(o=d.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});W||t.setHeader("x-nextjs-cache",C?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),I&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let p=(0,h.fromNodeOutgoingHttpHeaders)(d.value.headers);return W&&D||p.delete(f.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||t.getHeader("Cache-Control")||p.get("Cache-Control")||p.set("Cache-Control",(0,m.getCacheControlHeader)(d.cacheControl)),await (0,u.sendResponse)($,K,new Response(d.value.body,{headers:p,status:d.value.status||200})),null};B&&X?await o(X):(a=F.getActiveScopeSpan(),await F.withPropagatedContext(e.headers,()=>F.trace(p.BaseServerSpan.handleRequest,{spanName:`${L} ${y}`,kind:s.SpanKind.SERVER,attributes:{"http.method":L,"http.target":e.url}},o),void 0,!B))}catch(t){if(t instanceof g.NoFallbackError||await T.onRequestError(e,t,{routerKind:"App Router",routePath:U,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:q,isOnDemandRevalidate:C})},!1,A),D)throw t;return await (0,u.sendResponse)($,K,new Response(null,{status:500})),null}}e.s(["handler",0,x,"patchFetch",0,function(){return(0,r.patchFetch)({workAsyncStorage:R,workUnitAsyncStorage:E})},"routeModule",0,T,"serverHooks",0,I,"workAsyncStorage",0,R,"workUnitAsyncStorage",0,E],107836)}];
|
|
1
|
+
module.exports=[918622,(e,t,n)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},556704,(e,t,n)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},832319,(e,t,n)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},324725,(e,t,n)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},270406,(e,t,n)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},193695,(e,t,n)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},100705,(e,t,n)=>{"use strict";t.exports=e.r(918622)},294382,(e,t,n)=>{"use strict";t.exports=e.r(100705).vendored["react-rsc"].React},362744,(e,t,n)=>{"use strict";var r=Object.defineProperty,a=Object.getOwnPropertyDescriptor,s=Object.getOwnPropertyNames,i=Object.prototype.hasOwnProperty,o={},l={RequestCookies:()=>f,ResponseCookies:()=>g,parseCookie:()=>c,parseSetCookie:()=>u,stringifyCookie:()=>p};for(var d in l)r(o,d,{get:l[d],enumerable:!0});function p(e){var t;let n=["path"in e&&e.path&&`Path=${e.path}`,"expires"in e&&(e.expires||0===e.expires)&&`Expires=${("number"==typeof e.expires?new Date(e.expires):e.expires).toUTCString()}`,"maxAge"in e&&"number"==typeof e.maxAge&&`Max-Age=${e.maxAge}`,"domain"in e&&e.domain&&`Domain=${e.domain}`,"secure"in e&&e.secure&&"Secure","httpOnly"in e&&e.httpOnly&&"HttpOnly","sameSite"in e&&e.sameSite&&`SameSite=${e.sameSite}`,"partitioned"in e&&e.partitioned&&"Partitioned","priority"in e&&e.priority&&`Priority=${e.priority}`].filter(Boolean),r=`${e.name}=${encodeURIComponent(null!=(t=e.value)?t:"")}`;return 0===n.length?r:`${r}; ${n.join("; ")}`}function c(e){let t=new Map;for(let n of e.split(/; */)){if(!n)continue;let e=n.indexOf("=");if(-1===e){t.set(n,"true");continue}let[r,a]=[n.slice(0,e),n.slice(e+1)];try{t.set(r,decodeURIComponent(null!=a?a:"true"))}catch{}}return t}function u(e){if(!e)return;let[[t,n],...r]=c(e),{domain:a,expires:s,httponly:i,maxage:o,path:l,samesite:d,secure:p,partitioned:u,priority:f}=Object.fromEntries(r.map(([e,t])=>[e.toLowerCase().replace(/-/g,""),t]));{var g,v,y={name:t,value:decodeURIComponent(n),domain:a,...s&&{expires:new Date(s)},...i&&{httpOnly:!0},..."string"==typeof o&&{maxAge:Number(o)},path:l,...d&&{sameSite:h.includes(g=(g=d).toLowerCase())?g:void 0},...p&&{secure:!0},...f&&{priority:m.includes(v=(v=f).toLowerCase())?v:void 0},...u&&{partitioned:!0}};let e={};for(let t in y)y[t]&&(e[t]=y[t]);return e}}t.exports=((e,t,n)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let o of s(t))i.call(e,o)||void 0===o||r(e,o,{get:()=>t[o],enumerable:!(n=a(t,o))||n.enumerable});return e})(r({},"__esModule",{value:!0}),o);var h=["strict","lax","none"],m=["low","medium","high"],f=class{constructor(e){this._parsed=new Map,this._headers=e;const t=e.get("cookie");if(t)for(const[e,n]of c(t))this._parsed.set(e,{name:e,value:n})}[Symbol.iterator](){return this._parsed[Symbol.iterator]()}get size(){return this._parsed.size}get(...e){let t="string"==typeof e[0]?e[0]:e[0].name;return this._parsed.get(t)}getAll(...e){var t;let n=Array.from(this._parsed);if(!e.length)return n.map(([e,t])=>t);let r="string"==typeof e[0]?e[0]:null==(t=e[0])?void 0:t.name;return n.filter(([e])=>e===r).map(([e,t])=>t)}has(e){return this._parsed.has(e)}set(...e){let[t,n]=1===e.length?[e[0].name,e[0].value]:e,r=this._parsed;return r.set(t,{name:t,value:n}),this._headers.set("cookie",Array.from(r).map(([e,t])=>p(t)).join("; ")),this}delete(e){let t=this._parsed,n=Array.isArray(e)?e.map(e=>t.delete(e)):t.delete(e);return this._headers.set("cookie",Array.from(t).map(([e,t])=>p(t)).join("; ")),n}clear(){return this.delete(Array.from(this._parsed.keys())),this}[Symbol.for("edge-runtime.inspect.custom")](){return`RequestCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`}toString(){return[...this._parsed.values()].map(e=>`${e.name}=${encodeURIComponent(e.value)}`).join("; ")}},g=class{constructor(e){var t,n,r;this._parsed=new Map,this._headers=e;const a=null!=(r=null!=(n=null==(t=e.getSetCookie)?void 0:t.call(e))?n:e.get("set-cookie"))?r:[];for(const e of Array.isArray(a)?a:function(e){if(!e)return[];var t,n,r,a,s,i=[],o=0;function l(){for(;o<e.length&&/\s/.test(e.charAt(o));)o+=1;return o<e.length}for(;o<e.length;){for(t=o,s=!1;l();)if(","===(n=e.charAt(o))){for(r=o,o+=1,l(),a=o;o<e.length&&"="!==(n=e.charAt(o))&&";"!==n&&","!==n;)o+=1;o<e.length&&"="===e.charAt(o)?(s=!0,o=a,i.push(e.substring(t,r)),t=o):o=r+1}else o+=1;(!s||o>=e.length)&&i.push(e.substring(t,e.length))}return i}(a)){const t=u(e);t&&this._parsed.set(t.name,t)}}get(...e){let t="string"==typeof e[0]?e[0]:e[0].name;return this._parsed.get(t)}getAll(...e){var t;let n=Array.from(this._parsed.values());if(!e.length)return n;let r="string"==typeof e[0]?e[0]:null==(t=e[0])?void 0:t.name;return n.filter(e=>e.name===r)}has(e){return this._parsed.has(e)}set(...e){let[t,n,r]=1===e.length?[e[0].name,e[0].value,e[0]]:e,a=this._parsed;return a.set(t,function(e={name:"",value:""}){return"number"==typeof e.expires&&(e.expires=new Date(e.expires)),e.maxAge&&(e.expires=new Date(Date.now()+1e3*e.maxAge)),(null===e.path||void 0===e.path)&&(e.path="/"),e}({name:t,value:n,...r})),function(e,t){for(let[,n]of(t.delete("set-cookie"),e)){let e=p(n);t.append("set-cookie",e)}}(a,this._headers),this}delete(...e){let[t,n]="string"==typeof e[0]?[e[0]]:[e[0].name,e[0]];return this.set({...n,name:t,value:"",expires:new Date(0)})}[Symbol.for("edge-runtime.inspect.custom")](){return`ResponseCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`}toString(){return[...this._parsed.values()].map(p).join("; ")}}},754297,e=>{"use strict";e.s(["SKILL_MD",0,'---\nname: wiki-viewer\ndescription: Read and edit markdown files in a running wiki-viewer instance over its HTTP collab API. Use when the user mentions wiki-viewer, asks you to edit local notes, or shares a localhost wiki-viewer URL. Handles agent registration, scoped capabilities, block-level edits with audit-log provenance, comments, and suggestions.\nlicense: MIT\n---\n\n# wiki-viewer agent skill\n\nYou are working with **wiki-viewer**, a local-first markdown viewer that exposes an HTTP API for agents. Files on disk are the source of truth. Every AI-authored edit writes clean markdown; provenance is recorded in the activity feed.\n\n## Quick orientation: two tiers\n\n| Tier | Routes | File types | When to use |\n| ------------------- | ----------------------- | ----------------------------------- | --------------------------------------------------------------------------------- |\n| **Tier 1 — Raw FS** | `/api/agent/fs/*` | All types (markdown, code, binary…) | Fast filework. Read, write, list, move, delete, search. Audited but no review UI. |\n| **Tier 2 — Collab** | `/api/agent/files/*.md` | Markdown only | Block-scoped concurrency-safe writes with activity-log provenance. |\n\nBoth tiers use the same auth (TOFU token). Pick the tier based on `X-Collab-State` (see [Which tier do I use?](#which-tier-do-i-use)).\n\n---\n\n## Discovery\n\nThe server publishes everything you need at one URL:\n\n```\nGET http://<host>:<port>/api/agents/install\n```\n\nThis returns JSON with: bootstrap instructions, route table, op vocabulary, the current registration endpoint, and the human-facing approval workflow. Fetch this first and treat it as authoritative for the running instance you\'re talking to.\n\nIf the user pasted only the wiki-viewer URL, append `/api/agents/install` and fetch it before doing anything else.\n\n## Authentication\n\nwiki-viewer uses **TOFU (Trust On First Use)**:\n\n1. You register anonymously. Server stores a pending request.\n2. The human approves you in the wiki-viewer AI Panel.\n3. You poll, receive a one-shot token, and use it from then on.\n\n**Fast path (same machine only):** when running directly on the wiki-viewer host, send your registration with the header `X-Service-Token: <contents of ~/.wiki-viewer/service-token>` (0600, written by the server at startup, shown/rotated in Settings). Registration then auto-approves: the response is `200 {status:"approved", agentId, token}` immediately — no pending state, no polling, no approval step. Requested scope is granted as-is. Tell the human only if the fast path is rejected.\n\n### Register\n\n```\nPOST /api/agent/register\nContent-Type: application/json\n\n{\n "id": "ai:<your-name>",\n "displayName": "<readable name>",\n "scope": {\n "paths": ["**/*"],\n "ops": ["read", "mutate"]\n }\n}\n```\n\n- `id` must match `^ai:[a-z][a-z0-9-]{0,30}$`. Pick something stable per agent identity (e.g. `ai:claude`, `ai:cursor`, `ai:my-script`).\n- `displayName` 1-80 chars. What the human sees in the approval UI.\n- `scope.paths` is a glob list. Use `**/*` for full repo access, or restrict to a subtree like `notes/**`.\n- `scope.ops` ⊆ `["read", "mutate"]` (add `"delete"` if you need to remove files).\n- `scope.workspaceId` (optional): pin this grant to a single workspace id. Omit\n to request a wildcard grant usable in any workspace (the human can still narrow\n it at approval time).\n\nResponse:\n\n```json\n{\n "registrationId": "reg_<32hex>",\n "pollUrl": "/api/agent/register/<regId>",\n "status": "pending"\n}\n```\n\n**Tell the human**: "Open the wiki-viewer AI Panel and approve my registration."\n\n(With a service-token header you won\'t reach this step — see the fast path above.)\n\n### Poll\n\n```\nGET /api/agent/register/<registrationId>\n```\n\n- `202 {status:"pending"}` — keep polling, every 2-5s.\n- `200 {status:"approved", agentId, token}` — capture token immediately. Pickup is **one-shot**; you cannot fetch it again.\n- `410 {status:"denied"}` or `{status:"consumed"}` — abort or restart registration.\n- `404` — registration expired, re-register.\n\n### Use the token\n\nEvery subsequent request:\n\n```\nAuthorization: Bearer <token>\nX-Agent-Id: ai:<your-name>\nX-Workspace: <workspaceId> # optional but recommended (see Workspaces)\n```\n\nThe `X-Agent-Id` must match the id the token was issued for. Spoofing rejected with `401`.\n\n## Workspaces\n\nA wiki-viewer instance can serve **multiple root directories ("workspaces")**\nat once. Every file path you use is relative to **one** workspace\'s root.\n\n- **Targeting a workspace:** send an `X-Workspace: <workspaceId>` header on every\n request (or append `?ws=<workspaceId>` to the URL). If you omit it, the server\n resolves to a default (the most-recently-opened workspace), which is correct\n for a single-workspace instance but ambiguous when several exist — so prefer\n to be explicit.\n- **Discovering workspace ids:** `GET /api/agent/settings` returns the resolved\n `root` (the active workspace\'s directory) for whatever `X-Workspace` you send.\n The human picks/creates workspaces in the UI; ask them for the id, or read it\n from the `?ws=` param in a wiki-viewer URL they pasted.\n- **Scoped grants:** your token may be pinned to one workspace at approval time.\n A request that resolves to a different workspace is rejected `403 FORBIDDEN`.\n A token with no workspace pin works against any workspace (wildcard).\n- **Isolation:** paths in workspace A never touch workspace B, even if they share\n the same relative path (`notes.md` in A ≠ `notes.md` in B).\n\nWhenever the human is working in a specific workspace, capture its id once and\nsend `X-Workspace: <id>` on all subsequent calls.\n\n## Reading\n\n```\nGET /api/agent/files/<url-encoded-path>.md\n```\n\nReturns a Snapshot:\n\n```json\n{\n "path": "notes/plan.md",\n "revision": 7,\n "fingerprint": "sha256:...",\n "blocks": [\n { "ref": "b1a3f0", "type": "heading", "level": 1, "markdown": "# Plan" },\n { "ref": "b7f2c1", "type": "paragraph", "markdown": "Ship in June." }\n ],\n "comments": [...],\n "lastEventId": 12\n}\n```\n\nBlock `ref` strings are stable across edits. Use them to target mutations. **Always read a fresh snapshot before mutating** so you have the current `revision`.\n\n## Mutating\n\n```\nPOST /api/agent/files/<path>.md\nAuthorization: Bearer <token>\nX-Agent-Id: ai:<your-name>\nContent-Type: application/json\nIdempotency-Key: <uuid you generate per request>\n\n{\n "baseRevision": <revision from snapshot>,\n "by": "ai:<your-name>",\n "ops": [ <op>, ... ]\n}\n```\n\nRequirements:\n\n- `Idempotency-Key` header mandatory. Same key + same body within 5 minutes returns the cached response. Same key + different body returns `409 IDEMPOTENCY_KEY_REUSED`.\n- `by` must equal your `X-Agent-Id` or you get `403 FORBIDDEN`.\n- If `baseRevision` is stale, response is `409 STALE_REVISION` with a fresh snapshot. Read the new revision, rebuild your op against current refs, retry.\n\n### Op vocabulary\n\n**Block ops** — content edits:\n\n```json\n{ "type": "block.replace", "ref": "b7f2c1", "markdown": "New content." }\n{ "type": "block.insertAfter", "ref": "b7f2c1", "markdown": "..." }\n{ "type": "block.insertBefore", "ref": "b7f2c1", "markdown": "..." }\n{ "type": "block.delete", "ref": "b7f2c1" }\n{ "type": "block.append", "markdown": "..." }\n{ "type": "block.prepend", "markdown": "..." }\n```\n\nBlock ops write clean markdown verbatim. Provenance is recorded in the activity feed, not document bytes. Legacy `basis`, `basisDetail`, and `inResponseTo` fields remain accepted but are ignored for backward compatibility.\n\n**Comment ops** — threaded discussion attached to a block:\n\n```json\n{ "type": "comment.add", "ref": "b7f2c1", "text": "Why end of June?" }\n{ "type": "comment.reply", "commentId": "c4a1", "text": "Because of API freeze." }\n{ "type": "comment.resolve", "commentId": "c4a1" }\n{ "type": "comment.reopen", "commentId": "c4a1" }\n```\n\n**Suggestion ops** — document marks for reviewable inline edits:\n\n```json\n{\n "type": "suggestion.add",\n "ref": "b7f2c1",\n "kind": "insert",\n "range": { "start": 5, "end": 5 },\n "markdown": "very "\n}\n```\n\nFor `insert`, `range` is a block-local Markdown offset and `markdown` is the text to insert. For `remove`, use the selected block-local `{start,end}` range; the server writes a `<del data-id="N">…</del>` mark. An insertion is written as `<ins data-id="N">…</ins>`. The mark is the suggestion record and the `.md` file is the source of truth, so adding one changes document bytes and the revision. There is no sidecar suggestion record or agent settle operation. A human accepts or rejects marks in the editor; an agent that wants an immediate change should use the direct `block.*` ops instead.\n\nDirect block ops commit clean markdown immediately; all content changes are recorded in the activity feed/audit log.\n\n## Polling events\n\n```\nGET /api/agent/events/<path>.md?after=<lastEventId>\n```\n\nReturns events emitted since `lastEventId`: human comments, document edits involving suggestion marks, external file edits (the human opened the file in vim), and so on. Use this to react when the human responds to one of your comments or when the document changes.\n\nAcknowledge:\n\n```\nPOST /api/agent/events/<path>.md\n{ "upToId": <id>, "by": "ai:<your-name>" }\n```\n\nAcks are advisory; events are never deleted.\n\n## Error codes\n\n| Status | Code | Meaning |\n| ------ | ---------------------- | --------------------------------------------------------------------------------------- |\n| 401 | UNAUTHORIZED | bad/missing token or X-Agent-Id |\n| 403 | FORBIDDEN | scope/path mismatch, workspace not covered by grant, or `by` doesn\'t match `X-Agent-Id` |\n| 404 | FILE_NOT_FOUND | path doesn\'t exist under server root |\n| 409 | STALE_REVISION | `baseRevision` wrong, retry with included snapshot |\n| 409 | BLOCK_NOT_FOUND | ref no longer exists, refetch snapshot |\n| 409 | IDEMPOTENCY_KEY_REUSED | same key, different body |\n| 422 | INVALID_MARKDOWN | op\'s markdown failed to parse |\n| 429 | RATE_LIMITED | bucket exhausted, honor `Retry-After` header |\n\n---\n\n## Working with files (raw filesystem — Tier 1)\n\nAll Tier-1 routes require `Authorization: Bearer <token>` + `X-Agent-Id: ai:<name>` (same as Tier 2). The agent\'s `scope.paths` glob applies to every surface (reads, ls results, search results, move, delete).\n\n### Scope ops\n\nWhen registering, `scope.ops` can include:\n\n- `read` — read files + list + search\n- `mutate` — create / overwrite / move\n- `delete` — remove files/dirs (separate from mutate so a human can grant edit-but-never-delete)\n\nExample registration with full access:\n\n```json\n{\n "id": "ai:claude",\n "scope": { "paths": ["**/*"], "ops": ["read", "mutate", "delete"] }\n}\n```\n\n### Read a file\n\n```\nGET /api/agent/fs/file/<path>\n```\n\nReturns raw bytes. Metadata in response headers:\n\n```\nETag: "<sha256>"\nX-File-Size: <bytes>\nX-File-Mtime: <ISO-8601>\nContent-Type: <mime>\nX-Collab-State: active | tracked | untracked | not-markdown\nX-Collab-Revision: <n>\nX-Collab-Snapshot: /api/agent/files/<path>.md # when applicable\n```\n\nSupports `Range` header for large/binary files.\n\n### Write a file\n\n```\nPUT /api/agent/fs/file/<path>\nIf-Match: "<sha256>" # required for overwrites; omit for creates\nContent-Type: <mime>\n<raw bytes body>\n```\n\n- **Create** (file doesn\'t exist): omit `If-Match`. Creating a file that already exists without `If-Match` → 412 (no blind clobber).\n- **Overwrite** (file exists): send `If-Match` with the sha256 you read. Mismatch → 412.\n- `?mkdirs=true` — create parent directories.\n- `?force=true` — bypass `If-Match` check (audited; use sparingly).\n\nFor `.md` files, also send:\n\n```\nIf-Collab-Match: <X-Collab-Revision> # prevents writing into a live collab session\n```\n\n(See [Which tier do I use?](#which-tier-do-i-use).)\n\nResponse:\n\n```json\n{\n "path": "...",\n "sha256": "...",\n "size": 1234,\n "mtime": "...",\n "created": false\n}\n```\n\n### Delete a file\n\n```\nDELETE /api/agent/fs/file/<path>\nIf-Match: "<sha256>" # required — you must have read the file first\n```\n\nRequires `delete` in `scope.ops`. Deletes the `.proof/` sidecar too for `.md` files. For directories: `?recursive=true`.\n\n### List a directory\n\n```\nGET /api/agent/fs/ls/<path>?recursive=true&limit=500&depth=3\n```\n\nReturns `{ entries: [{name, type, path, size, mtime}] }`. Unauthorized paths silently omitted. Excludes `.proof/`.\n\n### Move / rename\n\n```\nPOST /api/agent/fs/move\nContent-Type: application/json\n\n{ "from": "notes/old.md", "to": "notes/new.md", "ifMatch": "<sha256>" }\n```\n\nMoves the `.proof/` sidecar for `.md` files automatically.\n\n### Search (grep / glob)\n\n```\nPOST /api/agent/fs/search\nContent-Type: application/json\n\n{ "kind": "grep", "query": "TODO", "path": "src", "glob": "*.ts", "limit": 100 }\n```\n\n```\nPOST /api/agent/fs/search\nContent-Type: application/json\n\n{ "kind": "glob", "query": "**/*.test.ts" }\n```\n\nServer-side: one call replaces dozens of `ls`+`read` round-trips. Results are scope-filtered. Glob dialect: `**`, `*`, `?` only (no braces/negation in v1).\n\n### Error codes (Tier 1)\n\n| Status | Code | Meaning |\n| ------ | ------------------- | --------------------------------------------------------------------------- |\n| 400 | BAD_REQUEST | Invalid path or body |\n| 401 | UNAUTHORIZED | Bad/missing token or X-Agent-Id |\n| 403 | FORBIDDEN | Scope mismatch or missing `delete` op |\n| 404 | NOT_FOUND | Path doesn\'t exist |\n| 409 | COLLAB_ACTIVE | Raw PUT rejected — doc is active-collab; use Tier-2 or send If-Collab-Match |\n| 412 | PRECONDITION_FAILED | If-Match sha mismatch (concurrent modification) |\n| 413 | PAYLOAD_TOO_LARGE | File exceeds 50 MB limit |\n| 429 | RATE_LIMITED | Honor `Retry-After` |\n\n---\n\n## Which tier do I use?\n\nEvery `GET /api/agent/fs/file/<path>` (and every Tier-2 snapshot read) returns `X-Collab-State`.\n\n| `X-Collab-State` | Meaning | Use |\n| ---------------- | --------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- |\n| `active` | Human has this `.md` open in the editor, OR it has unresolved comments. | **Tier 2 block-ops only.** A raw `PUT` returns `409 COLLAB_ACTIVE`. |\n| `tracked` | `.md` has a sidecar (prior collab history), no active session. | Prefer Tier-2 for prose/semantic edits. Raw ok for mechanical/whole-file ops (reformat, regenerate). |\n| `untracked` | `.md`, no sidecar yet. | Raw is fine. Tier-2 creates a sidecar (starts provenance tracking). |\n| `not-markdown` | Any non-`.md` file. | **Tier-1 raw only.** Tier 2 does not apply. |\n\n**Rule (one sentence):** Read the file, check `X-Collab-State`, use Tier-2 if `active`, else use Tier-1. For non-markdown, always Tier-1.\n\n**Editing a `.md` safely:**\n\n```\n1. GET /api/agent/fs/file/<path>.md\n → note ETag (sha256) and X-Collab-Revision + X-Collab-State\n\n2a. If X-Collab-State == "active":\n → POST /api/agent/files/<path>.md (block-ops, Tier-2)\n Use the X-Collab-Snapshot URL. See "Mutating" section below.\n\n2b. Otherwise (tracked / untracked):\n → PUT /api/agent/fs/file/<path>.md (raw Tier-1)\n If-Match: "<ETag from step 1>"\n If-Collab-Match: <X-Collab-Revision from step 1>\n\n3. If you get 409 COLLAB_ACTIVE: the doc became active after your read.\n Switch to Tier-2 (block-ops) using the URL in the response body.\n```\n\n**MCP-capable agents:** run `npx wiki-viewer-mcp` (set `WIKI_VIEWER_URL`, `WIKI_VIEWER_TOKEN`, `WIKI_VIEWER_AGENT_ID`; its `register` command auto-approves when a service token is available). It exposes **Tier-1 file tools only** — `read_file`, `write_file`, `edit_file`, `list_directory`, `search`, `move_file`, `delete_file` — and reads `X-Collab-State` so it won\'t clobber an active doc: it blocks the write and tells you to use the collaborative path instead. The MCP shim has **no Tier-2 (block-ops / suggestion / comment) tools** — to co-write a doc, use the Tier-2 HTTP endpoints described above directly (the skill instructions cover them). Use the MCP for fast filework; use Tier-2 HTTP for reviewable doc collaboration.\n\n---\n\n## Working style\n\n- Read before write. Always GET a fresh snapshot to capture current `revision` and block `ref`s.\n- One file per request. There is no batch-across-files endpoint.\n- Atomic ops. Each POST applies all its ops or none. Order matters within a batch.\n- Write clean markdown. Legacy `basis`, `basisDetail`, and `inResponseTo` fields are accepted but ignored for backward compatibility.\n- Use `suggestion.add` when the human should review an inline marked change; use direct `block.*` ops when the change should apply immediately. The human is your collaborator, not your reviewer-of-last-resort.\n- Poll events between turns when the human is reviewing your work; respond to their comments rather than re-litigating.\n\n## Sample first interaction\n\n```\n1. GET /api/agents/install # discovery\n2. POST /api/agent/register # register (include "delete" in ops if needed)\n # on the server host? add X-Service-Token -> token comes back instantly, skip 3-4\n3. tell human: "approve me in the AI Panel"\n4. GET /api/agent/register/<regId> # poll until approved\n\n# Working mode (Tier-1, e.g. code files or untracked .md)\n5. GET /api/agent/fs/ls/src?recursive=true # list\n6. GET /api/agent/fs/file/src/main.ts # read -> capture ETag\n7. PUT /api/agent/fs/file/src/main.ts (If-Match: <sha>) # write\n\n# Collaborating mode (Tier-2, active .md)\n5. GET /api/agent/fs/file/notes/plan.md # read -> X-Collab-State: active\n6. GET /api/agent/files/notes/plan.md # read snapshot (Tier-2)\n7. POST /api/agent/files/notes/plan.md # suggest or mutate (Tier-2)\n8. GET /api/agent/events/notes/plan.md?after=<id> # listen for replies\n```\n'])},107836,e=>{"use strict";var t=e.i(985426),n=e.i(257574),r=e.i(507835),a=e.i(457789),s=e.i(119791),i=e.i(141062),o=e.i(957291),l=e.i(535899),d=e.i(610241),p=e.i(62749),c=e.i(624891),u=e.i(725836),h=e.i(532736),m=e.i(257858),f=e.i(135288),g=e.i(193695);e.i(484264);var v=e.i(315709),y=e.i(351216),w=e.i(754297);async function k(e){return new y.NextResponse(w.SKILL_MD,{status:200,headers:{"Content-Type":"text/markdown; charset=utf-8","Cache-Control":"no-store"}})}e.s(["GET",0,k,"runtime",0,"nodejs"],480242);var b=e.i(480242);let T=new t.AppRouteRouteModule({definition:{kind:n.RouteKind.APP_ROUTE,page:"/api/agents/skill/route",pathname:"/api/agents/skill",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/agents/skill/route.ts",nextConfigOutput:"standalone",userland:b,...{}}),{workAsyncStorage:R,workUnitAsyncStorage:E,serverHooks:I}=T;async function x(e,t,r){r.requestMeta&&(0,a.setRequestMeta)(e,r.requestMeta),T.isDev&&(0,a.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let y="/api/agents/skill/route";y=y.replace(/\/index$/,"")||"/";let w=await T.prepare(e,t,{srcPage:y,multiZoneDraftMode:!1});if(!w)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:k,params:b,nextConfig:R,parsedUrl:E,isDraftMode:I,prerenderManifest:x,routerServerContext:A,isOnDemandRevalidate:C,revalidateOnlyGenerated:S,resolvedPathname:O,clientReferenceManifest:_,serverActionsManifest:P}=w,U=(0,o.normalizeAppPath)(y),D=!!(x.dynamicRoutes[U]||x.routes[O]),N=async()=>((null==A?void 0:A.render404)?await A.render404(e,t,E,!1):t.end("This page could not be found"),null);if(D&&!I){let e=!!x.routes[O],t=x.dynamicRoutes[U];if(t&&!1===t.fallback&&!e){if(R.adapterPath)return await N();throw new g.NoFallbackError}}let M=null;!D||T.isDev||I||(M="/index"===(M=O)?"/":M);let j=!0===T.isDev||!D,q=D&&!j;P&&_&&(0,i.setManifestsSingleton)({page:y,clientReferenceManifest:_,serverActionsManifest:P});let L=e.method||"GET",F=(0,s.getTracer)(),X=F.getActiveScopeSpan(),B=!!(null==A?void 0:A.isWrappedByNextServer),W=!!(0,a.getRequestMeta)(e,"minimalMode"),H=(0,a.getRequestMeta)(e,"incrementalCache")||await T.getIncrementalCache(e,R,x,W);null==H||H.resetRequestCache(),globalThis.__incrementalCache=H;let G={params:b,previewProps:x.preview,renderOpts:{experimental:{authInterrupts:!!R.experimental.authInterrupts},cacheComponents:!!R.cacheComponents,supportsDynamicResponse:j,incrementalCache:H,cacheLifeProfiles:R.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,n,r,a)=>T.onRequestError(e,t,r,a,A)},sharedContext:{buildId:k}},$=new l.NodeNextRequest(e),K=new l.NodeNextResponse(t),z=d.NextRequestAdapter.fromNodeNextRequest($,(0,d.signalFromNodeResponse)(t));try{let a,i=async e=>T.handle(z,G).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let n=F.getRootSpanAttributes();if(!n)return;if(n.get("next.span_type")!==p.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${n.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let r=n.get("next.route");if(r){let t=`${L} ${r}`;e.setAttributes({"next.route":r,"http.route":r,"next.span_name":t}),e.updateName(t),a&&a!==e&&(a.setAttribute("http.route",r),a.updateName(t))}else e.updateName(`${L} ${y}`)}),o=async a=>{var s,o;let l=async({previousCacheEntry:n})=>{try{if(!W&&C&&S&&!n)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await i(a);e.fetchMetrics=G.renderOpts.fetchMetrics;let o=G.renderOpts.pendingWaitUntil;o&&r.waitUntil&&(r.waitUntil(o),o=void 0);let l=G.renderOpts.collectedTags;if(!D)return await (0,u.sendResponse)($,K,s,G.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(s.headers);l&&(t[f.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let n=void 0!==G.renderOpts.collectedRevalidate&&!(G.renderOpts.collectedRevalidate>=f.INFINITE_CACHE)&&G.renderOpts.collectedRevalidate,r=void 0===G.renderOpts.collectedExpire||G.renderOpts.collectedExpire>=f.INFINITE_CACHE?void 0:G.renderOpts.collectedExpire;return{value:{kind:v.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:n,expire:r}}}}catch(t){throw(null==n?void 0:n.isStale)&&await T.onRequestError(e,t,{routerKind:"App Router",routePath:y,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:q,isOnDemandRevalidate:C})},!1,A),t}},d=await T.handleResponse({req:e,nextConfig:R,cacheKey:M,routeKind:n.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:x,isRoutePPREnabled:!1,isOnDemandRevalidate:C,revalidateOnlyGenerated:S,responseGenerator:l,waitUntil:r.waitUntil,isMinimalMode:W});if(!D)return null;if((null==d||null==(s=d.value)?void 0:s.kind)!==v.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==d||null==(o=d.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});W||t.setHeader("x-nextjs-cache",C?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),I&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let p=(0,h.fromNodeOutgoingHttpHeaders)(d.value.headers);return W&&D||p.delete(f.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||t.getHeader("Cache-Control")||p.get("Cache-Control")||p.set("Cache-Control",(0,m.getCacheControlHeader)(d.cacheControl)),await (0,u.sendResponse)($,K,new Response(d.value.body,{headers:p,status:d.value.status||200})),null};B&&X?await o(X):(a=F.getActiveScopeSpan(),await F.withPropagatedContext(e.headers,()=>F.trace(p.BaseServerSpan.handleRequest,{spanName:`${L} ${y}`,kind:s.SpanKind.SERVER,attributes:{"http.method":L,"http.target":e.url}},o),void 0,!B))}catch(t){if(t instanceof g.NoFallbackError||await T.onRequestError(e,t,{routerKind:"App Router",routePath:U,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:q,isOnDemandRevalidate:C})},!1,A),D)throw t;return await (0,u.sendResponse)($,K,new Response(null,{status:500})),null}}e.s(["handler",0,x,"patchFetch",0,function(){return(0,r.patchFetch)({workAsyncStorage:R,workUnitAsyncStorage:E})},"routeModule",0,T,"serverHooks",0,I,"workAsyncStorage",0,R,"workUnitAsyncStorage",0,E],107836)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=%5Broot-of-the-server%5D__0~a6cyg._.js.map
|