UNPKG

@jjdenhertog/ai-driven-development

Version:

AI-driven development workflow with learning capabilities for Claude

2 lines 31.1 kB
(()=>{var a={};a.id=4662,a.ids=[4662],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},871:(a,b,c)=>{"use strict";c.d(b,{B:()=>k});var d=c(60687),e=c(43210),f=c(30036),g=c(11486),h=c.n(g);let i=({value:a,onChange:b,language:c="plaintext",readOnly:f=!1,height:g="100%"})=>{let i=(0,e.useCallback)(a=>{b(a.target.value)},[b]);return(0,d.jsxs)("div",{className:h().container,style:{height:g},children:[(0,d.jsx)("div",{className:h().header,children:(0,d.jsx)("span",{className:h().language,children:c})}),(0,d.jsx)("textarea",{value:a,onChange:i,readOnly:f,className:h().editor,spellCheck:!1})]})},j=(0,f.default)(async()=>{},{loadableGenerated:{modules:["components/common/CodeEditor.tsx -> @monaco-editor/react"]},ssr:!1,loading:()=>(0,d.jsx)("div",{style:{padding:"1rem"},children:"Loading editor..."})}),k=({value:a,onChange:b,language:c="plaintext",readOnly:f=!1,height:g="100%",minHeight:h=200,maxHeight:k=800,fontSize:l=14})=>{let m=(0,e.useRef)(null),[n,o]=(0,e.useState)(h),p="auto"===g,q=(0,e.useCallback)(a=>{if(m.current=a,p){let b=()=>{o(Math.max(h,Math.min(k,a.getContentHeight()+40)))};b(),a.onDidContentSizeChange(b)}},[p,h,k]),r=(0,e.useMemo)(()=>({readOnly:f,minimap:{enabled:!1},fontSize:l,lineNumbers:"on",scrollBeyondLastLine:!1,wordWrap:"on",automaticLayout:!0,tabSize:2,insertSpaces:!0,formatOnPaste:!0,formatOnType:!0,renderWhitespace:"selection",scrollbar:{vertical:p?"hidden":"visible",horizontal:"auto",verticalScrollbarSize:10,horizontalScrollbarSize:10,alwaysConsumeMouseWheel:!1}}),[f,p,l]),s=(a=>{switch(a.split(".").pop()?.toLowerCase()){case"ts":case"tsx":return"typescript";case"js":case"jsx":return"javascript";case"json":return"json";case"md":return"markdown";case"css":case"scss":return"css";case"html":return"html";case"yaml":case"yml":return"yaml";default:return c}})(c),t=p?`${n}px`:g,u=(0,e.useCallback)(a=>{b?.(a||"")},[b]);return(0,d.jsx)("div",{style:{height:t,width:"100%",border:"1px solid var(--border-color)",borderRadius:"0.5rem",overflow:"hidden"},children:(0,d.jsx)(e.Suspense,{fallback:(0,d.jsx)(i,{value:a,onChange:b||(()=>{}),language:c,readOnly:f,height:t}),children:(0,d.jsx)(j,{value:a,onChange:b?u:void 0,language:s,theme:"vs-dark",height:t,options:r,onMount:q})})})}},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},11486:a=>{a.exports={container:"SimpleEditor_container__LmH4_",header:"SimpleEditor_header__lR43V",language:"SimpleEditor_language__4pI2b",editor:"SimpleEditor_editor__EXn9P"}},12237:a=>{a.exports={fileList:"SettingsSection_fileList__74JVN",headerInfo:"SettingsSection_headerInfo__G2cJ7",unsaved:"SettingsSection_unsaved__g_vV1",editor:"SettingsSection_editor__HeKvz",placeholder:"SettingsSection_placeholder__MHotH"}},19121:a=>{"use strict";a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},23879:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>w});var d=c(60687),e=c(43210),f=c(16189),g=c(25995),h=c(27165),i=c(14247),j=c(871),k=c(3039),l=c(83568),m=c(30829),n=c(51490),o=c(44250),p=c.n(o);function q({settings:a,onSave:b,saving:c}){let[f,g]=(0,e.useState)(a),[h,i]=(0,e.useState)(!1),[j,k]=(0,e.useState)(null),m=(0,e.useCallback)((a,b)=>{g(c=>({...c,[a]:b})),i(!0),k(null)},[]),n=(0,e.useCallback)(a=>{m("mainBranch",a.target.value)},[m]),o=(0,e.useCallback)(a=>{m("branchStartingPoint",a.target.value)},[m]),q=(0,e.useCallback)(a=>{m("slack_webhook_url",a.target.value)},[m]),r=(0,e.useCallback)(a=>{m("enforce_opus",a.target.checked)},[m]),s=(0,e.useCallback)(a=>{m("sequential",a.target.checked)},[m]),t=(0,e.useCallback)(a=>{m("automatic_merging",a.target.checked)},[m]),u=(0,e.useCallback)(a=>{if(a.preventDefault(),k(null),f.slack_webhook_url&&""!==f.slack_webhook_url.trim())try{new URL(f.slack_webhook_url)}catch{k("Please enter a valid URL for the Slack webhook");return}b(f).then(()=>{i(!1)}).catch(()=>{k("Failed to save settings")})},[f,b]);return(0,d.jsxs)("form",{onSubmit:u,className:p().form,children:[(0,d.jsxs)("div",{className:p().formGroup,children:[(0,d.jsx)("label",{htmlFor:"mainBranch",children:"Main Branch"}),(0,d.jsx)("input",{id:"mainBranch",type:"text",value:f.mainBranch,onChange:n,placeholder:"main"}),(0,d.jsx)("span",{className:p().description,children:"Used by the learning AI to track which features have been merged and what users have changed in AI-generated code"})]}),(0,d.jsxs)("div",{className:p().formGroup,children:[(0,d.jsx)("label",{htmlFor:"branchStartingPoint",children:"Branch Starting Point"}),(0,d.jsx)("input",{id:"branchStartingPoint",type:"text",value:f.branchStartingPoint,onChange:o,placeholder:"main"}),(0,d.jsx)("span",{className:p().description,children:"When an AI works on a task it will create a feature branch. The starting point of any new feature is from this branch"})]}),(0,d.jsxs)("div",{className:p().formGroup,children:[(0,d.jsx)("label",{htmlFor:"slackWebhook",children:"Slack Webhook"}),(0,d.jsx)("input",{id:"slackWebhook",type:"text",value:f.slack_webhook_url,onChange:q,placeholder:"https://hooks.slack.com/services/..."}),(0,d.jsx)("span",{className:p().description,children:"Add your Slack Webhook URL here to get notifications when tasks are picked up or completed"})]}),(0,d.jsx)("div",{className:p().formGroup,children:(0,d.jsxs)("div",{className:p().switchGroup,children:[(0,d.jsxs)("div",{className:p().switchHeader,children:[(0,d.jsxs)("label",{className:p().switch,children:[(0,d.jsx)("input",{id:"enforceOpus",type:"checkbox",checked:f.enforce_opus||!1,onChange:r}),(0,d.jsx)("span",{className:p().slider})]}),(0,d.jsx)("label",{htmlFor:"enforceOpus",children:"Enforce Opus Model"})]}),(0,d.jsx)("span",{className:p().description,children:"When enabled, it will always only use the Opus model when running the AI commands"})]})}),(0,d.jsx)("div",{className:p().formGroup,children:(0,d.jsxs)("div",{className:p().switchGroup,children:[(0,d.jsxs)("div",{className:p().switchHeader,children:[(0,d.jsxs)("label",{className:p().switch,children:[(0,d.jsx)("input",{id:"sequential",type:"checkbox",checked:f.sequential||!1,onChange:s}),(0,d.jsx)("span",{className:p().slider})]}),(0,d.jsx)("label",{htmlFor:"sequential",children:"Sequential"})]}),(0,d.jsx)("span",{className:p().description,children:"This does each tasks in a sequential mode. Which means that it will wait for the last completed task to be analysed and merged with the main branch. Only when that is the case a new task will be picked up."})]})}),(0,d.jsx)("div",{className:p().formGroup,children:(0,d.jsxs)("div",{className:p().switchGroup,children:[(0,d.jsxs)("div",{className:p().switchHeader,children:[(0,d.jsxs)("label",{className:p().switch,children:[(0,d.jsx)("input",{id:"automaticMerging",type:"checkbox",checked:f.automatic_merging||!1,onChange:t}),(0,d.jsx)("span",{className:p().slider})]}),(0,d.jsx)("label",{htmlFor:"automaticMerging",children:"Automatic Merging (Dangerous)"})]}),(0,d.jsx)("span",{className:p().description,children:"This mode will automatically merge any created feature branch with the main branch. This mode is not recommended. The best way to work with the tooling is to manually verify each feature branch and merging it with the main."})]})}),!!j&&(0,d.jsx)("div",{className:p().error,children:j}),(0,d.jsxs)("div",{className:p().footer,children:[(0,d.jsx)("div",{className:p().status,children:!!h&&(0,d.jsx)("span",{className:p().unsaved,children:"• Unsaved changes"})}),(0,d.jsx)(l.$,{type:"submit",variant:"primary",disabled:c||!h,children:c?"Saving...":"Save Settings"})]})]})}var r=c(12237),s=c.n(r),t=c(70899);let u={"aidev-plan-phase0-analyze.md":{title:"Phase 0: Analyze",description:"Analyze project requirements and existing codebase"},"aidev-plan-phase1-architect.md":{title:"Phase 1: Architect",description:"Design technical architecture and patterns"},"aidev-plan-phase2-generate.md":{title:"Phase 2: Generate",description:"Generate task specifications from architecture"},"aidev-plan-phase3-validate.md":{title:"Phase 3: Validate",description:"Validate and refine task specifications"},"aidev-code-phase0.md":{title:"Phase 0: Inventory",description:"Identify reusable components and patterns"},"aidev-code-phase1.md":{title:"Phase 1: Architect",description:"Design implementation approach and structure"},"aidev-code-phase2.md":{title:"Phase 2: Test designer",description:"Design comprehensive test coverage"},"aidev-code-phase3.md":{title:"Phase 3: Programmer",description:"Write code following the architecture"},"aidev-code-phase4a.md":{title:"Phase 4A: Test executer",description:"Execute tests and fix failures"},"aidev-code-phase4b.md":{title:"Phase 4B: Test fixer",description:"Fix failing tests and resolve issues"},"aidev-code-phase5.md":{title:"Phase 5: Reviewer",description:"Review code and ensure quality"},"aidev-instruction-task.md":{title:"Instruction Task",description:"Execute specific coding instructions"},"aidev-learn.md":{title:"Learn",description:"Extract patterns and learnings from codebase"},"aidev-index.md":{title:"Index",description:"Create initial codebase index"},"aidev-update-index.md":{title:"Update Index",description:"Update existing codebase index with changes"},"task-specification-template.md":{title:"Task Specification Template",description:"Template for creating detailed task specifications"},"task-creation.md":{title:"Task Creation Guide",description:"Guidelines for creating effective tasks"},"automated-prp-template.md":{title:"Automated PRP Template",description:"Problem-Resolution-Plan template for structured implementation"}};function v(){let a=(0,f.useRouter)(),b=(0,f.useSearchParams)(),c=b.get("tab")||"plan",o=b.get("file"),{enqueueSnackbar:p}=(0,t.dh)(),[r,v]=(0,e.useState)(""),[w,x]=(0,e.useState)(!1),[y,z]=(0,e.useState)(!1),{data:A}=(0,g.Ay)("prompts",i.FH.getPrompts),{data:B}=(0,g.Ay)("templates",i.FH.getTemplates),{data:C,error:D,mutate:E}=(0,g.Ay)("settings",()=>i.FH.getSettings());(0,e.useCallback)(async(a,b)=>{try{let c;v(""),c="plan"===b||"code"===b||"learn"===b||"index"===b?await i.FH.getPrompt(a):await i.FH.getTemplate(a),v(c.content),z(!1)}catch(a){v("Failed to load content")}},[]);let F=(0,e.useCallback)(b=>{a.push(`/settings?tab=${b}`)},[a]),G=(0,e.useCallback)(b=>{a.push(`/settings?tab=${c}&file=${encodeURIComponent(b)}`)},[a,c]),H=(0,e.useCallback)(a=>{v(a),z(!0)},[]),I=(0,e.useCallback)(async()=>{if(o){x(!0);try{"plan"===c||"code"===c||"learn"===c||"index"===c?await i.FH.updatePrompt(o,r):await i.FH.updateTemplate(o,r),z(!1),p(`${c.charAt(0).toUpperCase()+c.slice(1)} saved successfully`,{variant:"success"})}catch(a){p(`Failed to save ${c}`,{variant:"error"})}finally{x(!1)}}},[o,c,r,p]),J=(0,e.useCallback)(async a=>{try{await i.FH.updateSettings(a),await E(a,!1),p("Settings saved successfully",{variant:"success"})}catch(a){throw p("Failed to save settings",{variant:"error"}),a}},[E,p]),K=(0,e.useCallback)(()=>{F("plan")},[F]),L=(0,e.useCallback)(()=>{F("code")},[F]),M=(0,e.useCallback)(()=>{F("learn")},[F]),N=(0,e.useCallback)(()=>{F("index")},[F]),O=(0,e.useCallback)(()=>{F("settings")},[F]),P=(0,e.useCallback)(a=>()=>G(a),[G]),Q=(0,e.useCallback)(()=>{I().catch(()=>{})},[I]),R=a=>{let b=u[a.name];return{...a,title:b?.title||a.name,description:b?.description||a.description||""}},S="plan"===c?[...A?.filter(a=>a.name.startsWith("aidev-plan-phase"))||[],...B?.filter(a=>"task-specification-template.md"===a.name||"task-creation.md"===a.name)||[]].map(R):"code"===c?[...A?.filter(a=>a.name.startsWith("aidev-code-phase")||"aidev-instruction-task.md"===a.name)||[],...B?.filter(a=>"automated-prp-template.md"===a.name)||[]].map(R):"learn"===c?(A?.filter(a=>"aidev-learn.md"===a.name)||[]).map(R):"index"===c?(A?.filter(a=>"aidev-index.md"===a.name||"aidev-update-index.md"===a.name)||[]).map(R):[],T=(0,d.jsxs)(m.a,{children:[(0,d.jsx)(m.o,{onClick:K,active:"plan"===c,children:"Plan"}),(0,d.jsx)(m.o,{onClick:L,active:"code"===c,children:"Code"}),(0,d.jsx)(m.o,{onClick:M,active:"learn"===c,children:"Learn"}),(0,d.jsx)(m.o,{onClick:N,active:"index"===c,children:"Index"}),(0,d.jsx)(m.o,{onClick:O,active:"settings"===c,children:"Settings"})]}),U=(0,d.jsx)(d.Fragment,{children:"settings"===c?(0,d.jsx)("div",{className:s().placeholder,children:(0,d.jsx)("p",{children:"Application Settings"})}):(0,d.jsx)("div",{className:s().fileList,children:S.map(a=>(0,d.jsx)(n.H,{icon:h.A4h,title:a.title,description:a.description,selected:o===a.name,onClick:P(a.name)},a.name))})});return(0,d.jsx)(k.M,{title:"Settings",subtitle:"You can find all the settings used by AI Driven Development here. This allows you to customize how Claude Code is used or tweak the prompts so it matches your needs.",variant:"sidebar",sidebarHeader:T,sidebarContent:U,children:"settings"===c?(0,d.jsx)(d.Fragment,{children:D?(0,d.jsx)("div",{className:s().placeholder,children:(0,d.jsx)("p",{children:"Failed to load settings. Please ensure settings.json exists in .aidev-storage"})}):C?(0,d.jsx)(q,{settings:C,onSave:J,saving:w}):(0,d.jsx)("div",{className:s().placeholder,children:(0,d.jsx)("p",{children:"Loading settings..."})})}):o?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:s().header,children:[(0,d.jsxs)("div",{className:s().headerInfo,children:[(0,d.jsx)("h2",{children:o}),y?(0,d.jsx)("span",{className:s().unsaved,children:"• Unsaved changes"}):null]}),(0,d.jsx)(l.$,{onClick:Q,disabled:w||!y,variant:"primary",size:"medium",children:w?"Saving...":"Save"})]}),(0,d.jsx)("div",{className:s().editor,children:(0,d.jsx)(j.B,{value:r,onChange:H,language:o.endsWith(".json")?"json":"markdown",height:"100%"})})]}):(0,d.jsx)("div",{className:s().placeholder,style:{background:"none"},children:(0,d.jsx)("p",{children:"Select a file to edit"})})})}function w(){return(0,d.jsx)(e.Suspense,{fallback:(0,d.jsx)("div",{className:s().loading,children:"Loading..."}),children:(0,d.jsx)(v,{})})}},26713:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/is-bot")},28354:a=>{"use strict";a.exports=require("util")},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},30619:(a,b,c)=>{Promise.resolve().then(c.bind(c,74198))},30829:(a,b,c)=>{"use strict";c.d(b,{a:()=>i,o:()=>j});var d=c(60687);c(43210);var e=c(85814),f=c.n(e),g=c(57376),h=c.n(g);function i({children:a,className:b}){return(0,d.jsx)("div",{className:`${h().tabs} ${b||""}`,children:a})}function j({children:a,active:b=!1,onClick:c,href:e,className:g}){let i=`${h().tab} ${b?h().active:""} ${g||""}`;return e?(0,d.jsx)(f(),{href:e,className:i,children:a}):(0,d.jsx)("button",{type:"button",onClick:c,className:i,children:a})}},33873:a=>{"use strict";a.exports=require("path")},41025:a=>{"use strict";a.exports=require("next/dist/server/app-render/dynamic-access-async-storage.external.js")},44250:a=>{a.exports={form:"SettingsForm_form__wNg6E",formGroup:"SettingsForm_formGroup__1PbVt",description:"SettingsForm_description__ppRE7",switchGroup:"SettingsForm_switchGroup__QNrHD",switchHeader:"SettingsForm_switchHeader__WjgC0",switch:"SettingsForm_switch__b4sE5",slider:"SettingsForm_slider__fhtD3",error:"SettingsForm_error__KDKNB",footer:"SettingsForm_footer__bHZId",status:"SettingsForm_status__BqoIG",unsaved:"SettingsForm_unsaved__p3D0Z"}},51490:(a,b,c)=>{"use strict";c.d(b,{H:()=>h});var d=c(60687);c(43210);var e=c(35885),f=c(92803),g=c.n(f);function h({icon:a,title:b,description:c,selected:f=!1,onClick:h,className:i="",children:j}){return(0,d.jsxs)("button",{type:"button",onClick:h,className:`${g().fileButton} ${f?g().selected:""} ${i}`,children:[(0,d.jsx)(e.g,{icon:a,className:g().icon}),(0,d.jsxs)("div",{className:g().content,children:[(0,d.jsx)("div",{className:g().title,children:b}),!!c&&(0,d.jsx)("div",{className:g().description,children:c}),j]})]})}},57376:a=>{a.exports={tabs:"TabNavigation_tabs__Z9wJ3",tab:"TabNavigation_tab___eQB7",active:"TabNavigation_active__gvfW5"}},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},74198:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>d});let d=(0,c(61369).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/Users/jjdenhertog/Projects/ai-driven-development/src/web/src/app/settings/page.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/jjdenhertog/Projects/ai-driven-development/src/web/src/app/settings/page.tsx","default")},83763:(a,b,c)=>{Promise.resolve().then(c.bind(c,23879))},84930:(a,b,c)=>{"use strict";c.r(b),c.d(b,{GlobalError:()=>C.a,__next_app__:()=>I,handler:()=>K,pages:()=>H,routeModule:()=>J,tree:()=>G});var d=c(65239),e=c(48088),f=c(47220),g=c(81289),h=c(26191),i=c(14823),j=c(71998),k=c(92603),l=c(54649),m=c(32781),n=c(82602),o=c(61268),p=c(4853),q=c(261),r=c(5052),s=c(9977),t=c(26713),u=c(43365),v=c(71454),w=c(67778),x=c(46143),y=c(39105),z=c(38171),A=c(86439),B=c(16133),C=c.n(B),D=c(30893),E=c(52836),F={};for(let a in D)0>["default","tree","pages","GlobalError","__next_app__","routeModule","handler"].indexOf(a)&&(F[a]=()=>D[a]);c.d(b,F);let G={children:["",{children:["settings",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(c.bind(c,74198)),"/Users/jjdenhertog/Projects/ai-driven-development/src/web/src/app/settings/page.tsx"]}]},{}]},{layout:[()=>Promise.resolve().then(c.bind(c,94431)),"/Users/jjdenhertog/Projects/ai-driven-development/src/web/src/app/layout.tsx"],"global-error":[()=>Promise.resolve().then(c.t.bind(c,16133,23)),"next/dist/client/components/builtin/global-error.js"],"not-found":[()=>Promise.resolve().then(c.t.bind(c,80849,23)),"next/dist/client/components/builtin/not-found.js"],forbidden:[()=>Promise.resolve().then(c.t.bind(c,29868,23)),"next/dist/client/components/builtin/forbidden.js"],unauthorized:[()=>Promise.resolve().then(c.t.bind(c,79615,23)),"next/dist/client/components/builtin/unauthorized.js"]}]}.children,H=["/Users/jjdenhertog/Projects/ai-driven-development/src/web/src/app/settings/page.tsx"],I={require:c,loadChunk:()=>Promise.resolve()},J=new d.AppPageRouteModule({definition:{kind:e.RouteKind.APP_PAGE,page:"/settings/page",pathname:"/settings",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:G},distDir:".next",projectDir:""});async function K(a,b,c){var d;let B="/settings/page";"/index"===B&&(B="/");let F="false",L=(0,h.getRequestMeta)(a,"postponed"),M=(0,h.getRequestMeta)(a,"minimalMode"),N=await J.prepare(a,b,{srcPage:B,multiZoneDraftMode:F});if(!N)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:O,query:P,params:Q,parsedUrl:R,pageIsDynamic:S,buildManifest:T,nextFontManifest:U,reactLoadableManifest:V,serverActionsManifest:W,clientReferenceManifest:X,subresourceIntegrityManifest:Y,prerenderManifest:Z,isDraftMode:$,resolvedPathname:_,revalidateOnlyGenerated:aa,routerServerContext:ab,nextConfig:ac}=N,ad=R.pathname||"/",ae=(0,q.normalizeAppPath)(B),{isOnDemandRevalidate:af}=N,ag=Z.dynamicRoutes[ae],ah=Z.routes[_],ai=!!(ag||ah||Z.routes[ae]),aj=a.headers["user-agent"]||"",ak=(0,t.getBotType)(aj),al=(0,o.isHtmlBotRequest)(a),am=(0,h.getRequestMeta)(a,"isPrefetchRSCRequest")??!!a.headers[s.NEXT_ROUTER_PREFETCH_HEADER],an=(0,h.getRequestMeta)(a,"isRSCRequest")??!!a.headers[s.RSC_HEADER],ao=(0,r.getIsPossibleServerAction)(a),ap=(0,l.checkIsAppPPREnabled)(ac.experimental.ppr)&&(null==(d=Z.routes[ae]??Z.dynamicRoutes[ae])?void 0:d.renderingMode)==="PARTIALLY_STATIC",aq=!1,ar=!1,as=ap?L:void 0,at=ap&&an&&!am,au=(0,h.getRequestMeta)(a,"segmentPrefetchRSCRequest"),av=!aj||(0,o.shouldServeStreamingMetadata)(aj,ac.htmlLimitedBots);al&&ap&&(ai=!1,av=!1);let aw=!0===J.isDev||!ai||"string"==typeof L||at,ax=al&&ap,ay=null;$||!ai||aw||ao||as||at||(ay=_);let az=ay;!az&&J.isDev&&(az=_);let aA={...D,tree:G,pages:H,GlobalError:C(),handler:K,routeModule:J,__next_app__:I};W&&X&&(0,n.setReferenceManifestsSingleton)({page:B,clientReferenceManifest:X,serverActionsManifest:W,serverModuleMap:(0,p.createServerModuleMap)({serverActionsManifest:W})});let aB=a.method||"GET",aC=(0,g.getTracer)(),aD=aC.getActiveScopeSpan();try{let d=async(c,d)=>{let e=new k.NodeNextRequest(a),f=new k.NodeNextResponse(b);return J.render(e,f,d).finally(()=>{if(!c)return;c.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let d=aC.getRootSpanAttributes();if(!d)return;if(d.get("next.span_type")!==i.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${d.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let e=d.get("next.route");if(e){let a=`${aB} ${e}`;c.setAttributes({"next.route":e,"http.route":e,"next.span_name":a}),c.updateName(a)}else c.updateName(`${aB} ${a.url}`)})},f=async({span:e,postponed:f,fallbackRouteParams:g})=>{let i={query:P,params:Q,page:ae,sharedContext:{buildId:O},serverComponentsHmrCache:(0,h.getRequestMeta)(a,"serverComponentsHmrCache"),fallbackRouteParams:g,renderOpts:{App:()=>null,Document:()=>null,pageConfig:{},ComponentMod:aA,Component:(0,j.T)(aA),params:Q,routeModule:J,page:B,postponed:f,shouldWaitOnAllReady:ax,serveStreamingMetadata:av,supportsDynamicResponse:"string"==typeof f||aw,buildManifest:T,nextFontManifest:U,reactLoadableManifest:V,subresourceIntegrityManifest:Y,serverActionsManifest:W,clientReferenceManifest:X,setIsrStatus:null==ab?void 0:ab.setIsrStatus,dir:J.projectDir,isDraftMode:$,isRevalidate:ai&&!f&&!at,botType:ak,isOnDemandRevalidate:af,isPossibleServerAction:ao,assetPrefix:ac.assetPrefix,nextConfigOutput:ac.output,crossOrigin:ac.crossOrigin,trailingSlash:ac.trailingSlash,previewProps:Z.preview,deploymentId:ac.deploymentId,enableTainting:ac.experimental.taint,htmlLimitedBots:ac.htmlLimitedBots,devtoolSegmentExplorer:ac.experimental.devtoolSegmentExplorer,reactMaxHeadersLength:ac.reactMaxHeadersLength,multiZoneDraftMode:F,incrementalCache:(0,h.getRequestMeta)(a,"incrementalCache"),cacheLifeProfiles:ac.experimental.cacheLife,basePath:ac.basePath,serverActions:ac.experimental.serverActions,...aq?{nextExport:!0,supportsDynamicResponse:!1,isStaticGeneration:!0,isRevalidate:!0,isDebugDynamicAccesses:aq}:{},experimental:{isRoutePPREnabled:ap,expireTime:ac.expireTime,staleTimes:ac.experimental.staleTimes,dynamicIO:!!ac.experimental.dynamicIO,clientSegmentCache:!!ac.experimental.clientSegmentCache,dynamicOnHover:!!ac.experimental.dynamicOnHover,inlineCss:!!ac.experimental.inlineCss,authInterrupts:!!ac.experimental.authInterrupts,clientTraceMetadata:ac.experimental.clientTraceMetadata||[]},waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:()=>{},onInstrumentationRequestError:(b,c,d)=>J.onRequestError(a,b,d,ab),err:(0,h.getRequestMeta)(a,"invokeError"),dev:J.isDev}},k=await d(e,i),{metadata:l}=k,{cacheControl:m,headers:n={},fetchTags:o}=l;if(o&&(n[x.NEXT_CACHE_TAGS_HEADER]=o),a.fetchMetrics=l.fetchMetrics,ai&&(null==m?void 0:m.revalidate)===0&&!J.isDev&&!ap){let a=l.staticBailoutInfo,b=Object.defineProperty(Error(`Page changed from static to dynamic at runtime ${_}${(null==a?void 0:a.description)?`, reason: ${a.description}`:""} see more here https://nextjs.org/docs/messages/app-static-to-dynamic-error`),"__NEXT_ERROR_CODE",{value:"E132",enumerable:!1,configurable:!0});if(null==a?void 0:a.stack){let c=a.stack;b.stack=b.message+c.substring(c.indexOf("\n"))}throw b}return{value:{kind:u.CachedRouteKind.APP_PAGE,html:k,headers:n,rscData:l.flightData,postponed:l.postponed,status:l.statusCode,segmentData:l.segmentData},cacheControl:m}},l=async({hasResolved:d,previousCacheEntry:g,isRevalidating:i,span:j})=>{let k,l=!1===J.isDev,n=d||b.writableEnded;if(af&&aa&&!g&&!M)return(null==ab?void 0:ab.render404)?await ab.render404(a,b):(b.statusCode=404,b.end("This page could not be found")),null;if(ag&&(k=(0,v.parseFallbackField)(ag.fallback)),k===v.FallbackMode.PRERENDER&&(0,t.isBot)(aj)&&(k=v.FallbackMode.BLOCKING_STATIC_RENDER),(null==g?void 0:g.isStale)===-1&&(af=!0),af&&(k!==v.FallbackMode.NOT_FOUND||g)&&(k=v.FallbackMode.BLOCKING_STATIC_RENDER),!M&&k!==v.FallbackMode.BLOCKING_STATIC_RENDER&&az&&!n&&!$&&S&&(l||!ah)){let b;if((l||ag)&&k===v.FallbackMode.NOT_FOUND)throw new A.NoFallbackError;if(ap&&!an){if(b=await J.handleResponse({cacheKey:l?ae:null,req:a,nextConfig:ac,routeKind:e.RouteKind.APP_PAGE,isFallback:!0,prerenderManifest:Z,isRoutePPREnabled:ap,responseGenerator:async()=>f({span:j,postponed:void 0,fallbackRouteParams:l||ar?(0,m.u)(ae):null}),waitUntil:c.waitUntil}),null===b)return null;if(b)return delete b.cacheControl,b}}let o=af||i||!as?void 0:as;if(aq&&void 0!==o)return{cacheControl:{revalidate:1,expire:void 0},value:{kind:u.CachedRouteKind.PAGES,html:w.default.fromStatic(""),pageData:{},headers:void 0,status:void 0}};let p=S&&ap&&((0,h.getRequestMeta)(a,"renderFallbackShell")||ar)?(0,m.u)(ad):null;return f({span:j,postponed:o,fallbackRouteParams:p})},n=async d=>{var g,i,j,k,m;let n,o=await J.handleResponse({cacheKey:ay,responseGenerator:a=>l({span:d,...a}),routeKind:e.RouteKind.APP_PAGE,isOnDemandRevalidate:af,isRoutePPREnabled:ap,req:a,nextConfig:ac,prerenderManifest:Z,waitUntil:c.waitUntil});if($&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate"),J.isDev&&b.setHeader("Cache-Control","no-store, must-revalidate"),!o){if(ay)throw Object.defineProperty(Error("invariant: cache entry required but not generated"),"__NEXT_ERROR_CODE",{value:"E62",enumerable:!1,configurable:!0});return null}if((null==(g=o.value)?void 0:g.kind)!==u.CachedRouteKind.APP_PAGE)throw Object.defineProperty(Error(`Invariant app-page handler received invalid cache entry ${null==(j=o.value)?void 0:j.kind}`),"__NEXT_ERROR_CODE",{value:"E707",enumerable:!1,configurable:!0});let p="string"==typeof o.value.postponed;ai&&!at&&(!p||am)&&(M||b.setHeader("x-nextjs-cache",af?"REVALIDATED":o.isMiss?"MISS":o.isStale?"STALE":"HIT"),b.setHeader(s.NEXT_IS_PRERENDER_HEADER,"1"));let{value:q}=o;if(as)n={revalidate:0,expire:void 0};else if(M&&an&&!am&&ap)n={revalidate:0,expire:void 0};else if(!J.isDev)if($)n={revalidate:0,expire:void 0};else if(ai){if(o.cacheControl)if("number"==typeof o.cacheControl.revalidate){if(o.cacheControl.revalidate<1)throw Object.defineProperty(Error(`Invalid revalidate configuration provided: ${o.cacheControl.revalidate} < 1`),"__NEXT_ERROR_CODE",{value:"E22",enumerable:!1,configurable:!0});n={revalidate:o.cacheControl.revalidate,expire:(null==(k=o.cacheControl)?void 0:k.expire)??ac.expireTime}}else n={revalidate:x.CACHE_ONE_YEAR,expire:void 0}}else b.getHeader("Cache-Control")||(n={revalidate:0,expire:void 0});if(o.cacheControl=n,"string"==typeof au&&(null==q?void 0:q.kind)===u.CachedRouteKind.APP_PAGE&&q.segmentData){b.setHeader(s.NEXT_DID_POSTPONE_HEADER,"2");let c=null==(m=q.headers)?void 0:m[x.NEXT_CACHE_TAGS_HEADER];M&&ai&&c&&"string"==typeof c&&b.setHeader(x.NEXT_CACHE_TAGS_HEADER,c);let d=q.segmentData.get(au);return void 0!==d?(0,z.sendRenderResult)({req:a,res:b,type:"rsc",generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:w.default.fromStatic(d),cacheControl:o.cacheControl}):(b.statusCode=204,(0,z.sendRenderResult)({req:a,res:b,type:"rsc",generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:w.default.fromStatic(""),cacheControl:o.cacheControl}))}let r=(0,h.getRequestMeta)(a,"onCacheEntry");if(r&&await r({...o,value:{...o.value,kind:"PAGE"}},{url:(0,h.getRequestMeta)(a,"initURL")}))return null;if(p&&as)throw Object.defineProperty(Error("Invariant: postponed state should not be present on a resume request"),"__NEXT_ERROR_CODE",{value:"E396",enumerable:!1,configurable:!0});if(q.headers){let a={...q.headers};for(let[c,d]of(M&&ai||delete a[x.NEXT_CACHE_TAGS_HEADER],Object.entries(a)))if(void 0!==d)if(Array.isArray(d))for(let a of d)b.appendHeader(c,a);else"number"==typeof d&&(d=d.toString()),b.appendHeader(c,d)}let t=null==(i=q.headers)?void 0:i[x.NEXT_CACHE_TAGS_HEADER];if(M&&ai&&t&&"string"==typeof t&&b.setHeader(x.NEXT_CACHE_TAGS_HEADER,t),!q.status||an&&ap||(b.statusCode=q.status),!M&&q.status&&E.RedirectStatusCode[q.status]&&an&&(b.statusCode=200),p&&b.setHeader(s.NEXT_DID_POSTPONE_HEADER,"1"),an&&!$){if(void 0===q.rscData){if(q.postponed)throw Object.defineProperty(Error("Invariant: Expected postponed to be undefined"),"__NEXT_ERROR_CODE",{value:"E372",enumerable:!1,configurable:!0});return(0,z.sendRenderResult)({req:a,res:b,type:"rsc",generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:q.html,cacheControl:at?{revalidate:0,expire:void 0}:o.cacheControl})}return(0,z.sendRenderResult)({req:a,res:b,type:"rsc",generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:w.default.fromStatic(q.rscData),cacheControl:o.cacheControl})}let v=q.html;if(!p||M)return(0,z.sendRenderResult)({req:a,res:b,type:"html",generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:v,cacheControl:o.cacheControl});if(aq)return v.chain(new ReadableStream({start(a){a.enqueue(y.ENCODED_TAGS.CLOSED.BODY_AND_HTML),a.close()}})),(0,z.sendRenderResult)({req:a,res:b,type:"html",generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:v,cacheControl:{revalidate:0,expire:void 0}});let A=new TransformStream;return v.chain(A.readable),f({span:d,postponed:q.postponed,fallbackRouteParams:null}).then(async a=>{var b,c;if(!a)throw Object.defineProperty(Error("Invariant: expected a result to be returned"),"__NEXT_ERROR_CODE",{value:"E463",enumerable:!1,configurable:!0});if((null==(b=a.value)?void 0:b.kind)!==u.CachedRouteKind.APP_PAGE)throw Object.defineProperty(Error(`Invariant: expected a page response, got ${null==(c=a.value)?void 0:c.kind}`),"__NEXT_ERROR_CODE",{value:"E305",enumerable:!1,configurable:!0});await a.value.html.pipeTo(A.writable)}).catch(a=>{A.writable.abort(a).catch(a=>{console.error("couldn't abort transformer",a)})}),(0,z.sendRenderResult)({req:a,res:b,type:"html",generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:v,cacheControl:{revalidate:0,expire:void 0}})};if(!aD)return await aC.withPropagatedContext(a.headers,()=>aC.trace(i.BaseServerSpan.handleRequest,{spanName:`${aB} ${a.url}`,kind:g.SpanKind.SERVER,attributes:{"http.method":aB,"http.target":a.url}},n));await n(aD)}catch(b){throw aD||await J.onRequestError(a,b,{routerKind:"App Router",routePath:B,routeType:"render",revalidateReason:(0,f.c)({isRevalidate:ai,isOnDemandRevalidate:af})},ab),b}}},86439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},92803:a=>{a.exports={fileButton:"FileButton_fileButton__kTT3K",selected:"FileButton_selected___mDUt",icon:"FileButton_icon__CrF0d",content:"FileButton_content__Bp_Mt",title:"FileButton_title__TDjuR",description:"FileButton_description__ZT_ko"}}};var b=require("../../webpack-runtime.js");b.C(a);var c=b.X(0,[4985,4310,5995,246,1536],()=>b(b.s=84930));module.exports=c})();