@nivora/matrix 0.2.3 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +10 -5
  3. package/.next/build-manifest.json +3 -3
  4. package/.next/prerender-manifest.json +3 -3
  5. package/.next/react-loadable-manifest.json +20 -1
  6. package/.next/routes-manifest.json +48 -12
  7. package/.next/server/app/_global-error/page.js +3 -3
  8. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  9. package/.next/server/app/_global-error.html +2 -2
  10. package/.next/server/app/_global-error.rsc +1 -1
  11. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  12. package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  13. package/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  14. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  15. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  16. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  17. package/.next/server/app/_not-found/page.js +2 -2
  18. package/.next/server/app/_not-found/page.js.nft.json +1 -1
  19. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  20. package/.next/server/app/_not-found.html +1 -1
  21. package/.next/server/app/_not-found.rsc +15 -14
  22. package/.next/server/app/_not-found.segments/_full.segment.rsc +15 -14
  23. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  24. package/.next/server/app/_not-found.segments/_index.segment.rsc +6 -5
  25. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  26. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  27. package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  28. package/.next/server/app/favicon.ico/route.js +1 -1
  29. package/.next/server/app/matrix/page.js +2 -2
  30. package/.next/server/app/matrix/page.js.nft.json +1 -1
  31. package/.next/server/app/matrix/page_client-reference-manifest.js +1 -1
  32. package/.next/server/app/page.js +2 -2
  33. package/.next/server/app/page.js.nft.json +1 -1
  34. package/.next/server/app/page_client-reference-manifest.js +1 -1
  35. package/.next/server/app/releases/[id]/page.js +16 -16
  36. package/.next/server/app/releases/[id]/page.js.nft.json +1 -1
  37. package/.next/server/app/releases/[id]/page_client-reference-manifest.js +1 -1
  38. package/.next/server/app/releases/page.js +4 -4
  39. package/.next/server/app/releases/page.js.nft.json +1 -1
  40. package/.next/server/app/releases/page_client-reference-manifest.js +1 -1
  41. package/.next/server/app/specs/[id]/page.js +2 -2
  42. package/.next/server/app/specs/[id]/page.js.nft.json +1 -1
  43. package/.next/server/app/specs/[id]/page_client-reference-manifest.js +1 -1
  44. package/.next/server/app/traceability/fs/[id]/page.js +8 -0
  45. package/.next/server/app/traceability/fs/[id]/page.js.nft.json +1 -0
  46. package/.next/server/app/traceability/fs/[id]/page_client-reference-manifest.js +1 -0
  47. package/.next/server/app/traceability/fs/page.js +2 -0
  48. package/.next/server/app/traceability/fs/page.js.nft.json +1 -0
  49. package/.next/server/app/traceability/fs/page_client-reference-manifest.js +1 -0
  50. package/.next/server/app/traceability/page.js +2 -0
  51. package/.next/server/app/{guide → traceability}/page.js.nft.json +1 -1
  52. package/.next/server/app/traceability/page_client-reference-manifest.js +1 -0
  53. package/.next/server/app/traceability/risk/[id]/page.js +2 -0
  54. package/.next/server/app/traceability/risk/[id]/page.js.nft.json +1 -0
  55. package/.next/server/app/traceability/risk/[id]/page_client-reference-manifest.js +1 -0
  56. package/.next/server/app/traceability/risk/page.js +2 -0
  57. package/.next/server/app/traceability/risk/page.js.nft.json +1 -0
  58. package/.next/server/app/traceability/risk/page_client-reference-manifest.js +1 -0
  59. package/.next/server/app/traceability/urs/[id]/page.js +2 -0
  60. package/.next/server/app/traceability/urs/[id]/page.js.nft.json +1 -0
  61. package/.next/server/app/traceability/urs/[id]/page_client-reference-manifest.js +1 -0
  62. package/.next/server/app/traceability/urs/page.js +2 -0
  63. package/.next/server/app/traceability/urs/page.js.nft.json +1 -0
  64. package/.next/server/app/traceability/urs/page_client-reference-manifest.js +1 -0
  65. package/.next/server/app-paths-manifest.json +10 -5
  66. package/.next/server/chunks/160.js +23 -0
  67. package/.next/server/chunks/380.js +34 -0
  68. package/.next/server/chunks/390.js +1 -1
  69. package/.next/server/chunks/391.js +1 -0
  70. package/.next/server/chunks/445.js +12 -12
  71. package/.next/server/chunks/471.js +7 -7
  72. package/.next/server/chunks/480.js +1 -0
  73. package/.next/server/chunks/515.js +1 -0
  74. package/.next/server/chunks/870.js +1 -1
  75. package/.next/server/chunks/{530.js → 907.js} +27 -14
  76. package/.next/server/middleware-build-manifest.js +1 -1
  77. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  78. package/.next/server/pages/404.html +1 -1
  79. package/.next/server/pages/500.html +2 -2
  80. package/.next/server/server-reference-manifest.js +1 -1
  81. package/.next/server/server-reference-manifest.json +1 -1
  82. package/.next/static/Kmw0LKGKnAjXW7PIRrRfi/_buildManifest.js +1 -0
  83. package/.next/static/chunks/495.b8b5ad2ed4920ce3.js +1 -0
  84. package/.next/static/chunks/app/_global-error/page-435048b8215f07c0.js +1 -0
  85. package/.next/static/chunks/app/layout-0f51af36ad0921db.js +1 -0
  86. package/.next/static/chunks/app/page-b6683055d30b04b4.js +1 -0
  87. package/.next/static/chunks/app/releases/[id]/page-306074ff56f91959.js +1 -0
  88. package/.next/static/chunks/app/releases/page-315d42962b72aaa1.js +1 -0
  89. package/.next/static/chunks/app/specs/[id]/{page-97f9d0238eb90f4f.js → page-9767a7983dad5d28.js} +1 -1
  90. package/.next/static/chunks/app/traceability/fs/[id]/page-03af8ffe39c7f083.js +7 -0
  91. package/.next/static/chunks/app/traceability/fs/page-b6683055d30b04b4.js +1 -0
  92. package/.next/static/chunks/app/traceability/layout-435048b8215f07c0.js +1 -0
  93. package/.next/static/chunks/app/traceability/page-17af5ed69595eb21.js +1 -0
  94. package/.next/static/chunks/app/traceability/risk/[id]/page-1d7cf3c4b6e2369e.js +1 -0
  95. package/.next/static/chunks/app/traceability/risk/page-b6683055d30b04b4.js +1 -0
  96. package/.next/static/chunks/app/traceability/urs/[id]/page-4c2957eb12c64231.js +1 -0
  97. package/.next/static/chunks/app/traceability/urs/page-b6683055d30b04b4.js +1 -0
  98. package/.next/static/chunks/next/dist/client/components/builtin/app-error-435048b8215f07c0.js +1 -0
  99. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-435048b8215f07c0.js +1 -0
  100. package/.next/static/chunks/next/dist/client/components/builtin/not-found-435048b8215f07c0.js +1 -0
  101. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-435048b8215f07c0.js +1 -0
  102. package/.next/static/chunks/webpack-3f9c01744f340426.js +1 -0
  103. package/.next/static/css/230ac595a7268d78.css +1 -0
  104. package/README.md +5 -5
  105. package/bin/cli.js +60 -13
  106. package/package.json +1 -1
  107. package/.next/server/app/builder/page.js +0 -24
  108. package/.next/server/app/builder/page.js.nft.json +0 -1
  109. package/.next/server/app/builder/page_client-reference-manifest.js +0 -1
  110. package/.next/server/app/guide/page.js +0 -2
  111. package/.next/server/app/guide/page_client-reference-manifest.js +0 -1
  112. package/.next/server/chunks/13.js +0 -1
  113. package/.next/server/chunks/135.js +0 -34
  114. package/.next/server/chunks/476.js +0 -23
  115. package/.next/static/chunks/app/_global-error/page-aba28f88d5781771.js +0 -1
  116. package/.next/static/chunks/app/builder/page-856dca2fb73a3bb0.js +0 -10
  117. package/.next/static/chunks/app/guide/page-9c9dff9c5e3ddefe.js +0 -1
  118. package/.next/static/chunks/app/layout-550e25f5579f1a32.js +0 -1
  119. package/.next/static/chunks/app/page-9c9dff9c5e3ddefe.js +0 -1
  120. package/.next/static/chunks/app/releases/[id]/page-0bf495e3d5fdc5c6.js +0 -1
  121. package/.next/static/chunks/app/releases/page-d25d5b63509682f3.js +0 -1
  122. package/.next/static/chunks/next/dist/client/components/builtin/app-error-aba28f88d5781771.js +0 -1
  123. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-aba28f88d5781771.js +0 -1
  124. package/.next/static/chunks/next/dist/client/components/builtin/not-found-aba28f88d5781771.js +0 -1
  125. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-aba28f88d5781771.js +0 -1
  126. package/.next/static/chunks/webpack-650bc85863e2a9e7.js +0 -1
  127. package/.next/static/css/f29e518c867dffaa.css +0 -1
  128. package/.next/static/sRIqSCBLLB0aIqLFusLBB/_buildManifest.js +0 -1
  129. /package/.next/static/{sRIqSCBLLB0aIqLFusLBB → Kmw0LKGKnAjXW7PIRrRfi}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[245],{1704:(e,r,t)=>{Promise.resolve().then(t.bind(t,9325))},3321:(e,r,t)=>{"use strict";var n=t(4645);t.o(n,"usePathname")&&t.d(r,{usePathname:function(){return n.usePathname}}),t.o(n,"useRouter")&&t.d(r,{useRouter:function(){return n.useRouter}})},3987:(e,r,t)=>{"use strict";t.d(r,{j:()=>a});var n=t(5155),i=t(2115);function a({options:e,selected:r,onChange:t,placeholder:a,multi:s=!0,allowCustom:l=!0}){let[o,d]=(0,i.useState)(!1),[c,u]=(0,i.useState)(""),p=(0,i.useRef)(null),m=e.filter(e=>e.label.toLowerCase().includes(c.toLowerCase())&&(!s||!r.includes(e.value)));return(0,i.useEffect)(()=>{let e=e=>{p.current&&!p.current.contains(e.target)&&d(!1)};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[]),(0,n.jsxs)("div",{ref:p,style:{position:"relative",flex:1},children:[s&&r.length>0&&(0,n.jsx)("div",{style:{display:"flex",gap:"0.25rem",flexWrap:"wrap",marginBottom:"0.5rem"},children:r.map(i=>{let a=e.find(e=>e.value===i);return(0,n.jsxs)("span",{className:"badge badge-success",style:{display:"flex",alignItems:"center",gap:"0.25rem"},children:[a?.value||i,(0,n.jsx)("button",{onClick:()=>{t(r.filter(e=>e!==i))},style:{background:"none",border:"none",cursor:"pointer",padding:0,fontSize:"1rem",color:"inherit"},children:"\xd7"})]},i)})}),(0,n.jsx)("input",{type:"text",value:s||o?c:(()=>{if(!s&&r.length>0){let t=e.find(e=>e.value===r[0]);return t?.label||r[0]}return""})(),onChange:e=>u(e.target.value),onFocus:()=>d(!0),placeholder:0!==r.length&&s?"Add more...":a,className:"input",style:{width:"100%"}}),o&&(0,n.jsxs)("div",{style:{position:"absolute",top:"100%",left:0,right:0,marginTop:"0.25rem",background:"var(--bg-card)",border:"1px solid var(--border)",borderRadius:"8px",maxHeight:"200px",overflowY:"auto",zIndex:100,boxShadow:"0 4px 12px rgba(0,0,0,0.3)"},children:[0===m.length?(0,n.jsx)("div",{style:{padding:"0.75rem",color:"var(--text-secondary)",fontSize:"0.875rem"},children:l?"No matches - type to create":"No matching steps"}):m.slice(0,20).map(e=>(0,n.jsxs)("div",{onClick:()=>{var n;return n=e.value,void(s?t([...r,n]):(t([n]),d(!1)),u(""))},style:{padding:"0.625rem 0.75rem",cursor:"pointer",fontSize:"0.875rem",borderBottom:"1px solid var(--border)",transition:"background 0.15s"},onMouseEnter:e=>e.currentTarget.style.background="var(--bg-hover)",onMouseLeave:e=>e.currentTarget.style.background="transparent",children:[(0,n.jsx)("div",{style:{fontWeight:500},children:e.value}),e.label!==e.value&&(0,n.jsx)("div",{style:{fontSize:"0.75rem",color:"var(--text-secondary)",marginTop:"0.125rem"},children:e.label})]},e.value)),m.length>20&&(0,n.jsxs)("div",{style:{padding:"0.5rem",color:"var(--text-secondary)",fontSize:"0.75rem",textAlign:"center"},children:["+",m.length-20," more..."]})]})]})}},7948:(e,r,t)=>{"use strict";t.d(r,{KN:()=>c,Mo:()=>m,d0:()=>h,mQ:()=>d,t3:()=>p,wI:()=>o,yY:()=>g,zB:()=>u});var n=t(5155);t(2115);let i={width:"100%",padding:"0.875rem 1rem",fontSize:"0.9375rem",lineHeight:"1.5",color:"var(--text-primary)",background:"var(--bg-secondary)",borderWidth:"1px",borderStyle:"solid",borderColor:"var(--border)",borderRadius:"10px",outline:"none",transition:"all 0.2s ease"},a={borderColor:"var(--accent)",boxShadow:"0 0 0 3px rgba(99, 102, 241, 0.15)"},s={...i,cursor:"pointer",appearance:"none",backgroundImage:"url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%238888a0' d='M6 8L1 3h10z'/%3E%3C/svg%3E\")",backgroundRepeat:"no-repeat",backgroundPosition:"right 1rem center",paddingRight:"2.5rem"},l={...i,resize:"vertical",minHeight:"120px",fontFamily:"inherit"};function o(e,r){return{...i,...r===e?a:{}}}function d(e,r){return{...s,...r===e?a:{}}}function c(e,r){return{...l,...r===e?a:{}}}function u({label:e,children:r,required:t,compact:i,hint:a,action:s}){return(0,n.jsxs)("div",{style:{marginBottom:i?"0":"1.5rem"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:"0.5rem"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"0.5rem"},children:[(0,n.jsx)("label",{style:{fontWeight:500,fontSize:"0.875rem",color:"var(--text-primary)"},children:e}),t&&(0,n.jsx)("span",{style:{color:"var(--accent)",fontSize:"0.75rem"},children:"Required"}),a&&(0,n.jsxs)("span",{style:{color:"var(--text-secondary)",fontSize:"0.8125rem",fontWeight:400},children:["— ",a]})]}),s&&(0,n.jsx)("button",{onClick:s.onClick,style:{padding:"0.375rem 0.75rem",fontSize:"0.8125rem",fontWeight:500,background:"transparent",border:"1px solid var(--accent)",borderRadius:"6px",color:"var(--accent)",cursor:"pointer",transition:"all 0.2s"},children:s.label})]}),r]})}function p({status:e}){return"idle"===e.type?null:(0,n.jsxs)("div",{style:{marginBottom:"1.5rem",padding:"1rem 1.25rem",borderRadius:"10px",background:"success"===e.type?"rgba(16, 185, 129, 0.1)":"rgba(239, 68, 68, 0.1)",color:"success"===e.type?"var(--success)":"var(--error)",fontSize:"0.9375rem",display:"flex",alignItems:"center",gap:"0.5rem",borderWidth:"1px",borderStyle:"solid",borderColor:"success"===e.type?"rgba(16, 185, 129, 0.2)":"rgba(239, 68, 68, 0.2)"},children:["success"===e.type?"✅":"❌"," ",e.message]})}function m({icon:e,title:r,subtitle:t}){return(0,n.jsxs)("div",{style:{marginBottom:"2rem",paddingBottom:"1.5rem",borderBottom:"1px solid var(--border)"},children:[(0,n.jsxs)("h2",{style:{margin:0,fontSize:"1.25rem",fontWeight:600},children:[e," ",r]}),(0,n.jsx)("p",{style:{margin:"0.25rem 0 0",color:"var(--text-secondary)",fontSize:"0.875rem"},children:t})]})}function g({onClick:e,disabled:r,isPending:t,label:i="Save"}){return(0,n.jsx)("button",{onClick:e,disabled:r,style:{padding:"0.75rem 1.5rem",fontSize:"0.9375rem",fontWeight:600,borderRadius:"10px",border:"none",cursor:r?"not-allowed":"pointer",background:r?"var(--bg-hover)":"linear-gradient(135deg, var(--gradient-start), var(--gradient-end))",color:r?"var(--text-secondary)":"white",transition:"all 0.2s ease",boxShadow:r?"none":"0 4px 12px rgba(99, 102, 241, 0.25)"},children:t?"\uD83D\uDCBE Saving...":`💾 ${i}`})}function h({onClick:e}){return(0,n.jsx)("button",{onClick:e,style:{padding:"0.5rem",background:"transparent",border:"1px solid var(--border)",borderRadius:"8px",color:"var(--text-secondary)",cursor:"pointer",transition:"all 0.2s",lineHeight:1},title:"Remove",children:"✕"})}},9325:(e,r,t)=>{"use strict";t.d(r,{URSClient:()=>c});var n=t(5155),i=t(2115),a=t(3321),s=t(8500),l=t.n(s),o=t(3987),d=t(7948);function c({urs:e,isNew:r=!1,linkedFS:s=[],allFS:c=[]}){let m=(0,a.useRouter)(),[g,h]=(0,i.useState)(r),[x,v]=(0,i.useState)(e?.title||""),[y,b]=(0,i.useState)(e?.status||"draft"),[f,j]=(0,i.useState)(e?.priority||"high"),[w,S]=(0,i.useState)(e?.owner||""),[C,B]=(0,i.useState)(e?.category||""),[z,k]=(0,i.useState)(e?.business_need||""),[_,R]=(0,i.useState)(e?.intended_use||""),[W,N]=(0,i.useState)(e?.acceptance_criteria||[""]),[I,F]=(0,i.useState)(s.map(e=>e.id)),[E,D]=(0,i.useState)(null),[T,$]=(0,i.useState)({type:"idle"}),[H,L]=(0,i.useTransition)();return!g&&e?(0,n.jsxs)("div",{className:"card",style:{maxWidth:"900px"},children:[(0,n.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"2rem",paddingBottom:"1.5rem",borderBottom:"1px solid var(--border)"},children:[(0,n.jsxs)("div",{children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"1rem",marginBottom:"0.5rem"},children:[(0,n.jsx)("span",{style:{fontSize:"0.75rem",fontWeight:600,padding:"0.25rem 0.75rem",background:"linear-gradient(135deg, var(--gradient-start), var(--gradient-end))",borderRadius:"6px",color:"white"},children:e.id}),(0,n.jsxs)("span",{className:`badge ${"approved"===e.status?"badge-success":"review"===e.status?"badge-warning":""}`,style:{textTransform:"capitalize"},children:["approved"===e.status?"✅":"review"===e.status?"\uD83D\uDC40":"\uD83D\uDCDD"," ",e.status]})]}),(0,n.jsx)("h1",{style:{margin:0,fontSize:"1.5rem",fontWeight:600,lineHeight:1.3},children:e.title})]}),(0,n.jsxs)("button",{onClick:()=>h(!0),className:"btn btn-primary",style:{display:"flex",gap:"0.5rem",alignItems:"center"},children:[(0,n.jsx)("span",{children:"✏️"})," Edit"]})]}),(0,n.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"repeat(4, 1fr)",gap:"1rem",marginBottom:"1.5rem"},children:[(0,n.jsx)(u,{label:"Priority",value:e.priority,color:function(e){switch(e){case"critical":return"#ef4444";case"high":return"#f97316";case"medium":return"#f59e0b";case"low":return"#10b981";default:return"var(--text-primary)"}}(e.priority)}),(0,n.jsx)(u,{label:"Category",value:e.category}),(0,n.jsx)(u,{label:"Owner",value:e.owner}),(0,n.jsx)(u,{label:"Created",value:e.created_at?new Date(e.created_at).toLocaleDateString():void 0})]}),(0,n.jsx)(p,{label:"Linked Functional Specs",count:s.length,children:s.length>0?(0,n.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:"0.5rem"},children:s.map(e=>(0,n.jsx)(l(),{href:`/traceability/fs/${e.id}`,style:{textDecoration:"none"},children:(0,n.jsx)("span",{className:"badge",style:{background:"rgba(245, 158, 11, 0.15)",color:"var(--warning)"},children:e.id})},e.id))}):(0,n.jsx)("span",{style:{color:"var(--text-secondary)",fontStyle:"italic"},children:"No linked FS"})}),(0,n.jsx)(p,{label:"Business Need",children:e.business_need||(0,n.jsx)("span",{style:{color:"var(--text-secondary)",fontStyle:"italic"},children:"No business need specified"})}),e.intended_use&&(0,n.jsx)(p,{label:"Intended Use",children:e.intended_use}),e.acceptance_criteria&&e.acceptance_criteria.length>0&&(0,n.jsx)(p,{label:"Acceptance Criteria",count:e.acceptance_criteria.length,children:(0,n.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:"0.75rem"},children:e.acceptance_criteria.map((e,r)=>(0,n.jsxs)("div",{style:{display:"flex",gap:"0.75rem",alignItems:"flex-start"},children:[(0,n.jsxs)("span",{style:{color:"var(--accent)",fontWeight:600,fontSize:"0.875rem",minWidth:"24px"},children:[r+1,"."]}),(0,n.jsx)("span",{style:{lineHeight:1.6},children:e})]},r))})})]}):(0,n.jsxs)("div",{className:"card",style:{maxWidth:"900px"},children:[(0,n.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"2rem",paddingBottom:"1.5rem",borderBottom:"1px solid var(--border)"},children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("h2",{style:{margin:0,fontSize:"1.25rem",fontWeight:600},children:r?"New User Requirement":`Editing ${e?.id}`}),(0,n.jsx)("p",{style:{margin:"0.25rem 0 0",color:"var(--text-secondary)",fontSize:"0.875rem"},children:r?"Create a new URS document":"Update requirement details"})]}),(0,n.jsxs)("div",{style:{display:"flex",gap:"0.75rem"},children:[(0,n.jsx)("button",{onClick:()=>{r?m.back():(v(e?.title||""),b(e?.status||"draft"),j(e?.priority||"high"),S(e?.owner||""),B(e?.category||""),k(e?.business_need||""),R(e?.intended_use||""),N(e?.acceptance_criteria||[""]),F(s.map(e=>e.id)),h(!1))},style:{padding:"0.75rem 1.5rem",background:"transparent",border:"1px solid var(--border)",borderRadius:"10px",color:"var(--text-secondary)",cursor:"pointer",fontWeight:600},children:"Cancel"}),(0,n.jsx)(d.yY,{onClick:()=>{$({type:"idle"}),L(async()=>{try{let n,i={title:x,status:y,priority:f,owner:w,category:C,business_need:z,intended_use:_,acceptance_criteria:W.filter(e=>e.trim()),regulatory_refs:[]};if(r||e.id,r){let{saveURS:e}=await t.e(495).then(t.bind(t,1495));n=await e(i)}else{let{updateURSAction:r}=await t.e(495).then(t.bind(t,1495));n=await r(e.id,i)}if(!n.success)return void $({type:"error",message:n.error});let a=n.id,{updateFSLinksAction:l}=await t.e(495).then(t.bind(t,1495)),o=s.map(e=>e.id);for(let e of new Set([...o,...I])){let r=c.find(r=>r.id===e);if(!r)continue;let t=new Set(r.urs_ids);I.includes(e)?t.add(a):t.delete(a),await l(e,Array.from(t))}$({type:"success",message:`Saved ${a}`}),r?m.push(`/traceability/urs/${a}`):(m.refresh(),h(!1))}catch(e){$({type:"error",message:"Failed to save"})}})},disabled:H||!x.trim()||!w.trim(),isPending:H,label:"Save URS"})]})]}),(0,n.jsx)(d.t3,{status:T}),(0,n.jsx)(d.zB,{label:"Title",required:!0,children:(0,n.jsx)("input",{type:"text",value:x,onChange:e=>v(e.target.value),onFocus:()=>D("title"),onBlur:()=>D(null),placeholder:"e.g., User Authentication Requirements",style:(0,d.wI)("title",E)})}),(0,n.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"repeat(4, 1fr)",gap:"1rem",marginBottom:"1.5rem"},children:[(0,n.jsx)(d.zB,{label:"Status",compact:!0,children:(0,n.jsxs)("select",{value:y,onChange:e=>b(e.target.value),onFocus:()=>D("status"),onBlur:()=>D(null),style:(0,d.mQ)("status",E),children:[(0,n.jsx)("option",{value:"draft",children:"\uD83D\uDCDD Draft"}),(0,n.jsx)("option",{value:"review",children:"\uD83D\uDC40 Review"}),(0,n.jsx)("option",{value:"approved",children:"✅ Approved"})]})}),(0,n.jsx)(d.zB,{label:"Priority",compact:!0,children:(0,n.jsxs)("select",{value:f,onChange:e=>j(e.target.value),onFocus:()=>D("priority"),onBlur:()=>D(null),style:(0,d.mQ)("priority",E),children:[(0,n.jsx)("option",{value:"critical",children:"\uD83D\uDD34 Critical"}),(0,n.jsx)("option",{value:"high",children:"\uD83D\uDFE0 High"}),(0,n.jsx)("option",{value:"medium",children:"\uD83D\uDFE1 Medium"}),(0,n.jsx)("option",{value:"low",children:"\uD83D\uDFE2 Low"})]})}),(0,n.jsx)(d.zB,{label:"Category",compact:!0,children:(0,n.jsx)("input",{type:"text",value:C,onChange:e=>B(e.target.value),onFocus:()=>D("category"),onBlur:()=>D(null),placeholder:"e.g., Security",style:(0,d.wI)("category",E)})}),(0,n.jsx)(d.zB,{label:"Owner",required:!0,compact:!0,children:(0,n.jsx)("input",{type:"text",value:w,onChange:e=>S(e.target.value),onFocus:()=>D("owner"),onBlur:()=>D(null),placeholder:"e.g., Product Team",style:(0,d.wI)("owner",E)})})]}),(0,n.jsx)(d.zB,{label:"Linked Functional Specs",hint:"Select FS that implement this requirement",children:(0,n.jsx)(o.j,{options:c.map(e=>({value:e.id,label:`${e.id} - ${e.title}`})),selected:I,onChange:F,placeholder:"Search FS...",multi:!0})}),(0,n.jsx)(d.zB,{label:"Business Need",hint:"Describe why this requirement exists",children:(0,n.jsx)("textarea",{value:z,onChange:e=>k(e.target.value),onFocus:()=>D("businessNeed"),onBlur:()=>D(null),placeholder:"Describe the business problem this requirement addresses...",style:{...(0,d.KN)("businessNeed",E),minHeight:"140px"}})}),(0,n.jsx)(d.zB,{label:"Intended Use",hint:"Describe how this will be used",children:(0,n.jsx)("textarea",{value:_,onChange:e=>R(e.target.value),onFocus:()=>D("intendedUse"),onBlur:()=>D(null),placeholder:"Describe the intended usage patterns and user workflows...",style:{...(0,d.KN)("intendedUse",E),minHeight:"100px"}})}),(0,n.jsx)(d.zB,{label:"Acceptance Criteria",hint:"Define measurable conditions for success",action:{label:"+ Add Criterion",onClick:()=>N([...W,""])},children:(0,n.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:"0.75rem"},children:W.map((e,r)=>(0,n.jsxs)("div",{style:{display:"flex",gap:"0.75rem",alignItems:"center"},children:[(0,n.jsxs)("span",{style:{color:"var(--accent)",fontWeight:600,fontSize:"0.875rem",minWidth:"24px"},children:[r+1,"."]}),(0,n.jsx)("input",{type:"text",value:e,onChange:e=>{var t;let n;return t=e.target.value,void((n=[...W])[r]=t,N(n))},onFocus:()=>D(`criterion-${r}`),onBlur:()=>D(null),placeholder:`Criterion ${r+1}`,style:{...(0,d.wI)(`criterion-${r}`,E),flex:1}}),W.length>1&&(0,n.jsx)("button",{onClick:()=>{W.length>1&&N(W.filter((e,t)=>t!==r))},style:{padding:"0.5rem",background:"transparent",border:"1px solid var(--border)",borderRadius:"8px",color:"var(--text-secondary)",cursor:"pointer"},children:"✕"})]},r))})})]})}function u({label:e,value:r,color:t}){return(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{style:{fontSize:"0.75rem",color:"var(--text-secondary)",fontWeight:500,marginBottom:"0.25rem"},children:e}),(0,n.jsx)("div",{style:{fontSize:"1rem",fontWeight:500,textTransform:"capitalize",color:t||"var(--text-primary)"},children:r||"—"})]})}function p({label:e,count:r,children:t}){return(0,n.jsxs)("div",{style:{marginBottom:"1.5rem"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"0.5rem",marginBottom:"0.5rem"},children:[(0,n.jsx)("label",{style:{fontWeight:500,fontSize:"0.875rem",color:"var(--text-secondary)"},children:e}),void 0!==r&&(0,n.jsx)("span",{style:{fontSize:"0.75rem",padding:"0.125rem 0.5rem",background:"var(--bg-hover)",borderRadius:"9999px"},children:r})]}),(0,n.jsx)("div",{style:{lineHeight:1.7},children:t})]})}}},e=>{e.O(0,[500,441,794,358],()=>e(e.s=1704)),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[200,252,409,974],{2318:(e,s,_)=>{Promise.resolve().then(_.t.bind(_,8500,23))}},e=>{e.O(0,[500,441,794,358],()=>e(e.s=2318)),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[167,819,851,885,896,988],{4441:()=>{}},_=>{_.O(0,[441,794,358],()=>_(_.s=4441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[167,819,851,885,896,988],{4441:()=>{}},_=>{_.O(0,[441,794,358],()=>_(_.s=4441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[167,819,851,885,896,988],{4441:()=>{}},_=>{_.O(0,[441,794,358],()=>_(_.s=4441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[167,819,851,885,896,988],{4441:()=>{}},_=>{_.O(0,[441,794,358],()=>_(_.s=4441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (()=>{"use strict";var e,t,r,o,n,i,a,u,l={},c={};function s(e){var t=c[e];if(void 0!==t)return t.exports;var r=c[e]={exports:{}},o=!0;try{l[e](r,r.exports,s),o=!1}finally{o&&delete c[e]}return r.exports}s.m=l,e=[],s.O=(t,r,o,n)=>{if(r){n=n||0;for(var i=e.length;i>0&&e[i-1][2]>n;i--)e[i]=e[i-1];e[i]=[r,o,n];return}for(var a=1/0,i=0;i<e.length;i++){for(var[r,o,n]=e[i],u=!0,l=0;l<r.length;l++)(!1&n||a>=n)&&Object.keys(s.O).every(e=>s.O[e](r[l]))?r.splice(l--,1):(u=!1,n<a&&(a=n));if(u){e.splice(i--,1);var c=o();void 0!==c&&(t=c)}}return t},s.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return s.d(t,{a:t}),t},r=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,s.t=function(e,o){if(1&o&&(e=this(e)),8&o||"object"==typeof e&&e&&(4&o&&e.__esModule||16&o&&"function"==typeof e.then))return e;var n=Object.create(null);s.r(n);var i={};t=t||[null,r({}),r([]),r(r)];for(var a=2&o&&e;"object"==typeof a&&!~t.indexOf(a);a=r(a))Object.getOwnPropertyNames(a).forEach(t=>i[t]=()=>e[t]);return i.default=()=>e,s.d(n,i),n},s.d=(e,t)=>{for(var r in t)s.o(t,r)&&!s.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},s.f={},s.e=e=>Promise.all(Object.keys(s.f).reduce((t,r)=>(s.f[r](e,t),t),[])),s.u=e=>"static/chunks/"+e+".b8b5ad2ed4920ce3.js",s.miniCssF=e=>{},s.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}}(),s.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o={},s.l=(e,t,r,n)=>{if(o[e])return void o[e].push(t);if(void 0!==r)for(var i,a,u=document.getElementsByTagName("script"),l=0;l<u.length;l++){var c=u[l];if(c.getAttribute("src")==e||c.getAttribute("data-webpack")=="_N_E:"+r){i=c;break}}i||(a=!0,(i=document.createElement("script")).charset="utf-8",i.timeout=120,s.nc&&i.setAttribute("nonce",s.nc),i.setAttribute("data-webpack","_N_E:"+r),i.src=s.tu(e)),o[e]=[t];var d=(t,r)=>{i.onerror=i.onload=null,clearTimeout(f);var n=o[e];if(delete o[e],i.parentNode&&i.parentNode.removeChild(i),n&&n.forEach(e=>e(r)),t)return t(r)},f=setTimeout(d.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=d.bind(null,i.onerror),i.onload=d.bind(null,i.onload),a&&document.head.appendChild(i)},s.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},s.tt=()=>(void 0===n&&(n={createScriptURL:e=>e},"undefined"!=typeof trustedTypes&&trustedTypes.createPolicy&&(n=trustedTypes.createPolicy("nextjs#bundler",n))),n),s.tu=e=>s.tt().createScriptURL(e),s.p="/_next/",i={68:0,334:0},s.f.j=(e,t)=>{var r=s.o(i,e)?i[e]:void 0;if(0!==r)if(r)t.push(r[2]);else if(/^(334|68)$/.test(e))i[e]=0;else{var o=new Promise((t,o)=>r=i[e]=[t,o]);t.push(r[2]=o);var n=s.p+s.u(e),a=Error();s.l(n,t=>{if(s.o(i,e)&&(0!==(r=i[e])&&(i[e]=void 0),r)){var o=t&&("load"===t.type?"missing":t.type),n=t&&t.target&&t.target.src;a.message="Loading chunk "+e+" failed.\n("+o+": "+n+")",a.name="ChunkLoadError",a.type=o,a.request=n,r[1](a)}},"chunk-"+e,e)}},s.O.j=e=>0===i[e],a=(e,t)=>{var r,o,[n,a,u]=t,l=0;if(n.some(e=>0!==i[e])){for(r in a)s.o(a,r)&&(s.m[r]=a[r]);if(u)var c=u(s)}for(e&&e(t);l<n.length;l++)o=n[l],s.o(i,o)&&i[o]&&i[o][0](),i[o]=0;return s.O(c)},(u=self.webpackChunk_N_E=self.webpackChunk_N_E||[]).forEach(a.bind(null,0)),u.push=a.bind(null,u.push.bind(u))})();
@@ -0,0 +1 @@
1
+ /*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,::backdrop,:after,:before{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@layer theme{:host,:root{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,::backdrop,:after,:before{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}:host,html{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}menu,ol,ul{list-style:none}audio,canvas,embed,iframe,img,object,svg,video{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.isolate{isolation:isolate}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.shrink{flex-shrink:1}.grow{flex-grow:1}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.resize{resize:both}.rounded{border-radius:.25rem}.border{border-style:var(--tw-border-style);border-width:1px}.capitalize{text-transform:capitalize}.lowercase{text-transform:lowercase}.italic{font-style:italic}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a)}.ring,.shadow{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px)}.blur,.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}}:root{--bg-primary:#0a0a0f;--bg-secondary:#12121a;--bg-card:#1a1a24;--bg-hover:#22222e;--border:#2a2a3a;--text-primary:#f0f0f5;--text-secondary:#8888a0;--accent:#6366f1;--accent-hover:#7c7ff2;--success:#10b981;--warning:#f59e0b;--error:#ef4444;--gradient-start:#6366f1;--gradient-end:#8b5cf6}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg-primary);color:var(--text-primary);min-height:100vh;font-family:Inter,-apple-system,BlinkMacSystemFont,sans-serif;line-height:1.6}a{color:var(--accent);text-decoration:none;transition:color .2s}a:hover{color:var(--accent-hover)}.app{min-height:100vh;display:flex}.sidebar{background:var(--bg-secondary);border-right:1px solid var(--border);width:240px;height:100vh;padding:1.5rem;position:fixed;overflow-y:auto}.sidebar-logo{background:linear-gradient(135deg,var(--gradient-start),var(--gradient-end));-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;margin-bottom:2rem;font-size:1.25rem;font-weight:700}.nav-list{list-style:none}.nav-item{margin-bottom:.25rem}.nav-link{color:var(--text-secondary);border-radius:8px;align-items:center;gap:.75rem;padding:.75rem 1rem;transition:all .2s;display:flex}.nav-link.active,.nav-link:hover{background:var(--bg-hover);color:var(--text-primary)}.main-content{flex:1;margin-left:240px;padding:2rem}.page-header{margin-bottom:2rem}.page-title{margin-bottom:.5rem;font-size:1.75rem;font-weight:600}.page-subtitle{color:var(--text-secondary)}.card{background:var(--bg-card);border:1px solid var(--border);border-radius:12px;margin-bottom:1.5rem;padding:1.5rem}.card-title{margin-bottom:1rem;font-size:1rem;font-weight:600}.btn{cursor:pointer;border:none;border-radius:8px;align-items:center;gap:.5rem;padding:.625rem 1.25rem;font-size:.875rem;font-weight:500;transition:all .2s;display:inline-flex}.btn-primary{background:linear-gradient(135deg,var(--gradient-start),var(--gradient-end));color:#fff}.btn-primary:hover{transform:translateY(-1px);box-shadow:0 4px 12px #6366f14d}.stats-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;margin-bottom:2rem;display:grid}.stat-card{background:var(--bg-card);border:1px solid var(--border);border-radius:12px;padding:1.25rem}.stat-value{background:linear-gradient(135deg,var(--gradient-start),var(--gradient-end));-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-size:2rem;font-weight:700}.stat-label{color:var(--text-secondary);font-size:.875rem}.badge{border-radius:9999px;align-items:center;padding:.25rem .75rem;font-size:.75rem;font-weight:500;display:inline-flex}.badge-success{color:var(--success);background:#10b98126}.badge-warning{color:var(--warning);background:#f59e0b26}.badge-error{color:var(--error);background:#ef444426}.table{border-collapse:collapse;width:100%}.table td,.table th{text-align:left;border-bottom:1px solid var(--border);padding:.75rem 1rem}.table th{color:var(--text-secondary);font-size:.875rem;font-weight:500}.table tbody tr:hover{background:var(--bg-hover)}.step-palette{background:var(--bg-secondary);border:1px solid var(--border);border-radius:12px;height:calc(100vh - 200px);padding:1rem;overflow-y:auto}.step-item{background:var(--bg-card);border:1px solid var(--border);cursor:grab;border-radius:8px;margin-bottom:.5rem;padding:.75rem 1rem;transition:all .2s}.step-item:hover{border-color:var(--accent);transform:translate(4px)}.step-type{text-transform:uppercase;margin-bottom:.25rem;font-size:.75rem;font-weight:600}.step-type-given{color:#10b981}.step-type-when{color:#f59e0b}.step-type-then{color:#6366f1}.builder-canvas{background:var(--bg-card);border:2px dashed var(--border);border-radius:12px;min-height:400px;padding:1.5rem}.gherkin-preview{background:#1e1e2e;border-radius:8px;padding:1rem;font-family:JetBrains Mono,monospace;font-size:.875rem;line-height:1.8}.gherkin-keyword{color:#c678dd;font-weight:600}.kanban-board{grid-template-columns:repeat(4,1fr);gap:1rem;display:grid}.kanban-column{background:var(--bg-secondary);border-radius:12px;padding:1rem}.kanban-header{align-items:center;gap:.5rem;margin-bottom:1rem;font-weight:600;display:flex}.kanban-count{border-radius:9999px;padding:.125rem .5rem;font-size:.75rem}.kanban-count,.list-row:hover{background:var(--bg-hover)}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}
package/README.md CHANGED
@@ -21,7 +21,7 @@ This system implements **GAMP 5** and **V-Model** compliance by making specifica
21
21
  | Artifact | Storage | Purpose |
22
22
  |----------|---------|---------|
23
23
  | **URS** | SQLite DB | High-level business requirements |
24
- | **FS** | Gherkin `.requirement` files | Functional specs + test scenarios |
24
+ | **FS** | Gherkin `.feature` files | Functional specs + test scenarios |
25
25
  | **Risk** | SQLite DB | Risk assessments & mitigations |
26
26
  | **Release** | SQLite DB | Version management & test results |
27
27
 
@@ -63,7 +63,7 @@ Run `matrix sync` and the system creates a placeholder `URS-011` record. Fill in
63
63
 
64
64
  ### 2. Write Functional Specs (FS)
65
65
 
66
- Create `.requirement` files in `specs/fs/`:
66
+ Create `.feature` files in `specs/fs/`:
67
67
 
68
68
  ```gherkin
69
69
  @URS-001 @URS-002 @RISK-005
@@ -104,7 +104,7 @@ matrix sync
104
104
  ```
105
105
 
106
106
  **What sync does:**
107
- 1. Parses all `.requirement` files in `specs/fs/`
107
+ 1. Parses all `.feature` files in `specs/fs/`
108
108
  2. Updates database with Feature titles, descriptions, and scenarios
109
109
  3. Extracts `@URS` and `@RISK` tags
110
110
  4. Auto-creates stub records for any referenced IDs that don't exist
@@ -138,7 +138,7 @@ matrix release tag REL-001 --fs FS-001 FS-002 FS-003
138
138
  Execute Cucumber tests and export results:
139
139
 
140
140
  ```bash
141
- npx cucumber-js specs/fs/**/*.requirement --format json:results.json
141
+ npx cucumber-js specs/fs/**/*.feature --format json:results.json
142
142
  ```
143
143
 
144
144
  ### 4. Import Test Results
@@ -212,7 +212,7 @@ matrix release list
212
212
  |---------|-------------|
213
213
  | `matrix init` | Initialize a new specs directory |
214
214
  | `matrix serve` | Start the dashboard server |
215
- | `matrix sync` | Parse `.requirement` files and update database |
215
+ | `matrix sync` | Parse `.feature` files and update database |
216
216
  | `matrix search <query>` | Semantic search across specs |
217
217
 
218
218
  ### Release Commands
package/bin/cli.js CHANGED
@@ -2200,6 +2200,7 @@ var init_database = __esm(() => {
2200
2200
  // src/lib/database/fs-repo.ts
2201
2201
  var exports_fs_repo = {};
2202
2202
  __export(exports_fs_repo, {
2203
+ updateFSURSLinks: () => updateFSURSLinks,
2203
2204
  syncFS: () => syncFS,
2204
2205
  loadFSMetadata: () => loadFSMetadata,
2205
2206
  loadAllFSMetadata: () => loadAllFSMetadata,
@@ -2303,6 +2304,50 @@ function deleteFS(id) {
2303
2304
  const result = db2.query("DELETE FROM fs WHERE id = ?").run(id);
2304
2305
  return result.changes > 0;
2305
2306
  }
2307
+ function updateFSURSLinks(fsId, ursIds) {
2308
+ const db2 = getDb();
2309
+ const { readFileSync: readFileSync4, writeFileSync } = __require("fs");
2310
+ const row = db2.query("SELECT file_path FROM fs WHERE id = ?").get(fsId);
2311
+ if (!row)
2312
+ return false;
2313
+ const filePath = row.file_path;
2314
+ db2.query("DELETE FROM fs_urs_link WHERE fs_id = ?").run(fsId);
2315
+ for (const ursId of ursIds) {
2316
+ db2.query("INSERT OR IGNORE INTO fs_urs_link (fs_id, urs_id) VALUES (?, ?)").run(fsId, ursId);
2317
+ }
2318
+ try {
2319
+ const content = readFileSync4(filePath, "utf-8");
2320
+ const lines = content.split(`
2321
+ `);
2322
+ const riskLinks = db2.query("SELECT risk_id FROM risk_fs_link WHERE fs_id = ?").all(fsId);
2323
+ const riskTags = riskLinks.map((r) => `@${r.risk_id}`);
2324
+ const ursTags = ursIds.map((id) => `@${id}`);
2325
+ const allTags = [...ursTags, ...riskTags].join(" ");
2326
+ let featureLineIndex = lines.findIndex((l) => l.trim().startsWith("Feature:"));
2327
+ if (featureLineIndex === -1)
2328
+ return false;
2329
+ let startIndex = 0;
2330
+ for (let i = 0;i < featureLineIndex; i++) {
2331
+ if (lines[i].trim().startsWith("@")) {
2332
+ startIndex = i + 1;
2333
+ } else if (lines[i].trim() === "") {
2334
+ continue;
2335
+ } else {
2336
+ break;
2337
+ }
2338
+ }
2339
+ const newLines = [
2340
+ allTags,
2341
+ ...lines.slice(featureLineIndex)
2342
+ ];
2343
+ writeFileSync(filePath, newLines.join(`
2344
+ `), "utf-8");
2345
+ return true;
2346
+ } catch (err) {
2347
+ console.error("Failed to update FS file:", err);
2348
+ return false;
2349
+ }
2350
+ }
2306
2351
  var init_fs_repo = __esm(() => {
2307
2352
  init_database();
2308
2353
  });
@@ -2684,10 +2729,14 @@ function createRisk(data, forcedId) {
2684
2729
  risk_level, residual_risk)
2685
2730
  VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
2686
2731
  `).run(id, data.title, data.status, data.category, data.gamp_category, timestamp, timestamp, data.impact, data.probability, data.risk_level, data.residual_risk);
2687
- for (const fsId of data.fs_ids) {
2688
- db2.query(`
2689
- INSERT OR IGNORE INTO risk_fs_link (risk_id, fs_id) VALUES (?, ?)
2690
- `).run(id, fsId);
2732
+ if (data.fs_ids.length > 0) {
2733
+ db2.exec("PRAGMA foreign_keys = OFF");
2734
+ for (const fsId of data.fs_ids) {
2735
+ db2.query(`
2736
+ INSERT OR IGNORE INTO risk_fs_link (risk_id, fs_id) VALUES (?, ?)
2737
+ `).run(id, fsId);
2738
+ }
2739
+ db2.exec("PRAGMA foreign_keys = ON");
2691
2740
  }
2692
2741
  for (const item of data.risks) {
2693
2742
  db2.query(`
@@ -2717,12 +2766,14 @@ function updateRisk(id, data) {
2717
2766
  WHERE id = ?
2718
2767
  `).run(data.title ?? existing.title, data.status ?? existing.status, data.category ?? existing.category, data.gamp_category ?? existing.gamp_category, timestamp, data.impact ?? existing.impact, data.probability ?? existing.probability, data.risk_level ?? existing.risk_level, data.residual_risk ?? existing.residual_risk, id);
2719
2768
  if (data.fs_ids) {
2769
+ db2.exec("PRAGMA foreign_keys = OFF");
2720
2770
  db2.query("DELETE FROM risk_fs_link WHERE risk_id = ?").run(id);
2721
2771
  for (const fsId of data.fs_ids) {
2722
2772
  db2.query(`
2723
2773
  INSERT OR IGNORE INTO risk_fs_link (risk_id, fs_id) VALUES (?, ?)
2724
2774
  `).run(id, fsId);
2725
2775
  }
2776
+ db2.exec("PRAGMA foreign_keys = ON");
2726
2777
  }
2727
2778
  if (data.risks) {
2728
2779
  db2.query("DELETE FROM risk_item WHERE risk_id = ?").run(id);
@@ -2800,7 +2851,7 @@ function parseGherkinFS(content, filePath) {
2800
2851
  const featureMatch = featureLine?.match(/Feature:\s*(.+)/);
2801
2852
  const fullTitle = featureMatch?.[1] || basename(filePath);
2802
2853
  const idMatch = fullTitle.match(/^(FS-\d+)/);
2803
- const id = idMatch?.[1] || basename(filePath, ".requirement").toUpperCase();
2854
+ const id = idMatch?.[1] || basename(filePath, ".feature").toUpperCase();
2804
2855
  const featureIndex = lines.findIndex((l) => l.trim().startsWith("Feature:"));
2805
2856
  let description = "";
2806
2857
  const requirements = [];
@@ -3287,7 +3338,7 @@ async function syncCommand(config) {
3287
3338
  closeDb2();
3288
3339
  return;
3289
3340
  }
3290
- const fsFiles = readdirSync(fsDir).filter((f) => f.endsWith(".requirement"));
3341
+ const fsFiles = readdirSync(fsDir).filter((f) => f.endsWith(".feature"));
3291
3342
  console.log(`Syncing ${fsFiles.length} FS files...`);
3292
3343
  const fsItems = [];
3293
3344
  const referencedURS = new Set;
@@ -3366,10 +3417,6 @@ var EXAMPLE_FS = `@URS-001
3366
3417
  Feature: FS-001 Example Feature
3367
3418
  This is an example functional specification.
3368
3419
 
3369
- Requirements:
3370
- - FR-001.1: The system shall do something
3371
- - FR-001.2: The system shall do something else
3372
-
3373
3420
  Scenario: Example scenario
3374
3421
  Given a precondition exists
3375
3422
  When an action is performed
@@ -3390,16 +3437,16 @@ async function initCommand(config) {
3390
3437
  }
3391
3438
  }
3392
3439
  const fsDir = join5(config.specsDir, "fs");
3393
- const examplePath = join5(fsDir, "FS-001-example.requirement");
3440
+ const examplePath = join5(fsDir, "FS-001-example.feature");
3394
3441
  if (!existsSync5(examplePath)) {
3395
3442
  writeFileSync(examplePath, EXAMPLE_FS, "utf-8");
3396
- console.log(` ✓ Created example FS: FS-001-example.requirement`);
3443
+ console.log(` ✓ Created example FS: FS-001-example.feature`);
3397
3444
  }
3398
3445
  console.log("");
3399
3446
  console.log("✅ Specs directory initialized!");
3400
3447
  console.log("");
3401
3448
  console.log("Next steps:");
3402
- console.log(" 1. Edit specs/fs/*.requirement files");
3449
+ console.log(" 1. Edit specs/fs/*.feature files");
3403
3450
  console.log(" 2. Run `matrix sync` to index files");
3404
3451
  console.log(" 3. Run `matrix serve` to start the UI");
3405
3452
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nivora/matrix",
3
- "version": "0.2.3",
3
+ "version": "0.3.1",
4
4
  "description": "Requirements documentation system with semantic search",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1,24 +0,0 @@
1
- (()=>{var a={};a.id=462,a.ids=[462],a.modules={68:(a,b,c)=>{"use strict";c.r(b),c.d(b,{"40b1c73b0988800e3ec2a1eaad98d4e536e9e0b690":()=>m,"40df584c8132966889e22d4dda60782c0c28c0272b":()=>n,"6031d978fa85dc0f7a684fd98b31954904e329133d":()=>l});var d=c(5349),e=c(9021),f=c.n(e),g=c(3873),h=c.n(g),i=c(2650),j=c(9530),k=c(8864);async function l(a,b){try{let c=a.replace(/[^a-zA-Z0-9\-_\.]/g,"-").toLowerCase();if(!c.endsWith(".requirement"))return{success:!1,error:"Filename must end with .requirement"};let d=h().join(process.cwd(),"specs","fs",c);if(f().existsSync(d))return{success:!1,error:`File ${c} already exists`};f().writeFileSync(d,b,"utf-8");let e=function(a,b){let c=a.split("\n"),d=[],e=[],f=!1;for(let a of c){let b=a.trim();if(b.startsWith("@")&&!f){let a=b.split(/\s+/).filter(a=>a.startsWith("@"));e.push(...a)}else if(b.startsWith("Feature:")){f=!0;break}}let g=c.find(a=>a.trim().startsWith("Feature:")),i=g?.match(/Feature:\s*(.+)/),j=i?.[1]||h().basename(b),k=j.match(/^(FS-\d+)/),l=k?.[1]||h().basename(b,".requirement").toUpperCase(),m=c.findIndex(a=>a.trim().startsWith("Feature:")),n="",o=[];for(let a=m+1;a<c.length;a++){let b=c[a].trim();if(b.startsWith("Scenario")||b.startsWith("Background")||b.startsWith("@"))break;b.startsWith("-")?o.push(b.substring(1).trim()):b&&!b.startsWith("Requirements:")&&(n+=(n?" ":"")+b)}let p=null;for(let a=0;a<c.length;a++){let b=c[a].trim();if(b.startsWith("Scenario Outline:")||b.startsWith("Scenario:")){p&&d.push(p);let e=b.startsWith("Scenario Outline:"),f=b.replace(/Scenario( Outline)?:\s*/,""),g=[];for(let b=a-1;b>=0;b--){let a=c[b].trim();if(a.startsWith("@")){let b=a.split(/\s+/).filter(a=>a.startsWith("@"));g.unshift(...b)}else if(a)break}p={name:f,tags:g,steps:[],line:a+1,is_outline:e}}p&&/^(Given|When|Then|And|But)\s/.test(b)&&p.steps.push(b)}p&&d.push(p);let q=e.filter(a=>a.match(/@URS-\d+/)).map(a=>a.replace("@","")),r=e.filter(a=>a.match(/@RISK-\d+/)).map(a=>a.replace("@","")),s=new Date().toISOString().split("T")[0];return{id:l,type:"fs",title:j,file_path:b,description:n,requirements:o,urs_ids:q,risk_ids:r,scenarios:d,scenario_count:d.length,created_at:s,updated_at:s}}(b,d),g=(0,k.Lf)();for(let a of(g.query(`
2
- INSERT INTO fs (id, title, file_path, description, requirements,
3
- scenario_count, created_at, updated_at)
4
- VALUES (?, ?, ?, ?, ?, ?, ?, ?)
5
- ON CONFLICT(id) DO UPDATE SET
6
- title = excluded.title,
7
- file_path = excluded.file_path,
8
- description = excluded.description,
9
- requirements = excluded.requirements,
10
- scenario_count = excluded.scenario_count,
11
- updated_at = excluded.updated_at
12
- `).run(e.id,e.title,e.file_path,e.description,JSON.stringify(e.requirements),e.scenario_count,e.created_at,(0,k.lg)()),g.query("DELETE FROM fs_urs_link WHERE fs_id = ?").run(e.id),e.urs_ids))g.query("SELECT id FROM urs WHERE id = ?").get(a)&&g.query(`
13
- INSERT OR IGNORE INTO fs_urs_link (fs_id, urs_id) VALUES (?, ?)
14
- `).run(e.id,a);return(0,i.revalidatePath)("/"),(0,i.revalidatePath)("/matrix"),(0,i.revalidatePath)("/builder"),{success:!0,id:e.id}}catch(a){return{success:!1,error:String(a)}}}async function m(a){try{let b=(0,j.r_)(a);return(0,i.revalidatePath)("/"),(0,i.revalidatePath)("/matrix"),(0,i.revalidatePath)("/builder"),{success:!0,id:b.id}}catch(a){return{success:!1,error:String(a)}}}async function n(a){try{let b=(0,j.w)(a);return(0,i.revalidatePath)("/"),(0,i.revalidatePath)("/matrix"),(0,i.revalidatePath)("/builder"),{success:!0,id:b.id}}catch(a){return{success:!1,error:String(a)}}}(0,c(9337).D)([l,m,n]),(0,d.A)(l,"6031d978fa85dc0f7a684fd98b31954904e329133d",null),(0,d.A)(m,"40b1c73b0988800e3ec2a1eaad98d4e536e9e0b690",null),(0,d.A)(n,"40df584c8132966889e22d4dda60782c0c28c0272b",null)},142:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>h,dynamic:()=>g});var d=c(5735),e=c(1081),f=c(1805);let g="force-dynamic";function h(){let a=(0,e.Er)(),b=(0,e.I1)(),c=(0,e.x7)(),g=c.flatMap(a=>a.scenarios.flatMap(a=>a.steps)),h={given:[...new Set(g.filter(a=>a.startsWith("Given ")))],when:[...new Set(g.filter(a=>a.startsWith("When ")))],then:[...new Set(g.filter(a=>a.startsWith("Then ")))],and:[...new Set(g.filter(a=>a.startsWith("And ")))],but:[...new Set(g.filter(a=>a.startsWith("But ")))]};return(0,d.jsxs)("div",{children:[(0,d.jsxs)("header",{className:"page-header",children:[(0,d.jsx)("h1",{className:"page-title",children:"Builder"}),(0,d.jsx)("p",{className:"page-subtitle",children:"Create URS, FS, and Risk specifications"})]}),(0,d.jsx)(f.BuilderTabs,{ursItems:a.map(a=>({id:a.id,title:a.title})),riskItems:b.map(a=>({id:a.id,title:a.title})),fsItems:c.map(a=>({id:a.id,title:a.title})),counts:{urs:a.length,fs:c.length,risk:b.length},stepsByType:h})]})}},261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},722:a=>{"use strict";a.exports=require("next/dist/shared/lib/invariant-error")},755:a=>{"use strict";a.exports=require("node:url")},846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},1025:a=>{"use strict";a.exports=require("next/dist/server/app-render/dynamic-access-async-storage.external.js")},1081:(a,b,c)=>{"use strict";c.d(b,{Er:()=>d.Er,I1:()=>d.I1,wx:()=>f,x7:()=>d.x7,zm:()=>e});var d=c(998);function e(){let a=(0,d.Er)(),b=(0,d.x7)(),c=new Map((0,d.I1)().map(a=>[a.id,a]));return a.map(a=>{let d=b.filter(b=>b.urs_ids.includes(a.id)),e=0;return{urs:a,fsItems:d.map(a=>{e+=a.scenario_count;let b=a.risk_ids.map(a=>c.get(a)).filter(Boolean);return{fs:a,risks:b}}),coverage:{fsCount:d.length,scenarioCount:e,hasCoverage:e>0}}})}function f(){let a=(0,d.Er)(),b=(0,d.x7)(),c=(0,d.I1)(),e=b.reduce((a,b)=>a+b.scenario_count,0),f=a.filter(a=>"draft"===a.status).length+c.filter(a=>"draft"===a.status).length,g=a.filter(a=>"review"===a.status).length+c.filter(a=>"review"===a.status).length,h=a.filter(a=>"approved"===a.status).length+c.filter(a=>"approved"===a.status).length,i=a.filter(a=>b.some(b=>b.urs_ids.includes(a.id))).length,j=b.filter(a=>a.scenario_count>0).length;return{counts:{urs:a.length,fs:b.length,scenarios:e,risk:c.length},byStatus:{draft:f,review:g,approved:h},coverage:{ursWithFS:i,ursTotal:a.length,fsWithTests:j,fsTotal:b.length}}}},1455:a=>{"use strict";a.exports=require("node:fs/promises")},1524:(a,b,c)=>{"use strict";c.r(b),c.d(b,{GlobalError:()=>C.a,__next_app__:()=>K,handler:()=>M,routeModule:()=>L});var d=c(7553),e=c(4006),f=c(7798),g=c(4775),h=c(9373),i=c(3461),j=c(1020),k=c(6349),l=c(4365),m=c(6023),n=c(3747),o=c(4235),p=c(3938),q=c(261),r=c(6758),s=c(7243),t=c(6713),u=c(7527),v=c(2820),w=c(8216),x=c(7929),y=c(9551),z=c(9125),A=c(6439),B=c(5547),C=c.n(B),D=c(1287),E=c(1494),F=c(722),G=c(753),H=c(3954),I={};for(let a in D)0>["default","GlobalError","__next_app__","routeModule","handler"].indexOf(a)&&(I[a]=()=>D[a]);c.d(b,I);let J={children:["",{children:["builder",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(c.bind(c,142)),"/Users/matthew/Code/github/p11o/machine/docs/src/app/builder/page.tsx"]}]},{metadata:{icon:[async a=>(await Promise.resolve().then(c.bind(c,440))).default(a)],apple:[],openGraph:[],twitter:[],manifest:void 0}}]},{layout:[()=>Promise.resolve().then(c.bind(c,6537)),"/Users/matthew/Code/github/p11o/machine/docs/src/app/layout.tsx"],"global-error":[()=>Promise.resolve().then(c.t.bind(c,5547,23)),"next/dist/client/components/builtin/global-error.js"],"not-found":[()=>Promise.resolve().then(c.t.bind(c,5091,23)),"next/dist/client/components/builtin/not-found.js"],forbidden:[()=>Promise.resolve().then(c.t.bind(c,5270,23)),"next/dist/client/components/builtin/forbidden.js"],unauthorized:[()=>Promise.resolve().then(c.t.bind(c,8193,23)),"next/dist/client/components/builtin/unauthorized.js"],metadata:{icon:[async a=>(await Promise.resolve().then(c.bind(c,440))).default(a)],apple:[],openGraph:[],twitter:[],manifest:void 0}}]}.children,K={require:c,loadChunk:()=>Promise.resolve()},L=new d.AppPageRouteModule({definition:{kind:e.RouteKind.APP_PAGE,page:"/builder/page",pathname:"/builder",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:J},distDir:".next",relativeProjectDir:""});async function M(a,b,d){var B;L.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let I=!!(0,h.getRequestMeta)(a,"minimalMode"),N="/builder/page";"/index"===N&&(N="/");let O=await L.prepare(a,b,{srcPage:N,multiZoneDraftMode:!1});if(!O)return b.statusCode=400,b.end("Bad Request"),null==d.waitUntil||d.waitUntil.call(d,Promise.resolve()),null;let{buildId:P,query:Q,params: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,parsedUrl:ad,interceptionRoutePatterns:ae,deploymentId:af}=O,ag=(0,q.normalizeAppPath)(N),{isOnDemandRevalidate:ah}=O,ai=ac.experimental.ppr&&!ac.cacheComponents&&(0,H.isInterceptionRouteAppPath)(_)?null:L.match(_,Z),aj=!!Z.routes[_],ak=a.headers["user-agent"]||"",al=(0,t.getBotType)(ak),am=(0,p.isHtmlBotRequest)(a),an=(0,h.getRequestMeta)(a,"isPrefetchRSCRequest")??"1"===a.headers[s.NEXT_ROUTER_PREFETCH_HEADER],ao=(0,h.getRequestMeta)(a,"isRSCRequest")??!!a.headers[s.RSC_HEADER],ap=(0,r.getIsPossibleServerAction)(a),aq=(0,m.checkIsAppPPREnabled)(ac.experimental.ppr);if(!(0,h.getRequestMeta)(a,"postponed")&&aq&&"1"===a.headers[x.NEXT_RESUME_HEADER]&&"POST"===a.method){let b=[];for await(let c of a)b.push(c);let c=Buffer.concat(b).toString("utf8");(0,h.addRequestMeta)(a,"postponed",c)}let ar=aq&&(null==(B=Z.routes[ag]??Z.dynamicRoutes[ag])?void 0:B.renderingMode)==="PARTIALLY_STATIC",as=!1,at=!1,au=ar?(0,h.getRequestMeta)(a,"postponed"):void 0,av=ar&&ao&&!an;I&&(av=av&&!!au);let aw=(0,h.getRequestMeta)(a,"segmentPrefetchRSCRequest"),ax=(!am||!ar)&&(!ak||(0,p.shouldServeStreamingMetadata)(ak,ac.htmlLimitedBots)),ay=!!((ai||aj||Z.routes[ag])&&!(am&&ar)),az=ar&&!0===ac.cacheComponents,aA=!0===L.isDev||!ay||"string"==typeof au||(az&&(0,h.getRequestMeta)(a,"onCacheEntryV2")?av&&!I:av),aB=am&&ar,aC=null;$||!ay||aA||ap||au||av||(aC=_);let aD=aC;!aD&&L.isDev&&(aD=_),L.isDev||$||!ay||!ao||av||(0,k.d)(a.headers);let aE={...D,tree:J,GlobalError:C(),handler:M,routeModule:L,__next_app__:K};W&&X&&(0,o.setManifestsSingleton)({page:N,clientReferenceManifest:X,serverActionsManifest:W});let aF=a.method||"GET",aG=(0,g.getTracer)(),aH=aG.getActiveScopeSpan(),aI=async()=>((null==ab?void 0:ab.render404)?await ab.render404(a,b,ad,!1):b.end("This page could not be found"),null);try{let f=L.getVaryHeader(_,ae);b.setHeader("Vary",f);let k=async(c,d)=>{let e=new l.NodeNextRequest(a),f=new l.NodeNextResponse(b);return L.render(e,f,d).finally(()=>{if(!c)return;c.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let a=aG.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==i.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let d=a.get("next.route");if(d){let a=`${aF} ${d}`;c.setAttributes({"next.route":d,"http.route":d,"next.span_name":a}),c.updateName(a)}else c.updateName(`${aF} ${N}`)})},m=(0,h.getRequestMeta)(a,"incrementalCache"),o=async({span:e,postponed:f,fallbackRouteParams:g,forceStaticRender:i})=>{let l={query:Q,params:R,page:ag,sharedContext:{buildId:P},serverComponentsHmrCache:(0,h.getRequestMeta)(a,"serverComponentsHmrCache"),fallbackRouteParams:g,renderOpts:{App:()=>null,Document:()=>null,pageConfig:{},ComponentMod:aE,Component:(0,j.T)(aE),params:R,routeModule:L,page:N,postponed:f,shouldWaitOnAllReady:aB,serveStreamingMetadata:ax,supportsDynamicResponse:"string"==typeof f||aA,buildManifest:T,nextFontManifest:U,reactLoadableManifest:V,subresourceIntegrityManifest:Y,setCacheStatus:null==ab?void 0:ab.setCacheStatus,setIsrStatus:null==ab?void 0:ab.setIsrStatus,setReactDebugChannel:null==ab?void 0:ab.setReactDebugChannel,sendErrorsToBrowser:null==ab?void 0:ab.sendErrorsToBrowser,dir:c(3873).join(process.cwd(),L.relativeProjectDir),isDraftMode:$,botType:al,isOnDemandRevalidate:ah,isPossibleServerAction:ap,assetPrefix:ac.assetPrefix,nextConfigOutput:ac.output,crossOrigin:ac.crossOrigin,trailingSlash:ac.trailingSlash,images:ac.images,previewProps:Z.preview,deploymentId:af,enableTainting:ac.experimental.taint,htmlLimitedBots:ac.htmlLimitedBots,reactMaxHeadersLength:ac.reactMaxHeadersLength,multiZoneDraftMode:!1,incrementalCache:m,cacheLifeProfiles:ac.cacheLife,basePath:ac.basePath,serverActions:ac.experimental.serverActions,...as||at?{nextExport:!0,supportsDynamicResponse:!1,isStaticGeneration:!0,isDebugDynamicAccesses:as}:{},cacheComponents:!!ac.cacheComponents,experimental:{isRoutePPREnabled:ar,expireTime:ac.expireTime,staleTimes:ac.experimental.staleTimes,dynamicOnHover:!!ac.experimental.dynamicOnHover,inlineCss:!!ac.experimental.inlineCss,authInterrupts:!!ac.experimental.authInterrupts,clientTraceMetadata:ac.experimental.clientTraceMetadata||[],clientParamParsingOrigins:ac.experimental.clientParamParsingOrigins},waitUntil:d.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:()=>{},onInstrumentationRequestError:(b,c,d,e)=>L.onRequestError(a,b,d,e,ab),err:(0,h.getRequestMeta)(a,"invokeError"),dev:L.isDev}};as&&(l.renderOpts.nextExport=!0,l.renderOpts.supportsDynamicResponse=!1,l.renderOpts.isDebugDynamicAccesses=as),i&&(l.renderOpts.supportsDynamicResponse=!1);let n=await k(e,l),{metadata:o}=n,{cacheControl:p,headers:q={},fetchTags:r,fetchMetrics:s}=o;if(r&&(q[x.NEXT_CACHE_TAGS_HEADER]=r),a.fetchMetrics=s,ay&&(null==p?void 0:p.revalidate)===0&&!L.isDev&&!ar){let a=o.staticBailoutInfo,b=Object.defineProperty(Error(`Page changed from static to dynamic at runtime ${_}${(null==a?void 0:a.description)?`, reason: ${a.description}`:""}
15
- 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:n,headers:q,rscData:o.flightData,postponed:o.postponed,status:o.statusCode,segmentData:o.segmentData},cacheControl:p}},p=async({hasResolved:c,previousCacheEntry:f,isRevalidating:g,span:i,forceStaticRender:j=!1})=>{let k,l=!1===L.isDev,q=c||b.writableEnded;if(ah&&aa&&!f&&!I)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(ai&&(k=(0,v.parseFallbackField)(ai.fallback)),k===v.FallbackMode.PRERENDER&&(0,t.isBot)(ak)&&(!ar||am)&&(k=v.FallbackMode.BLOCKING_STATIC_RENDER),(null==f?void 0:f.isStale)===-1&&(ah=!0),ah&&(k!==v.FallbackMode.NOT_FOUND||f)&&(k=v.FallbackMode.BLOCKING_STATIC_RENDER),!I&&k!==v.FallbackMode.BLOCKING_STATIC_RENDER&&aD&&!q&&!$&&S&&(l||!aj)){if((l||ai)&&k===v.FallbackMode.NOT_FOUND){if(ac.experimental.adapterPath)return await aI();throw new A.NoFallbackError}if(ar&&(ac.cacheComponents?!av:!ao)){let b=l&&"string"==typeof(null==ai?void 0:ai.fallback)?ai.fallback:ag,c=l&&(null==ai?void 0:ai.fallbackRouteParams)?(0,n.createOpaqueFallbackRouteParams)(ai.fallbackRouteParams):at?(0,n.getFallbackRouteParams)(ag,L):null,f=await L.handleResponse({cacheKey:b,req:a,nextConfig:ac,routeKind:e.RouteKind.APP_PAGE,isFallback:!0,prerenderManifest:Z,isRoutePPREnabled:ar,responseGenerator:async()=>o({span:i,postponed:void 0,fallbackRouteParams:c,forceStaticRender:!1}),waitUntil:d.waitUntil,isMinimalMode:I});if(null===f)return null;if(f)return delete f.cacheControl,f}}let r=ah||g||!au?void 0:au;if(az&&!I&&m&&av&&!j){let b=await m.get(_,{kind:u.IncrementalCacheKind.APP_PAGE,isRoutePPREnabled:!0,isFallback:!1});b&&b.value&&b.value.kind===u.CachedRouteKind.APP_PAGE&&(r=b.value.postponed,b&&(-1===b.isStale||!0===b.isStale)&&(0,G.scheduleOnNextTick)(async()=>{let b=L.getResponseCache(a);try{await b.revalidate(_,m,ar,!1,a=>p({...a,forceStaticRender:!0}),null,c,d.waitUntil)}catch(a){console.error("Error revalidating the page in the background",a)}}))}if(as&&void 0!==r)return{cacheControl:{revalidate:1,expire:void 0},value:{kind:u.CachedRouteKind.PAGES,html:w.default.EMPTY,pageData:{},headers:void 0,status:void 0}};let s=l&&(null==ai?void 0:ai.fallbackRouteParams)&&(0,h.getRequestMeta)(a,"renderFallbackShell")?(0,n.createOpaqueFallbackRouteParams)(ai.fallbackRouteParams):at?(0,n.getFallbackRouteParams)(ag,L):null;return o({span:i,postponed:r,fallbackRouteParams:s,forceStaticRender:j})},q=async c=>{var f,g,i,j,k;let l,m=await L.handleResponse({cacheKey:aC,responseGenerator:a=>p({span:c,...a}),routeKind:e.RouteKind.APP_PAGE,isOnDemandRevalidate:ah,isRoutePPREnabled:ar,req:a,nextConfig:ac,prerenderManifest:Z,waitUntil:d.waitUntil,isMinimalMode:I});if($&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate"),L.isDev&&b.setHeader("Cache-Control","no-store, must-revalidate"),!m){if(aC)throw Object.defineProperty(Error("invariant: cache entry required but not generated"),"__NEXT_ERROR_CODE",{value:"E62",enumerable:!1,configurable:!0});return null}if((null==(f=m.value)?void 0:f.kind)!==u.CachedRouteKind.APP_PAGE)throw Object.defineProperty(Error(`Invariant app-page handler received invalid cache entry ${null==(i=m.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E707",enumerable:!1,configurable:!0});let n="string"==typeof m.value.postponed;ay&&!av&&(!n||an)&&(I||b.setHeader("x-nextjs-cache",ah?"REVALIDATED":m.isMiss?"MISS":m.isStale?"STALE":"HIT"),b.setHeader(s.NEXT_IS_PRERENDER_HEADER,"1"));let{value:q}=m;if(au)l={revalidate:0,expire:void 0};else if(av)l={revalidate:0,expire:void 0};else if(!L.isDev)if($)l={revalidate:0,expire:void 0};else if(ay){if(m.cacheControl)if("number"==typeof m.cacheControl.revalidate){if(m.cacheControl.revalidate<1)throw Object.defineProperty(Error(`Invalid revalidate configuration provided: ${m.cacheControl.revalidate} < 1`),"__NEXT_ERROR_CODE",{value:"E22",enumerable:!1,configurable:!0});l={revalidate:m.cacheControl.revalidate,expire:(null==(j=m.cacheControl)?void 0:j.expire)??ac.expireTime}}else l={revalidate:x.CACHE_ONE_YEAR,expire:void 0}}else b.getHeader("Cache-Control")||(l={revalidate:0,expire:void 0});if(m.cacheControl=l,"string"==typeof aw&&(null==q?void 0:q.kind)===u.CachedRouteKind.APP_PAGE&&q.segmentData){b.setHeader(s.NEXT_DID_POSTPONE_HEADER,"2");let c=null==(k=q.headers)?void 0:k[x.NEXT_CACHE_TAGS_HEADER];I&&ay&&c&&"string"==typeof c&&b.setHeader(x.NEXT_CACHE_TAGS_HEADER,c);let d=q.segmentData.get(aw);return void 0!==d?(0,z.sendRenderResult)({req:a,res:b,generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:w.default.fromStatic(d,s.RSC_CONTENT_TYPE_HEADER),cacheControl:m.cacheControl}):(b.statusCode=204,(0,z.sendRenderResult)({req:a,res:b,generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:w.default.EMPTY,cacheControl:m.cacheControl}))}let r=az?(0,h.getRequestMeta)(a,"onCacheEntryV2")??(0,h.getRequestMeta)(a,"onCacheEntry"):(0,h.getRequestMeta)(a,"onCacheEntry");if(r&&await r(m,{url:(0,h.getRequestMeta)(a,"initURL")??a.url}))return null;if(q.headers){let a={...q.headers};for(let[c,d]of(I&&ay||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==(g=q.headers)?void 0:g[x.NEXT_CACHE_TAGS_HEADER];if(I&&ay&&t&&"string"==typeof t&&b.setHeader(x.NEXT_CACHE_TAGS_HEADER,t),!q.status||ao&&ar||(b.statusCode=q.status),!I&&q.status&&E.RedirectStatusCode[q.status]&&ao&&(b.statusCode=200),n&&!av&&b.setHeader(s.NEXT_DID_POSTPONE_HEADER,"1"),ao&&!$){if(void 0===q.rscData){if(q.html.contentType!==s.RSC_CONTENT_TYPE_HEADER)if(ac.cacheComponents)return b.statusCode=404,(0,z.sendRenderResult)({req:a,res:b,generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:w.default.EMPTY,cacheControl:m.cacheControl});else throw Object.defineProperty(new F.InvariantError(`Expected RSC response, got ${q.html.contentType}`),"__NEXT_ERROR_CODE",{value:"E789",enumerable:!1,configurable:!0});return(0,z.sendRenderResult)({req:a,res:b,generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:q.html,cacheControl:m.cacheControl})}return(0,z.sendRenderResult)({req:a,res:b,generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:w.default.fromStatic(q.rscData,s.RSC_CONTENT_TYPE_HEADER),cacheControl:m.cacheControl})}let v=q.html;if(!n||I||ao)return(0,z.sendRenderResult)({req:a,res:b,generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:v,cacheControl:m.cacheControl});if(as)return v.push(new ReadableStream({start(a){a.enqueue(y.ENCODED_TAGS.CLOSED.BODY_AND_HTML),a.close()}})),(0,z.sendRenderResult)({req:a,res:b,generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:v,cacheControl:{revalidate:0,expire:void 0}});let A=new TransformStream;return v.push(A.readable),o({span:c,postponed:q.postponed,fallbackRouteParams:null,forceStaticRender:!1}).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,generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:v,cacheControl:{revalidate:0,expire:void 0}})};if(!aH)return await aG.withPropagatedContext(a.headers,()=>aG.trace(i.BaseServerSpan.handleRequest,{spanName:`${aF} ${N}`,kind:g.SpanKind.SERVER,attributes:{"http.method":aF,"http.target":a.url}},q));await q(aH)}catch(b){throw b instanceof A.NoFallbackError||await L.onRequestError(a,b,{routerKind:"App Router",routePath:N,routeType:"render",revalidateReason:(0,f.c)({isStaticGeneration:ay,isOnDemandRevalidate:ah})},!1,ab),b}}},1787:a=>{"use strict";a.exports=require("bun:sqlite")},1805:(a,b,c)=>{"use strict";c.d(b,{BuilderTabs:()=>d});let d=(0,c(7943).registerClientReference)(function(){throw Error("Attempted to call BuilderTabs() from the server but BuilderTabs is 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/matthew/Code/github/p11o/machine/docs/src/app/builder/builder-tabs.tsx","BuilderTabs")},1932:a=>{"use strict";a.exports=require("url")},3024:a=>{"use strict";a.exports=require("node:fs")},3033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},3411:(a,b,c)=>{"use strict";c.d(b,{BuilderTabs:()=>F});var d=c(8249),e=c(7484);function f({options:a,selected:b,onChange:c,placeholder:f,multi:g=!0,allowCustom:h=!0}){let[i,j]=(0,e.useState)(!1),[k,l]=(0,e.useState)(""),m=(0,e.useRef)(null),n=a.filter(a=>a.label.toLowerCase().includes(k.toLowerCase())&&(!g||!b.includes(a.value)));return(0,d.jsxs)("div",{ref:m,style:{position:"relative",flex:1},children:[g&&b.length>0&&(0,d.jsx)("div",{style:{display:"flex",gap:"0.25rem",flexWrap:"wrap",marginBottom:"0.5rem"},children:b.map(e=>{let f=a.find(a=>a.value===e);return(0,d.jsxs)("span",{className:"badge badge-success",style:{display:"flex",alignItems:"center",gap:"0.25rem"},children:[f?.value||e,(0,d.jsx)("button",{onClick:()=>{c(b.filter(a=>a!==e))},style:{background:"none",border:"none",cursor:"pointer",padding:0,fontSize:"1rem",color:"inherit"},children:"\xd7"})]},e)})}),(0,d.jsx)("input",{type:"text",value:g||i?k:(()=>{if(!g&&b.length>0){let c=a.find(a=>a.value===b[0]);return c?.label||b[0]}return""})(),onChange:a=>l(a.target.value),onFocus:()=>j(!0),placeholder:0!==b.length&&g?"Add more...":f,className:"input",style:{width:"100%"}}),i&&(0,d.jsxs)("div",{style:{position:"absolute",top:"100%",left:0,right:0,marginTop:"0.25rem",background:"var(--bg-card)",border:"1px solid var(--border)",borderRadius:"8px",maxHeight:"200px",overflowY:"auto",zIndex:100,boxShadow:"0 4px 12px rgba(0,0,0,0.3)"},children:[0===n.length?(0,d.jsx)("div",{style:{padding:"0.75rem",color:"var(--text-secondary)",fontSize:"0.875rem"},children:h?"No matches - type to create":"No matching steps"}):n.slice(0,20).map(a=>(0,d.jsxs)("div",{onClick:()=>{var d;return d=a.value,void(g?c([...b,d]):(c([d]),j(!1)),l(""))},style:{padding:"0.625rem 0.75rem",cursor:"pointer",fontSize:"0.875rem",borderBottom:"1px solid var(--border)",transition:"background 0.15s"},onMouseEnter:a=>a.currentTarget.style.background="var(--bg-hover)",onMouseLeave:a=>a.currentTarget.style.background="transparent",children:[(0,d.jsx)("div",{style:{fontWeight:500},children:a.value}),a.label!==a.value&&(0,d.jsx)("div",{style:{fontSize:"0.75rem",color:"var(--text-secondary)",marginTop:"0.125rem"},children:a.label})]},a.value)),n.length>20&&(0,d.jsxs)("div",{style:{padding:"0.5rem",color:"var(--text-secondary)",fontSize:"0.75rem",textAlign:"center"},children:["+",n.length-20," more..."]})]})]})}var g=c(9829);let h=(0,g.createServerReference)("6031d978fa85dc0f7a684fd98b31954904e329133d",g.callServer,void 0,g.findSourceMapURL,"saveFS"),i={width:"100%",padding:"0.875rem 1rem",fontSize:"0.9375rem",lineHeight:"1.5",color:"var(--text-primary)",background:"var(--bg-secondary)",borderWidth:"1px",borderStyle:"solid",borderColor:"var(--border)",borderRadius:"10px",outline:"none",transition:"all 0.2s ease"},j={borderColor:"var(--accent)",boxShadow:"0 0 0 3px rgba(99, 102, 241, 0.15)"},k={...i,cursor:"pointer",appearance:"none",backgroundImage:"url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%238888a0' d='M6 8L1 3h10z'/%3E%3C/svg%3E\")",backgroundRepeat:"no-repeat",backgroundPosition:"right 1rem center",paddingRight:"2.5rem"};function l(a,b){return{...i,...b===a?j:{}}}function m(a,b){return{...k,...b===a?j:{}}}function n({label:a,children:b,required:c,compact:e,hint:f,action:g}){return(0,d.jsxs)("div",{style:{marginBottom:e?"0":"1.5rem"},children:[(0,d.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:"0.5rem"},children:[(0,d.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"0.5rem"},children:[(0,d.jsx)("label",{style:{fontWeight:500,fontSize:"0.875rem",color:"var(--text-primary)"},children:a}),c&&(0,d.jsx)("span",{style:{color:"var(--accent)",fontSize:"0.75rem"},children:"Required"}),f&&(0,d.jsxs)("span",{style:{color:"var(--text-secondary)",fontSize:"0.8125rem",fontWeight:400},children:["— ",f]})]}),g&&(0,d.jsx)("button",{onClick:g.onClick,style:{padding:"0.375rem 0.75rem",fontSize:"0.8125rem",fontWeight:500,background:"transparent",border:"1px solid var(--accent)",borderRadius:"6px",color:"var(--accent)",cursor:"pointer",transition:"all 0.2s"},children:g.label})]}),b]})}function o({status:a}){return"idle"===a.type?null:(0,d.jsxs)("div",{style:{marginBottom:"1.5rem",padding:"1rem 1.25rem",borderRadius:"10px",background:"success"===a.type?"rgba(16, 185, 129, 0.1)":"rgba(239, 68, 68, 0.1)",color:"success"===a.type?"var(--success)":"var(--error)",fontSize:"0.9375rem",display:"flex",alignItems:"center",gap:"0.5rem",borderWidth:"1px",borderStyle:"solid",borderColor:"success"===a.type?"rgba(16, 185, 129, 0.2)":"rgba(239, 68, 68, 0.2)"},children:["success"===a.type?"✅":"❌"," ",a.message]})}function p({icon:a,title:b,subtitle:c}){return(0,d.jsxs)("div",{style:{marginBottom:"2rem",paddingBottom:"1.5rem",borderBottom:"1px solid var(--border)"},children:[(0,d.jsxs)("h2",{style:{margin:0,fontSize:"1.25rem",fontWeight:600},children:[a," ",b]}),(0,d.jsx)("p",{style:{margin:"0.25rem 0 0",color:"var(--text-secondary)",fontSize:"0.875rem"},children:c})]})}function q({onClick:a,disabled:b,isPending:c,label:e="Save"}){return(0,d.jsx)("button",{onClick:a,disabled:b,style:{padding:"0.75rem 1.5rem",fontSize:"0.9375rem",fontWeight:600,borderRadius:"10px",border:"none",cursor:b?"not-allowed":"pointer",background:b?"var(--bg-hover)":"linear-gradient(135deg, var(--gradient-start), var(--gradient-end))",color:b?"var(--text-secondary)":"white",transition:"all 0.2s ease",boxShadow:b?"none":"0 4px 12px rgba(99, 102, 241, 0.25)"},children:c?"\uD83D\uDCBE Saving...":`💾 ${e}`})}function r({onClick:a}){return(0,d.jsx)("button",{onClick:a,style:{padding:"0.5rem",background:"transparent",border:"1px solid var(--border)",borderRadius:"8px",color:"var(--text-secondary)",cursor:"pointer",transition:"all 0.2s",lineHeight:1},title:"Remove",children:"✕"})}function s({ursItems:a,riskItems:b,existingFSCount:c,stepsByType:g}){let i,j,k,[m,q]=(0,e.useState)("FS-"+String(c+1).padStart(3,"0")),[r,s]=(0,e.useState)(""),[w,x]=(0,e.useState)(""),[y,z]=(0,e.useState)([""]),[A,B]=(0,e.useState)([]),[C,D]=(0,e.useState)([]),[E,F]=(0,e.useState)([{name:"",steps:[{type:"given",text:""},{type:"when",text:""},{type:"then",text:""}]}]),[G,H]=(0,e.useState)({type:"idle"}),[I,J]=(0,e.useTransition)(),[K,L]=(0,e.useState)(null),M=(i=[...A.map(a=>`@${a}`),...C.map(a=>`@${a}`)].join(" "),j=y.filter(a=>a.trim()).map(a=>` - ${a}`).join("\n"),k=E.filter(a=>a.name.trim()).map(a=>{let b=a.steps.filter(a=>a.text.trim()).map(a=>` ${v(a.type)} ${a.text}`).join("\n");return` Scenario: ${a.name}
16
- ${b}`}).join("\n\n"),`${i}
17
- Feature: ${m} ${r}
18
- ${w}
19
-
20
- Requirements:
21
- ${j}
22
-
23
- ${k}
24
- `),N=()=>`${m}-${r.toLowerCase().replace(/\s+/g,"-")}.requirement`;return(0,d.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:"1.5rem"},children:[(0,d.jsxs)("div",{className:"card",style:{maxWidth:"none"},children:[(0,d.jsx)(p,{icon:"⚙️",title:"Functional Specification",subtitle:"Create a Gherkin-based feature file"}),(0,d.jsx)(o,{status:G}),(0,d.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"120px 1fr",gap:"1rem",marginBottom:"1.5rem"},children:[(0,d.jsx)(n,{label:"FS ID",compact:!0,children:(0,d.jsx)("input",{type:"text",value:m,onChange:a=>q(a.target.value),onFocus:()=>L("fsId"),onBlur:()=>L(null),style:l("fsId",K)})}),(0,d.jsx)(n,{label:"Title",required:!0,compact:!0,children:(0,d.jsx)("input",{type:"text",value:r,onChange:a=>s(a.target.value),onFocus:()=>L("title"),onBlur:()=>L(null),placeholder:"e.g., User Login Authentication",style:l("title",K)})})]}),(0,d.jsx)(n,{label:"Description",hint:"Brief description of the feature",children:(0,d.jsx)("div",{contentEditable:!0,onInput:a=>x(a.currentTarget.textContent||""),onFocus:()=>L("description"),onBlur:()=>L(null),suppressContentEditableWarning:!0,style:{...l("description",K),minHeight:"80px",whiteSpace:"pre-wrap"},"data-placeholder":"The system shall..."})}),(0,d.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:"1rem",marginBottom:"1.5rem"},children:[(0,d.jsx)(n,{label:"Link URS",compact:!0,children:(0,d.jsx)(f,{options:a.map(a=>({value:a.id,label:`${a.id} - ${a.title}`})),selected:A,onChange:B,placeholder:"Search URS...",multi:!0})}),(0,d.jsx)(n,{label:"Link Risks",compact:!0,children:(0,d.jsx)(f,{options:b.map(a=>({value:a.id,label:`${a.id} - ${a.title}`})),selected:C,onChange:D,placeholder:"Search Risks...",multi:!0})})]}),(0,d.jsx)(n,{label:"Requirements",hint:"Functional requirements",action:{label:"+ Add",onClick:()=>z([...y,""])},children:(0,d.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:"0.75rem"},children:y.map((a,b)=>(0,d.jsxs)("div",{style:{display:"flex",gap:"0.75rem",alignItems:"center"},children:[(0,d.jsxs)("span",{style:{color:"var(--warning)",fontWeight:600,fontSize:"0.875rem",minWidth:"60px"},children:["FR-",m.split("-")[1],".",b+1]}),(0,d.jsx)("input",{type:"text",value:a,onChange:a=>{var c;let d;return c=a.target.value,void((d=[...y])[b]=c,z(d))},onFocus:()=>L(`req-${b}`),onBlur:()=>L(null),placeholder:"Requirement description",style:{...l(`req-${b}`,K),flex:1}}),y.length>1&&(0,d.jsx)(t,{onClick:()=>{y.length>1&&z(y.filter((a,c)=>c!==b))}})]},b))})}),(0,d.jsx)(n,{label:"Test Scenarios",hint:"Gherkin scenarios",action:{label:"+ Scenario",onClick:()=>{F([...E,{name:"",steps:[{type:"given",text:""},{type:"when",text:""},{type:"then",text:""}]}])}},children:E.map((a,b)=>(0,d.jsx)(u,{scenario:a,index:b,stepsByType:g,focusedField:K,setFocusedField:L,onNameChange:a=>{let c;(c=[...E])[b].name=a,F(c)},onStepChange:(a,c)=>{let d;(d=[...E])[b].steps[a].text=c,F(d)},onAddStep:a=>{let c;(c=[...E])[b].steps.push({type:a,text:""}),F(c)},onRemoveStep:a=>{let c;(c=[...E])[b].steps=c[b].steps.filter((b,c)=>c!==a),F(c)},onRemove:()=>{E.length>1&&F(E.filter((a,c)=>c!==b))},canRemove:E.length>1},b))})]}),(0,d.jsxs)("div",{className:"card",style:{maxWidth:"none"},children:[(0,d.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"1.5rem",paddingBottom:"1rem",borderBottom:"1px solid var(--border)"},children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("h2",{style:{margin:0,fontSize:"1.125rem",fontWeight:600},children:"\uD83D\uDCC4 Preview"}),(0,d.jsx)("p",{style:{margin:"0.25rem 0 0",color:"var(--text-secondary)",fontSize:"0.8125rem"},children:N()})]}),(0,d.jsxs)("div",{style:{display:"flex",gap:"0.75rem"},children:[(0,d.jsx)("button",{onClick:()=>{let a=new Blob([M],{type:"text/plain"}),b=URL.createObjectURL(a),c=document.createElement("a");c.href=b,c.download=N(),c.click(),URL.revokeObjectURL(b)},style:{padding:"0.625rem 1rem",fontSize:"0.875rem",fontWeight:500,borderRadius:"8px",border:"1px solid var(--border)",background:"transparent",color:"var(--text-primary)",cursor:"pointer"},children:"⬇️ Download"}),(0,d.jsx)("button",{onClick:()=>{H({type:"idle"}),J(async()=>{let a=await h(N(),M);a.success?H({type:"success",message:`Saved as ${a.id}`}):H({type:"error",message:a.error})})},disabled:I||!r.trim(),style:{padding:"0.625rem 1.25rem",fontSize:"0.875rem",fontWeight:600,borderRadius:"8px",border:"none",cursor:I||!r.trim()?"not-allowed":"pointer",background:I||!r.trim()?"var(--bg-hover)":"linear-gradient(135deg, var(--gradient-start), var(--gradient-end))",color:I||!r.trim()?"var(--text-secondary)":"white",boxShadow:I||!r.trim()?"none":"0 4px 12px rgba(99, 102, 241, 0.25)"},children:I?"\uD83D\uDCBE Saving...":"\uD83D\uDCBE Save"})]})]}),(0,d.jsx)("pre",{style:{background:"var(--bg-secondary)",padding:"1.25rem",borderRadius:"10px",overflow:"auto",whiteSpace:"pre-wrap",fontFamily:"'JetBrains Mono', monospace",fontSize:"0.8125rem",lineHeight:1.7,maxHeight:"calc(100vh - 350px)",borderWidth:"1px",borderStyle:"solid",borderColor:"var(--border)"},children:M})]})]})}function t({onClick:a}){return(0,d.jsx)("button",{onClick:a,style:{padding:"0.5rem",background:"transparent",border:"1px solid var(--border)",borderRadius:"8px",color:"var(--text-secondary)",cursor:"pointer",transition:"all 0.2s",lineHeight:1},title:"Remove",children:"✕"})}function u({scenario:a,index:b,stepsByType:c,focusedField:e,setFocusedField:g,onNameChange:h,onStepChange:i,onAddStep:j,onRemoveStep:k,onRemove:m,canRemove:n}){return(0,d.jsxs)("div",{style:{marginBottom:"1rem",padding:"1.25rem",background:"var(--bg-secondary)",borderRadius:"10px",borderWidth:"1px",borderStyle:"solid",borderColor:"var(--border)"},children:[(0,d.jsxs)("div",{style:{display:"flex",gap:"0.75rem",marginBottom:"1rem",alignItems:"center"},children:[(0,d.jsxs)("span",{style:{color:"var(--accent)",fontWeight:600,fontSize:"0.875rem"},children:["Scenario ",b+1]}),(0,d.jsx)("input",{type:"text",value:a.name,onChange:a=>h(a.target.value),onFocus:()=>g(`scenario-${b}`),onBlur:()=>g(null),placeholder:"Scenario name (e.g., Successful login)",style:{...l(`scenario-${b}`,e),flex:1,fontWeight:500}}),n&&(0,d.jsx)(t,{onClick:m})]}),a.steps.map((a,b)=>(0,d.jsxs)("div",{style:{display:"flex",gap:"0.75rem",marginBottom:"0.75rem",alignItems:"center"},children:[(0,d.jsx)("span",{style:{minWidth:"55px",fontSize:"0.75rem",fontWeight:600,color:{given:"#a78bfa",when:"#60a5fa",then:"#34d399",and:"#94a3b8",but:"#f472b6"}[a.type]||"var(--text-secondary)",textTransform:"capitalize"},children:a.type}),(0,d.jsx)(f,{options:c[a.type].map(a=>({value:a.replace(/^(Given|When|Then|And|But)\s+/,""),label:a})),selected:a.text?[a.text]:[],onChange:a=>i(b,a[0]||""),placeholder:`Select or type ${a.type} step...`,multi:!1,allowCustom:!1}),(0,d.jsx)(t,{onClick:()=>k(b)})]},b)),(0,d.jsx)("div",{style:{display:"flex",gap:"0.5rem",marginTop:"1rem"},children:["and","but"].map(a=>(0,d.jsxs)("button",{onClick:()=>j(a),style:{padding:"0.375rem 0.75rem",fontSize:"0.8125rem",fontWeight:500,background:"transparent",border:"1px solid var(--border)",borderRadius:"6px",color:"var(--text-secondary)",cursor:"pointer"},children:["+ ",v(a)]},a))})]})}function v(a){return a.charAt(0).toUpperCase()+a.slice(1)}({...i,resize:"vertical",minHeight:"120px",fontFamily:"inherit"});let w=(0,g.createServerReference)("40b1c73b0988800e3ec2a1eaad98d4e536e9e0b690",g.callServer,void 0,g.findSourceMapURL,"saveURS"),x={width:"100%",padding:"0.875rem 1rem",fontSize:"0.9375rem",lineHeight:"1.5",color:"var(--text-primary)",background:"var(--bg-secondary)",borderWidth:"1px",borderStyle:"solid",borderColor:"var(--border)",borderRadius:"10px",outline:"none",transition:"all 0.2s ease"},y={borderColor:"var(--accent)",boxShadow:"0 0 0 3px rgba(99, 102, 241, 0.15)"},z={...x,cursor:"pointer",appearance:"none",backgroundImage:"url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%238888a0' d='M6 8L1 3h10z'/%3E%3C/svg%3E\")",backgroundRepeat:"no-repeat",backgroundPosition:"right 1rem center",paddingRight:"2.5rem"},A={...x,resize:"vertical",minHeight:"120px",fontFamily:"inherit"};function B({existingCount:a}){let[b,c]=(0,e.useState)(""),[f,g]=(0,e.useState)("draft"),[h,i]=(0,e.useState)("high"),[j,k]=(0,e.useState)(""),[l,m]=(0,e.useState)(""),[n,o]=(0,e.useState)(""),[p,q]=(0,e.useState)(""),[r,s]=(0,e.useState)([""]),[t,u]=(0,e.useState)(["GAMP 5"]),[v,B]=(0,e.useState)(null),[D,E]=(0,e.useState)({type:"idle"}),[F,G]=(0,e.useTransition)(),H=a=>({...x,...v===a?y:{}}),I=a=>({...z,...v===a?y:{}}),J=a=>({...A,...v===a?y:{}});return(0,d.jsxs)("div",{className:"card",style:{maxWidth:"900px"},children:[(0,d.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"2rem",paddingBottom:"1.5rem",borderBottom:"1px solid var(--border)"},children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("h2",{style:{margin:0,fontSize:"1.25rem",fontWeight:600},children:"\uD83D\uDCCB New User Requirement"}),(0,d.jsx)("p",{style:{margin:"0.25rem 0 0",color:"var(--text-secondary)",fontSize:"0.875rem"},children:"Create a new URS document"})]}),(0,d.jsx)("button",{onClick:()=>{E({type:"idle"}),G(async()=>{let a=await w({title:b,status:f,priority:h,owner:j,category:l,business_need:n,intended_use:p,acceptance_criteria:r.filter(a=>a.trim()),regulatory_refs:t.filter(a=>a.trim())});a.success?(E({type:"success",message:`Created ${a.id}`}),c(""),o(""),q(""),s([""])):E({type:"error",message:a.error})})},disabled:F||!b.trim()||!j.trim(),style:{padding:"0.75rem 1.5rem",fontSize:"0.9375rem",fontWeight:600,borderRadius:"10px",border:"none",cursor:!F&&b.trim()&&j.trim()?"pointer":"not-allowed",background:!F&&b.trim()&&j.trim()?"linear-gradient(135deg, var(--gradient-start), var(--gradient-end))":"var(--bg-hover)",color:!F&&b.trim()&&j.trim()?"white":"var(--text-secondary)",transition:"all 0.2s ease",boxShadow:!F&&b.trim()&&j.trim()?"0 4px 12px rgba(99, 102, 241, 0.25)":"none"},children:F?"\uD83D\uDCBE Saving...":"\uD83D\uDCBE Save URS"})]}),"idle"!==D.type&&(0,d.jsxs)("div",{style:{marginBottom:"1.5rem",padding:"1rem 1.25rem",borderRadius:"10px",background:"success"===D.type?"rgba(16, 185, 129, 0.1)":"rgba(239, 68, 68, 0.1)",color:"success"===D.type?"var(--success)":"var(--error)",fontSize:"0.9375rem",display:"flex",alignItems:"center",gap:"0.5rem",border:`1px solid ${"success"===D.type?"rgba(16, 185, 129, 0.2)":"rgba(239, 68, 68, 0.2)"}`},children:["success"===D.type?"✅":"❌"," ",D.message]}),(0,d.jsx)(C,{label:"Title",required:!0,children:(0,d.jsx)("input",{type:"text",value:b,onChange:a=>c(a.target.value),onFocus:()=>B("title"),onBlur:()=>B(null),placeholder:"e.g., User Authentication Requirements",style:H("title")})}),(0,d.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"repeat(4, 1fr)",gap:"1rem",marginBottom:"1.5rem"},children:[(0,d.jsx)(C,{label:"Status",compact:!0,children:(0,d.jsxs)("select",{value:f,onChange:a=>g(a.target.value),onFocus:()=>B("status"),onBlur:()=>B(null),style:I("status"),children:[(0,d.jsx)("option",{value:"draft",children:"\uD83D\uDCDD Draft"}),(0,d.jsx)("option",{value:"review",children:"\uD83D\uDC40 Review"}),(0,d.jsx)("option",{value:"approved",children:"✅ Approved"})]})}),(0,d.jsx)(C,{label:"Priority",compact:!0,children:(0,d.jsxs)("select",{value:h,onChange:a=>i(a.target.value),onFocus:()=>B("priority"),onBlur:()=>B(null),style:I("priority"),children:[(0,d.jsx)("option",{value:"critical",children:"\uD83D\uDD34 Critical"}),(0,d.jsx)("option",{value:"high",children:"\uD83D\uDFE0 High"}),(0,d.jsx)("option",{value:"medium",children:"\uD83D\uDFE1 Medium"}),(0,d.jsx)("option",{value:"low",children:"\uD83D\uDFE2 Low"})]})}),(0,d.jsx)(C,{label:"Category",compact:!0,children:(0,d.jsx)("input",{type:"text",value:l,onChange:a=>m(a.target.value),onFocus:()=>B("category"),onBlur:()=>B(null),placeholder:"e.g., Security",style:H("category")})}),(0,d.jsx)(C,{label:"Owner",required:!0,compact:!0,children:(0,d.jsx)("input",{type:"text",value:j,onChange:a=>k(a.target.value),onFocus:()=>B("owner"),onBlur:()=>B(null),placeholder:"e.g., Product Team",style:H("owner")})})]}),(0,d.jsx)(C,{label:"Business Need",hint:"Describe why this requirement exists",children:(0,d.jsx)("div",{contentEditable:!0,onInput:a=>o(a.currentTarget.textContent||""),onFocus:()=>B("businessNeed"),onBlur:()=>B(null),suppressContentEditableWarning:!0,style:{...J("businessNeed"),minHeight:"140px",whiteSpace:"pre-wrap"},"data-placeholder":"Describe the business problem this requirement addresses..."})}),(0,d.jsx)(C,{label:"Intended Use",hint:"Describe how this will be used",children:(0,d.jsx)("div",{contentEditable:!0,onInput:a=>q(a.currentTarget.textContent||""),onFocus:()=>B("intendedUse"),onBlur:()=>B(null),suppressContentEditableWarning:!0,style:{...J("intendedUse"),minHeight:"100px",whiteSpace:"pre-wrap"},"data-placeholder":"Describe the intended usage patterns and user workflows..."})}),(0,d.jsx)(C,{label:"Acceptance Criteria",hint:"Define measurable conditions for success",action:{label:"+ Add Criterion",onClick:()=>s([...r,""])},children:(0,d.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:"0.75rem"},children:r.map((a,b)=>(0,d.jsxs)("div",{style:{display:"flex",gap:"0.75rem",alignItems:"center"},children:[(0,d.jsxs)("span",{style:{color:"var(--accent)",fontWeight:600,fontSize:"0.875rem",minWidth:"24px"},children:[b+1,"."]}),(0,d.jsx)("input",{type:"text",value:a,onChange:a=>{var c;let d;return c=a.target.value,void((d=[...r])[b]=c,s(d))},onFocus:()=>B(`criterion-${b}`),onBlur:()=>B(null),placeholder:`Criterion ${b+1}: e.g., System shall respond within 2 seconds`,style:{...H(`criterion-${b}`),flex:1}}),r.length>1&&(0,d.jsx)("button",{onClick:()=>{r.length>1&&s(r.filter((a,c)=>c!==b))},style:{padding:"0.5rem",background:"transparent",border:"1px solid var(--border)",borderRadius:"8px",color:"var(--text-secondary)",cursor:"pointer",transition:"all 0.2s"},title:"Remove criterion",children:"✕"})]},b))})})]})}function C({label:a,children:b,required:c,compact:e,hint:f,action:g}){return(0,d.jsxs)("div",{style:{marginBottom:e?"0":"1.5rem"},children:[(0,d.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:"0.5rem"},children:[(0,d.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"0.5rem"},children:[(0,d.jsx)("label",{style:{fontWeight:500,fontSize:"0.875rem",color:"var(--text-primary)"},children:a}),c&&(0,d.jsx)("span",{style:{color:"var(--accent)",fontSize:"0.75rem"},children:"Required"}),f&&(0,d.jsxs)("span",{style:{color:"var(--text-secondary)",fontSize:"0.8125rem",fontWeight:400},children:["— ",f]})]}),g&&(0,d.jsx)("button",{onClick:g.onClick,style:{padding:"0.375rem 0.75rem",fontSize:"0.8125rem",fontWeight:500,background:"transparent",border:"1px solid var(--accent)",borderRadius:"6px",color:"var(--accent)",cursor:"pointer",transition:"all 0.2s"},children:g.label})]}),b]})}let D=(0,g.createServerReference)("40df584c8132966889e22d4dda60782c0c28c0272b",g.callServer,void 0,g.findSourceMapURL,"saveRisk");function E({fsItems:a,existingCount:b}){let[c,g]=(0,e.useState)(""),[h,i]=(0,e.useState)("draft"),[j,k]=(0,e.useState)(""),[p,s]=(0,e.useState)(4),[t,u]=(0,e.useState)("medium"),[v,w]=(0,e.useState)("medium"),[x,y]=(0,e.useState)("medium"),[z,A]=(0,e.useState)("acceptable"),[B,C]=(0,e.useState)([]),[E,F]=(0,e.useState)([{id:"R-001.1",description:"",impact:"medium",probability:"medium"}]),[G,H]=(0,e.useState)([{risk_id:"R-001.1",control:"",test:""}]),[I,J]=(0,e.useState)(null),[K,L]=(0,e.useState)({type:"idle"}),[M,N]=(0,e.useTransition)(),O=(a,b,c)=>{let d=[...E];d[a]={...d[a],[b]:c},F(d)},P=(a,b,c)=>{let d=[...G];d[a]={...d[a],[b]:c},H(d)};return(0,d.jsxs)("div",{className:"card",style:{maxWidth:"900px"},children:[(0,d.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"flex-start",marginBottom:"2rem",paddingBottom:"1.5rem",borderBottom:"1px solid var(--border)"},children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("h2",{style:{margin:0,fontSize:"1.25rem",fontWeight:600},children:"⚠️ Risk Assessment"}),(0,d.jsx)("p",{style:{margin:"0.25rem 0 0",color:"var(--text-secondary)",fontSize:"0.875rem"},children:"Create a new risk assessment document"})]}),(0,d.jsx)(q,{onClick:()=>{L({type:"idle"}),N(async()=>{let a=await D({title:c,status:h,category:j,gamp_category:p,fs_ids:B,impact:t,probability:v,risk_level:x,risks:E.filter(a=>a.description.trim()).map(a=>({id:a.id,description:a.description,impact:a.impact,probability:a.probability})),mitigations:G.filter(a=>a.control.trim()).map(a=>({risk_id:a.risk_id,control:a.control,test:a.test})),residual_risk:z});a.success?(L({type:"success",message:`Created ${a.id}`}),g(""),k(""),F([{id:"R-001.1",description:"",impact:"medium",probability:"medium"}]),H([{risk_id:"R-001.1",control:"",test:""}])):L({type:"error",message:a.error})})},disabled:M||!c.trim()||0===B.length,isPending:M,label:"Save Risk"})]}),(0,d.jsx)(o,{status:K}),(0,d.jsx)(n,{label:"Title",required:!0,children:(0,d.jsx)("input",{type:"text",value:c,onChange:a=>g(a.target.value),onFocus:()=>J("title"),onBlur:()=>J(null),placeholder:"e.g., Authentication Security Risk",style:l("title",I)})}),(0,d.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:"1rem",marginBottom:"1.5rem"},children:[(0,d.jsx)(n,{label:"Category",compact:!0,children:(0,d.jsx)("input",{type:"text",value:j,onChange:a=>k(a.target.value),onFocus:()=>J("category"),onBlur:()=>J(null),placeholder:"e.g., Security, Data Integrity",style:l("category",I)})}),(0,d.jsx)(n,{label:"Link FS",required:!0,compact:!0,children:(0,d.jsx)(f,{options:a.map(a=>({value:a.id,label:`${a.id} - ${a.title}`})),selected:B,onChange:C,placeholder:"Search FS...",multi:!0})})]}),(0,d.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"repeat(4, 1fr)",gap:"1rem",marginBottom:"1.5rem"},children:[(0,d.jsx)(n,{label:"Impact",compact:!0,children:(0,d.jsxs)("select",{value:t,onChange:a=>u(a.target.value),onFocus:()=>J("impact"),onBlur:()=>J(null),style:m("impact",I),children:[(0,d.jsx)("option",{value:"low",children:"\uD83D\uDFE2 Low"}),(0,d.jsx)("option",{value:"medium",children:"\uD83D\uDFE1 Medium"}),(0,d.jsx)("option",{value:"high",children:"\uD83D\uDFE0 High"}),(0,d.jsx)("option",{value:"critical",children:"\uD83D\uDD34 Critical"})]})}),(0,d.jsx)(n,{label:"Probability",compact:!0,children:(0,d.jsxs)("select",{value:v,onChange:a=>w(a.target.value),onFocus:()=>J("probability"),onBlur:()=>J(null),style:m("probability",I),children:[(0,d.jsx)("option",{value:"low",children:"\uD83D\uDFE2 Low"}),(0,d.jsx)("option",{value:"medium",children:"\uD83D\uDFE1 Medium"}),(0,d.jsx)("option",{value:"high",children:"\uD83D\uDD34 High"})]})}),(0,d.jsx)(n,{label:"Risk Level",compact:!0,children:(0,d.jsxs)("select",{value:x,onChange:a=>y(a.target.value),onFocus:()=>J("riskLevel"),onBlur:()=>J(null),style:m("riskLevel",I),children:[(0,d.jsx)("option",{value:"low",children:"\uD83D\uDFE2 Low"}),(0,d.jsx)("option",{value:"medium",children:"\uD83D\uDFE1 Medium"}),(0,d.jsx)("option",{value:"high",children:"\uD83D\uDFE0 High"}),(0,d.jsx)("option",{value:"critical",children:"\uD83D\uDD34 Critical"})]})}),(0,d.jsx)(n,{label:"Residual Risk",compact:!0,children:(0,d.jsxs)("select",{value:z,onChange:a=>A(a.target.value),onFocus:()=>J("residualRisk"),onBlur:()=>J(null),style:m("residualRisk",I),children:[(0,d.jsx)("option",{value:"acceptable",children:"✅ Acceptable"}),(0,d.jsx)("option",{value:"unacceptable",children:"❌ Unacceptable"}),(0,d.jsx)("option",{value:"pending",children:"⏳ Pending"})]})})]}),(0,d.jsx)(n,{label:"Identified Risks",hint:"List specific risks",action:{label:"+ Add Risk",onClick:()=>F([...E,{id:`R-001.${E.length+1}`,description:"",impact:"medium",probability:"medium"}])},children:(0,d.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:"0.75rem"},children:E.map((a,b)=>(0,d.jsxs)("div",{style:{display:"flex",gap:"0.75rem",alignItems:"center"},children:[(0,d.jsx)("input",{type:"text",value:a.id,onChange:a=>O(b,"id",a.target.value),onFocus:()=>J(`risk-id-${b}`),onBlur:()=>J(null),placeholder:"R-001.1",style:{...l(`risk-id-${b}`,I),width:"100px",flexShrink:0}}),(0,d.jsx)("input",{type:"text",value:a.description,onChange:a=>O(b,"description",a.target.value),onFocus:()=>J(`risk-desc-${b}`),onBlur:()=>J(null),placeholder:"Risk description",style:{...l(`risk-desc-${b}`,I),flex:1}}),E.length>1&&(0,d.jsx)(r,{onClick:()=>{E.length>1&&F(E.filter((a,c)=>c!==b))}})]},b))})}),(0,d.jsx)(n,{label:"Mitigations",hint:"Control measures and testing",action:{label:"+ Add Mitigation",onClick:()=>H([...G,{risk_id:"",control:"",test:""}])},children:(0,d.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:"0.75rem"},children:G.map((a,b)=>(0,d.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"100px 1fr 1fr auto",gap:"0.75rem",alignItems:"center",padding:"1rem",background:"var(--bg-secondary)",borderRadius:"10px",borderWidth:"1px",borderStyle:"solid",borderColor:"var(--border)"},children:[(0,d.jsx)("input",{type:"text",value:a.risk_id,onChange:a=>P(b,"risk_id",a.target.value),onFocus:()=>J(`mit-id-${b}`),onBlur:()=>J(null),placeholder:"R-ID",style:l(`mit-id-${b}`,I)}),(0,d.jsx)("input",{type:"text",value:a.control,onChange:a=>P(b,"control",a.target.value),onFocus:()=>J(`mit-control-${b}`),onBlur:()=>J(null),placeholder:"Control measure",style:l(`mit-control-${b}`,I)}),(0,d.jsx)("input",{type:"text",value:a.test,onChange:a=>P(b,"test",a.target.value),onFocus:()=>J(`mit-test-${b}`),onBlur:()=>J(null),placeholder:"How to test",style:l(`mit-test-${b}`,I)}),G.length>1&&(0,d.jsx)(r,{onClick:()=>{G.length>1&&H(G.filter((a,c)=>c!==b))}})]},b))})})]})}function F({ursItems:a,riskItems:b,fsItems:c,counts:f,stepsByType:g}){let[h,i]=(0,e.useState)("fs");return(0,d.jsxs)("div",{children:[(0,d.jsx)("div",{style:{display:"flex",gap:"0.5rem",marginBottom:"1.5rem"},children:[{id:"urs",label:"URS",icon:"\uD83D\uDCCB",color:"var(--success)"},{id:"fs",label:"FS",icon:"⚙️",color:"var(--warning)"},{id:"risk",label:"Risk",icon:"⚠️",color:"#f97316"}].map(a=>(0,d.jsxs)("button",{onClick:()=>i(a.id),className:`btn ${h===a.id?"btn-primary":""}`,style:h!==a.id?{background:"var(--bg-hover)"}:{},children:[a.icon," New ",a.label]},a.id))}),"urs"===h&&(0,d.jsx)(B,{existingCount:f.urs}),"fs"===h&&(0,d.jsx)(s,{ursItems:a,riskItems:b,existingFSCount:f.fs,stepsByType:g}),"risk"===h&&(0,d.jsx)(E,{fsItems:c,existingCount:f.risk})]})}},3873:a=>{"use strict";a.exports=require("path")},3954:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/interception-routes")},6126:(a,b,c)=>{Promise.resolve().then(c.bind(c,1805))},6193:a=>{"use strict";a.exports=require("node:string_decoder")},6294:(a,b,c)=>{Promise.resolve().then(c.bind(c,3411))},6439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},6713:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/is-bot")},6760:a=>{"use strict";a.exports=require("node:path")},7075:a=>{"use strict";a.exports=require("node:stream")},8354:a=>{"use strict";a.exports=require("util")},8474:a=>{"use strict";a.exports=require("node:events")},9021:a=>{"use strict";a.exports=require("fs")},9121:a=>{"use strict";a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},9294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")}};var b=require("../../webpack-runtime.js");b.C(a);var c=b.X(0,[445,471,13,390,476,870,135,530],()=>b(b.s=1524));module.exports=c})();
@@ -1 +0,0 @@
1
- {"version":1,"files":["../../../../matrix.db","../../../../node_modules/next/dist/client/components/app-router-headers.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../../node_modules/next/dist/compiled/next-server/app-page.runtime.prod.js","../../../../node_modules/next/dist/lib/client-and-server-references.js","../../../../node_modules/next/dist/lib/constants.js","../../../../node_modules/next/dist/lib/interop-default.js","../../../../node_modules/next/dist/lib/is-error.js","../../../../node_modules/next/dist/lib/semver-noop.js","../../../../node_modules/next/dist/server/app-render/action-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/action-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/after-task-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/after-task-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/async-local-storage.js","../../../../node_modules/next/dist/server/app-render/cache-signal.js","../../../../node_modules/next/dist/server/app-render/console-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/console-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.external.js","../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js","../../../../node_modules/next/dist/server/app-render/work-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/work-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js","../../../../node_modules/next/dist/server/lib/lru-cache.js","../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js","../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js","../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../node_modules/next/dist/server/load-manifest.external.js","../../../../node_modules/next/dist/server/node-environment-extensions/fast-set-immediate.external.js","../../../../node_modules/next/dist/server/response-cache/types.js","../../../../node_modules/next/dist/server/runtime-reacts.external.js","../../../../node_modules/next/dist/shared/lib/deep-freeze.js","../../../../node_modules/next/dist/shared/lib/invariant-error.js","../../../../node_modules/next/dist/shared/lib/is-plain-object.js","../../../../node_modules/next/dist/shared/lib/is-thenable.js","../../../../node_modules/next/dist/shared/lib/no-fallback-error.external.js","../../../../node_modules/next/dist/shared/lib/page-path/ensure-leading-slash.js","../../../../node_modules/next/dist/shared/lib/router/utils/app-paths.js","../../../../node_modules/next/dist/shared/lib/router/utils/html-bots.js","../../../../node_modules/next/dist/shared/lib/router/utils/interception-routes.js","../../../../node_modules/next/dist/shared/lib/router/utils/is-bot.js","../../../../node_modules/next/dist/shared/lib/segment.js","../../../../node_modules/next/dist/shared/lib/server-reference-info.js","../../../../node_modules/next/package.json","../../../../package.json","../../../../specs/fs/FS-001-login.requirement","../../../../specs/fs/FS-002-session.requirement","../../../../specs/fs/FS-003-registration.requirement","../../../../specs/fs/FS-004-booking.requirement","../../../../specs/fs/FS-005-waitlist.requirement","../../../../specs/fs/FS-006-schedule.requirement","../../../../specs/fs/FS-007-instructor.requirement","../../../../specs/fs/fs-008-something.requirement","../../../../specs/fs/fs-009-bleep-bloop-thing.requirement","../../../../specs/fs/fs-010-asfdlka.requirement","../../../../src/lib/database/schema.sql","../../../package.json","../../chunks/13.js","../../chunks/135.js","../../chunks/390.js","../../chunks/445.js","../../chunks/471.js","../../chunks/476.js","../../chunks/530.js","../../chunks/870.js","../../webpack-runtime.js","page_client-reference-manifest.js"]}
@@ -1 +0,0 @@
1
- globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/builder/page"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{"347":{"*":{"id":"4433","name":"*","chunks":[],"async":false}},"484":{"*":{"id":"664","name":"*","chunks":[],"async":false}},"1017":{"*":{"id":"4752","name":"*","chunks":[],"async":false}},"1304":{"*":{"id":"8059","name":"*","chunks":[],"async":false}},"2618":{"*":{"id":"3411","name":"*","chunks":[],"async":false}},"2716":{"*":{"id":"2386","name":"*","chunks":[],"async":false}},"4408":{"*":{"id":"5135","name":"*","chunks":[],"async":false}},"4581":{"*":{"id":"1335","name":"*","chunks":[],"async":false}},"4777":{"*":{"id":"2265","name":"*","chunks":[],"async":false}},"6869":{"*":{"id":"4661","name":"*","chunks":[],"async":false}},"7121":{"*":{"id":"5421","name":"*","chunks":[],"async":false}},"7123":{"*":{"id":"1921","name":"*","chunks":[],"async":false}},"8169":{"*":{"id":"3291","name":"*","chunks":[],"async":false}},"8500":{"*":{"id":"2116","name":"*","chunks":[],"async":false}},"8616":{"*":{"id":"4342","name":"*","chunks":[],"async":false}},"9434":{"*":{"id":"537","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/Users/matthew/Code/github/p11o/machine/docs/node_modules/next/dist/client/components/builtin/global-error.js":{"id":7123,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/node_modules/next/dist/esm/client/components/builtin/global-error.js":{"id":7123,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/node_modules/next/dist/client/components/client-page.js":{"id":1304,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/node_modules/next/dist/esm/client/components/client-page.js":{"id":1304,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/node_modules/next/dist/client/components/client-segment.js":{"id":8616,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/node_modules/next/dist/esm/client/components/client-segment.js":{"id":8616,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"id":4777,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":4777,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/node_modules/next/dist/client/components/layout-router.js":{"id":7121,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/node_modules/next/dist/esm/client/components/layout-router.js":{"id":7121,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/node_modules/next/dist/client/components/render-from-template-context.js":{"id":4581,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":4581,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/node_modules/next/dist/lib/framework/boundary-components.js":{"id":484,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":484,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"id":6869,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":6869,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/node_modules/next/dist/client/app-dir/link.js":{"id":8500,"name":"*","chunks":["500","static/chunks/500-b84d19d842172eba.js","974","static/chunks/app/page-9c9dff9c5e3ddefe.js"],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/node_modules/next/dist/esm/client/app-dir/link.js":{"id":8500,"name":"*","chunks":["500","static/chunks/500-b84d19d842172eba.js","974","static/chunks/app/page-9c9dff9c5e3ddefe.js"],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/src/app/globals.css":{"id":1743,"name":"*","chunks":["500","static/chunks/500-b84d19d842172eba.js","177","static/chunks/app/layout-550e25f5579f1a32.js"],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/src/app/matrix/client.tsx":{"id":2716,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/src/app/releases/[id]/release-detail-client.tsx":{"id":1017,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/src/app/releases/releases-client.tsx":{"id":9434,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/src/app/specs/[id]/risk-detail-client.tsx":{"id":4408,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/src/app/specs/[id]/scenario-list.tsx":{"id":8169,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/src/app/specs/[id]/urs-detail-client.tsx":{"id":347,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/src/app/builder/builder-tabs.tsx":{"id":2618,"name":"*","chunks":["462","static/chunks/app/builder/page-856dca2fb73a3bb0.js"],"async":false}},"entryCSSFiles":{"/Users/matthew/Code/github/p11o/machine/docs/src/":[],"/Users/matthew/Code/github/p11o/machine/docs/src/app/layout":[{"inlined":false,"path":"static/css/f29e518c867dffaa.css"}],"/Users/matthew/Code/github/p11o/machine/docs/src/app/page":[],"/Users/matthew/Code/github/p11o/machine/docs/src/app/builder/page":[]},"rscModuleMapping":{"347":{"*":{"id":"7250","name":"*","chunks":[],"async":false}},"484":{"*":{"id":"8562","name":"*","chunks":[],"async":false}},"1017":{"*":{"id":"9575","name":"*","chunks":[],"async":false}},"1304":{"*":{"id":"5098","name":"*","chunks":[],"async":false}},"1743":{"*":{"id":"1135","name":"*","chunks":[],"async":false}},"2618":{"*":{"id":"1805","name":"*","chunks":[],"async":false}},"2716":{"*":{"id":"7652","name":"*","chunks":[],"async":false}},"4408":{"*":{"id":"9665","name":"*","chunks":[],"async":false}},"4581":{"*":{"id":"6237","name":"*","chunks":[],"async":false}},"4777":{"*":{"id":"3859","name":"*","chunks":[],"async":false}},"6869":{"*":{"id":"6675","name":"*","chunks":[],"async":false}},"7121":{"*":{"id":"8099","name":"*","chunks":[],"async":false}},"7123":{"*":{"id":"5547","name":"*","chunks":[],"async":false}},"8169":{"*":{"id":"7831","name":"*","chunks":[],"async":false}},"8500":{"*":{"id":"3318","name":"*","chunks":[],"async":false}},"8616":{"*":{"id":"7644","name":"*","chunks":[],"async":false}},"9434":{"*":{"id":"4618","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{}}
@@ -1,2 +0,0 @@
1
- (()=>{var a={};a.id=585,a.ids=[585],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},722:a=>{"use strict";a.exports=require("next/dist/shared/lib/invariant-error")},755:a=>{"use strict";a.exports=require("node:url")},846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},1025:a=>{"use strict";a.exports=require("next/dist/server/app-render/dynamic-access-async-storage.external.js")},1081:(a,b,c)=>{"use strict";c.d(b,{Er:()=>d.Er,I1:()=>d.I1,wx:()=>f,x7:()=>d.x7,zm:()=>e});var d=c(998);function e(){let a=(0,d.Er)(),b=(0,d.x7)(),c=new Map((0,d.I1)().map(a=>[a.id,a]));return a.map(a=>{let d=b.filter(b=>b.urs_ids.includes(a.id)),e=0;return{urs:a,fsItems:d.map(a=>{e+=a.scenario_count;let b=a.risk_ids.map(a=>c.get(a)).filter(Boolean);return{fs:a,risks:b}}),coverage:{fsCount:d.length,scenarioCount:e,hasCoverage:e>0}}})}function f(){let a=(0,d.Er)(),b=(0,d.x7)(),c=(0,d.I1)(),e=b.reduce((a,b)=>a+b.scenario_count,0),f=a.filter(a=>"draft"===a.status).length+c.filter(a=>"draft"===a.status).length,g=a.filter(a=>"review"===a.status).length+c.filter(a=>"review"===a.status).length,h=a.filter(a=>"approved"===a.status).length+c.filter(a=>"approved"===a.status).length,i=a.filter(a=>b.some(b=>b.urs_ids.includes(a.id))).length,j=b.filter(a=>a.scenario_count>0).length;return{counts:{urs:a.length,fs:b.length,scenarios:e,risk:c.length},byStatus:{draft:f,review:g,approved:h},coverage:{ursWithFS:i,ursTotal:a.length,fsWithTests:j,fsTotal:b.length}}}},1309:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,3318,23))},1455:a=>{"use strict";a.exports=require("node:fs/promises")},1787:a=>{"use strict";a.exports=require("bun:sqlite")},1932:a=>{"use strict";a.exports=require("url")},3024:a=>{"use strict";a.exports=require("node:fs")},3033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},3873:a=>{"use strict";a.exports=require("path")},3954:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/interception-routes")},4161:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>i,dynamic:()=>h});var d=c(5735),e=c(1081),f=c(3059),g=c.n(f);let h="force-dynamic";function i(){let a=(0,e.x7)(),b=(0,e.Er)(),c=new Map;a.forEach(a=>{let d=b.find(b=>a.urs_ids.includes(b.id)),e=d?.category||"General";c.has(e)||c.set(e,[]),c.get(e).push(a)});let f=Array.from(c.entries()).sort((a,b)=>a[0].localeCompare(b[0]));return(0,d.jsxs)("div",{children:[(0,d.jsxs)("header",{className:"page-header",children:[(0,d.jsx)("h1",{className:"page-title",children:"\uD83D\uDCD6 User Guide"}),(0,d.jsx)("p",{className:"page-subtitle",children:"Auto-generated from Functional Specifications"})]}),(0,d.jsxs)("div",{className:"card",style:{marginBottom:"2rem"},children:[(0,d.jsx)("h2",{className:"card-title",children:"Contents"}),(0,d.jsx)("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(200px, 1fr))",gap:"0.5rem"},children:f.map(([a,b])=>(0,d.jsxs)("a",{href:`#${a.toLowerCase().replace(/\s+/g,"-")}`,style:{textDecoration:"none",padding:"0.5rem 0.75rem",background:"var(--bg-hover)",borderRadius:"6px",color:"var(--text-primary)",display:"flex",alignItems:"center",gap:"0.5rem"},children:[(0,d.jsx)("span",{children:k(a)}),(0,d.jsx)("span",{children:a}),(0,d.jsx)("span",{style:{marginLeft:"auto",fontSize:"0.75rem",color:"var(--text-secondary)"},children:b.length})]},a))})]}),f.map(([a,b])=>(0,d.jsxs)("section",{id:a.toLowerCase().replace(/\s+/g,"-"),style:{marginBottom:"3rem"},children:[(0,d.jsxs)("h2",{style:{fontSize:"1.5rem",fontWeight:700,marginBottom:"1rem",display:"flex",alignItems:"center",gap:"0.75rem"},children:[(0,d.jsx)("span",{children:k(a)}),a]}),(0,d.jsx)("div",{style:{display:"grid",gap:"1.5rem"},children:b.map(a=>(0,d.jsx)(j,{fs:a},a.id))})]},a))]})}function j({fs:a}){return(0,d.jsxs)("div",{className:"card",style:{margin:0},children:[(0,d.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"0.75rem",marginBottom:"1rem"},children:[(0,d.jsx)("h3",{style:{fontSize:"1.125rem",fontWeight:600,margin:0},children:a.title}),(0,d.jsx)(g(),{href:`/specs/${a.id}`,style:{marginLeft:"auto",fontSize:"0.75rem",color:"var(--text-secondary)"},children:"View details →"})]}),a.description&&(0,d.jsx)("p",{style:{color:"var(--text-secondary)",marginBottom:"1rem",lineHeight:1.6},children:a.description}),(0,d.jsx)("div",{style:{display:"grid",gap:"1rem"},children:a.scenarios.map((a,b)=>{var c;return(0,d.jsxs)("div",{style:{padding:"1rem",background:"var(--bg-hover)",borderRadius:"8px"},children:[(0,d.jsx)("h4",{style:{fontSize:"0.9375rem",fontWeight:600,marginBottom:"0.75rem",color:"var(--accent)"},children:(c=a.name).toLowerCase().includes("successful")?`How to: ${c.replace(/successful\s*/i,"").trim()}`:c.toLowerCase().includes("failed")||c.toLowerCase().includes("invalid")?`Troubleshooting: ${c}`:`How to: ${c}`}),(0,d.jsx)("ol",{style:{margin:0,paddingLeft:"1.25rem"},children:a.steps.map((a,b)=>{let c;return(0,d.jsx)("li",{style:{color:"var(--text-secondary)",marginBottom:"0.375rem",lineHeight:1.5},children:(c=(c=a.replace(/^(Given|When|Then|And|But)\s+/i,"").trim()).replace(/^I am on the (.+) page$/i,"Navigate to the $1 page").replace(/^I am logged in as (.+)$/i,"Make sure you are logged in as $1").replace(/^I enter (.+) into the (.+) field$/i,"Enter $1 in the $2 field").replace(/^I enter (.+) credentials$/i,"Enter your $1 login credentials").replace(/^I click (?:the |on )?["']?(.+?)["']?(?: button)?$/i,'Click the "$1" button').replace(/^I should see (.+)$/i,"You will see $1").replace(/^I should be redirected to (.+)$/i,"You will be taken to $1").replace(/^I should be on the (.+) page$/i,"You should now be on the $1 page").replace(/^the (.+) should be (.+)$/i,"The $1 will be $2").replace(/^I fill in (.+) with (.+)$/i,"Enter $2 in the $1 field").replace(/^I select (.+) from (.+)$/i,"Select $1 from the $2 dropdown").replace(/^I wait for (.+)$/i,"Wait for $1").replace(/^the system (.+)$/i,"The system will $1")).charAt(0).toUpperCase()+c.slice(1)},b)})})]},b)})})]})}function k(a){return({Security:"\uD83D\uDD10",Core:"⚡",Booking:"\uD83D\uDCC5",Scheduling:"\uD83D\uDCC6",Operations:"⚙️",Reporting:"\uD83D\uDCCA",General:"\uD83D\uDCCB"})[a]||"\uD83D\uDCC4"}},6193:a=>{"use strict";a.exports=require("node:string_decoder")},6439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},6713:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/is-bot")},6738:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,2116,23))},6760:a=>{"use strict";a.exports=require("node:path")},7075:a=>{"use strict";a.exports=require("node:stream")},8250:(a,b,c)=>{"use strict";c.r(b),c.d(b,{GlobalError:()=>C.a,__next_app__:()=>K,handler:()=>M,routeModule:()=>L});var d=c(7553),e=c(4006),f=c(7798),g=c(4775),h=c(9373),i=c(3461),j=c(1020),k=c(6349),l=c(4365),m=c(6023),n=c(3747),o=c(4235),p=c(3938),q=c(261),r=c(6758),s=c(7243),t=c(6713),u=c(7527),v=c(2820),w=c(8216),x=c(7929),y=c(9551),z=c(9125),A=c(6439),B=c(5547),C=c.n(B),D=c(1287),E=c(1494),F=c(722),G=c(753),H=c(3954),I={};for(let a in D)0>["default","GlobalError","__next_app__","routeModule","handler"].indexOf(a)&&(I[a]=()=>D[a]);c.d(b,I);let J={children:["",{children:["guide",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(c.bind(c,4161)),"/Users/matthew/Code/github/p11o/machine/docs/src/app/guide/page.tsx"]}]},{metadata:{icon:[async a=>(await Promise.resolve().then(c.bind(c,440))).default(a)],apple:[],openGraph:[],twitter:[],manifest:void 0}}]},{layout:[()=>Promise.resolve().then(c.bind(c,6537)),"/Users/matthew/Code/github/p11o/machine/docs/src/app/layout.tsx"],"global-error":[()=>Promise.resolve().then(c.t.bind(c,5547,23)),"next/dist/client/components/builtin/global-error.js"],"not-found":[()=>Promise.resolve().then(c.t.bind(c,5091,23)),"next/dist/client/components/builtin/not-found.js"],forbidden:[()=>Promise.resolve().then(c.t.bind(c,5270,23)),"next/dist/client/components/builtin/forbidden.js"],unauthorized:[()=>Promise.resolve().then(c.t.bind(c,8193,23)),"next/dist/client/components/builtin/unauthorized.js"],metadata:{icon:[async a=>(await Promise.resolve().then(c.bind(c,440))).default(a)],apple:[],openGraph:[],twitter:[],manifest:void 0}}]}.children,K={require:c,loadChunk:()=>Promise.resolve()},L=new d.AppPageRouteModule({definition:{kind:e.RouteKind.APP_PAGE,page:"/guide/page",pathname:"/guide",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:J},distDir:".next",relativeProjectDir:""});async function M(a,b,d){var B;L.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let I=!!(0,h.getRequestMeta)(a,"minimalMode"),N="/guide/page";"/index"===N&&(N="/");let O=await L.prepare(a,b,{srcPage:N,multiZoneDraftMode:!1});if(!O)return b.statusCode=400,b.end("Bad Request"),null==d.waitUntil||d.waitUntil.call(d,Promise.resolve()),null;let{buildId:P,query:Q,params: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,parsedUrl:ad,interceptionRoutePatterns:ae,deploymentId:af}=O,ag=(0,q.normalizeAppPath)(N),{isOnDemandRevalidate:ah}=O,ai=ac.experimental.ppr&&!ac.cacheComponents&&(0,H.isInterceptionRouteAppPath)(_)?null:L.match(_,Z),aj=!!Z.routes[_],ak=a.headers["user-agent"]||"",al=(0,t.getBotType)(ak),am=(0,p.isHtmlBotRequest)(a),an=(0,h.getRequestMeta)(a,"isPrefetchRSCRequest")??"1"===a.headers[s.NEXT_ROUTER_PREFETCH_HEADER],ao=(0,h.getRequestMeta)(a,"isRSCRequest")??!!a.headers[s.RSC_HEADER],ap=(0,r.getIsPossibleServerAction)(a),aq=(0,m.checkIsAppPPREnabled)(ac.experimental.ppr);if(!(0,h.getRequestMeta)(a,"postponed")&&aq&&"1"===a.headers[x.NEXT_RESUME_HEADER]&&"POST"===a.method){let b=[];for await(let c of a)b.push(c);let c=Buffer.concat(b).toString("utf8");(0,h.addRequestMeta)(a,"postponed",c)}let ar=aq&&(null==(B=Z.routes[ag]??Z.dynamicRoutes[ag])?void 0:B.renderingMode)==="PARTIALLY_STATIC",as=!1,at=!1,au=ar?(0,h.getRequestMeta)(a,"postponed"):void 0,av=ar&&ao&&!an;I&&(av=av&&!!au);let aw=(0,h.getRequestMeta)(a,"segmentPrefetchRSCRequest"),ax=(!am||!ar)&&(!ak||(0,p.shouldServeStreamingMetadata)(ak,ac.htmlLimitedBots)),ay=!!((ai||aj||Z.routes[ag])&&!(am&&ar)),az=ar&&!0===ac.cacheComponents,aA=!0===L.isDev||!ay||"string"==typeof au||(az&&(0,h.getRequestMeta)(a,"onCacheEntryV2")?av&&!I:av),aB=am&&ar,aC=null;$||!ay||aA||ap||au||av||(aC=_);let aD=aC;!aD&&L.isDev&&(aD=_),L.isDev||$||!ay||!ao||av||(0,k.d)(a.headers);let aE={...D,tree:J,GlobalError:C(),handler:M,routeModule:L,__next_app__:K};W&&X&&(0,o.setManifestsSingleton)({page:N,clientReferenceManifest:X,serverActionsManifest:W});let aF=a.method||"GET",aG=(0,g.getTracer)(),aH=aG.getActiveScopeSpan(),aI=async()=>((null==ab?void 0:ab.render404)?await ab.render404(a,b,ad,!1):b.end("This page could not be found"),null);try{let f=L.getVaryHeader(_,ae);b.setHeader("Vary",f);let k=async(c,d)=>{let e=new l.NodeNextRequest(a),f=new l.NodeNextResponse(b);return L.render(e,f,d).finally(()=>{if(!c)return;c.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let a=aG.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==i.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let d=a.get("next.route");if(d){let a=`${aF} ${d}`;c.setAttributes({"next.route":d,"http.route":d,"next.span_name":a}),c.updateName(a)}else c.updateName(`${aF} ${N}`)})},m=(0,h.getRequestMeta)(a,"incrementalCache"),o=async({span:e,postponed:f,fallbackRouteParams:g,forceStaticRender:i})=>{let l={query:Q,params:R,page:ag,sharedContext:{buildId:P},serverComponentsHmrCache:(0,h.getRequestMeta)(a,"serverComponentsHmrCache"),fallbackRouteParams:g,renderOpts:{App:()=>null,Document:()=>null,pageConfig:{},ComponentMod:aE,Component:(0,j.T)(aE),params:R,routeModule:L,page:N,postponed:f,shouldWaitOnAllReady:aB,serveStreamingMetadata:ax,supportsDynamicResponse:"string"==typeof f||aA,buildManifest:T,nextFontManifest:U,reactLoadableManifest:V,subresourceIntegrityManifest:Y,setCacheStatus:null==ab?void 0:ab.setCacheStatus,setIsrStatus:null==ab?void 0:ab.setIsrStatus,setReactDebugChannel:null==ab?void 0:ab.setReactDebugChannel,sendErrorsToBrowser:null==ab?void 0:ab.sendErrorsToBrowser,dir:c(3873).join(process.cwd(),L.relativeProjectDir),isDraftMode:$,botType:al,isOnDemandRevalidate:ah,isPossibleServerAction:ap,assetPrefix:ac.assetPrefix,nextConfigOutput:ac.output,crossOrigin:ac.crossOrigin,trailingSlash:ac.trailingSlash,images:ac.images,previewProps:Z.preview,deploymentId:af,enableTainting:ac.experimental.taint,htmlLimitedBots:ac.htmlLimitedBots,reactMaxHeadersLength:ac.reactMaxHeadersLength,multiZoneDraftMode:!1,incrementalCache:m,cacheLifeProfiles:ac.cacheLife,basePath:ac.basePath,serverActions:ac.experimental.serverActions,...as||at?{nextExport:!0,supportsDynamicResponse:!1,isStaticGeneration:!0,isDebugDynamicAccesses:as}:{},cacheComponents:!!ac.cacheComponents,experimental:{isRoutePPREnabled:ar,expireTime:ac.expireTime,staleTimes:ac.experimental.staleTimes,dynamicOnHover:!!ac.experimental.dynamicOnHover,inlineCss:!!ac.experimental.inlineCss,authInterrupts:!!ac.experimental.authInterrupts,clientTraceMetadata:ac.experimental.clientTraceMetadata||[],clientParamParsingOrigins:ac.experimental.clientParamParsingOrigins},waitUntil:d.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:()=>{},onInstrumentationRequestError:(b,c,d,e)=>L.onRequestError(a,b,d,e,ab),err:(0,h.getRequestMeta)(a,"invokeError"),dev:L.isDev}};as&&(l.renderOpts.nextExport=!0,l.renderOpts.supportsDynamicResponse=!1,l.renderOpts.isDebugDynamicAccesses=as),i&&(l.renderOpts.supportsDynamicResponse=!1);let n=await k(e,l),{metadata:o}=n,{cacheControl:p,headers:q={},fetchTags:r,fetchMetrics:s}=o;if(r&&(q[x.NEXT_CACHE_TAGS_HEADER]=r),a.fetchMetrics=s,ay&&(null==p?void 0:p.revalidate)===0&&!L.isDev&&!ar){let a=o.staticBailoutInfo,b=Object.defineProperty(Error(`Page changed from static to dynamic at runtime ${_}${(null==a?void 0:a.description)?`, reason: ${a.description}`:""}
2
- 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:n,headers:q,rscData:o.flightData,postponed:o.postponed,status:o.statusCode,segmentData:o.segmentData},cacheControl:p}},p=async({hasResolved:c,previousCacheEntry:f,isRevalidating:g,span:i,forceStaticRender:j=!1})=>{let k,l=!1===L.isDev,q=c||b.writableEnded;if(ah&&aa&&!f&&!I)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(ai&&(k=(0,v.parseFallbackField)(ai.fallback)),k===v.FallbackMode.PRERENDER&&(0,t.isBot)(ak)&&(!ar||am)&&(k=v.FallbackMode.BLOCKING_STATIC_RENDER),(null==f?void 0:f.isStale)===-1&&(ah=!0),ah&&(k!==v.FallbackMode.NOT_FOUND||f)&&(k=v.FallbackMode.BLOCKING_STATIC_RENDER),!I&&k!==v.FallbackMode.BLOCKING_STATIC_RENDER&&aD&&!q&&!$&&S&&(l||!aj)){if((l||ai)&&k===v.FallbackMode.NOT_FOUND){if(ac.experimental.adapterPath)return await aI();throw new A.NoFallbackError}if(ar&&(ac.cacheComponents?!av:!ao)){let b=l&&"string"==typeof(null==ai?void 0:ai.fallback)?ai.fallback:ag,c=l&&(null==ai?void 0:ai.fallbackRouteParams)?(0,n.createOpaqueFallbackRouteParams)(ai.fallbackRouteParams):at?(0,n.getFallbackRouteParams)(ag,L):null,f=await L.handleResponse({cacheKey:b,req:a,nextConfig:ac,routeKind:e.RouteKind.APP_PAGE,isFallback:!0,prerenderManifest:Z,isRoutePPREnabled:ar,responseGenerator:async()=>o({span:i,postponed:void 0,fallbackRouteParams:c,forceStaticRender:!1}),waitUntil:d.waitUntil,isMinimalMode:I});if(null===f)return null;if(f)return delete f.cacheControl,f}}let r=ah||g||!au?void 0:au;if(az&&!I&&m&&av&&!j){let b=await m.get(_,{kind:u.IncrementalCacheKind.APP_PAGE,isRoutePPREnabled:!0,isFallback:!1});b&&b.value&&b.value.kind===u.CachedRouteKind.APP_PAGE&&(r=b.value.postponed,b&&(-1===b.isStale||!0===b.isStale)&&(0,G.scheduleOnNextTick)(async()=>{let b=L.getResponseCache(a);try{await b.revalidate(_,m,ar,!1,a=>p({...a,forceStaticRender:!0}),null,c,d.waitUntil)}catch(a){console.error("Error revalidating the page in the background",a)}}))}if(as&&void 0!==r)return{cacheControl:{revalidate:1,expire:void 0},value:{kind:u.CachedRouteKind.PAGES,html:w.default.EMPTY,pageData:{},headers:void 0,status:void 0}};let s=l&&(null==ai?void 0:ai.fallbackRouteParams)&&(0,h.getRequestMeta)(a,"renderFallbackShell")?(0,n.createOpaqueFallbackRouteParams)(ai.fallbackRouteParams):at?(0,n.getFallbackRouteParams)(ag,L):null;return o({span:i,postponed:r,fallbackRouteParams:s,forceStaticRender:j})},q=async c=>{var f,g,i,j,k;let l,m=await L.handleResponse({cacheKey:aC,responseGenerator:a=>p({span:c,...a}),routeKind:e.RouteKind.APP_PAGE,isOnDemandRevalidate:ah,isRoutePPREnabled:ar,req:a,nextConfig:ac,prerenderManifest:Z,waitUntil:d.waitUntil,isMinimalMode:I});if($&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate"),L.isDev&&b.setHeader("Cache-Control","no-store, must-revalidate"),!m){if(aC)throw Object.defineProperty(Error("invariant: cache entry required but not generated"),"__NEXT_ERROR_CODE",{value:"E62",enumerable:!1,configurable:!0});return null}if((null==(f=m.value)?void 0:f.kind)!==u.CachedRouteKind.APP_PAGE)throw Object.defineProperty(Error(`Invariant app-page handler received invalid cache entry ${null==(i=m.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E707",enumerable:!1,configurable:!0});let n="string"==typeof m.value.postponed;ay&&!av&&(!n||an)&&(I||b.setHeader("x-nextjs-cache",ah?"REVALIDATED":m.isMiss?"MISS":m.isStale?"STALE":"HIT"),b.setHeader(s.NEXT_IS_PRERENDER_HEADER,"1"));let{value:q}=m;if(au)l={revalidate:0,expire:void 0};else if(av)l={revalidate:0,expire:void 0};else if(!L.isDev)if($)l={revalidate:0,expire:void 0};else if(ay){if(m.cacheControl)if("number"==typeof m.cacheControl.revalidate){if(m.cacheControl.revalidate<1)throw Object.defineProperty(Error(`Invalid revalidate configuration provided: ${m.cacheControl.revalidate} < 1`),"__NEXT_ERROR_CODE",{value:"E22",enumerable:!1,configurable:!0});l={revalidate:m.cacheControl.revalidate,expire:(null==(j=m.cacheControl)?void 0:j.expire)??ac.expireTime}}else l={revalidate:x.CACHE_ONE_YEAR,expire:void 0}}else b.getHeader("Cache-Control")||(l={revalidate:0,expire:void 0});if(m.cacheControl=l,"string"==typeof aw&&(null==q?void 0:q.kind)===u.CachedRouteKind.APP_PAGE&&q.segmentData){b.setHeader(s.NEXT_DID_POSTPONE_HEADER,"2");let c=null==(k=q.headers)?void 0:k[x.NEXT_CACHE_TAGS_HEADER];I&&ay&&c&&"string"==typeof c&&b.setHeader(x.NEXT_CACHE_TAGS_HEADER,c);let d=q.segmentData.get(aw);return void 0!==d?(0,z.sendRenderResult)({req:a,res:b,generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:w.default.fromStatic(d,s.RSC_CONTENT_TYPE_HEADER),cacheControl:m.cacheControl}):(b.statusCode=204,(0,z.sendRenderResult)({req:a,res:b,generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:w.default.EMPTY,cacheControl:m.cacheControl}))}let r=az?(0,h.getRequestMeta)(a,"onCacheEntryV2")??(0,h.getRequestMeta)(a,"onCacheEntry"):(0,h.getRequestMeta)(a,"onCacheEntry");if(r&&await r(m,{url:(0,h.getRequestMeta)(a,"initURL")??a.url}))return null;if(q.headers){let a={...q.headers};for(let[c,d]of(I&&ay||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==(g=q.headers)?void 0:g[x.NEXT_CACHE_TAGS_HEADER];if(I&&ay&&t&&"string"==typeof t&&b.setHeader(x.NEXT_CACHE_TAGS_HEADER,t),!q.status||ao&&ar||(b.statusCode=q.status),!I&&q.status&&E.RedirectStatusCode[q.status]&&ao&&(b.statusCode=200),n&&!av&&b.setHeader(s.NEXT_DID_POSTPONE_HEADER,"1"),ao&&!$){if(void 0===q.rscData){if(q.html.contentType!==s.RSC_CONTENT_TYPE_HEADER)if(ac.cacheComponents)return b.statusCode=404,(0,z.sendRenderResult)({req:a,res:b,generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:w.default.EMPTY,cacheControl:m.cacheControl});else throw Object.defineProperty(new F.InvariantError(`Expected RSC response, got ${q.html.contentType}`),"__NEXT_ERROR_CODE",{value:"E789",enumerable:!1,configurable:!0});return(0,z.sendRenderResult)({req:a,res:b,generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:q.html,cacheControl:m.cacheControl})}return(0,z.sendRenderResult)({req:a,res:b,generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:w.default.fromStatic(q.rscData,s.RSC_CONTENT_TYPE_HEADER),cacheControl:m.cacheControl})}let v=q.html;if(!n||I||ao)return(0,z.sendRenderResult)({req:a,res:b,generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:v,cacheControl:m.cacheControl});if(as)return v.push(new ReadableStream({start(a){a.enqueue(y.ENCODED_TAGS.CLOSED.BODY_AND_HTML),a.close()}})),(0,z.sendRenderResult)({req:a,res:b,generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:v,cacheControl:{revalidate:0,expire:void 0}});let A=new TransformStream;return v.push(A.readable),o({span:c,postponed:q.postponed,fallbackRouteParams:null,forceStaticRender:!1}).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,generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:v,cacheControl:{revalidate:0,expire:void 0}})};if(!aH)return await aG.withPropagatedContext(a.headers,()=>aG.trace(i.BaseServerSpan.handleRequest,{spanName:`${aF} ${N}`,kind:g.SpanKind.SERVER,attributes:{"http.method":aF,"http.target":a.url}},q));await q(aH)}catch(b){throw b instanceof A.NoFallbackError||await L.onRequestError(a,b,{routerKind:"App Router",routePath:N,routeType:"render",revalidateReason:(0,f.c)({isStaticGeneration:ay,isOnDemandRevalidate:ah})},!1,ab),b}}},8354:a=>{"use strict";a.exports=require("util")},8474:a=>{"use strict";a.exports=require("node:events")},9021:a=>{"use strict";a.exports=require("fs")},9121:a=>{"use strict";a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},9294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")}};var b=require("../../webpack-runtime.js");b.C(a);var c=b.X(0,[445,471,13,390,135],()=>b(b.s=8250));module.exports=c})();