@nagellabs/libi 0.1.7 → 0.1.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/build-manifest.json +5 -5
- package/.next/diagnostics/route-bundle-stats.json +16 -16
- package/.next/externals-manifest.json +1 -1
- package/.next/fallback-build-manifest.json +3 -3
- package/.next/prerender-manifest.json +3 -3
- package/.next/required-server-files.js +1 -1
- package/.next/required-server-files.json +1 -1
- package/.next/server/app/(app)/editor/page/build-manifest.json +2 -2
- package/.next/server/app/(app)/instructions/page/build-manifest.json +2 -2
- package/.next/server/app/(app)/mcps-skills/page/build-manifest.json +2 -2
- package/.next/server/app/(app)/mcps-skills/skills/[name]/page/build-manifest.json +2 -2
- package/.next/server/app/(app)/mcps-skills/skills/new/page/build-manifest.json +2 -2
- package/.next/server/app/(app)/settings/page/build-manifest.json +2 -2
- package/.next/server/app/_global-error/page/build-manifest.json +2 -2
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page/build-manifest.json +2 -2
- package/.next/server/app/api/agent/cancel/route.js +8 -8
- package/.next/server/app/api/agent/cancel/route.js.nft.json +1 -1
- package/.next/server/app/api/agent/detect/route.js.nft.json +1 -1
- package/.next/server/app/api/agent/dispatch/route.js +5 -5
- package/.next/server/app/api/agent/dispatch/route.js.nft.json +1 -1
- package/.next/server/app/api/agent/events/route.js +11 -11
- package/.next/server/app/api/agent/events/route.js.nft.json +1 -1
- package/.next/server/app/api/agent/messages/route.js +7 -7
- package/.next/server/app/api/agent/messages/route.js.nft.json +1 -1
- package/.next/server/app/api/agent/providers/route.js.nft.json +1 -1
- package/.next/server/app/api/agent/send/route.js +7 -7
- package/.next/server/app/api/agent/send/route.js.nft.json +1 -1
- package/.next/server/app/api/agent/start/route.js +7 -7
- package/.next/server/app/api/agent/start/route.js.nft.json +1 -1
- package/.next/server/app/api/agent/stop/route.js +8 -8
- package/.next/server/app/api/agent/stop/route.js.nft.json +1 -1
- package/.next/server/app/api/agents/[agentId]/install/route.js +4 -4
- package/.next/server/app/api/agents/[agentId]/install/route.js.nft.json +1 -1
- package/.next/server/app/api/codex/connect/route.js.nft.json +1 -1
- package/.next/server/app/api/db/resolve/route.js +9 -9
- package/.next/server/app/api/db/resolve/route.js.nft.json +1 -1
- package/.next/server/app/api/export/chromium/route.js +5 -5
- package/.next/server/app/api/export/chromium/route.js.nft.json +1 -1
- package/.next/server/app/api/export/route.js +4 -4
- package/.next/server/app/api/export/route.js.nft.json +1 -1
- package/.next/server/app/api/files/by-id/[fileId]/filmstrip-status/route.js +4 -4
- package/.next/server/app/api/files/by-id/[fileId]/filmstrip-status/route.js.nft.json +1 -1
- package/.next/server/app/api/files/by-id/[fileId]/rename/route.js +7 -7
- package/.next/server/app/api/files/by-id/[fileId]/rename/route.js.nft.json +1 -1
- package/.next/server/app/api/folders/[folderId]/duplicate/route.js +6 -6
- package/.next/server/app/api/folders/[folderId]/duplicate/route.js.nft.json +1 -1
- package/.next/server/app/api/install-from-url/route.js +10 -10
- package/.next/server/app/api/install-from-url/route.js.nft.json +1 -1
- package/.next/server/app/api/instructions/override/route.js.nft.json +1 -1
- package/.next/server/app/api/jobs/[id]/events/route.js +8 -8
- package/.next/server/app/api/jobs/[id]/events/route.js.nft.json +1 -1
- package/.next/server/app/api/jobs/[id]/retry/route.js +4 -4
- package/.next/server/app/api/jobs/[id]/retry/route.js.nft.json +1 -1
- package/.next/server/app/api/jobs/[id]/route.js +4 -4
- package/.next/server/app/api/jobs/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/jobs/[id]/status/route.js +3 -3
- package/.next/server/app/api/jobs/[id]/status/route.js.nft.json +1 -1
- package/.next/server/app/api/jobs/route.js +9 -9
- package/.next/server/app/api/jobs/route.js.nft.json +1 -1
- package/.next/server/app/api/notify/route.js.nft.json +1 -1
- package/.next/server/app/api/pieces/[pieceId]/duplicate/route.js +4 -4
- package/.next/server/app/api/pieces/[pieceId]/duplicate/route.js.nft.json +1 -1
- package/.next/server/app/api/pieces/[pieceId]/tracks/[trackId]/manual-anchors/apply-deletes/route.js +9 -9
- package/.next/server/app/api/pieces/[pieceId]/tracks/[trackId]/manual-anchors/apply-deletes/route.js.nft.json +1 -1
- package/.next/server/app/api/pieces/[pieceId]/tracks/[trackId]/manual-anchors/route.js +9 -9
- package/.next/server/app/api/pieces/[pieceId]/tracks/[trackId]/manual-anchors/route.js.nft.json +1 -1
- package/.next/server/app/api/render/frames/route.js +7 -7
- package/.next/server/app/api/render/frames/route.js.nft.json +1 -1
- package/.next/server/app/api/runtime/update/route.js +5 -5
- package/.next/server/app/api/runtime/update/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/[sessionId]/activate/route.js +8 -8
- package/.next/server/app/api/sessions/[sessionId]/activate/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/[sessionId]/context/route.js +8 -8
- package/.next/server/app/api/sessions/[sessionId]/context/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/[sessionId]/deactivate/route.js +8 -8
- package/.next/server/app/api/sessions/[sessionId]/deactivate/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/[sessionId]/model/route.js +7 -7
- package/.next/server/app/api/sessions/[sessionId]/model/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/[sessionId]/permission/route.js +7 -7
- package/.next/server/app/api/sessions/[sessionId]/permission/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/permission-modes/route.js +7 -7
- package/.next/server/app/api/sessions/permission-modes/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/route.js +7 -7
- package/.next/server/app/api/sessions/route.js.nft.json +1 -1
- package/.next/server/app/api/settings/mcp-servers/[id]/dependencies/route.js +7 -7
- package/.next/server/app/api/settings/mcp-servers/[id]/dependencies/route.js.nft.json +1 -1
- package/.next/server/app/api/settings/mcp-servers/[id]/install-plan/route.js +5 -5
- package/.next/server/app/api/settings/mcp-servers/[id]/install-plan/route.js.nft.json +1 -1
- package/.next/server/app/api/settings/mcp-servers/[id]/retry/route.js +7 -7
- package/.next/server/app/api/settings/mcp-servers/[id]/retry/route.js.nft.json +1 -1
- package/.next/server/app/api/settings/mcp-servers/[id]/retry-dep/route.js +7 -7
- package/.next/server/app/api/settings/mcp-servers/[id]/retry-dep/route.js.nft.json +1 -1
- package/.next/server/app/api/settings/mcp-servers/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/settings/mcp-servers/resync/route.js +7 -7
- package/.next/server/app/api/settings/mcp-servers/resync/route.js.nft.json +1 -1
- package/.next/server/app/api/settings/memories/route.js.nft.json +1 -1
- package/.next/server/app/api/skill-eval/configure/route.js +8 -8
- package/.next/server/app/api/skill-eval/configure/route.js.nft.json +1 -1
- package/.next/server/app/api/terminal/sessions/route.js +2 -2
- package/.next/server/app/api/terminal/ws-info/route.js.nft.json +1 -1
- package/.next/server/app/api/tracking/run/route.js +4 -4
- package/.next/server/app/api/tracking/run/route.js.nft.json +1 -1
- package/.next/server/app/page/build-manifest.json +2 -2
- package/.next/server/chunks/[root-of-the-server]__04thdbt._.js +3 -3
- package/.next/server/chunks/[root-of-the-server]__04thdbt._.js.map +2 -2
- package/.next/server/chunks/[root-of-the-server]__05bfu4m._.js +3 -3
- package/.next/server/chunks/[root-of-the-server]__05bfu4m._.js.map +2 -2
- package/.next/server/chunks/[root-of-the-server]__09qyvq1._.js +3 -3
- package/.next/server/chunks/[root-of-the-server]__09qyvq1._.js.map +2 -2
- package/.next/server/chunks/[root-of-the-server]__0gnut6f._.js +3 -3
- package/.next/server/chunks/[root-of-the-server]__0gnut6f._.js.map +1 -1
- package/.next/server/chunks/[root-of-the-server]__0l_-iy7._.js +3 -3
- package/.next/server/chunks/[root-of-the-server]__0l_-iy7._.js.map +1 -1
- package/.next/server/chunks/[root-of-the-server]__0s0b6ty._.js +3 -3
- package/.next/server/chunks/[root-of-the-server]__0s0b6ty._.js.map +1 -1
- package/.next/server/chunks/[root-of-the-server]__0sj68ta._.js +3 -3
- package/.next/server/chunks/[root-of-the-server]__0sj68ta._.js.map +1 -1
- package/.next/server/chunks/[root-of-the-server]__10oxitf._.js +3 -3
- package/.next/server/chunks/[root-of-the-server]__10oxitf._.js.map +2 -2
- package/.next/server/chunks/[root-of-the-server]__11.cp_g._.js +3 -3
- package/.next/server/chunks/[root-of-the-server]__11.cp_g._.js.map +2 -2
- package/.next/server/chunks/_04i643i._.js +3 -3
- package/.next/server/chunks/_0_t4b-f._.js +4 -4
- package/.next/server/chunks/_0gc3hkv._.js +3 -3
- package/.next/server/chunks/_0hainf0._.js +4 -4
- package/.next/server/chunks/_0jrwb4i._.js +3 -3
- package/.next/server/chunks/_0ms~zo_._.js +3 -3
- package/.next/server/chunks/_0ou5g0c._.js +4 -4
- package/.next/server/chunks/_0ovzm6d._.js +4 -4
- package/.next/server/chunks/_0pwx1vo._.js +3 -3
- package/.next/server/chunks/_0snzqta._.js +4 -4
- package/.next/server/chunks/lib_08x49mw._.js +3 -3
- package/.next/server/chunks/lib_runtime_runtime-prune_ts_0eaw~-q._.js +3 -3
- package/.next/server/chunks/node_modules_003ody_._.js +3 -3
- package/.next/server/chunks/ssr/_0675jux._.js +3 -3
- package/.next/server/instrumentation.js.nft.json +1 -1
- package/.next/server/middleware-build-manifest.js +5 -5
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/{0tfripjpjgh0x.js → 0rgnvt2t.fexk.js} +3 -3
- package/.next/static/chunks/{turbopack-0nj3aucu1vtlz.js → turbopack-06tait4frhc5a.js} +3 -3
- package/.next/trace-build +1 -1
- package/THIRD-PARTY-NOTICES.md +1 -1
- package/dist-cli/BUILD_INFO.json +6 -6
- package/dist-cli/lib/analytics/config.js +1 -1
- package/dist-cli/lib/install/next-externals.js +6 -1
- package/dist-cli/lib/onboarding/piece/v1/index.js +5 -1
- package/dist-cli/lib/server/next-server.js +12 -2
- package/lib/analytics/config.ts +15 -2
- package/lib/install/next-externals.ts +36 -1
- package/lib/onboarding/piece/v1/index.ts +5 -1
- package/lib/server/next-server.ts +29 -4
- package/package.json +1 -1
- /package/.next/static/{AKrgjfjGvLuWkXofXFBpx → 05vWgPQtQKJ6EuLHg8nZ3}/_buildManifest.js +0 -0
- /package/.next/static/{AKrgjfjGvLuWkXofXFBpx → 05vWgPQtQKJ6EuLHg8nZ3}/_clientMiddlewareManifest.js +0 -0
- /package/.next/static/{AKrgjfjGvLuWkXofXFBpx → 05vWgPQtQKJ6EuLHg8nZ3}/_ssgManifest.js +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="
|
|
1
|
+
;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="a6aa441c-0727-03c5-76b1-f710e9cf083e")}catch(e){}}();
|
|
2
2
|
module.exports=[324725,(e,t,r)=>{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"))},233405,(e,t,r)=>{t.exports=e.x("child_process",()=>require("child_process"))},246387,e=>{"use strict";var t=e.i(660526);function r(){return t.default.platform()}function i(){return"win32"===r()}e.s(["exeSuffix",0,function(){return i()?".exe":""},"isMac",0,function(){return"darwin"===r()},"isWindows",0,i])},427699,(e,t,r)=>{t.exports=e.x("events",()=>require("events"))},452183,e=>{"use strict";var t=e.i(427699);let r=globalThis;r.__navEmitter||(r.__navEmitter=new t.EventEmitter,r.__navEmitter.setMaxListeners(50));let i=r.__navEmitter;e.s(["emitHighlight",0,function(e){i.emit("highlight",e)},"emitHighlightEffect",0,function(e){i.emit("highlight_effect",e)},"emitSecuritySettingsChanged",0,function(e){i.emit("security_settings_changed",e)},"emitSetComplexityMode",0,function(e){i.emit("set_complexity_mode",e)},"navigationEmitter",0,i])},632070,e=>{"use strict";var t=e.i(522734),r=e.i(446786),i=e.i(814747),n=e.i(270958),s=e.i(692855);function a(){if((0,s.isTestMode)())return!1;let e=i.default.join(r.default.homedir(),".libi");return(0,n.getLibiHome)()===e}function l(){let e=process.env.CODEX_HOME;return e||(a()?i.default.join(r.default.homedir(),".codex"):i.default.join((0,n.getLibiHome)(),".codex"))}e.s(["ensureCodexHome",0,function(){let e=l();try{t.default.mkdirSync(e,{recursive:!0})}catch{}return e},"isCanonicalLibiInstance",0,a,"resolveCodexHome",0,l])},651970,706387,e=>{"use strict";var t=e.i(902157),r=e.i(750227),i=e.i(875225),n=e.i(190793);e.i(945122);var s=e.i(478181),a=e.i(270958),l=e.i(640911),o=e.i(20535);let c=/\.(md|txt|json|ya?ml|toml|csv|tsv|html?|xml|js|ts|tsx|jsx|css|sh|py|rb|go|rs)$/i;function u(e,i){let n=r.join(e,i),s=r.join(n,"SKILL.md");return t.existsSync(s)?{body:t.readFileSync(s,"utf-8"),supportingFiles:function(e){let i=[];if(!t.existsSync(e))return i;let n=s=>{let a=r.join(e,s);for(let l of t.readdirSync(a,{withFileTypes:!0})){if(l.isSymbolicLink())continue;let a=r.join(s,l.name);if(l.isDirectory())n(a);else if(l.isFile()&&"SKILL.md"!==a){let n=c.test(l.name);i.push({relPath:a,contents:n?t.readFileSync(r.join(e,a),"utf-8"):t.readFileSync(r.join(e,a))})}}};return n("."),i}(n)}:null}async function d(){let e=(0,n.getDb)().select().from(s.skills).where((0,i.eq)(s.skills.enabled,!0)).orderBy(s.skills.source).all(),t=new Map;for(let r of e){let e,i,n=[];if("bundled"===r.source){let t=u((0,a.getBundledSkillsDir)(),r.name);if(!t){l.serverLogger.warn({name:r.name},"skills.bundled_missing_on_disk");continue}e=t.body,n=t.supportingFiles}else{if(!r.body){l.serverLogger.warn({name:r.name},"skills.user_missing_body");continue}e=r.body;let t=u((0,a.getLibiSkillsDir)(),r.name);n=t?.supportingFiles??[]}try{({frontmatter:i}=(0,o.parseSkillBody)(e))}catch(e){l.serverLogger.error({err:e,name:r.name},"skills.parse_failed");continue}let s=t.get(r.name);if(!s||("user"!==s.source||"bundled"!==r.source)&&"bundled"===s.source&&"user"===r.source)t.set(r.name,{id:r.id,name:r.name,description:r.description,source:r.source,enabled:r.enabled,body:e,frontmatter:i,supportingFiles:n,tags:Array.isArray(i.tags)?i.tags:[]})}return Array.from(t.values())}e.s(["loadEnabledSkills",0,d],651970);var f=e.i(666680);let p=[".claude/skills",".agents/skills"];function h(e){return f.createHash("sha256").update(e).digest("hex")}function m(e,i){if(t.mkdirSync(r.dirname(e),{recursive:!0}),t.existsSync(e)){let r=t.readFileSync(e),n=Buffer.isBuffer(i)?i:Buffer.from(i);if(h(r)===h(n))return!1}return t.writeFileSync(e,i),!0}function g(e){return t.existsSync(e)?t.readdirSync(e,{withFileTypes:!0}).filter(e=>e.isDirectory()).map(e=>e.name):[]}let v=".libi-managed.json";function y(e){let i=r.join(e,v);if(!t.existsSync(i))return null;try{let e=JSON.parse(t.readFileSync(i,"utf-8"));if(e&&Array.isArray(e.managed))return new Set(e.managed.filter(e=>"string"==typeof e))}catch{}return null}async function _(e,i){let n=new Set(i.map(e=>e.name)),s=0,o=0,c=r.resolve(e)===r.resolve((0,a.getLibiAgentDir)());for(let a of p){let l=r.join(e,a);t.mkdirSync(l,{recursive:!0});let u=y(l)??(c?new Set(g(l)):new Set);for(let e of g(l))!n.has(e)&&u.has(e)&&(t.rmSync(r.join(l,e),{recursive:!0,force:!0}),o++);for(let e of i){let i=r.join(l,e.name);m(r.join(i,"SKILL.md"),e.body)&&s++;let n=new Set(e.supportingFiles.map(e=>e.relPath)),a=e=>{let s=r.join(i,e);if(t.existsSync(s))for(let l of t.readdirSync(s,{withFileTypes:!0})){let s=r.join(e,l.name);l.isDirectory()?a(s):"SKILL.md"!==s&&!n.has(s)&&(t.rmSync(r.join(i,s),{force:!0}),o++)}};for(let t of(a("."),e.supportingFiles))m(r.join(i,t.relPath),t.contents)&&s++;!function e(i){if(t.existsSync(i)){for(let n of t.readdirSync(i,{withFileTypes:!0}))if(n.isDirectory()){let s=r.join(i,n.name);e(s),0===t.readdirSync(s).length&&t.rmdirSync(s)}}}(i)}m(r.join(l,v),JSON.stringify({managed:[...n].sort()},null,2)+"\n")}!function(e){let i=r.join(e,"GEMINI.md");try{if(!t.existsSync(i))return;t.readFileSync(i,"utf-8").includes("<!-- libi-skills-start -->")&&t.rmSync(i,{force:!0})}catch(t){l.serverLogger.warn({err:t,workspaceDir:e,tag:"skills",op:"gemini_sweep_failed"},"gemini.sweep_failed")}}(e),function(e,i){let n=r.join(e,i);try{if(!t.existsSync(n))return;let e=y(n);if(e){for(let i of e)t.rmSync(r.join(n,i),{recursive:!0,force:!0});t.rmSync(r.join(n,v),{force:!0})}if(t.existsSync(n)&&0===t.readdirSync(n).length){t.rmdirSync(n);let e=r.dirname(n);t.existsSync(e)&&0===t.readdirSync(e).length&&t.rmdirSync(e)}}catch(t){l.serverLogger.warn({err:t,workspaceDir:e,dialect:i,tag:"skills",op:"legacy_dialect_sweep_failed"},"skills.legacy_dialect_sweep_failed")}}(e,".codex/skills"),l.serverLogger.info({writes:s,removed:o,enabled:i.length},"skills.workspace_written")}e.s(["writeSkillsToWorkspace",0,_],706387)},73953,366902,608405,e=>{"use strict";var t=e.i(902157),r=e.i(750227),i=e.i(270958);function n(){return[r.default.join(process.cwd(),"mcp","templates","instructions.md"),r.default.resolve("/ROOT/lib/instructions","..","..","mcp","templates","instructions.md"),r.default.resolve("/ROOT/lib/instructions","..","..","..","mcp","templates","instructions.md")]}function s(){for(let e of n())if(t.default.existsSync(e))return t.default.readFileSync(e,"utf-8");throw Error(`instructions.md template not found (tried: ${n().join(", ")})`)}function a(){return r.default.join((0,i.getLibiInstructionsDir)(),"instructions.md")}function l(){return r.default.join((0,i.getLibiInstructionsDir)(),".base.md")}e.s(["loadBundledTemplate",0,s],366902),e.s(["getInstructionsStatus",0,function(){let e;if(!t.default.existsSync(a()))return{source:"bundled",bundledUpdatedSinceFork:!1};try{let r=t.default.readFileSync(l(),"utf-8");e=s()!==r}catch{e="unknown"}return{source:"override",bundledUpdatedSinceFork:e}},"readInstructionsOverride",0,function(){try{return t.default.readFileSync(a(),"utf-8")}catch{return null}},"revertInstructionsOverride",0,function(){t.default.rmSync(a(),{force:!0}),t.default.rmSync(l(),{force:!0})},"saveInstructionsOverride",0,function(e){if(0===e.trim().length)throw Error("Override content must not be empty — revert instead");let r=(0,i.getLibiInstructionsDir)();t.default.mkdirSync(r,{recursive:!0}),t.default.existsSync(l())||t.default.writeFileSync(l(),s()),t.default.writeFileSync(a(),e)}],73953);let o=/<!--\s*(\/?)libi-agent:(claude|codex)\s*-->/g;e.s(["renderDialect",0,function(e,t){let r;o.lastIndex=0;let i="",n=0,s=null,a=!0;for(;null!==(r=o.exec(e));){let l="/"===r[1],o=r[2],c=e.slice(n,r.index);if(l){if(null===s)throw Error(`renderDialect: stray closing libi-agent marker for '${o}' with no matching opener`);if(o!==s)throw Error(`renderDialect: mismatched libi-agent marker — '${s}' block closed by '${o}'`);a&&(i+=c),s=null,a=!0}else{if(null!==s)throw Error(`renderDialect: nested libi-agent marker — '${o}' block opened inside an open '${s}' block`);i+=c,s=o,a=o===t}n=r.index+r[0].length}if(null!==s)throw Error(`renderDialect: unclosed libi-agent marker — '${s}' block was never closed`);return i+e.slice(n)}],608405)},541807,e=>{"use strict";e.s(["LIBI_SKILL_VERSION",0,"1.17.0"])},32558,e=>{"use strict";var t=e.i(902157),r=e.i(750227),i=e.i(270958);e.s(["MEMORIES_MAX_CHARS",0,8e3,"readMemories",0,function(){try{return t.default.readFileSync((0,i.getLibiMemoriesPath)(),"utf-8")}catch{return""}},"writeMemories",0,function(e){if(e.length>8e3)throw Error("Memories exceed 8000 chars");let n=(0,i.getLibiMemoriesPath)();t.default.mkdirSync(r.default.dirname(n),{recursive:!0}),t.default.writeFileSync(n,e)}])},358901,e=>{"use strict";var t=e.i(522734),r=e.i(814747),i=e.i(640911),n=e.i(541807),s=e.i(692855),a=e.i(366902),l=e.i(73953),o=e.i(32558),c=e.i(608405);let u="<!-- libi-instructions-end -->",d="<!-- libi-memories-start -->",f="<!-- libi-memories-end -->",p=`
|
|
3
3
|
> 🧪 **TEST MODE ACTIVE** — \`LIBI_TEST_MODE=1\` is set. The \`fal-ai\` MCP
|
|
4
4
|
> is present but runs as a sandboxed fake: it exposes the real fal tool surface
|
|
@@ -27,7 +27,7 @@ ${i}`;if(null===e||""===e.trim())return`${n}
|
|
|
27
27
|
`;let s=e.indexOf(r),a=e.indexOf(i);return -1!==s&&-1!==a&&a>s?e.slice(0,s)+n+e.slice(a+i.length):`${e.trimEnd()}
|
|
28
28
|
|
|
29
29
|
${n}
|
|
30
|
-
`}(e,m))}}t.default.writeFileSync(r.default.join(e,".version"),n.LIBI_SKILL_VERSION),(0,v.writeSettingsFile)(e),(0,y.syncCodexGlobalMcpsIfConnected)().catch(e=>{i.serverLogger.warn({err:e,tag:"codex-config",op:"error"},"syncCodexGlobalMcpsIfConnected rejected")});try{let t=await (0,_.loadEnabledSkills)();await (0,S.writeSkillsToWorkspace)(e,t)}catch(e){i.serverLogger.error({err:e},"skills.write_failed_during_workspace_prep")}}async function x(){let{getProcessManager:t}=await e.A(794708),{getSessionManager:r}=await e.A(700492),n=r();for(let e of(0,b.getAgentDirWriteTargets)())await w(e);let s=t(),a=await s.terminateAll();return n.resetAll(a),i.serverLogger.info({sessionsTerminated:a},"workspace.regenerate"),{sessionsTerminated:a}}e.s(["prepareAgentDir",0,w,"regenerateAndRestart",0,x],358901)},100314,e=>{"use strict";var t=e.i(747909),r=e.i(174017),i=e.i(996250),n=e.i(759756),s=e.i(561916),a=e.i(174677),l=e.i(869741),o=e.i(316795),c=e.i(487718),u=e.i(995169),d=e.i(47587),f=e.i(666012),p=e.i(570101),h=e.i(626937),m=e.i(10372),g=e.i(193695);e.i(820232);var v=e.i(600220),y=e.i(89171),_=e.i(73953),S=e.i(358901),b=e.i(452183),w=e.i(640911);async function x(e){let t;try{t=await e.json()}catch{return y.NextResponse.json({error:"Invalid JSON"},{status:400})}let r="string"==typeof t.content?t.content:"";if(0===r.trim().length)return y.NextResponse.json({error:"Override content must not be empty"},{status:400});(0,_.saveInstructionsOverride)(r),w.serverLogger.warn({tag:"security",op:"instructions_override_http_write"},"agent instructions override written via HTTP settings route"),(0,b.emitSecuritySettingsChanged)({kind:"instructions-override",via:"http"});let{sessionsTerminated:i}=await (0,S.regenerateAndRestart)();return y.NextResponse.json({ok:!0,sessionsTerminated:i})}async function k(){(0,_.revertInstructionsOverride)(),w.serverLogger.warn({tag:"security",op:"instructions_override_http_revert"},"agent instructions override reverted via HTTP settings route"),(0,b.emitSecuritySettingsChanged)({kind:"instructions-override",via:"http",reverted:!0});let{sessionsTerminated:e}=await (0,S.regenerateAndRestart)();return y.NextResponse.json({ok:!0,sessionsTerminated:e})}e.s(["DELETE",0,k,"POST",0,x],79580);var E=e.i(79580);let R=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/instructions/override/route",pathname:"/api/instructions/override",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/app/api/instructions/override/route.ts",nextConfigOutput:"",userland:E,...{}}),{workAsyncStorage:j,workUnitAsyncStorage:T,serverHooks:A}=R;async function C(e,t,i){i.requestMeta&&(0,n.setRequestMeta)(e,i.requestMeta),R.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let y="/api/instructions/override/route";y=y.replace(/\/index$/,"")||"/";let _=await R.prepare(e,t,{srcPage:y,multiZoneDraftMode:!1});if(!_)return t.statusCode=400,t.end("Bad Request"),null==i.waitUntil||i.waitUntil.call(i,Promise.resolve()),null;let{buildId:S,params:b,nextConfig:w,parsedUrl:x,isDraftMode:k,prerenderManifest:E,routerServerContext:j,isOnDemandRevalidate:T,revalidateOnlyGenerated:A,resolvedPathname:C,clientReferenceManifest:I,serverActionsManifest:L}=_,O=(0,l.normalizeAppPath)(y),P=!!(E.dynamicRoutes[O]||E.routes[C]),M=async()=>((null==j?void 0:j.render404)?await j.render404(e,t,x,!1):t.end("This page could not be found"),null);if(P&&!k){let e=!!E.routes[C],t=E.dynamicRoutes[O];if(t&&!1===t.fallback&&!e){if(w.adapterPath)return await M();throw new g.NoFallbackError}}let D=null;!P||R.isDev||k||(D="/index"===(D=C)?"/":D);let N=!0===R.isDev||!P,F=P&&!N;L&&I&&(0,a.setManifestsSingleton)({page:y,clientReferenceManifest:I,serverActionsManifest:L});let $=e.method||"GET",H=(0,s.getTracer)(),q=H.getActiveScopeSpan(),U=!!(null==j?void 0:j.isWrappedByNextServer),B=!!(0,n.getRequestMeta)(e,"minimalMode"),K=(0,n.getRequestMeta)(e,"incrementalCache")||await R.getIncrementalCache(e,w,E,B);null==K||K.resetRequestCache(),globalThis.__incrementalCache=K;let z={params:b,previewProps:E.preview,renderOpts:{experimental:{authInterrupts:!!w.experimental.authInterrupts},cacheComponents:!!w.cacheComponents,supportsDynamicResponse:N,incrementalCache:K,cacheLifeProfiles:w.cacheLife,waitUntil:i.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,i,n)=>R.onRequestError(e,t,i,n,j)},sharedContext:{buildId:S}},V=new o.NodeNextRequest(e),G=new o.NodeNextResponse(t),W=c.NextRequestAdapter.fromNodeNextRequest(V,(0,c.signalFromNodeResponse)(t));try{let n,a=async e=>R.handle(W,z).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=H.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==u.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 i=r.get("next.route");if(i){let t=`${$} ${i}`;e.setAttributes({"next.route":i,"http.route":i,"next.span_name":t}),e.updateName(t),n&&n!==e&&(n.setAttribute("http.route",i),n.updateName(t))}else e.updateName(`${$} ${y}`)}),l=async n=>{var s,l;let o=async({previousCacheEntry:r})=>{try{if(!B&&T&&A&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await a(n);e.fetchMetrics=z.renderOpts.fetchMetrics;let l=z.renderOpts.pendingWaitUntil;l&&i.waitUntil&&(i.waitUntil(l),l=void 0);let o=z.renderOpts.collectedTags;if(!P)return await (0,f.sendResponse)(V,G,s,z.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,p.toNodeOutgoingHttpHeaders)(s.headers);o&&(t[m.NEXT_CACHE_TAGS_HEADER]=o),!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,i=void 0===z.renderOpts.collectedExpire||z.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:z.renderOpts.collectedExpire;return{value:{kind:v.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:i}}}}catch(t){throw(null==r?void 0:r.isStale)&&await R.onRequestError(e,t,{routerKind:"App Router",routePath:y,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:F,isOnDemandRevalidate:T})},!1,j),t}},c=await R.handleResponse({req:e,nextConfig:w,cacheKey:D,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:E,isRoutePPREnabled:!1,isOnDemandRevalidate:T,revalidateOnlyGenerated:A,responseGenerator:o,waitUntil:i.waitUntil,isMinimalMode:B});if(!P)return null;if((null==c||null==(s=c.value)?void 0:s.kind)!==v.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==c||null==(l=c.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});B||t.setHeader("x-nextjs-cache",T?"REVALIDATED":c.isMiss?"MISS":c.isStale?"STALE":"HIT"),k&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,p.fromNodeOutgoingHttpHeaders)(c.value.headers);return B&&P||u.delete(m.NEXT_CACHE_TAGS_HEADER),!c.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,h.getCacheControlHeader)(c.cacheControl)),await (0,f.sendResponse)(V,G,new Response(c.value.body,{headers:u,status:c.value.status||200})),null};U&&q?await l(q):(n=H.getActiveScopeSpan(),await H.withPropagatedContext(e.headers,()=>H.trace(u.BaseServerSpan.handleRequest,{spanName:`${$} ${y}`,kind:s.SpanKind.SERVER,attributes:{"http.method":$,"http.target":e.url}},l),void 0,!U))}catch(t){if(t instanceof g.NoFallbackError||await R.onRequestError(e,t,{routerKind:"App Router",routePath:O,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:F,isOnDemandRevalidate:T})},!1,j),P)throw t;return await (0,f.sendResponse)(V,G,new Response(null,{status:500})),null}}e.s(["handler",0,C,"patchFetch",0,function(){return(0,i.patchFetch)({workAsyncStorage:j,workUnitAsyncStorage:T})},"routeModule",0,R,"serverHooks",0,A,"workAsyncStorage",0,j,"workUnitAsyncStorage",0,T],100314)},896235,e=>{e.v(e=>Promise.resolve().then(()=>e(640911)))},794708,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__0uadj5z._.js","server/chunks/lib_agents_0jbdl9~._.js","server/chunks/lib_agents_process-manager_ts_0zbkwal._.js","server/chunks/node_modules_zod_v4_classic_external_131y~ke.js"].map(t=>e.l(t))).then(()=>t(669285)))},700492,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__0_a-iao._.js","server/chunks/[root-of-the-server]__064-9mc._.js","server/chunks/lib_agents_0jbdl9~._.js","server/chunks/lib_analysis_manager_ts_01harro._.js","server/chunks/lib_0wi33xt._.js","server/chunks/lib_0.areff._.js","server/chunks/[root-of-the-server]__074l3tr._.js","server/chunks/
|
|
30
|
+
`}(e,m))}}t.default.writeFileSync(r.default.join(e,".version"),n.LIBI_SKILL_VERSION),(0,v.writeSettingsFile)(e),(0,y.syncCodexGlobalMcpsIfConnected)().catch(e=>{i.serverLogger.warn({err:e,tag:"codex-config",op:"error"},"syncCodexGlobalMcpsIfConnected rejected")});try{let t=await (0,_.loadEnabledSkills)();await (0,S.writeSkillsToWorkspace)(e,t)}catch(e){i.serverLogger.error({err:e},"skills.write_failed_during_workspace_prep")}}async function x(){let{getProcessManager:t}=await e.A(794708),{getSessionManager:r}=await e.A(700492),n=r();for(let e of(0,b.getAgentDirWriteTargets)())await w(e);let s=t(),a=await s.terminateAll();return n.resetAll(a),i.serverLogger.info({sessionsTerminated:a},"workspace.regenerate"),{sessionsTerminated:a}}e.s(["prepareAgentDir",0,w,"regenerateAndRestart",0,x],358901)},100314,e=>{"use strict";var t=e.i(747909),r=e.i(174017),i=e.i(996250),n=e.i(759756),s=e.i(561916),a=e.i(174677),l=e.i(869741),o=e.i(316795),c=e.i(487718),u=e.i(995169),d=e.i(47587),f=e.i(666012),p=e.i(570101),h=e.i(626937),m=e.i(10372),g=e.i(193695);e.i(820232);var v=e.i(600220),y=e.i(89171),_=e.i(73953),S=e.i(358901),b=e.i(452183),w=e.i(640911);async function x(e){let t;try{t=await e.json()}catch{return y.NextResponse.json({error:"Invalid JSON"},{status:400})}let r="string"==typeof t.content?t.content:"";if(0===r.trim().length)return y.NextResponse.json({error:"Override content must not be empty"},{status:400});(0,_.saveInstructionsOverride)(r),w.serverLogger.warn({tag:"security",op:"instructions_override_http_write"},"agent instructions override written via HTTP settings route"),(0,b.emitSecuritySettingsChanged)({kind:"instructions-override",via:"http"});let{sessionsTerminated:i}=await (0,S.regenerateAndRestart)();return y.NextResponse.json({ok:!0,sessionsTerminated:i})}async function k(){(0,_.revertInstructionsOverride)(),w.serverLogger.warn({tag:"security",op:"instructions_override_http_revert"},"agent instructions override reverted via HTTP settings route"),(0,b.emitSecuritySettingsChanged)({kind:"instructions-override",via:"http",reverted:!0});let{sessionsTerminated:e}=await (0,S.regenerateAndRestart)();return y.NextResponse.json({ok:!0,sessionsTerminated:e})}e.s(["DELETE",0,k,"POST",0,x],79580);var E=e.i(79580);let R=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/instructions/override/route",pathname:"/api/instructions/override",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/app/api/instructions/override/route.ts",nextConfigOutput:"",userland:E,...{}}),{workAsyncStorage:j,workUnitAsyncStorage:T,serverHooks:A}=R;async function C(e,t,i){i.requestMeta&&(0,n.setRequestMeta)(e,i.requestMeta),R.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let y="/api/instructions/override/route";y=y.replace(/\/index$/,"")||"/";let _=await R.prepare(e,t,{srcPage:y,multiZoneDraftMode:!1});if(!_)return t.statusCode=400,t.end("Bad Request"),null==i.waitUntil||i.waitUntil.call(i,Promise.resolve()),null;let{buildId:S,params:b,nextConfig:w,parsedUrl:x,isDraftMode:k,prerenderManifest:E,routerServerContext:j,isOnDemandRevalidate:T,revalidateOnlyGenerated:A,resolvedPathname:C,clientReferenceManifest:I,serverActionsManifest:L}=_,O=(0,l.normalizeAppPath)(y),P=!!(E.dynamicRoutes[O]||E.routes[C]),M=async()=>((null==j?void 0:j.render404)?await j.render404(e,t,x,!1):t.end("This page could not be found"),null);if(P&&!k){let e=!!E.routes[C],t=E.dynamicRoutes[O];if(t&&!1===t.fallback&&!e){if(w.adapterPath)return await M();throw new g.NoFallbackError}}let D=null;!P||R.isDev||k||(D="/index"===(D=C)?"/":D);let N=!0===R.isDev||!P,F=P&&!N;L&&I&&(0,a.setManifestsSingleton)({page:y,clientReferenceManifest:I,serverActionsManifest:L});let $=e.method||"GET",H=(0,s.getTracer)(),q=H.getActiveScopeSpan(),U=!!(null==j?void 0:j.isWrappedByNextServer),B=!!(0,n.getRequestMeta)(e,"minimalMode"),K=(0,n.getRequestMeta)(e,"incrementalCache")||await R.getIncrementalCache(e,w,E,B);null==K||K.resetRequestCache(),globalThis.__incrementalCache=K;let z={params:b,previewProps:E.preview,renderOpts:{experimental:{authInterrupts:!!w.experimental.authInterrupts},cacheComponents:!!w.cacheComponents,supportsDynamicResponse:N,incrementalCache:K,cacheLifeProfiles:w.cacheLife,waitUntil:i.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,i,n)=>R.onRequestError(e,t,i,n,j)},sharedContext:{buildId:S}},V=new o.NodeNextRequest(e),G=new o.NodeNextResponse(t),W=c.NextRequestAdapter.fromNodeNextRequest(V,(0,c.signalFromNodeResponse)(t));try{let n,a=async e=>R.handle(W,z).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=H.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==u.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 i=r.get("next.route");if(i){let t=`${$} ${i}`;e.setAttributes({"next.route":i,"http.route":i,"next.span_name":t}),e.updateName(t),n&&n!==e&&(n.setAttribute("http.route",i),n.updateName(t))}else e.updateName(`${$} ${y}`)}),l=async n=>{var s,l;let o=async({previousCacheEntry:r})=>{try{if(!B&&T&&A&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await a(n);e.fetchMetrics=z.renderOpts.fetchMetrics;let l=z.renderOpts.pendingWaitUntil;l&&i.waitUntil&&(i.waitUntil(l),l=void 0);let o=z.renderOpts.collectedTags;if(!P)return await (0,f.sendResponse)(V,G,s,z.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,p.toNodeOutgoingHttpHeaders)(s.headers);o&&(t[m.NEXT_CACHE_TAGS_HEADER]=o),!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,i=void 0===z.renderOpts.collectedExpire||z.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:z.renderOpts.collectedExpire;return{value:{kind:v.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:i}}}}catch(t){throw(null==r?void 0:r.isStale)&&await R.onRequestError(e,t,{routerKind:"App Router",routePath:y,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:F,isOnDemandRevalidate:T})},!1,j),t}},c=await R.handleResponse({req:e,nextConfig:w,cacheKey:D,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:E,isRoutePPREnabled:!1,isOnDemandRevalidate:T,revalidateOnlyGenerated:A,responseGenerator:o,waitUntil:i.waitUntil,isMinimalMode:B});if(!P)return null;if((null==c||null==(s=c.value)?void 0:s.kind)!==v.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==c||null==(l=c.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});B||t.setHeader("x-nextjs-cache",T?"REVALIDATED":c.isMiss?"MISS":c.isStale?"STALE":"HIT"),k&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,p.fromNodeOutgoingHttpHeaders)(c.value.headers);return B&&P||u.delete(m.NEXT_CACHE_TAGS_HEADER),!c.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,h.getCacheControlHeader)(c.cacheControl)),await (0,f.sendResponse)(V,G,new Response(c.value.body,{headers:u,status:c.value.status||200})),null};U&&q?await l(q):(n=H.getActiveScopeSpan(),await H.withPropagatedContext(e.headers,()=>H.trace(u.BaseServerSpan.handleRequest,{spanName:`${$} ${y}`,kind:s.SpanKind.SERVER,attributes:{"http.method":$,"http.target":e.url}},l),void 0,!U))}catch(t){if(t instanceof g.NoFallbackError||await R.onRequestError(e,t,{routerKind:"App Router",routePath:O,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:F,isOnDemandRevalidate:T})},!1,j),P)throw t;return await (0,f.sendResponse)(V,G,new Response(null,{status:500})),null}}e.s(["handler",0,C,"patchFetch",0,function(){return(0,i.patchFetch)({workAsyncStorage:j,workUnitAsyncStorage:T})},"routeModule",0,R,"serverHooks",0,A,"workAsyncStorage",0,j,"workUnitAsyncStorage",0,T],100314)},896235,e=>{e.v(e=>Promise.resolve().then(()=>e(640911)))},794708,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__0uadj5z._.js","server/chunks/lib_agents_0jbdl9~._.js","server/chunks/lib_agents_process-manager_ts_0zbkwal._.js","server/chunks/node_modules_zod_v4_classic_external_131y~ke.js"].map(t=>e.l(t))).then(()=>t(669285)))},700492,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__0_a-iao._.js","server/chunks/[root-of-the-server]__064-9mc._.js","server/chunks/lib_agents_0jbdl9~._.js","server/chunks/lib_analysis_manager_ts_01harro._.js","server/chunks/lib_0wi33xt._.js","server/chunks/lib_0.areff._.js","server/chunks/[root-of-the-server]__074l3tr._.js","server/chunks/_0snzqta._.js","server/chunks/node_modules_zod_v4_classic_external_131y~ke.js","server/chunks/lib_0kj.xsc._.js","server/chunks/_0eab3-m._.js","server/chunks/lib_agents_process-manager_ts_0zbkwal._.js","server/chunks/[root-of-the-server]__09qyvq1._.js","server/chunks/_0drsi0n._.js"].map(t=>e.l(t))).then(()=>t(356716)))}];
|
|
31
31
|
|
|
32
|
-
//# debugId=
|
|
32
|
+
//# debugId=a6aa441c-0727-03c5-76b1-f710e9cf083e
|
|
33
33
|
//# sourceMappingURL=%5Broot-of-the-server%5D__0gnut6f._.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": [],
|
|
4
|
-
"debugId": "
|
|
4
|
+
"debugId": "a6aa441c-0727-03c5-76b1-f710e9cf083e",
|
|
5
5
|
"sections": [
|
|
6
6
|
{"offset": {"line": 1, "column": 0}, "map": {"version":3,"sources":["../../../lib/platform.ts","../../../lib/navigation-events.ts","../../../lib/codex-config/canonical.ts","../../../mcp/skills/loader.ts","../../../mcp/skills/writer.ts","../../../lib/instructions/override.ts","../../../lib/instructions/bundled-template.ts","../../../lib/instructions/dialect.ts","../../../mcp/version.ts","../../../lib/instructions/memories.ts","../../../mcp/workspace.ts","../../../mcp/instructions.ts","../../../mcp/registry/instruction-builder.ts","../../../mcp/settings.ts","../../../lib/instructions/marker-merge.ts","../../../app/api/instructions/override/route.ts","../../../node_modules/next/dist/esm/build/templates/app-route.js"],"sourcesContent":["import os from \"node:os\";\n\n/**\n * Runtime platform predicates for code that ends up in the Next server bundle.\n *\n * **Use these instead of `process.platform === \"win32\"` in anything the Next\n * build compiles.** That comparison is not a runtime check in the shipped\n * product: Turbopack constant-folds `process.platform === \"<literal>\"` against\n * the BUILD machine's platform and drops the dead branch, so a package built\n * on macOS ships a server that believes it is on macOS forever.\n *\n * That is not theoretical. In the published 0.1.4 it produced, verbatim:\n *\n * getBinaryPath(e){return i.default.join((0,d.getLibiBinDir)(),e)}\n * let{shell:t,args:i}={shell:process.env.SHELL||\"/bin/zsh\",args:[\"-l\"]}\n *\n * — so on Windows the server looked for `bin/uv` while the installer had\n * written `bin/uv.exe` (no bundled MCP ever probed UP), and the terminal panel\n * tried to spawn `/bin/zsh`. The `powershell.exe` branch was not merely\n * unreachable; it was absent from the bundle.\n *\n * Two things defeat the fold, and both are used here deliberately:\n * 1. `os.platform()` is a CALL. The bundler has no static value for it,\n * where `process.platform` is a property it happily assumes.\n * 2. `switch` is left alone even over `process.platform` — `lib/export/\n * folder.ts` survived 0.1.4 intact for exactly that reason, which is how\n * the mechanism was identified.\n *\n * `dist-cli` (esbuild) never had this problem, which is why Category A wrote\n * the correct filenames while the server looked for the wrong ones — one\n * package, two compilers, two answers.\n */\nfunction currentPlatform(): NodeJS.Platform {\n return os.platform();\n}\n\nexport function isWindows(): boolean {\n switch (currentPlatform()) {\n case \"win32\":\n return true;\n default:\n return false;\n }\n}\n\nexport function isMac(): boolean {\n switch (currentPlatform()) {\n case \"darwin\":\n return true;\n default:\n return false;\n }\n}\n\nexport function isLinux(): boolean {\n switch (currentPlatform()) {\n case \"linux\":\n return true;\n default:\n return false;\n }\n}\n\n/** `.exe` on Windows, `\"\"` elsewhere — the suffix for a native executable. */\nexport function exeSuffix(): string {\n return isWindows() ? \".exe\" : \"\";\n}\n","import { EventEmitter } from \"events\";\n\n/**\n * Global event emitter for navigation events from MCP tools to the UI.\n * Used by libi.show_piece and libi.show_asset to navigate the editor.\n * The SSE endpoint subscribes to these events and forwards them to clients.\n *\n * Navigation events broadcast to ALL SSE connections (not scoped per chat window).\n * This is intentional for a single-user desktop app — the editor should respond\n * to navigation regardless of which chat window triggered the tool call.\n */\nconst globalForNav = globalThis as unknown as { __navEmitter?: EventEmitter };\nif (!globalForNav.__navEmitter) {\n globalForNav.__navEmitter = new EventEmitter();\n globalForNav.__navEmitter.setMaxListeners(50);\n}\nexport const navigationEmitter = globalForNav.__navEmitter;\n\nexport interface NavigateEvent {\n target: \"piece\" | \"asset\" | \"preview\" | \"storyboard\" | \"folder\";\n /** Required for piece/asset/preview/storyboard/folder targets. */\n pieceId?: string;\n fileId?: string;\n /** Optional id for special targets. */\n id?: string;\n}\n\nexport interface RefreshQueryEvent {\n queryKey: string;\n pieceId?: string;\n /** Optional hint identifying the scene that was just created/updated/deleted.\n * The client may use it to jump the preview to the first change. */\n /** Set when queryKey === \"analysis\": the file whose analysis row changed. */\n fileId?: string;\n /** Set when queryKey === \"track\": the track whose sidecar changed. */\n trackId?: string;\n}\n\nexport interface InstructionsUpdatedEvent {\n sessionsTerminated: number;\n}\n\nexport interface AnalysisChangedEvent {\n fileId: string;\n}\n\nexport interface OverlayErrorEvent {\n pieceId: string;\n overlayId: string;\n message: string;\n}\n\nexport interface NavigateSettingsEvent {\n /** Optional MCP id to focus + scroll to. */\n mcpId?: string;\n}\n\nexport interface RightRegionEvent {\n mode: \"editor\" | \"onboarding\" | \"api-config\";\n /** Set when mode === \"api-config\": the bundled MCP id to configure. */\n mcpId?: string;\n}\n\n/** Guided-edit highlight: flash an inspector field for an overlay (from the\n * agent's `libi.highlight_property` tool). The preview surface selects the\n * overlay, bumps complexity mode if the field is gated, and flashes it. */\nexport interface HighlightEvent {\n pieceId: string;\n overlayId: string;\n /** Inspector field key (e.g. \"background.color\"); matched against `data-field`. */\n property: string;\n /** Optional short callout note rendered next to the flashed field. */\n note?: string;\n}\n\n/** Set a specific overlay's inspector tab/group (from `libi.set_complexity_mode`). */\nexport interface SetComplexityModeEvent {\n /** Piece the overlay belongs to (mirrors HighlightEvent). */\n pieceId?: string;\n /** Overlay whose inspector tab to switch. */\n overlayId: string;\n /** Intent group (tab) to reveal. */\n mode: \"transform\" | \"style\" | \"text\" | \"3d\" | \"anchors\";\n}\n\n/** Guided-edit highlight for effects: flash a catalog effect (opening the\n * effects panel to its family/phase) or an effect already applied to a\n * layer's slot (from the agent's `libi.highlight_effect` tool). */\nexport interface HighlightEffectEvent {\n pieceId: string;\n target:\n | { kind: \"catalog\"; effectId: string; phase?: \"in\" | \"out\" | \"loop\" }\n | { kind: \"applied\"; layerId: string; phase: \"in\" | \"out\" | \"loop\" };\n note?: string;\n}\n\n/**\n * Signal that agent-governing content (custom instructions override or\n * memories) was mutated through the HTTP surface rather than by the agent's\n * own MCP tools. RC-A defense-in-depth: if a same-origin path ever reaches\n * these write routes, the change is auditable (security-tagged log) and the\n * UI can surface a \"changed by a non-agent write\" banner. Emitted alongside\n * the existing `instructions_updated` reset event.\n */\nexport interface SecuritySettingsChangedEvent {\n kind: \"instructions-override\" | \"memories\";\n /** How the write arrived — currently always an HTTP settings route. */\n via: \"http\";\n /** True for the override DELETE (revert to bundled template). */\n reverted?: boolean;\n}\n\n/** Emit a `security_settings_changed` event on the navigation emitter. */\nexport function emitSecuritySettingsChanged(\n event: SecuritySettingsChangedEvent,\n): void {\n navigationEmitter.emit(\"security_settings_changed\", event);\n}\n\n/** Emit a `highlight` event on the navigation emitter. */\nexport function emitHighlight(event: HighlightEvent): void {\n navigationEmitter.emit(\"highlight\", event);\n}\n\n/** Emit a `highlight_effect` event on the navigation emitter. */\nexport function emitHighlightEffect(event: HighlightEffectEvent): void {\n navigationEmitter.emit(\"highlight_effect\", event);\n}\n\n/** Emit a `set_complexity_mode` event on the navigation emitter. */\nexport function emitSetComplexityMode(event: SetComplexityModeEvent): void {\n navigationEmitter.emit(\"set_complexity_mode\", event);\n}\n","import fs from \"fs\";\nimport os from \"os\";\nimport path from \"path\";\nimport { getLibiHome } from \"@/lib/libi-home\";\nimport { isTestMode } from \"@/lib/test-mode\";\n\n/**\n * Canonical-instance guard for GLOBAL Codex config writes.\n *\n * A worktree / dev / skill-eval / test-mode instance must NEVER write the\n * user's real `~/.codex`. This module is a pure predicate — it performs no\n * filesystem writes itself. The sync layer consumes these helpers to decide\n * whether it is safe to touch the global Codex home.\n *\n * All checks read `process.env` fresh on every call (via `getLibiHome()` /\n * `isTestMode()`), so tests can vary the environment without rebuilding modules.\n */\n\n/**\n * True only for the ONE canonical libi instance the user actually runs:\n * `getLibiHome()` resolves to the default `~/.libi` AND test mode is off.\n *\n * Worktrees set `LIBI_HOME` under `~/.libi/worktrees/<name>`, skill-eval sets\n * it to a temp dir, and test mode sets `LIBI_TEST_MODE=1` — all of which are\n * NON-canonical and must be blocked from global Codex writes.\n */\nexport function isCanonicalLibiInstance(): boolean {\n if (isTestMode()) return false;\n const defaultHome = path.join(os.homedir(), \".libi\");\n return getLibiHome() === defaultHome;\n}\n\n/**\n * The Codex home libi reads/writes for THIS instance.\n *\n * Resolution order:\n * 1. Explicit `CODEX_HOME` env — always wins (mirrors Codex CLI's own rule).\n * 2. Canonical instance → the user's real `~/.codex`.\n * 3. Any non-canonical instance (worktree / dev / skill-eval / test mode) →\n * a home SCOPED under the libi home (`<LIBI_HOME>/.codex`).\n *\n * This makes worktree-safety STRUCTURAL rather than a hard block: a\n * non-canonical instance can never resolve to the user's real `~/.codex`, so\n * the same Install/sync code path is free to run everywhere — a worktree just\n * writes its own scoped codex home. The terminal PTY spawns codex with this\n * `CODEX_HOME` too, so a worktree's built-in Terminal reads the config it wrote.\n */\nexport function resolveCodexHome(): string {\n const explicit = process.env.CODEX_HOME;\n if (explicit) return explicit;\n if (isCanonicalLibiInstance()) return path.join(os.homedir(), \".codex\");\n return path.join(getLibiHome(), \".codex\");\n}\n\n/**\n * Resolve the codex home AND make sure the directory exists.\n *\n * Handing `CODEX_HOME` to a process that then finds nothing there is not a\n * no-op — codex REFUSES TO START:\n *\n * Error: CODEX_HOME points to \"…/.codex\", but that path does not exist\n *\n * (observed directly: the ACP child exited 1 on a scoped home, 2026-08-16).\n * So every place that sets the variable must also guarantee the directory —\n * the ACP child (lib/agents/process-manager.ts), the terminal PTY\n * (lib/terminal/manager.ts, which sets it for EVERY preset because the\n * `needs-auth` remedy signs in from a plain shell), and the config sync.\n *\n * Best-effort by design: a failure here is never worth blocking a spawn over,\n * and whatever codex or the sync does next reports the real error.\n */\nexport function ensureCodexHome(): string {\n const home = resolveCodexHome();\n try {\n fs.mkdirSync(home, { recursive: true });\n } catch {\n // ignore — surfaced downstream by codex itself if it matters\n }\n return home;\n}\n","import * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport { eq } from \"drizzle-orm\";\nimport { getDb } from \"@/lib/db/client\";\nimport { skills as skillsTable } from \"@/lib/db/schema\";\nimport { getBundledSkillsDir, getLibiSkillsDir } from \"@/lib/libi-home\";\nimport { serverLogger as logger } from \"@/lib/logger\";\nimport { parseSkillBody } from \"./frontmatter\";\nimport type { Skill, SkillSupportFile } from \"./types\";\n\nconst TEXT_EXTENSIONS = /\\.(md|txt|json|ya?ml|toml|csv|tsv|html?|xml|js|ts|tsx|jsx|css|sh|py|rb|go|rs)$/i;\n\nfunction readSupportingFiles(skillDir: string): SkillSupportFile[] {\n const out: SkillSupportFile[] = [];\n if (!fs.existsSync(skillDir)) return out;\n const walk = (rel: string): void => {\n const abs = path.join(skillDir, rel);\n for (const entry of fs.readdirSync(abs, { withFileTypes: true })) {\n if (entry.isSymbolicLink()) continue;\n const childRel = path.join(rel, entry.name);\n if (entry.isDirectory()) {\n walk(childRel);\n } else if (entry.isFile() && childRel !== \"SKILL.md\") {\n const isText = TEXT_EXTENSIONS.test(entry.name);\n out.push({\n relPath: childRel,\n contents: isText\n ? fs.readFileSync(path.join(skillDir, childRel), \"utf-8\")\n : fs.readFileSync(path.join(skillDir, childRel)),\n });\n }\n }\n };\n walk(\".\");\n return out;\n}\n\nfunction loadFromDisk(\n rootDir: string,\n name: string,\n): { body: string; supportingFiles: SkillSupportFile[] } | null {\n const dir = path.join(rootDir, name);\n const skillFile = path.join(dir, \"SKILL.md\");\n if (!fs.existsSync(skillFile)) return null;\n return {\n body: fs.readFileSync(skillFile, \"utf-8\"),\n supportingFiles: readSupportingFiles(dir),\n };\n}\n\nexport async function loadEnabledSkills(): Promise<Skill[]> {\n const db = getDb();\n const rows = db\n .select()\n .from(skillsTable)\n .where(eq(skillsTable.enabled, true))\n .orderBy(skillsTable.source)\n .all();\n\n const byName = new Map<string, Skill>();\n\n for (const row of rows) {\n let body: string;\n let supportingFiles: SkillSupportFile[] = [];\n if (row.source === \"bundled\") {\n const disk = loadFromDisk(getBundledSkillsDir(), row.name);\n if (!disk) {\n logger.warn({ name: row.name }, \"skills.bundled_missing_on_disk\");\n continue;\n }\n body = disk.body;\n supportingFiles = disk.supportingFiles;\n } else {\n if (!row.body) {\n logger.warn({ name: row.name }, \"skills.user_missing_body\");\n continue;\n }\n body = row.body;\n const disk = loadFromDisk(getLibiSkillsDir(), row.name);\n supportingFiles = disk?.supportingFiles ?? [];\n }\n let frontmatter;\n try {\n ({ frontmatter } = parseSkillBody(body));\n } catch (err) {\n logger.error({ err, name: row.name }, \"skills.parse_failed\");\n continue;\n }\n const existing = byName.get(row.name);\n if (existing) {\n // user always wins regardless of arrival order\n if (existing.source === \"user\" && row.source === \"bundled\") continue;\n if (existing.source === \"bundled\" && row.source === \"user\") {\n // fall through to overwrite below\n } else {\n // same source — keep first (deterministic)\n continue;\n }\n }\n byName.set(row.name, {\n id: row.id,\n name: row.name,\n description: row.description,\n source: row.source,\n enabled: row.enabled,\n body,\n frontmatter,\n supportingFiles,\n tags: Array.isArray(frontmatter.tags) ? frontmatter.tags : [],\n });\n }\n\n return Array.from(byName.values());\n}\n","import * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport * as crypto from \"node:crypto\";\nimport { serverLogger as logger } from \"@/lib/logger\";\nimport { getLibiAgentDir } from \"@/lib/libi-home\";\nimport type { Skill } from \"./types\";\n\nconst DIALECTS = [\".claude/skills\", \".agents/skills\"];\n\n/** The retired codex skill dir. Codex's real project skill-discovery path is\n * `.agents/skills`, so the old `.codex/skills` mirror is now dead; a one-time\n * sweep removes the libi-owned content it left behind. */\nconst LEGACY_CODEX_DIALECT = \".codex/skills\";\n\n/** Ownership marker that a libi-generated GEMINI.md carried. Its presence is\n * the only signal the orphan sweep uses to decide a GEMINI.md is ours to\n * delete — a user-authored GEMINI.md never contains it. */\nconst GEMINI_OWNED_MARKER = \"<!-- libi-skills-start -->\";\nconst LEGACY_GEMINI_FILE = \"GEMINI.md\";\n\nfunction sha(buf: Buffer | string): string {\n return crypto.createHash(\"sha256\").update(buf).digest(\"hex\");\n}\n\nfunction writeIfChanged(absPath: string, contents: string | Buffer): boolean {\n fs.mkdirSync(path.dirname(absPath), { recursive: true });\n if (fs.existsSync(absPath)) {\n const existing = fs.readFileSync(absPath);\n const next = Buffer.isBuffer(contents) ? contents : Buffer.from(contents);\n if (sha(existing) === sha(next)) return false;\n }\n fs.writeFileSync(absPath, contents);\n return true;\n}\n\nfunction listSubdirs(root: string): string[] {\n if (!fs.existsSync(root)) return [];\n return fs\n .readdirSync(root, { withFileTypes: true })\n .filter((e) => e.isDirectory())\n .map((e) => e.name);\n}\n\nfunction pruneEmptyDirs(root: string): void {\n if (!fs.existsSync(root)) return;\n for (const entry of fs.readdirSync(root, { withFileTypes: true })) {\n if (entry.isDirectory()) {\n const childPath = path.join(root, entry.name);\n pruneEmptyDirs(childPath);\n if (fs.readdirSync(childPath).length === 0) {\n fs.rmdirSync(childPath);\n }\n }\n }\n}\n\n/**\n * One-time orphan sweep: delete a legacy libi-generated `GEMINI.md` left over\n * from when the writer inlined skills into it. Only deletes when the file\n * carries the libi ownership marker — a user-authored GEMINI.md without the\n * marker is left untouched; a missing file is a no-op. Wrapped in try/catch so\n * a sweep failure never breaks skill writing.\n */\nexport function sweepLegacyGeminiFile(workspaceDir: string): void {\n const filePath = path.join(workspaceDir, LEGACY_GEMINI_FILE);\n try {\n if (!fs.existsSync(filePath)) return;\n const contents = fs.readFileSync(filePath, \"utf-8\");\n if (contents.includes(GEMINI_OWNED_MARKER)) {\n fs.rmSync(filePath, { force: true });\n }\n } catch (err) {\n logger.warn({ err, workspaceDir, tag: \"skills\", op: \"gemini_sweep_failed\" }, \"gemini.sweep_failed\");\n }\n}\n\nconst MANIFEST_FILE = \".libi-managed.json\";\n\n/** Names of skill dirs libi wrote previously; null when no manifest exists. */\nfunction readManagedNames(root: string): Set<string> | null {\n const p = path.join(root, MANIFEST_FILE);\n if (!fs.existsSync(p)) return null;\n try {\n const parsed = JSON.parse(fs.readFileSync(p, \"utf-8\"));\n if (parsed && Array.isArray(parsed.managed)) {\n return new Set(parsed.managed.filter((n: unknown): n is string => typeof n === \"string\"));\n }\n } catch {\n // malformed → treat as absent (manage only what we create from now on)\n }\n return null;\n}\n\nfunction writeManagedNames(root: string, names: Set<string>): void {\n // writeIfChanged keeps the manifest on the file's write-only-on-change\n // discipline — no spurious rewrite when the enabled set is unchanged.\n writeIfChanged(\n path.join(root, MANIFEST_FILE),\n JSON.stringify({ managed: [...names].sort() }, null, 2) + \"\\n\",\n );\n}\n\n/**\n * One-time sweep of a retired dialect skill dir (`.codex/skills`) libi used to\n * mirror to. Uses the SAME ownership rules as the live orphan cleanup: only\n * dirs listed in the dir's `.libi-managed.json` manifest are libi-owned and get\n * removed (along with the manifest itself); a user's own dir (never in the\n * manifest) is preserved. Without a manifest we own nothing here — a legacy\n * unmanaged `.codex/skills` is left untouched. If the dir ends up empty, it is\n * removed. Wrapped in try/catch so a sweep failure never breaks skill writing.\n */\nexport function sweepLegacyDialect(workspaceDir: string, dialect: string): void {\n const root = path.join(workspaceDir, dialect);\n try {\n if (!fs.existsSync(root)) return;\n const managed = readManagedNames(root);\n if (managed) {\n for (const name of managed) {\n fs.rmSync(path.join(root, name), { recursive: true, force: true });\n }\n fs.rmSync(path.join(root, MANIFEST_FILE), { force: true });\n }\n // Remove the dialect dir (and its now-empty parent) if nothing remains.\n if (fs.existsSync(root) && fs.readdirSync(root).length === 0) {\n fs.rmdirSync(root);\n const parent = path.dirname(root);\n if (fs.existsSync(parent) && fs.readdirSync(parent).length === 0) {\n fs.rmdirSync(parent);\n }\n }\n } catch (err) {\n logger.warn(\n { err, workspaceDir, dialect, tag: \"skills\", op: \"legacy_dialect_sweep_failed\" },\n \"skills.legacy_dialect_sweep_failed\",\n );\n }\n}\n\nexport async function writeSkillsToWorkspace(workspaceDir: string, enabledSkills: Skill[]): Promise<void> {\n const enabledNames = new Set(enabledSkills.map((s) => s.name));\n let writes = 0;\n let removed = 0;\n\n const ownedDefaultDir =\n path.resolve(workspaceDir) === path.resolve(getLibiAgentDir());\n\n for (const dialect of DIALECTS) {\n const root = path.join(workspaceDir, dialect);\n fs.mkdirSync(root, { recursive: true });\n\n // Orphan cleanup only touches dirs libi owns: those in the manifest, or\n // (grandfathering, pre-manifest installs) everything when this is the\n // default agent dir. A user's own skill dir in a connected workspace is\n // never in either set and is never deleted.\n const manifest = readManagedNames(root);\n const removable =\n manifest ?? (ownedDefaultDir ? new Set(listSubdirs(root)) : new Set<string>());\n for (const existing of listSubdirs(root)) {\n if (!enabledNames.has(existing) && removable.has(existing)) {\n fs.rmSync(path.join(root, existing), { recursive: true, force: true });\n removed++;\n }\n }\n\n for (const skill of enabledSkills) {\n const skillDir = path.join(root, skill.name);\n if (writeIfChanged(path.join(skillDir, \"SKILL.md\"), skill.body)) writes++;\n const desiredFiles = new Set(skill.supportingFiles.map((f) => f.relPath));\n const walkExisting = (relRoot: string): void => {\n const abs = path.join(skillDir, relRoot);\n if (!fs.existsSync(abs)) return;\n for (const entry of fs.readdirSync(abs, { withFileTypes: true })) {\n const rel = path.join(relRoot, entry.name);\n if (entry.isDirectory()) {\n walkExisting(rel);\n } else if (rel !== \"SKILL.md\" && !desiredFiles.has(rel)) {\n fs.rmSync(path.join(skillDir, rel), { force: true });\n removed++;\n }\n }\n };\n walkExisting(\".\");\n for (const file of skill.supportingFiles) {\n if (writeIfChanged(path.join(skillDir, file.relPath), file.contents)) writes++;\n }\n pruneEmptyDirs(skillDir);\n }\n\n writeManagedNames(root, enabledNames);\n }\n\n // One-time orphan sweep of the retired GEMINI.md inline artifact (Gemini CLI\n // is being removed). Covers the default agent dir and any connected dir on\n // its next regen. Idempotent — a second run finds the file gone.\n sweepLegacyGeminiFile(workspaceDir);\n\n // One-time sweep of the retired `.codex/skills` mirror — codex's real\n // discovery path is `.agents/skills` (now a DIALECT above). Idempotent — a\n // second run finds the dir gone.\n sweepLegacyDialect(workspaceDir, LEGACY_CODEX_DIALECT);\n\n logger.info({ writes, removed, enabled: enabledSkills.length }, \"skills.workspace_written\");\n}\n","import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { getLibiInstructionsDir } from \"@/lib/libi-home\";\nimport { loadBundledTemplate } from \"./bundled-template\";\n\nexport type ForkStaleness = boolean | \"unknown\";\n\nexport interface InstructionsStatus {\n source: \"bundled\" | \"override\";\n /** Only meaningful when source === \"override\": true = bundled template\n * changed since the fork; false = identical; \"unknown\" = snapshot missing. */\n bundledUpdatedSinceFork: ForkStaleness;\n}\n\nexport function getInstructionsOverridePath(): string {\n return path.join(getLibiInstructionsDir(), \"instructions.md\");\n}\n\n/** Snapshot of the bundled template at fork time — drives staleness. */\nexport function getInstructionsOverrideBasePath(): string {\n return path.join(getLibiInstructionsDir(), \".base.md\");\n}\n\nexport function hasInstructionsOverride(): boolean {\n return fs.existsSync(getInstructionsOverridePath());\n}\n\nexport function readInstructionsOverride(): string | null {\n try {\n return fs.readFileSync(getInstructionsOverridePath(), \"utf-8\");\n } catch {\n return null;\n }\n}\n\n/** Create-or-update the override. Snapshots the bundled template on first call. */\nexport function saveInstructionsOverride(content: string): void {\n if (content.trim().length === 0) {\n throw new Error(\"Override content must not be empty — revert instead\");\n }\n const dir = getLibiInstructionsDir();\n fs.mkdirSync(dir, { recursive: true });\n if (!fs.existsSync(getInstructionsOverrideBasePath())) {\n fs.writeFileSync(getInstructionsOverrideBasePath(), loadBundledTemplate());\n }\n fs.writeFileSync(getInstructionsOverridePath(), content);\n}\n\n/** Delete the override + snapshot, restoring the bundled template. */\nexport function revertInstructionsOverride(): void {\n fs.rmSync(getInstructionsOverridePath(), { force: true });\n fs.rmSync(getInstructionsOverrideBasePath(), { force: true });\n}\n\nexport function getInstructionsStatus(): InstructionsStatus {\n if (!hasInstructionsOverride()) {\n return { source: \"bundled\", bundledUpdatedSinceFork: false };\n }\n let staleness: ForkStaleness;\n try {\n const base = fs.readFileSync(getInstructionsOverrideBasePath(), \"utf-8\");\n staleness = loadBundledTemplate() !== base;\n } catch {\n staleness = \"unknown\";\n }\n return { source: \"override\", bundledUpdatedSinceFork: staleness };\n}\n","import fs from \"node:fs\";\nimport path from \"node:path\";\n\nfunction candidates(): string[] {\n return [\n path.join(process.cwd(), \"mcp\", \"templates\", \"instructions.md\"),\n // lib/instructions/ → repo root → mcp/templates (compiled or in-tree)\n path.resolve(__dirname, \"..\", \"..\", \"mcp\", \"templates\", \"instructions.md\"),\n path.resolve(__dirname, \"..\", \"..\", \"..\", \"mcp\", \"templates\", \"instructions.md\"),\n ];\n}\n\n/** Read the bundled instructions template. Throws when not found. */\nexport function loadBundledTemplate(): string {\n for (const filePath of candidates()) {\n if (fs.existsSync(filePath)) return fs.readFileSync(filePath, \"utf-8\");\n }\n throw new Error(`instructions.md template not found (tried: ${candidates().join(\", \")})`);\n}\n","/**\n * Per-agent instruction dialect rendering.\n *\n * The single `mcp/templates/instructions.md` template carries dialect-conditional\n * blocks so CLAUDE.md (Claude Code wording) and AGENTS.md (Codex wording) can\n * diverge on the few mechanics that genuinely differ between agents (e.g. how a\n * skill is invoked). Everything shareable stays OUTSIDE the blocks and survives\n * both dialects — divergence is kept deliberately minimal.\n *\n * Block syntax (each marker on its own conceptual line — the marker lines are\n * stripped, only the inner content is kept for the matching dialect):\n *\n * <!-- libi-agent:claude -->\n * …claude-only wording…\n * <!-- /libi-agent:claude -->\n *\n * <!-- libi-agent:codex -->\n * …codex-only wording…\n * <!-- /libi-agent:codex -->\n *\n * A malformed template (unclosed / stray-close / nested / mismatched marker) is\n * a template-authoring bug and throws a descriptive Error (a lint at render\n * time). The function is pure and idempotent on marker-free text.\n */\n\nexport type AgentDialect = \"claude\" | \"codex\";\n\nconst OPEN_RE = /<!--\\s*libi-agent:(claude|codex)\\s*-->/;\nconst CLOSE_RE = /<!--\\s*\\/libi-agent:(claude|codex)\\s*-->/;\n// A single scanner regex that finds either an open or a close marker.\nconst MARKER_RE = /<!--\\s*(\\/?)libi-agent:(claude|codex)\\s*-->/g;\n\n/**\n * Render the template for one dialect: keep the matching dialect's block content\n * (markers stripped), drop the non-matching dialect's blocks entirely, and leave\n * unmarked text untouched.\n */\nexport function renderDialect(text: string, dialect: AgentDialect): string {\n MARKER_RE.lastIndex = 0;\n\n let result = \"\";\n let cursor = 0;\n // The dialect of the currently-open block, or null when at top level.\n let openDialect: AgentDialect | null = null;\n // Whether the currently-open block matches the requested dialect (keep) or not (drop).\n let keeping = true;\n\n let m: RegExpExecArray | null;\n while ((m = MARKER_RE.exec(text)) !== null) {\n const isClose = m[1] === \"/\";\n const markerDialect = m[2] as AgentDialect;\n const before = text.slice(cursor, m.index);\n\n if (!isClose) {\n // Opening marker.\n if (openDialect !== null) {\n throw new Error(\n `renderDialect: nested libi-agent marker — '${markerDialect}' block opened inside an open '${openDialect}' block`,\n );\n }\n // Emit text before the opener only if we're at top level (always true here).\n result += before;\n openDialect = markerDialect;\n keeping = markerDialect === dialect;\n } else {\n // Closing marker.\n if (openDialect === null) {\n throw new Error(\n `renderDialect: stray closing libi-agent marker for '${markerDialect}' with no matching opener`,\n );\n }\n if (markerDialect !== openDialect) {\n throw new Error(\n `renderDialect: mismatched libi-agent marker — '${openDialect}' block closed by '${markerDialect}'`,\n );\n }\n // Emit the block body only when keeping this dialect.\n if (keeping) result += before;\n openDialect = null;\n keeping = true;\n }\n cursor = m.index + m[0].length;\n }\n\n if (openDialect !== null) {\n throw new Error(\n `renderDialect: unclosed libi-agent marker — '${openDialect}' block was never closed`,\n );\n }\n\n result += text.slice(cursor);\n return result;\n}\n\n// Re-exported for callers that want to detect whether a template even uses\n// dialect blocks (unused today but keeps the marker syntax in one place).\nexport { OPEN_RE as DIALECT_OPEN_RE, CLOSE_RE as DIALECT_CLOSE_RE };\n","/** Single source of truth for skill/template version */\nexport const LIBI_SKILL_VERSION = \"1.17.0\";\n","import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { getLibiMemoriesPath } from \"@/lib/libi-home\";\n\n/** Same cap the old settings system prompt had. */\nexport const MEMORIES_MAX_CHARS = 8000;\n\n/** Read the memories file. Missing/unreadable file reads as \"\". */\nexport function readMemories(): string {\n try {\n return fs.readFileSync(getLibiMemoriesPath(), \"utf-8\");\n } catch {\n return \"\";\n }\n}\n\n/** Replace the whole memories file. Passing \"\" is valid and clears it. */\nexport function writeMemories(content: string): void {\n if (content.length > MEMORIES_MAX_CHARS) {\n throw new Error(`Memories exceed ${MEMORIES_MAX_CHARS} chars`);\n }\n const filePath = getLibiMemoriesPath();\n fs.mkdirSync(path.dirname(filePath), { recursive: true });\n fs.writeFileSync(filePath, content);\n}\n\n/** Append one memory, blank-line separated. Returns the new full content.\n * Read-then-write with no lock — concurrent writers are last-write-wins,\n * acceptable for a low-frequency preferences file. */\nexport function appendMemories(content: string): string {\n const existing = readMemories().trimEnd();\n const entry = content.trim();\n const next = existing.length > 0 ? `${existing}\\n\\n${entry}\\n` : `${entry}\\n`;\n writeMemories(next);\n return next;\n}\n","import fs from \"fs\";\nimport path from \"path\";\nimport { serverLogger as logger } from \"@/lib/logger\";\nimport { LIBI_SKILL_VERSION } from \"@/mcp/version\";\nimport { getInstructions } from \"@/mcp/instructions\";\nimport { getDb } from \"@/lib/db/client\";\nimport { mcpServers } from \"@/lib/db/schema/sqlite\";\nimport { buildExternalToolsSection } from \"@/mcp/registry/instruction-builder\";\nimport { writeAllAgentConfigs } from \"@/mcp/settings\";\nimport { loadEnabledSkills } from \"@/mcp/skills/loader\";\nimport { writeSkillsToWorkspace } from \"@/mcp/skills/writer\";\nimport { getLibiAgentDir, getAgentDirWriteTargets } from \"@/lib/libi-home\";\nimport { mergeMarkerSection } from \"@/lib/instructions/marker-merge\";\n\n/**\n * Prepares an agent directory with agent instructions and MCP config.\n *\n * Two modes depending on whether the target is libi-owned or user-owned:\n *\n * - **Owned mode** (`dir === getLibiAgentDir()`): plain overwrite of\n * CLAUDE.md / AGENTS.md (today's behaviour). Manual edits there are\n * intentionally clobbered; the supported customization path is the\n * Instructions override feature.\n *\n * - **Merge mode** (any other dir, e.g. a connected external project): libi\n * writes its instructions into a marker-bracketed section so user content\n * outside the markers survives every regeneration.\n *\n * In both modes the rest of the files (.version, agent configs, skills) are\n * always written the same way.\n *\n * @param workspaceDir - Directory to write files to\n */\nexport async function prepareAgentDir(workspaceDir: string): Promise<void> {\n fs.mkdirSync(workspaceDir, { recursive: true });\n\n // Build the external-tools section once — it's dialect-neutral and appended\n // to whichever dialect-rendered instructions each file gets below.\n let externalSection: string | null = null;\n try {\n const db = getDb();\n const rows = db.select().from(mcpServers).all();\n externalSection = buildExternalToolsSection(rows) || null;\n } catch (err) {\n logger.warn({ err }, \"Failed to build external tools section\");\n }\n\n // Render per-file dialect: CLAUDE.md ← claude wording, AGENTS.md ← codex\n // wording. This ends the byte-identical invariant deliberately — the only\n // divergence is the dialect-conditional blocks in the template (e.g. how a\n // skill is invoked). Memories + TEST MODE banner remain dialect-neutral.\n const withExternal = (instructions: string): string => {\n if (!externalSection) return instructions;\n const endMarker = \"<!-- libi-instructions-end -->\";\n const endIdx = instructions.indexOf(endMarker);\n if (endIdx !== -1) {\n return instructions.slice(0, endIdx) + externalSection + \"\\n\" + instructions.slice(endIdx);\n }\n return instructions + \"\\n\" + externalSection;\n };\n\n // Write instruction files. The default agent dir is fully libi-owned →\n // plain overwrite (manual edits there are intentionally clobbered; the\n // supported customization path is the Instructions override feature).\n // A connected (external) dir is user-owned → merge into a marker section.\n const owned = path.resolve(workspaceDir) === path.resolve(getLibiAgentDir());\n const dialectByFile = { \"CLAUDE.md\": \"claude\", \"AGENTS.md\": \"codex\" } as const;\n for (const file of [\"CLAUDE.md\", \"AGENTS.md\"] as const) {\n const filePath = path.join(workspaceDir, file);\n const instructions = withExternal(getInstructions(dialectByFile[file]));\n if (owned) {\n fs.writeFileSync(filePath, instructions);\n } else {\n const existing = fs.existsSync(filePath)\n ? fs.readFileSync(filePath, \"utf-8\")\n : null;\n fs.writeFileSync(filePath, mergeMarkerSection(existing, instructions));\n }\n }\n\n // Write version marker\n fs.writeFileSync(path.join(workspaceDir, \".version\"), LIBI_SKILL_VERSION);\n\n // Write agent config files (MCP server settings + future codex configs)\n writeAllAgentConfigs(workspaceDir);\n\n // Write skills (SKILL.md per dialect). Failure to write skills must not\n // prevent the rest of workspace prep from succeeding.\n try {\n const skills = await loadEnabledSkills();\n await writeSkillsToWorkspace(workspaceDir, skills);\n } catch (err) {\n logger.error({ err }, \"skills.write_failed_during_workspace_prep\");\n }\n}\n\n/**\n * Regenerate the agent workspace files (CLAUDE.md / AGENTS.md / agent configs)\n * after a settings change, then terminate every running agent session so they\n * pick up the new instructions on next activation.\n *\n * Returns the number of sessions that were running before reset.\n */\nexport async function regenerateAndRestart(): Promise<{ sessionsTerminated: number }> {\n // Lazy-import to avoid pulling agent-process modules into MCP/CLI bundles.\n const { getProcessManager } = await import(\"@/lib/agents/process-manager\");\n const { getSessionManager } = await import(\"@/lib/sessions/session-manager\");\n\n // 1. Re-emit agent-dir files (template + memories are read fresh on every\n // call) — both the default dir and, in connect-agent mode, the\n // connected external dir.\n const sm = getSessionManager();\n for (const dir of getAgentDirWriteTargets()) {\n await prepareAgentDir(dir);\n }\n\n // 2. Terminate processes and reset session state.\n const pm = getProcessManager();\n const sessionsTerminated = await pm.terminateAll();\n sm.resetAll(sessionsTerminated);\n\n logger.info({ sessionsTerminated }, \"workspace.regenerate\");\n return { sessionsTerminated };\n}\n","import fs from \"fs\";\nimport { serverLogger as logger } from \"@/lib/logger\";\nimport { isTestMode } from \"@/lib/test-mode\";\nimport { loadBundledTemplate } from \"@/lib/instructions/bundled-template\";\nimport { readInstructionsOverride } from \"@/lib/instructions/override\";\nimport { readMemories } from \"@/lib/instructions/memories\";\nimport { renderDialect, type AgentDialect } from \"@/lib/instructions/dialect\";\n\nconst START_MARKER = \"<!-- libi-instructions-start\";\nconst END_MARKER = \"<!-- libi-instructions-end -->\";\nconst MEMORIES_START = \"<!-- libi-memories-start -->\";\nconst MEMORIES_END = \"<!-- libi-memories-end -->\";\n\nconst TEST_MODE_BANNER = `\n> 🧪 **TEST MODE ACTIVE** — \\`LIBI_TEST_MODE=1\\` is set. The \\`fal-ai\\` MCP\n> is present but runs as a sandboxed fake: it exposes the real fal tool surface\n> (\\`recommend_model\\`, \\`run_model\\`, \\`submit_job\\`, etc.) but returns\n> deterministic ffmpeg placeholder files at zero cost. The \\`ElevenLabs\\` MCP is\n> ALSO a sandboxed fake: \\`text_to_speech\\`, \\`voice_clone\\`, \\`compose_music\\`,\n> \\`text_to_sound_effects\\`, \\`isolate_audio\\`, and \\`speech_to_text\\` return\n> deterministic placeholder audio/transcripts at zero cost (no API key needed).\n> This is a development environment for testing libi itself — do NOT promise the\n> user \"real\" AI output. Use the normal \\`fal-ai\\` / \\`ElevenLabs\\` tools as you\n> would in production; the placeholder outputs confirm the pipeline end-to-end\n> without spending credits.\n`;\n\n/** Active template: the user's override when present, else the bundled one. */\nfunction resolveTemplate(): string {\n return readInstructionsOverride() ?? loadBundledTemplate();\n}\n\n/**\n * Build the full instruction block for a given agent dialect. The template is\n * rendered for the dialect FIRST (`claude` → CLAUDE.md, `codex` → AGENTS.md),\n * then the dialect-NEUTRAL injections run unchanged: the TEST MODE banner and\n * the memories section are identical in both files.\n *\n * Reads `~/.libi/memories.md` and inlines it between the memories markers as a\n * `## Memories` section. If an override removed the markers, memories are\n * injected before the end marker, or appended at the very end — never silently\n * dropped. A marker-free user override renders identically for both dialects.\n */\nexport function getInstructions(dialect: AgentDialect = \"claude\"): string {\n let working = renderDialect(resolveTemplate(), dialect);\n\n if (isTestMode()) {\n // Inject banner right after the START_MARKER line so it's visible early —\n // before the body sections so the agent reads it before any tool docs.\n const startIdx = working.indexOf(START_MARKER);\n if (startIdx !== -1) {\n const lineEnd = working.indexOf(\"\\n\", startIdx);\n if (lineEnd !== -1) {\n working =\n working.slice(0, lineEnd + 1) + TEST_MODE_BANNER + \"\\n\" + working.slice(lineEnd + 1);\n } else {\n working = TEST_MODE_BANNER + \"\\n\" + working;\n }\n } else {\n // Marker missing (unexpected) — prepend\n working = TEST_MODE_BANNER + \"\\n\" + working;\n }\n }\n\n const trimmed = readMemories().trim();\n if (trimmed.length === 0) return working;\n\n const block = `${MEMORIES_START}\\n\\n## Memories\\n\\n${trimmed}\\n\\n${MEMORIES_END}`;\n const startIdx = working.indexOf(MEMORIES_START);\n const endIdx = working.indexOf(MEMORIES_END);\n if (startIdx !== -1 && endIdx !== -1) {\n return working.slice(0, startIdx) + block + working.slice(endIdx + MEMORIES_END.length);\n }\n if (working.includes(END_MARKER)) {\n return working.replace(END_MARKER, `${block}\\n${END_MARKER}`);\n }\n logger.warn({ tag: \"instructions\", op: \"memories_append_fallback\" },\n \"override template lost all markers; appending memories at end\");\n return `${working}\\n\\n${block}\\n`;\n}\n\nexport function getInstructionContent(): string {\n const full = getInstructions();\n const lines = full.split(\"\\n\");\n const startLine = lines.findIndex((l) => l.startsWith(START_MARKER));\n const endLine = lines.findIndex((l) => l.trim() === END_MARKER);\n if (startLine !== -1 && endLine !== -1) {\n return lines.slice(startLine + 1, endLine).join(\"\\n\").trim();\n }\n return full;\n}\n\nexport function parseInstructionVersion(content: string): string | null {\n const match = content.match(/<!-- libi-instructions-start v([\\d.]+) -->/);\n return match ? match[1] : null;\n}\n\nexport function upsertInstructions(filePath: string): void {\n const instructions = getInstructions();\n\n if (!fs.existsSync(filePath)) {\n fs.writeFileSync(filePath, instructions);\n return;\n }\n\n const existing = fs.readFileSync(filePath, \"utf-8\");\n const startIdx = existing.indexOf(START_MARKER);\n const endIdx = existing.indexOf(END_MARKER);\n\n if (startIdx !== -1 && endIdx !== -1) {\n const before = existing.slice(0, startIdx);\n const after = existing.slice(endIdx + END_MARKER.length);\n const combined = (before + instructions + after).replace(/\\n*$/, \"\\n\");\n fs.writeFileSync(filePath, combined);\n } else {\n fs.appendFileSync(filePath, \"\\n\\n---\\n\\n\" + instructions);\n }\n}\n","import type { McpServerRecord } from \"@/lib/db/schema/types\";\nimport { BUNDLED_MCP_SERVERS } from \"./bundled\";\n\n/**\n * Build the \"External Tools\" markdown section for agent instructions.\n * Returns empty string if no external MCPs are relevant.\n */\nexport function buildExternalToolsSection(mcpRows: McpServerRecord[]): string {\n const enabled = mcpRows.filter((r) => r.enabled);\n if (enabled.length === 0) return \"\";\n\n const available = enabled.filter(\n (r) => r.installStatus === \"installed\" || r.installStatus === \"not_required\"\n );\n const unavailable = enabled.filter(\n (r) => r.installStatus === \"failed\" || r.installStatus === \"pending\" || r.installStatus === \"checking\"\n );\n\n if (available.length === 0 && unavailable.length === 0) return \"\";\n\n const lines: string[] = [\"\\n## External Tools\\n\"];\n\n if (available.length > 0) {\n lines.push(\n \"The following external MCP servers are connected to this session. \" +\n \"Their tools appear in your tool list alongside the built-in `libi.*` tools — \" +\n \"call them directly like any other tool.\\n\"\n );\n for (const row of available) {\n lines.push(`- **${row.name}**: ${row.description ?? \"No description.\"}`);\n if (row.requireApproval) {\n lines.push(\n ` REQUIRES APPROVAL — Before calling any ${row.name} tool, you MUST describe the action to the user and wait for explicit confirmation.`\n );\n }\n const bundled = BUNDLED_MCP_SERVERS.find((b) => b.id === row.id);\n if (bundled?.agentInstructions) {\n lines.push(` ${bundled.agentInstructions}`);\n }\n }\n lines.push(\"\");\n }\n\n if (unavailable.length > 0) {\n lines.push(\"The following MCP servers are currently unavailable due to installation issues:\\n\");\n for (const row of unavailable) {\n const reason = row.installError ?? \"Installation pending\";\n lines.push(`- **${row.name}**: ${reason}`);\n const bundled = BUNDLED_MCP_SERVERS.find((b) => b.id === row.id);\n if (bundled?.installPlanPath) {\n lines.push(\n ` This is an optional extended engine you can install on demand: call \\`libi.get_install_plan({ id: \"${row.id}\" })\\` to get the step-by-step install guide, then follow it.`\n );\n } else {\n lines.push(\n ` If the user asks to use ${row.name}, explain that it is not currently available and suggest they check the MCP Servers settings page.`\n );\n }\n }\n lines.push(\"\");\n }\n\n return lines.join(\"\\n\");\n}\n","import { writeSettingsFile } from \"@/lib/mcp-config\";\nimport { syncCodexGlobalMcpsIfConnected } from \"@/lib/codex-config/sync\";\nimport { serverLogger as logger } from \"@/lib/logger\";\n\n/**\n * Write all agent config files to the workspace directory.\n * Called on startup and whenever MCP server config changes.\n */\nexport function writeAllAgentConfigs(workspaceDir: string): void {\n writeSettingsFile(workspaceDir);\n void syncCodexGlobalMcpsIfConnected().catch((err) => {\n logger.warn({ err, tag: \"codex-config\", op: \"error\" }, \"syncCodexGlobalMcpsIfConnected rejected\");\n });\n}\n","/**\n * Marker-section merge for instruction files written into a CONNECTED\n * (external, user-owned) agent dir. Libi owns only the bracketed section;\n * everything the user wrote outside it survives every regeneration.\n *\n * Same bracketed-section pattern libi uses for its other marker-merged files.\n * Marker names are distinct from the libi-instructions / libi-memories\n * markers that live INSIDE the generated instructions, so nesting is safe.\n */\nexport const AGENT_MARKER_START = \"<!-- libi-agent-start -->\";\nexport const AGENT_MARKER_END = \"<!-- libi-agent-end -->\";\n\nexport function mergeMarkerSection(\n existing: string | null,\n section: string,\n start: string = AGENT_MARKER_START,\n end: string = AGENT_MARKER_END,\n): string {\n const block = `${start}\\n${section.trim()}\\n${end}`;\n if (existing === null || existing.trim() === \"\") {\n return `${block}\\n`;\n }\n const startIdx = existing.indexOf(start);\n const endIdx = existing.indexOf(end);\n if (startIdx !== -1 && endIdx !== -1 && endIdx > startIdx) {\n return (\n existing.slice(0, startIdx) + block + existing.slice(endIdx + end.length)\n );\n }\n return `${existing.trimEnd()}\\n\\n${block}\\n`;\n}\n","import { NextResponse } from \"next/server\";\nimport {\n saveInstructionsOverride,\n revertInstructionsOverride,\n} from \"@/lib/instructions/override\";\nimport { regenerateAndRestart } from \"@/mcp/workspace\";\nimport { emitSecuritySettingsChanged } from \"@/lib/navigation-events\";\nimport { serverLogger as logger } from \"@/lib/logger\";\n\nexport async function POST(request: Request): Promise<Response> {\n let body: { content?: unknown };\n try {\n body = await request.json();\n } catch {\n return NextResponse.json({ error: \"Invalid JSON\" }, { status: 400 });\n }\n const content = typeof body.content === \"string\" ? body.content : \"\";\n if (content.trim().length === 0) {\n return NextResponse.json({ error: \"Override content must not be empty\" }, { status: 400 });\n }\n saveInstructionsOverride(content);\n logger.warn(\n { tag: \"security\", op: \"instructions_override_http_write\" },\n \"agent instructions override written via HTTP settings route\",\n );\n emitSecuritySettingsChanged({ kind: \"instructions-override\", via: \"http\" });\n const { sessionsTerminated } = await regenerateAndRestart();\n return NextResponse.json({ ok: true, sessionsTerminated });\n}\n\nexport async function DELETE(): Promise<Response> {\n revertInstructionsOverride();\n logger.warn(\n { tag: \"security\", op: \"instructions_override_http_revert\" },\n \"agent instructions override reverted via HTTP settings route\",\n );\n emitSecuritySettingsChanged({ kind: \"instructions-override\", via: \"http\", reverted: true });\n const { sessionsTerminated } = await regenerateAndRestart();\n return NextResponse.json({ ok: true, sessionsTerminated });\n}\n","import { AppRouteRouteModule } from \"next/dist/esm/server/route-modules/app-route/module.compiled\";\nimport { RouteKind } from \"next/dist/esm/server/route-kind\";\nimport { patchFetch as _patchFetch } from \"next/dist/esm/server/lib/patch-fetch\";\nimport { addRequestMeta, getRequestMeta, setRequestMeta } from \"next/dist/esm/server/request-meta\";\nimport { getTracer, SpanKind } from \"next/dist/esm/server/lib/trace/tracer\";\nimport { setManifestsSingleton } from \"next/dist/esm/server/app-render/manifests-singleton\";\nimport { normalizeAppPath } from \"next/dist/esm/shared/lib/router/utils/app-paths\";\nimport { NodeNextRequest, NodeNextResponse } from \"next/dist/esm/server/base-http/node\";\nimport { NextRequestAdapter, signalFromNodeResponse } from \"next/dist/esm/server/web/spec-extension/adapters/next-request\";\nimport { BaseServerSpan } from \"next/dist/esm/server/lib/trace/constants\";\nimport { getRevalidateReason } from \"next/dist/esm/server/instrumentation/utils\";\nimport { sendResponse } from \"next/dist/esm/server/send-response\";\nimport { fromNodeOutgoingHttpHeaders, toNodeOutgoingHttpHeaders } from \"next/dist/esm/server/web/utils\";\nimport { getCacheControlHeader } from \"next/dist/esm/server/lib/cache-control\";\nimport { INFINITE_CACHE, NEXT_CACHE_TAGS_HEADER } from \"next/dist/esm/lib/constants\";\nimport { NoFallbackError } from \"next/dist/esm/shared/lib/no-fallback-error.external\";\nimport { CachedRouteKind } from \"next/dist/esm/server/response-cache\";\nimport * as userland from \"INNER_APP_ROUTE\";\n// We inject the nextConfigOutput here so that we can use them in the route\n// module.\nconst nextConfigOutput = \"\"\nconst routeModule = new AppRouteRouteModule({\n definition: {\n kind: RouteKind.APP_ROUTE,\n page: \"/api/instructions/override/route\",\n pathname: \"/api/instructions/override\",\n filename: \"route\",\n bundlePath: \"\"\n },\n distDir: process.env.__NEXT_RELATIVE_DIST_DIR || '',\n relativeProjectDir: process.env.__NEXT_RELATIVE_PROJECT_DIR || '',\n resolvedPagePath: \"[project]/app/api/instructions/override/route.ts\",\n nextConfigOutput,\n // The static import is used for initialization (methods, dynamic, etc.).\n userland: userland,\n // In Turbopack dev mode, also provide a getter that calls require() on every\n // request. This re-reads from devModuleCache so HMR updates are picked up,\n // and the async wrapper unwraps async-module Promises (ESM-only\n // serverExternalPackages) automatically.\n ...process.env.TURBOPACK && process.env.__NEXT_DEV_SERVER ? {\n getUserland: ()=>import(\"INNER_APP_ROUTE\")\n } : {}\n});\n// Pull out the exports that we need to expose from the module. This should\n// be eliminated when we've moved the other routes to the new format. These\n// are used to hook into the route.\nconst { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule;\nfunction patchFetch() {\n return _patchFetch({\n workAsyncStorage,\n workUnitAsyncStorage\n });\n}\nexport { routeModule, workAsyncStorage, workUnitAsyncStorage, serverHooks, patchFetch, };\nexport async function handler(req, res, ctx) {\n if (ctx.requestMeta) {\n setRequestMeta(req, ctx.requestMeta);\n }\n if (routeModule.isDev) {\n addRequestMeta(req, 'devRequestTimingInternalsEnd', process.hrtime.bigint());\n }\n let srcPage = \"/api/instructions/override/route\";\n // turbopack doesn't normalize `/index` in the page name\n // so we need to to process dynamic routes properly\n // TODO: fix turbopack providing differing value from webpack\n if (process.env.TURBOPACK) {\n srcPage = srcPage.replace(/\\/index$/, '') || '/';\n } else if (srcPage === '/index') {\n // we always normalize /index specifically\n srcPage = '/';\n }\n const multiZoneDraftMode = process.env.__NEXT_MULTI_ZONE_DRAFT_MODE;\n const prepareResult = await routeModule.prepare(req, res, {\n srcPage,\n multiZoneDraftMode\n });\n if (!prepareResult) {\n res.statusCode = 400;\n res.end('Bad Request');\n ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve());\n return null;\n }\n const { buildId, params, nextConfig, parsedUrl, isDraftMode, prerenderManifest, routerServerContext, isOnDemandRevalidate, revalidateOnlyGenerated, resolvedPathname, clientReferenceManifest, serverActionsManifest } = prepareResult;\n const normalizedSrcPage = normalizeAppPath(srcPage);\n let isIsr = Boolean(prerenderManifest.dynamicRoutes[normalizedSrcPage] || prerenderManifest.routes[resolvedPathname]);\n const render404 = async ()=>{\n // TODO: should route-module itself handle rendering the 404\n if (routerServerContext == null ? void 0 : routerServerContext.render404) {\n await routerServerContext.render404(req, res, parsedUrl, false);\n } else {\n res.end('This page could not be found');\n }\n return null;\n };\n if (isIsr && !isDraftMode) {\n const isPrerendered = Boolean(prerenderManifest.routes[resolvedPathname]);\n const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage];\n if (prerenderInfo) {\n if (prerenderInfo.fallback === false && !isPrerendered) {\n if (nextConfig.adapterPath) {\n return await render404();\n }\n throw new NoFallbackError();\n }\n }\n }\n let cacheKey = null;\n if (isIsr && !routeModule.isDev && !isDraftMode) {\n cacheKey = resolvedPathname;\n // ensure /index and / is normalized to one key\n cacheKey = cacheKey === '/index' ? '/' : cacheKey;\n }\n const supportsDynamicResponse = // If we're in development, we always support dynamic HTML\n routeModule.isDev === true || // If this is not SSG or does not have static paths, then it supports\n // dynamic HTML.\n !isIsr;\n // This is a revalidation request if the request is for a static\n // page and it is not being resumed from a postponed render and\n // it is not a dynamic RSC request then it is a revalidation\n // request.\n const isStaticGeneration = isIsr && !supportsDynamicResponse;\n // Before rendering (which initializes component tree modules), we have to\n // set the reference manifests to our global store so Server Action's\n // encryption util can access to them at the top level of the page module.\n if (serverActionsManifest && clientReferenceManifest) {\n setManifestsSingleton({\n page: srcPage,\n clientReferenceManifest,\n serverActionsManifest\n });\n }\n const method = req.method || 'GET';\n const tracer = getTracer();\n const activeSpan = tracer.getActiveScopeSpan();\n const isWrappedByNextServer = Boolean(routerServerContext == null ? void 0 : routerServerContext.isWrappedByNextServer);\n const isMinimalMode = Boolean(getRequestMeta(req, 'minimalMode'));\n const incrementalCache = getRequestMeta(req, 'incrementalCache') || await routeModule.getIncrementalCache(req, nextConfig, prerenderManifest, isMinimalMode);\n incrementalCache == null ? void 0 : incrementalCache.resetRequestCache();\n globalThis.__incrementalCache = incrementalCache;\n const context = {\n params,\n previewProps: prerenderManifest.preview,\n renderOpts: {\n experimental: {\n authInterrupts: Boolean(nextConfig.experimental.authInterrupts)\n },\n cacheComponents: Boolean(nextConfig.cacheComponents),\n supportsDynamicResponse,\n incrementalCache,\n cacheLifeProfiles: nextConfig.cacheLife,\n waitUntil: ctx.waitUntil,\n onClose: (cb)=>{\n res.on('close', cb);\n },\n onAfterTaskError: undefined,\n onInstrumentationRequestError: (error, _request, errorContext, silenceLog)=>routeModule.onRequestError(req, error, errorContext, silenceLog, routerServerContext)\n },\n sharedContext: {\n buildId\n }\n };\n const nodeNextReq = new NodeNextRequest(req);\n const nodeNextRes = new NodeNextResponse(res);\n const nextReq = NextRequestAdapter.fromNodeNextRequest(nodeNextReq, signalFromNodeResponse(res));\n try {\n let parentSpan;\n const invokeRouteModule = async (span)=>{\n return routeModule.handle(nextReq, context).finally(()=>{\n if (!span) return;\n span.setAttributes({\n 'http.status_code': res.statusCode,\n 'next.rsc': false\n });\n const rootSpanAttributes = tracer.getRootSpanAttributes();\n // We were unable to get attributes, probably OTEL is not enabled\n if (!rootSpanAttributes) {\n return;\n }\n if (rootSpanAttributes.get('next.span_type') !== BaseServerSpan.handleRequest) {\n console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`);\n return;\n }\n const route = rootSpanAttributes.get('next.route');\n if (route) {\n const name = `${method} ${route}`;\n span.setAttributes({\n 'next.route': route,\n 'http.route': route,\n 'next.span_name': name\n });\n span.updateName(name);\n // Propagate http.route to the parent span if one exists (e.g.\n // a platform-created HTTP span in adapter deployments).\n if (parentSpan && parentSpan !== span) {\n parentSpan.setAttribute('http.route', route);\n parentSpan.updateName(name);\n }\n } else {\n span.updateName(`${method} ${srcPage}`);\n }\n });\n };\n const handleResponse = async (currentSpan)=>{\n var _cacheEntry_value;\n const responseGenerator = async ({ previousCacheEntry })=>{\n try {\n if (!isMinimalMode && isOnDemandRevalidate && revalidateOnlyGenerated && !previousCacheEntry) {\n res.statusCode = 404;\n // on-demand revalidate always sets this header\n res.setHeader('x-nextjs-cache', 'REVALIDATED');\n res.end('This page could not be found');\n return null;\n }\n const response = await invokeRouteModule(currentSpan);\n req.fetchMetrics = context.renderOpts.fetchMetrics;\n let pendingWaitUntil = context.renderOpts.pendingWaitUntil;\n // Attempt using provided waitUntil if available\n // if it's not we fallback to sendResponse's handling\n if (pendingWaitUntil) {\n if (ctx.waitUntil) {\n ctx.waitUntil(pendingWaitUntil);\n pendingWaitUntil = undefined;\n }\n }\n const cacheTags = context.renderOpts.collectedTags;\n // If the request is for a static response, we can cache it so long\n // as it's not edge.\n if (isIsr) {\n const blob = await response.blob();\n // Copy the headers from the response.\n const headers = toNodeOutgoingHttpHeaders(response.headers);\n if (cacheTags) {\n headers[NEXT_CACHE_TAGS_HEADER] = cacheTags;\n }\n if (!headers['content-type'] && blob.type) {\n headers['content-type'] = blob.type;\n }\n const revalidate = typeof context.renderOpts.collectedRevalidate === 'undefined' || context.renderOpts.collectedRevalidate >= INFINITE_CACHE ? false : context.renderOpts.collectedRevalidate;\n const expire = typeof context.renderOpts.collectedExpire === 'undefined' || context.renderOpts.collectedExpire >= INFINITE_CACHE ? undefined : context.renderOpts.collectedExpire;\n // Create the cache entry for the response.\n const cacheEntry = {\n value: {\n kind: CachedRouteKind.APP_ROUTE,\n status: response.status,\n body: Buffer.from(await blob.arrayBuffer()),\n headers\n },\n cacheControl: {\n revalidate,\n expire\n }\n };\n return cacheEntry;\n } else {\n // send response without caching if not ISR\n await sendResponse(nodeNextReq, nodeNextRes, response, context.renderOpts.pendingWaitUntil);\n return null;\n }\n } catch (err) {\n // if this is a background revalidate we need to report\n // the request error here as it won't be bubbled\n if (previousCacheEntry == null ? void 0 : previousCacheEntry.isStale) {\n const silenceLog = false;\n await routeModule.onRequestError(req, err, {\n routerKind: 'App Router',\n routePath: srcPage,\n routeType: 'route',\n revalidateReason: getRevalidateReason({\n isStaticGeneration,\n isOnDemandRevalidate\n })\n }, silenceLog, routerServerContext);\n }\n throw err;\n }\n };\n const cacheEntry = await routeModule.handleResponse({\n req,\n nextConfig,\n cacheKey,\n routeKind: RouteKind.APP_ROUTE,\n isFallback: false,\n prerenderManifest,\n isRoutePPREnabled: false,\n isOnDemandRevalidate,\n revalidateOnlyGenerated,\n responseGenerator,\n waitUntil: ctx.waitUntil,\n isMinimalMode\n });\n // we don't create a cacheEntry for ISR\n if (!isIsr) {\n return null;\n }\n if ((cacheEntry == null ? void 0 : (_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) !== CachedRouteKind.APP_ROUTE) {\n var _cacheEntry_value1;\n throw Object.defineProperty(new Error(`Invariant: app-route received invalid cache entry ${cacheEntry == null ? void 0 : (_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind}`), \"__NEXT_ERROR_CODE\", {\n value: \"E701\",\n enumerable: false,\n configurable: true\n });\n }\n if (!isMinimalMode) {\n res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT');\n }\n // Draft mode should never be cached\n if (isDraftMode) {\n res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate');\n }\n const headers = fromNodeOutgoingHttpHeaders(cacheEntry.value.headers);\n if (!(isMinimalMode && isIsr)) {\n headers.delete(NEXT_CACHE_TAGS_HEADER);\n }\n // If cache control is already set on the response we don't\n // override it to allow users to customize it via next.config\n if (cacheEntry.cacheControl && !res.getHeader('Cache-Control') && !headers.get('Cache-Control')) {\n headers.set('Cache-Control', getCacheControlHeader(cacheEntry.cacheControl));\n }\n await sendResponse(nodeNextReq, nodeNextRes, // @ts-expect-error - Argument of type 'Buffer<ArrayBufferLike>' is not assignable to parameter of type 'BodyInit | null | undefined'.\n new Response(cacheEntry.value.body, {\n headers,\n status: cacheEntry.value.status || 200\n }));\n return null;\n };\n // TODO: activeSpan code path is for when wrapped by\n // next-server can be removed when this is no longer used\n if (isWrappedByNextServer && activeSpan) {\n await handleResponse(activeSpan);\n } else {\n parentSpan = tracer.getActiveScopeSpan();\n await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(BaseServerSpan.handleRequest, {\n spanName: `${method} ${srcPage}`,\n kind: SpanKind.SERVER,\n attributes: {\n 'http.method': method,\n 'http.target': req.url\n }\n }, handleResponse), undefined, !isWrappedByNextServer);\n }\n } catch (err) {\n if (!(err instanceof NoFallbackError)) {\n const silenceLog = false;\n await routeModule.onRequestError(req, err, {\n routerKind: 'App Router',\n routePath: normalizedSrcPage,\n routeType: 'route',\n revalidateReason: getRevalidateReason({\n isStaticGeneration,\n isOnDemandRevalidate\n })\n }, silenceLog, routerServerContext);\n }\n // rethrow so that we can handle serving error page\n // If this is during static generation, throw the error again.\n if (isIsr) throw err;\n // Otherwise, send a 500 response.\n await sendResponse(nodeNextReq, nodeNextRes, new Response(null, {\n status: 500\n }));\n return null;\n }\n}\n\n//# sourceMappingURL=app-route.js.map\n"],"names":["currentPlatform","platform","isWindows","isMac","isLinux","exeSuffix","globalForNav","globalThis","__navEmitter","setMaxListeners","navigationEmitter","emitSecuritySettingsChanged","event","emit","emitHighlight","emitHighlightEffect","emitSetComplexityMode","isCanonicalLibiInstance","defaultHome","join","homedir","resolveCodexHome","explicit","process","env","CODEX_HOME","ensureCodexHome","home","mkdirSync","recursive","TEXT_EXTENSIONS","readSupportingFiles","skillDir","out","walk","rel","abs","entry","withFileTypes","isSymbolicLink","childRel","name","isDirectory","isFile","isText","test","push","relPath","contents","loadFromDisk","rootDir","dir","skillFile","body","supportingFiles","loadEnabledSkills","db","rows","select","from","where","enabled","orderBy","source","all","byName","Map","row","disk","warn","frontmatter","err","error","existing","get","set","id","description","tags","Array","isArray","values","candidates","cwd","resolve","loadBundledTemplate","filePath","existsSync","readFileSync","Error","LIBI_SKILL_VERSION","MEMORIES_MAX_CHARS","readMemories","writeMemories","content","length","dirname","writeFileSync","appendMemories","trimEnd","trim","next","START_MARKER","END_MARKER","MEMORIES_START","MEMORIES_END","TEST_MODE_BANNER","resolveTemplate","getInstructions","dialect","working","startIdx","indexOf","lineEnd","slice","trimmed","block","endIdx","includes","replace","tag","op","getInstructionContent","full","lines","split","startLine","findIndex","l","startsWith","endLine","parseInstructionVersion","match","upsertInstructions","instructions","before","after","combined","appendFileSync","POST","request","json","status","ok","kind","via","sessionsTerminated","DELETE","reverted"],"mappings":"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","ignoreList":[16]}}]
|
|
7
7
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="
|
|
1
|
+
;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="fbe60168-e8cf-25af-881b-2a8d9f2807ac")}catch(e){}}();
|
|
2
2
|
module.exports=[324725,(e,t,r)=>{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"))},233405,(e,t,r)=>{t.exports=e.x("child_process",()=>require("child_process"))},246387,e=>{"use strict";var t=e.i(660526);function r(){return t.default.platform()}function i(){return"win32"===r()}e.s(["exeSuffix",0,function(){return i()?".exe":""},"isMac",0,function(){return"darwin"===r()},"isWindows",0,i])},427699,(e,t,r)=>{t.exports=e.x("events",()=>require("events"))},452183,e=>{"use strict";var t=e.i(427699);let r=globalThis;r.__navEmitter||(r.__navEmitter=new t.EventEmitter,r.__navEmitter.setMaxListeners(50));let i=r.__navEmitter;e.s(["emitHighlight",0,function(e){i.emit("highlight",e)},"emitHighlightEffect",0,function(e){i.emit("highlight_effect",e)},"emitSecuritySettingsChanged",0,function(e){i.emit("security_settings_changed",e)},"emitSetComplexityMode",0,function(e){i.emit("set_complexity_mode",e)},"navigationEmitter",0,i])},632070,e=>{"use strict";var t=e.i(522734),r=e.i(446786),i=e.i(814747),n=e.i(270958),s=e.i(692855);function l(){if((0,s.isTestMode)())return!1;let e=i.default.join(r.default.homedir(),".libi");return(0,n.getLibiHome)()===e}function a(){let e=process.env.CODEX_HOME;return e||(l()?i.default.join(r.default.homedir(),".codex"):i.default.join((0,n.getLibiHome)(),".codex"))}e.s(["ensureCodexHome",0,function(){let e=a();try{t.default.mkdirSync(e,{recursive:!0})}catch{}return e},"isCanonicalLibiInstance",0,l,"resolveCodexHome",0,a])},651970,706387,e=>{"use strict";var t=e.i(902157),r=e.i(750227),i=e.i(875225),n=e.i(190793);e.i(945122);var s=e.i(478181),l=e.i(270958),a=e.i(640911),o=e.i(20535);let c=/\.(md|txt|json|ya?ml|toml|csv|tsv|html?|xml|js|ts|tsx|jsx|css|sh|py|rb|go|rs)$/i;function u(e,i){let n=r.join(e,i),s=r.join(n,"SKILL.md");return t.existsSync(s)?{body:t.readFileSync(s,"utf-8"),supportingFiles:function(e){let i=[];if(!t.existsSync(e))return i;let n=s=>{let l=r.join(e,s);for(let a of t.readdirSync(l,{withFileTypes:!0})){if(a.isSymbolicLink())continue;let l=r.join(s,a.name);if(a.isDirectory())n(l);else if(a.isFile()&&"SKILL.md"!==l){let n=c.test(a.name);i.push({relPath:l,contents:n?t.readFileSync(r.join(e,l),"utf-8"):t.readFileSync(r.join(e,l))})}}};return n("."),i}(n)}:null}async function d(){let e=(0,n.getDb)().select().from(s.skills).where((0,i.eq)(s.skills.enabled,!0)).orderBy(s.skills.source).all(),t=new Map;for(let r of e){let e,i,n=[];if("bundled"===r.source){let t=u((0,l.getBundledSkillsDir)(),r.name);if(!t){a.serverLogger.warn({name:r.name},"skills.bundled_missing_on_disk");continue}e=t.body,n=t.supportingFiles}else{if(!r.body){a.serverLogger.warn({name:r.name},"skills.user_missing_body");continue}e=r.body;let t=u((0,l.getLibiSkillsDir)(),r.name);n=t?.supportingFiles??[]}try{({frontmatter:i}=(0,o.parseSkillBody)(e))}catch(e){a.serverLogger.error({err:e,name:r.name},"skills.parse_failed");continue}let s=t.get(r.name);if(!s||("user"!==s.source||"bundled"!==r.source)&&"bundled"===s.source&&"user"===r.source)t.set(r.name,{id:r.id,name:r.name,description:r.description,source:r.source,enabled:r.enabled,body:e,frontmatter:i,supportingFiles:n,tags:Array.isArray(i.tags)?i.tags:[]})}return Array.from(t.values())}e.s(["loadEnabledSkills",0,d],651970);var f=e.i(666680);let p=[".claude/skills",".agents/skills"];function m(e){return f.createHash("sha256").update(e).digest("hex")}function h(e,i){if(t.mkdirSync(r.dirname(e),{recursive:!0}),t.existsSync(e)){let r=t.readFileSync(e),n=Buffer.isBuffer(i)?i:Buffer.from(i);if(m(r)===m(n))return!1}return t.writeFileSync(e,i),!0}function g(e){return t.existsSync(e)?t.readdirSync(e,{withFileTypes:!0}).filter(e=>e.isDirectory()).map(e=>e.name):[]}let v=".libi-managed.json";function y(e){let i=r.join(e,v);if(!t.existsSync(i))return null;try{let e=JSON.parse(t.readFileSync(i,"utf-8"));if(e&&Array.isArray(e.managed))return new Set(e.managed.filter(e=>"string"==typeof e))}catch{}return null}async function _(e,i){let n=new Set(i.map(e=>e.name)),s=0,o=0,c=r.resolve(e)===r.resolve((0,l.getLibiAgentDir)());for(let l of p){let a=r.join(e,l);t.mkdirSync(a,{recursive:!0});let u=y(a)??(c?new Set(g(a)):new Set);for(let e of g(a))!n.has(e)&&u.has(e)&&(t.rmSync(r.join(a,e),{recursive:!0,force:!0}),o++);for(let e of i){let i=r.join(a,e.name);h(r.join(i,"SKILL.md"),e.body)&&s++;let n=new Set(e.supportingFiles.map(e=>e.relPath)),l=e=>{let s=r.join(i,e);if(t.existsSync(s))for(let a of t.readdirSync(s,{withFileTypes:!0})){let s=r.join(e,a.name);a.isDirectory()?l(s):"SKILL.md"!==s&&!n.has(s)&&(t.rmSync(r.join(i,s),{force:!0}),o++)}};for(let t of(l("."),e.supportingFiles))h(r.join(i,t.relPath),t.contents)&&s++;!function e(i){if(t.existsSync(i)){for(let n of t.readdirSync(i,{withFileTypes:!0}))if(n.isDirectory()){let s=r.join(i,n.name);e(s),0===t.readdirSync(s).length&&t.rmdirSync(s)}}}(i)}h(r.join(a,v),JSON.stringify({managed:[...n].sort()},null,2)+"\n")}!function(e){let i=r.join(e,"GEMINI.md");try{if(!t.existsSync(i))return;t.readFileSync(i,"utf-8").includes("<!-- libi-skills-start -->")&&t.rmSync(i,{force:!0})}catch(t){a.serverLogger.warn({err:t,workspaceDir:e,tag:"skills",op:"gemini_sweep_failed"},"gemini.sweep_failed")}}(e),function(e,i){let n=r.join(e,i);try{if(!t.existsSync(n))return;let e=y(n);if(e){for(let i of e)t.rmSync(r.join(n,i),{recursive:!0,force:!0});t.rmSync(r.join(n,v),{force:!0})}if(t.existsSync(n)&&0===t.readdirSync(n).length){t.rmdirSync(n);let e=r.dirname(n);t.existsSync(e)&&0===t.readdirSync(e).length&&t.rmdirSync(e)}}catch(t){a.serverLogger.warn({err:t,workspaceDir:e,dialect:i,tag:"skills",op:"legacy_dialect_sweep_failed"},"skills.legacy_dialect_sweep_failed")}}(e,".codex/skills"),a.serverLogger.info({writes:s,removed:o,enabled:i.length},"skills.workspace_written")}e.s(["writeSkillsToWorkspace",0,_],706387)},73953,366902,608405,e=>{"use strict";var t=e.i(902157),r=e.i(750227),i=e.i(270958);function n(){return[r.default.join(process.cwd(),"mcp","templates","instructions.md"),r.default.resolve("/ROOT/lib/instructions","..","..","mcp","templates","instructions.md"),r.default.resolve("/ROOT/lib/instructions","..","..","..","mcp","templates","instructions.md")]}function s(){for(let e of n())if(t.default.existsSync(e))return t.default.readFileSync(e,"utf-8");throw Error(`instructions.md template not found (tried: ${n().join(", ")})`)}function l(){return r.default.join((0,i.getLibiInstructionsDir)(),"instructions.md")}function a(){return r.default.join((0,i.getLibiInstructionsDir)(),".base.md")}e.s(["loadBundledTemplate",0,s],366902),e.s(["getInstructionsStatus",0,function(){let e;if(!t.default.existsSync(l()))return{source:"bundled",bundledUpdatedSinceFork:!1};try{let r=t.default.readFileSync(a(),"utf-8");e=s()!==r}catch{e="unknown"}return{source:"override",bundledUpdatedSinceFork:e}},"readInstructionsOverride",0,function(){try{return t.default.readFileSync(l(),"utf-8")}catch{return null}},"revertInstructionsOverride",0,function(){t.default.rmSync(l(),{force:!0}),t.default.rmSync(a(),{force:!0})},"saveInstructionsOverride",0,function(e){if(0===e.trim().length)throw Error("Override content must not be empty — revert instead");let r=(0,i.getLibiInstructionsDir)();t.default.mkdirSync(r,{recursive:!0}),t.default.existsSync(a())||t.default.writeFileSync(a(),s()),t.default.writeFileSync(l(),e)}],73953);let o=/<!--\s*(\/?)libi-agent:(claude|codex)\s*-->/g;e.s(["renderDialect",0,function(e,t){let r;o.lastIndex=0;let i="",n=0,s=null,l=!0;for(;null!==(r=o.exec(e));){let a="/"===r[1],o=r[2],c=e.slice(n,r.index);if(a){if(null===s)throw Error(`renderDialect: stray closing libi-agent marker for '${o}' with no matching opener`);if(o!==s)throw Error(`renderDialect: mismatched libi-agent marker — '${s}' block closed by '${o}'`);l&&(i+=c),s=null,l=!0}else{if(null!==s)throw Error(`renderDialect: nested libi-agent marker — '${o}' block opened inside an open '${s}' block`);i+=c,s=o,l=o===t}n=r.index+r[0].length}if(null!==s)throw Error(`renderDialect: unclosed libi-agent marker — '${s}' block was never closed`);return i+e.slice(n)}],608405)},32558,e=>{"use strict";var t=e.i(902157),r=e.i(750227),i=e.i(270958);e.s(["MEMORIES_MAX_CHARS",0,8e3,"readMemories",0,function(){try{return t.default.readFileSync((0,i.getLibiMemoriesPath)(),"utf-8")}catch{return""}},"writeMemories",0,function(e){if(e.length>8e3)throw Error("Memories exceed 8000 chars");let n=(0,i.getLibiMemoriesPath)();t.default.mkdirSync(r.default.dirname(n),{recursive:!0}),t.default.writeFileSync(n,e)}])},541807,e=>{"use strict";e.s(["LIBI_SKILL_VERSION",0,"1.17.0"])},358901,e=>{"use strict";var t=e.i(522734),r=e.i(814747),i=e.i(640911),n=e.i(541807),s=e.i(692855),l=e.i(366902),a=e.i(73953),o=e.i(32558),c=e.i(608405);let u="<!-- libi-instructions-end -->",d="<!-- libi-memories-start -->",f="<!-- libi-memories-end -->",p=`
|
|
3
3
|
> 🧪 **TEST MODE ACTIVE** — \`LIBI_TEST_MODE=1\` is set. The \`fal-ai\` MCP
|
|
4
4
|
> is present but runs as a sandboxed fake: it exposes the real fal tool surface
|
|
@@ -27,7 +27,7 @@ ${i}`;if(null===e||""===e.trim())return`${n}
|
|
|
27
27
|
`;let s=e.indexOf(r),l=e.indexOf(i);return -1!==s&&-1!==l&&l>s?e.slice(0,s)+n+e.slice(l+i.length):`${e.trimEnd()}
|
|
28
28
|
|
|
29
29
|
${n}
|
|
30
|
-
`}(e,h))}}t.default.writeFileSync(r.default.join(e,".version"),n.LIBI_SKILL_VERSION),(0,v.writeSettingsFile)(e),(0,y.syncCodexGlobalMcpsIfConnected)().catch(e=>{i.serverLogger.warn({err:e,tag:"codex-config",op:"error"},"syncCodexGlobalMcpsIfConnected rejected")});try{let t=await (0,_.loadEnabledSkills)();await (0,S.writeSkillsToWorkspace)(e,t)}catch(e){i.serverLogger.error({err:e},"skills.write_failed_during_workspace_prep")}}async function x(){let{getProcessManager:t}=await e.A(794708),{getSessionManager:r}=await e.A(700492),n=r();for(let e of(0,b.getAgentDirWriteTargets)())await w(e);let s=t(),l=await s.terminateAll();return n.resetAll(l),i.serverLogger.info({sessionsTerminated:l},"workspace.regenerate"),{sessionsTerminated:l}}e.s(["prepareAgentDir",0,w,"regenerateAndRestart",0,x],358901)},10162,e=>{"use strict";var t=e.i(747909),r=e.i(174017),i=e.i(996250),n=e.i(759756),s=e.i(561916),l=e.i(174677),a=e.i(869741),o=e.i(316795),c=e.i(487718),u=e.i(995169),d=e.i(47587),f=e.i(666012),p=e.i(570101),m=e.i(626937),h=e.i(10372),g=e.i(193695);e.i(820232);var v=e.i(600220),y=e.i(89171),_=e.i(32558),S=e.i(358901),b=e.i(452183),w=e.i(640911);async function x(){return y.NextResponse.json({content:(0,_.readMemories)()})}async function k(e){let t;try{t=await e.json()}catch{return y.NextResponse.json({error:"Invalid JSON"},{status:400})}let r="string"==typeof t.content?t.content:"";if(r.length>_.MEMORIES_MAX_CHARS)return y.NextResponse.json({error:`Memories exceed ${_.MEMORIES_MAX_CHARS} chars`},{status:400});(0,_.writeMemories)(r),w.serverLogger.warn({tag:"security",op:"memories_http_write"},"agent memories written via HTTP settings route"),(0,b.emitSecuritySettingsChanged)({kind:"memories",via:"http"});let{sessionsTerminated:i}=await (0,S.regenerateAndRestart)();return y.NextResponse.json({ok:!0,sessionsTerminated:i})}e.s(["GET",0,x,"PUT",0,k],316806);var E=e.i(316806);let R=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/settings/memories/route",pathname:"/api/settings/memories",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/app/api/settings/memories/route.ts",nextConfigOutput:"",userland:E,...{}}),{workAsyncStorage:j,workUnitAsyncStorage:A,serverHooks:C}=R;async function T(e,t,i){i.requestMeta&&(0,n.setRequestMeta)(e,i.requestMeta),R.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let y="/api/settings/memories/route";y=y.replace(/\/index$/,"")||"/";let _=await R.prepare(e,t,{srcPage:y,multiZoneDraftMode:!1});if(!_)return t.statusCode=400,t.end("Bad Request"),null==i.waitUntil||i.waitUntil.call(i,Promise.resolve()),null;let{buildId:S,params:b,nextConfig:w,parsedUrl:x,isDraftMode:k,prerenderManifest:E,routerServerContext:j,isOnDemandRevalidate:A,revalidateOnlyGenerated:C,resolvedPathname:T,clientReferenceManifest:I,serverActionsManifest:M}=_,L=(0,a.normalizeAppPath)(y),O=!!(E.dynamicRoutes[L]||E.routes[T]),P=async()=>((null==j?void 0:j.render404)?await j.render404(e,t,x,!1):t.end("This page could not be found"),null);if(O&&!k){let e=!!E.routes[T],t=E.dynamicRoutes[L];if(t&&!1===t.fallback&&!e){if(w.adapterPath)return await P();throw new g.NoFallbackError}}let D=null;!O||R.isDev||k||(D="/index"===(D=T)?"/":D);let N=!0===R.isDev||!O,F=O&&!N;M&&I&&(0,l.setManifestsSingleton)({page:y,clientReferenceManifest:I,serverActionsManifest:M});let $=e.method||"GET",H=(0,s.getTracer)(),q=H.getActiveScopeSpan(),U=!!(null==j?void 0:j.isWrappedByNextServer),B=!!(0,n.getRequestMeta)(e,"minimalMode"),K=(0,n.getRequestMeta)(e,"incrementalCache")||await R.getIncrementalCache(e,w,E,B);null==K||K.resetRequestCache(),globalThis.__incrementalCache=K;let z={params:b,previewProps:E.preview,renderOpts:{experimental:{authInterrupts:!!w.experimental.authInterrupts},cacheComponents:!!w.cacheComponents,supportsDynamicResponse:N,incrementalCache:K,cacheLifeProfiles:w.cacheLife,waitUntil:i.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,i,n)=>R.onRequestError(e,t,i,n,j)},sharedContext:{buildId:S}},G=new o.NodeNextRequest(e),V=new o.NodeNextResponse(t),W=c.NextRequestAdapter.fromNodeNextRequest(G,(0,c.signalFromNodeResponse)(t));try{let n,l=async e=>R.handle(W,z).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=H.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==u.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 i=r.get("next.route");if(i){let t=`${$} ${i}`;e.setAttributes({"next.route":i,"http.route":i,"next.span_name":t}),e.updateName(t),n&&n!==e&&(n.setAttribute("http.route",i),n.updateName(t))}else e.updateName(`${$} ${y}`)}),a=async n=>{var s,a;let o=async({previousCacheEntry:r})=>{try{if(!B&&A&&C&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await l(n);e.fetchMetrics=z.renderOpts.fetchMetrics;let a=z.renderOpts.pendingWaitUntil;a&&i.waitUntil&&(i.waitUntil(a),a=void 0);let o=z.renderOpts.collectedTags;if(!O)return await (0,f.sendResponse)(G,V,s,z.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,p.toNodeOutgoingHttpHeaders)(s.headers);o&&(t[h.NEXT_CACHE_TAGS_HEADER]=o),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==z.renderOpts.collectedRevalidate&&!(z.renderOpts.collectedRevalidate>=h.INFINITE_CACHE)&&z.renderOpts.collectedRevalidate,i=void 0===z.renderOpts.collectedExpire||z.renderOpts.collectedExpire>=h.INFINITE_CACHE?void 0:z.renderOpts.collectedExpire;return{value:{kind:v.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:i}}}}catch(t){throw(null==r?void 0:r.isStale)&&await R.onRequestError(e,t,{routerKind:"App Router",routePath:y,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:F,isOnDemandRevalidate:A})},!1,j),t}},c=await R.handleResponse({req:e,nextConfig:w,cacheKey:D,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:E,isRoutePPREnabled:!1,isOnDemandRevalidate:A,revalidateOnlyGenerated:C,responseGenerator:o,waitUntil:i.waitUntil,isMinimalMode:B});if(!O)return null;if((null==c||null==(s=c.value)?void 0:s.kind)!==v.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==c||null==(a=c.value)?void 0:a.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});B||t.setHeader("x-nextjs-cache",A?"REVALIDATED":c.isMiss?"MISS":c.isStale?"STALE":"HIT"),k&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,p.fromNodeOutgoingHttpHeaders)(c.value.headers);return B&&O||u.delete(h.NEXT_CACHE_TAGS_HEADER),!c.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,m.getCacheControlHeader)(c.cacheControl)),await (0,f.sendResponse)(G,V,new Response(c.value.body,{headers:u,status:c.value.status||200})),null};U&&q?await a(q):(n=H.getActiveScopeSpan(),await H.withPropagatedContext(e.headers,()=>H.trace(u.BaseServerSpan.handleRequest,{spanName:`${$} ${y}`,kind:s.SpanKind.SERVER,attributes:{"http.method":$,"http.target":e.url}},a),void 0,!U))}catch(t){if(t instanceof g.NoFallbackError||await R.onRequestError(e,t,{routerKind:"App Router",routePath:L,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:F,isOnDemandRevalidate:A})},!1,j),O)throw t;return await (0,f.sendResponse)(G,V,new Response(null,{status:500})),null}}e.s(["handler",0,T,"patchFetch",0,function(){return(0,i.patchFetch)({workAsyncStorage:j,workUnitAsyncStorage:A})},"routeModule",0,R,"serverHooks",0,C,"workAsyncStorage",0,j,"workUnitAsyncStorage",0,A],10162)},896235,e=>{e.v(e=>Promise.resolve().then(()=>e(640911)))},794708,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__0uadj5z._.js","server/chunks/lib_agents_0jbdl9~._.js","server/chunks/lib_agents_process-manager_ts_0zbkwal._.js","server/chunks/node_modules_zod_v4_classic_external_131y~ke.js"].map(t=>e.l(t))).then(()=>t(669285)))},700492,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__12wqcat._.js","server/chunks/[root-of-the-server]__064-9mc._.js","server/chunks/lib_agents_0jbdl9~._.js","server/chunks/lib_analysis_manager_ts_01harro._.js","server/chunks/lib_0wi33xt._.js","server/chunks/lib_0.areff._.js","server/chunks/[root-of-the-server]__074l3tr._.js","server/chunks/
|
|
30
|
+
`}(e,h))}}t.default.writeFileSync(r.default.join(e,".version"),n.LIBI_SKILL_VERSION),(0,v.writeSettingsFile)(e),(0,y.syncCodexGlobalMcpsIfConnected)().catch(e=>{i.serverLogger.warn({err:e,tag:"codex-config",op:"error"},"syncCodexGlobalMcpsIfConnected rejected")});try{let t=await (0,_.loadEnabledSkills)();await (0,S.writeSkillsToWorkspace)(e,t)}catch(e){i.serverLogger.error({err:e},"skills.write_failed_during_workspace_prep")}}async function x(){let{getProcessManager:t}=await e.A(794708),{getSessionManager:r}=await e.A(700492),n=r();for(let e of(0,b.getAgentDirWriteTargets)())await w(e);let s=t(),l=await s.terminateAll();return n.resetAll(l),i.serverLogger.info({sessionsTerminated:l},"workspace.regenerate"),{sessionsTerminated:l}}e.s(["prepareAgentDir",0,w,"regenerateAndRestart",0,x],358901)},10162,e=>{"use strict";var t=e.i(747909),r=e.i(174017),i=e.i(996250),n=e.i(759756),s=e.i(561916),l=e.i(174677),a=e.i(869741),o=e.i(316795),c=e.i(487718),u=e.i(995169),d=e.i(47587),f=e.i(666012),p=e.i(570101),m=e.i(626937),h=e.i(10372),g=e.i(193695);e.i(820232);var v=e.i(600220),y=e.i(89171),_=e.i(32558),S=e.i(358901),b=e.i(452183),w=e.i(640911);async function x(){return y.NextResponse.json({content:(0,_.readMemories)()})}async function k(e){let t;try{t=await e.json()}catch{return y.NextResponse.json({error:"Invalid JSON"},{status:400})}let r="string"==typeof t.content?t.content:"";if(r.length>_.MEMORIES_MAX_CHARS)return y.NextResponse.json({error:`Memories exceed ${_.MEMORIES_MAX_CHARS} chars`},{status:400});(0,_.writeMemories)(r),w.serverLogger.warn({tag:"security",op:"memories_http_write"},"agent memories written via HTTP settings route"),(0,b.emitSecuritySettingsChanged)({kind:"memories",via:"http"});let{sessionsTerminated:i}=await (0,S.regenerateAndRestart)();return y.NextResponse.json({ok:!0,sessionsTerminated:i})}e.s(["GET",0,x,"PUT",0,k],316806);var E=e.i(316806);let R=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/settings/memories/route",pathname:"/api/settings/memories",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/app/api/settings/memories/route.ts",nextConfigOutput:"",userland:E,...{}}),{workAsyncStorage:j,workUnitAsyncStorage:A,serverHooks:C}=R;async function T(e,t,i){i.requestMeta&&(0,n.setRequestMeta)(e,i.requestMeta),R.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let y="/api/settings/memories/route";y=y.replace(/\/index$/,"")||"/";let _=await R.prepare(e,t,{srcPage:y,multiZoneDraftMode:!1});if(!_)return t.statusCode=400,t.end("Bad Request"),null==i.waitUntil||i.waitUntil.call(i,Promise.resolve()),null;let{buildId:S,params:b,nextConfig:w,parsedUrl:x,isDraftMode:k,prerenderManifest:E,routerServerContext:j,isOnDemandRevalidate:A,revalidateOnlyGenerated:C,resolvedPathname:T,clientReferenceManifest:I,serverActionsManifest:M}=_,L=(0,a.normalizeAppPath)(y),O=!!(E.dynamicRoutes[L]||E.routes[T]),P=async()=>((null==j?void 0:j.render404)?await j.render404(e,t,x,!1):t.end("This page could not be found"),null);if(O&&!k){let e=!!E.routes[T],t=E.dynamicRoutes[L];if(t&&!1===t.fallback&&!e){if(w.adapterPath)return await P();throw new g.NoFallbackError}}let D=null;!O||R.isDev||k||(D="/index"===(D=T)?"/":D);let N=!0===R.isDev||!O,F=O&&!N;M&&I&&(0,l.setManifestsSingleton)({page:y,clientReferenceManifest:I,serverActionsManifest:M});let $=e.method||"GET",H=(0,s.getTracer)(),q=H.getActiveScopeSpan(),U=!!(null==j?void 0:j.isWrappedByNextServer),B=!!(0,n.getRequestMeta)(e,"minimalMode"),K=(0,n.getRequestMeta)(e,"incrementalCache")||await R.getIncrementalCache(e,w,E,B);null==K||K.resetRequestCache(),globalThis.__incrementalCache=K;let z={params:b,previewProps:E.preview,renderOpts:{experimental:{authInterrupts:!!w.experimental.authInterrupts},cacheComponents:!!w.cacheComponents,supportsDynamicResponse:N,incrementalCache:K,cacheLifeProfiles:w.cacheLife,waitUntil:i.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,i,n)=>R.onRequestError(e,t,i,n,j)},sharedContext:{buildId:S}},G=new o.NodeNextRequest(e),V=new o.NodeNextResponse(t),W=c.NextRequestAdapter.fromNodeNextRequest(G,(0,c.signalFromNodeResponse)(t));try{let n,l=async e=>R.handle(W,z).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=H.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==u.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 i=r.get("next.route");if(i){let t=`${$} ${i}`;e.setAttributes({"next.route":i,"http.route":i,"next.span_name":t}),e.updateName(t),n&&n!==e&&(n.setAttribute("http.route",i),n.updateName(t))}else e.updateName(`${$} ${y}`)}),a=async n=>{var s,a;let o=async({previousCacheEntry:r})=>{try{if(!B&&A&&C&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await l(n);e.fetchMetrics=z.renderOpts.fetchMetrics;let a=z.renderOpts.pendingWaitUntil;a&&i.waitUntil&&(i.waitUntil(a),a=void 0);let o=z.renderOpts.collectedTags;if(!O)return await (0,f.sendResponse)(G,V,s,z.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,p.toNodeOutgoingHttpHeaders)(s.headers);o&&(t[h.NEXT_CACHE_TAGS_HEADER]=o),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==z.renderOpts.collectedRevalidate&&!(z.renderOpts.collectedRevalidate>=h.INFINITE_CACHE)&&z.renderOpts.collectedRevalidate,i=void 0===z.renderOpts.collectedExpire||z.renderOpts.collectedExpire>=h.INFINITE_CACHE?void 0:z.renderOpts.collectedExpire;return{value:{kind:v.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:i}}}}catch(t){throw(null==r?void 0:r.isStale)&&await R.onRequestError(e,t,{routerKind:"App Router",routePath:y,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:F,isOnDemandRevalidate:A})},!1,j),t}},c=await R.handleResponse({req:e,nextConfig:w,cacheKey:D,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:E,isRoutePPREnabled:!1,isOnDemandRevalidate:A,revalidateOnlyGenerated:C,responseGenerator:o,waitUntil:i.waitUntil,isMinimalMode:B});if(!O)return null;if((null==c||null==(s=c.value)?void 0:s.kind)!==v.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==c||null==(a=c.value)?void 0:a.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});B||t.setHeader("x-nextjs-cache",A?"REVALIDATED":c.isMiss?"MISS":c.isStale?"STALE":"HIT"),k&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,p.fromNodeOutgoingHttpHeaders)(c.value.headers);return B&&O||u.delete(h.NEXT_CACHE_TAGS_HEADER),!c.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,m.getCacheControlHeader)(c.cacheControl)),await (0,f.sendResponse)(G,V,new Response(c.value.body,{headers:u,status:c.value.status||200})),null};U&&q?await a(q):(n=H.getActiveScopeSpan(),await H.withPropagatedContext(e.headers,()=>H.trace(u.BaseServerSpan.handleRequest,{spanName:`${$} ${y}`,kind:s.SpanKind.SERVER,attributes:{"http.method":$,"http.target":e.url}},a),void 0,!U))}catch(t){if(t instanceof g.NoFallbackError||await R.onRequestError(e,t,{routerKind:"App Router",routePath:L,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:F,isOnDemandRevalidate:A})},!1,j),O)throw t;return await (0,f.sendResponse)(G,V,new Response(null,{status:500})),null}}e.s(["handler",0,T,"patchFetch",0,function(){return(0,i.patchFetch)({workAsyncStorage:j,workUnitAsyncStorage:A})},"routeModule",0,R,"serverHooks",0,C,"workAsyncStorage",0,j,"workUnitAsyncStorage",0,A],10162)},896235,e=>{e.v(e=>Promise.resolve().then(()=>e(640911)))},794708,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__0uadj5z._.js","server/chunks/lib_agents_0jbdl9~._.js","server/chunks/lib_agents_process-manager_ts_0zbkwal._.js","server/chunks/node_modules_zod_v4_classic_external_131y~ke.js"].map(t=>e.l(t))).then(()=>t(669285)))},700492,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__12wqcat._.js","server/chunks/[root-of-the-server]__064-9mc._.js","server/chunks/lib_agents_0jbdl9~._.js","server/chunks/lib_analysis_manager_ts_01harro._.js","server/chunks/lib_0wi33xt._.js","server/chunks/lib_0.areff._.js","server/chunks/[root-of-the-server]__074l3tr._.js","server/chunks/_0snzqta._.js","server/chunks/node_modules_zod_v4_classic_external_131y~ke.js","server/chunks/lib_0kj.xsc._.js","server/chunks/_0eab3-m._.js","server/chunks/lib_agents_process-manager_ts_0zbkwal._.js","server/chunks/[root-of-the-server]__09qyvq1._.js","server/chunks/_0drsi0n._.js"].map(t=>e.l(t))).then(()=>t(356716)))}];
|
|
31
31
|
|
|
32
|
-
//# debugId=
|
|
32
|
+
//# debugId=fbe60168-e8cf-25af-881b-2a8d9f2807ac
|
|
33
33
|
//# sourceMappingURL=%5Broot-of-the-server%5D__0l_-iy7._.js.map
|