@infinitedusky/indusk-mcp 1.35.0 → 1.35.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 (23) hide show
  1. package/admin/.next/BUILD_ID +1 -1
  2. package/admin/.next/build-manifest.json +3 -3
  3. package/admin/.next/fallback-build-manifest.json +3 -3
  4. package/admin/.next/prerender-manifest.json +3 -3
  5. package/admin/.next/server/app/_global-error.html +1 -1
  6. package/admin/.next/server/app/_global-error.rsc +1 -1
  7. package/admin/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  8. package/admin/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  9. package/admin/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  10. package/admin/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  11. package/admin/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  12. package/admin/.next/server/chunks/ssr/apps_indusk-admin_src_03_q0_m._.js +1 -1
  13. package/admin/.next/server/chunks/ssr/apps_indusk-admin_src_03_q0_m._.js.map +1 -1
  14. package/admin/.next/server/middleware-build-manifest.js +3 -3
  15. package/admin/.next/server/pages/500.html +1 -1
  16. package/admin/.next/server/server-reference-manifest.js +1 -1
  17. package/admin/.next/server/server-reference-manifest.json +1 -1
  18. package/admin/.next/trace +1 -1
  19. package/admin/.next/trace-build +1 -1
  20. package/package.json +1 -1
  21. /package/admin/.next/static/{JiUWQvZsup7FxUQYQuZG8 → chwqn4zbU29xc3s0HiFdC}/_buildManifest.js +0 -0
  22. /package/admin/.next/static/{JiUWQvZsup7FxUQYQuZG8 → chwqn4zbU29xc3s0HiFdC}/_clientMiddlewareManifest.js +0 -0
  23. /package/admin/.next/static/{JiUWQvZsup7FxUQYQuZG8 → chwqn4zbU29xc3s0HiFdC}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- JiUWQvZsup7FxUQYQuZG8
1
+ chwqn4zbU29xc3s0HiFdC
@@ -7,9 +7,9 @@
7
7
  "static/chunks/03~yq9q893hmn.js"
8
8
  ],
9
9
  "lowPriorityFiles": [
10
- "static/JiUWQvZsup7FxUQYQuZG8/_buildManifest.js",
11
- "static/JiUWQvZsup7FxUQYQuZG8/_ssgManifest.js",
12
- "static/JiUWQvZsup7FxUQYQuZG8/_clientMiddlewareManifest.js"
10
+ "static/chwqn4zbU29xc3s0HiFdC/_buildManifest.js",
11
+ "static/chwqn4zbU29xc3s0HiFdC/_ssgManifest.js",
12
+ "static/chwqn4zbU29xc3s0HiFdC/_clientMiddlewareManifest.js"
13
13
  ],
14
14
  "rootMainFiles": [
15
15
  "static/chunks/15r3deq0oc~d..js",
@@ -5,9 +5,9 @@
5
5
  "devFiles": [],
6
6
  "polyfillFiles": [],
7
7
  "lowPriorityFiles": [
8
- "static/JiUWQvZsup7FxUQYQuZG8/_buildManifest.js",
9
- "static/JiUWQvZsup7FxUQYQuZG8/_ssgManifest.js",
10
- "static/JiUWQvZsup7FxUQYQuZG8/_clientMiddlewareManifest.js"
8
+ "static/chwqn4zbU29xc3s0HiFdC/_buildManifest.js",
9
+ "static/chwqn4zbU29xc3s0HiFdC/_ssgManifest.js",
10
+ "static/chwqn4zbU29xc3s0HiFdC/_clientMiddlewareManifest.js"
11
11
  ],
12
12
  "rootMainFiles": []
13
13
  }
@@ -58,8 +58,8 @@
58
58
  "dynamicRoutes": {},
59
59
  "notFoundRoutes": [],
60
60
  "preview": {
61
- "previewModeId": "53c5fa9b684a45ed8b0c74a45e9cb874",
62
- "previewModeSigningKey": "e9f9b2991aa216d620204495e8295d940742b6e8b6605667797f11492c8fbef8",
63
- "previewModeEncryptionKey": "1b1e2e003e279316f3f81047d0d91778ed74e2ed817bc9a33412c17f50a33f1c"
61
+ "previewModeId": "c72e5ac616e41dc5b6c85b470cb878f9",
62
+ "previewModeSigningKey": "6780c905c2c047d3be87f830b745d16526ef51e1fc139ae5294ff56de4c7a053",
63
+ "previewModeEncryptionKey": "d84d2ec04a96a7fbca554f71de9c23b532de933b3bee4e4c4c24337b3e946322"
64
64
  }
65
65
  }
@@ -1 +1 @@
1
- <!DOCTYPE html><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/15r3deq0oc~d..js"/><script src="/_next/static/chunks/0_r.3~d-5z8~_.js" async=""></script><script src="/_next/static/chunks/02p8lah64~lvh.js" async=""></script><script src="/_next/static/chunks/0gomaooulfzoq.js" async=""></script><script src="/_next/static/chunks/turbopack-130jszne6su0h.js" async=""></script><script src="/_next/static/chunks/0.v8w524wvk94.js" async=""></script><script src="/_next/static/chunks/0yelgl0o38y_u.js" async=""></script><meta name="next-size-adjust" content=""/><title>500: This page couldn’t load</title><link rel="icon" href="/favicon.ico?favicon.0x3dzn~oxb6tn.ico" sizes="256x256" type="image/x-icon"/><style>:root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }</style><script src="/_next/static/chunks/03~yq9q893hmn.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;display:flex;align-items:center;justify-content:center"><div style="margin-top:-32px;max-width:325px;padding:32px 28px;text-align:left"><svg width="32" height="32" viewBox="-0.2 -1.5 32 32" fill="none" style="margin-bottom:24px"><path d="M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z" fill="var(--next-error-title)"></path></svg><h1 style="font-size:24px;font-weight:500;letter-spacing:-0.02em;line-height:32px;margin:0 0 12px 0;color:var(--next-error-title)">This page couldn’t load</h1><p style="font-size:14px;font-weight:400;line-height:21px;margin:0 0 20px 0;color:var(--next-error-message)">A server error occurred. Reload to try again.</p><form style="margin:0"><button type="submit" style="display:inline-flex;align-items:center;justify-content:center;height:32px;padding:0 12px;font-size:14px;font-weight:500;line-height:20px;border-radius:6px;cursor:pointer;color:var(--next-error-btn-text);background:var(--next-error-btn-bg);border:var(--next-error-btn-border)">Reload</button></form></div></div><!--$--><!--/$--><script src="/_next/static/chunks/15r3deq0oc~d..js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[85530,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0yelgl0o38y_u.js\"],\"default\"]\n3:I[50571,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0yelgl0o38y_u.js\"],\"default\"]\n4:I[76614,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0yelgl0o38y_u.js\"],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[76614,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0yelgl0o38y_u.js\"],\"ViewportBoundary\"]\na:I[76614,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0yelgl0o38y_u.js\"],\"MetadataBoundary\"]\nc:I[59179,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0yelgl0o38y_u.js\"],\"default\",1]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"__PAGE__\",{}]}],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"title\",null,{\"children\":\"500: This page couldn’t load\"}],[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }\"}}]]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"display\":\"flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"marginTop\":\"-32px\",\"maxWidth\":\"325px\",\"padding\":\"32px 28px\",\"textAlign\":\"left\"},\"children\":[[\"$\",\"svg\",null,{\"width\":\"32\",\"height\":\"32\",\"viewBox\":\"-0.2 -1.5 32 32\",\"fill\":\"none\",\"style\":{\"marginBottom\":\"24px\"},\"children\":[\"$\",\"path\",null,{\"d\":\"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z\",\"fill\":\"var(--next-error-title)\"}]}],[\"$\",\"h1\",null,{\"style\":{\"fontSize\":\"24px\",\"fontWeight\":500,\"letterSpacing\":\"-0.02em\",\"lineHeight\":\"32px\",\"margin\":\"0 0 12px 0\",\"color\":\"var(--next-error-title)\"},\"children\":\"This page couldn’t load\"}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":\"14px\",\"fontWeight\":400,\"lineHeight\":\"21px\",\"margin\":\"0 0 20px 0\",\"color\":\"var(--next-error-message)\"},\"children\":\"A server error occurred. Reload to try again.\"}],[\"$\",\"form\",null,{\"style\":{\"margin\":0},\"children\":[\"$\",\"button\",null,{\"type\":\"submit\",\"style\":{\"display\":\"inline-flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\",\"height\":\"32px\",\"padding\":\"0 12px\",\"fontSize\":\"14px\",\"fontWeight\":500,\"lineHeight\":\"20px\",\"borderRadius\":\"6px\",\"cursor\":\"pointer\",\"color\":\"var(--next-error-btn-text)\",\"background\":\"var(--next-error-btn-bg)\",\"border\":\"var(--next-error-btn-border)\"},\"children\":\"Reload\"}]}]]}]}]}]]}],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,null]},null,false,\"$@7\"],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$La\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lb\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$c\",[]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"JiUWQvZsup7FxUQYQuZG8\"}\n"])</script><script>self.__next_f.push([1,"d:[]\n7:\"$Wd\"\n"])</script><script>self.__next_f.push([1,"9:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"e:I[61299,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0yelgl0o38y_u.js\"],\"IconMark\"]\n6:null\nb:[[\"$\",\"link\",\"0\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?favicon.0x3dzn~oxb6tn.ico\",\"sizes\":\"256x256\",\"type\":\"image/x-icon\"}],[\"$\",\"$Le\",\"1\",{}]]\n"])</script></body></html>
1
+ <!DOCTYPE html><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/15r3deq0oc~d..js"/><script src="/_next/static/chunks/0_r.3~d-5z8~_.js" async=""></script><script src="/_next/static/chunks/02p8lah64~lvh.js" async=""></script><script src="/_next/static/chunks/0gomaooulfzoq.js" async=""></script><script src="/_next/static/chunks/turbopack-130jszne6su0h.js" async=""></script><script src="/_next/static/chunks/0.v8w524wvk94.js" async=""></script><script src="/_next/static/chunks/0yelgl0o38y_u.js" async=""></script><meta name="next-size-adjust" content=""/><title>500: This page couldn’t load</title><link rel="icon" href="/favicon.ico?favicon.0x3dzn~oxb6tn.ico" sizes="256x256" type="image/x-icon"/><style>:root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }</style><script src="/_next/static/chunks/03~yq9q893hmn.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;display:flex;align-items:center;justify-content:center"><div style="margin-top:-32px;max-width:325px;padding:32px 28px;text-align:left"><svg width="32" height="32" viewBox="-0.2 -1.5 32 32" fill="none" style="margin-bottom:24px"><path d="M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z" fill="var(--next-error-title)"></path></svg><h1 style="font-size:24px;font-weight:500;letter-spacing:-0.02em;line-height:32px;margin:0 0 12px 0;color:var(--next-error-title)">This page couldn’t load</h1><p style="font-size:14px;font-weight:400;line-height:21px;margin:0 0 20px 0;color:var(--next-error-message)">A server error occurred. Reload to try again.</p><form style="margin:0"><button type="submit" style="display:inline-flex;align-items:center;justify-content:center;height:32px;padding:0 12px;font-size:14px;font-weight:500;line-height:20px;border-radius:6px;cursor:pointer;color:var(--next-error-btn-text);background:var(--next-error-btn-bg);border:var(--next-error-btn-border)">Reload</button></form></div></div><!--$--><!--/$--><script src="/_next/static/chunks/15r3deq0oc~d..js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[85530,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0yelgl0o38y_u.js\"],\"default\"]\n3:I[50571,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0yelgl0o38y_u.js\"],\"default\"]\n4:I[76614,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0yelgl0o38y_u.js\"],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[76614,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0yelgl0o38y_u.js\"],\"ViewportBoundary\"]\na:I[76614,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0yelgl0o38y_u.js\"],\"MetadataBoundary\"]\nc:I[59179,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0yelgl0o38y_u.js\"],\"default\",1]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"__PAGE__\",{}]}],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"title\",null,{\"children\":\"500: This page couldn’t load\"}],[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }\"}}]]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"display\":\"flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"marginTop\":\"-32px\",\"maxWidth\":\"325px\",\"padding\":\"32px 28px\",\"textAlign\":\"left\"},\"children\":[[\"$\",\"svg\",null,{\"width\":\"32\",\"height\":\"32\",\"viewBox\":\"-0.2 -1.5 32 32\",\"fill\":\"none\",\"style\":{\"marginBottom\":\"24px\"},\"children\":[\"$\",\"path\",null,{\"d\":\"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z\",\"fill\":\"var(--next-error-title)\"}]}],[\"$\",\"h1\",null,{\"style\":{\"fontSize\":\"24px\",\"fontWeight\":500,\"letterSpacing\":\"-0.02em\",\"lineHeight\":\"32px\",\"margin\":\"0 0 12px 0\",\"color\":\"var(--next-error-title)\"},\"children\":\"This page couldn’t load\"}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":\"14px\",\"fontWeight\":400,\"lineHeight\":\"21px\",\"margin\":\"0 0 20px 0\",\"color\":\"var(--next-error-message)\"},\"children\":\"A server error occurred. Reload to try again.\"}],[\"$\",\"form\",null,{\"style\":{\"margin\":0},\"children\":[\"$\",\"button\",null,{\"type\":\"submit\",\"style\":{\"display\":\"inline-flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\",\"height\":\"32px\",\"padding\":\"0 12px\",\"fontSize\":\"14px\",\"fontWeight\":500,\"lineHeight\":\"20px\",\"borderRadius\":\"6px\",\"cursor\":\"pointer\",\"color\":\"var(--next-error-btn-text)\",\"background\":\"var(--next-error-btn-bg)\",\"border\":\"var(--next-error-btn-border)\"},\"children\":\"Reload\"}]}]]}]}]}]]}],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,null]},null,false,\"$@7\"],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$La\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lb\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$c\",[]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"chwqn4zbU29xc3s0HiFdC\"}\n"])</script><script>self.__next_f.push([1,"d:[]\n7:\"$Wd\"\n"])</script><script>self.__next_f.push([1,"9:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"e:I[61299,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0yelgl0o38y_u.js\"],\"IconMark\"]\n6:null\nb:[[\"$\",\"link\",\"0\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?favicon.0x3dzn~oxb6tn.ico\",\"sizes\":\"256x256\",\"type\":\"image/x-icon\"}],[\"$\",\"$Le\",\"1\",{}]]\n"])</script></body></html>
@@ -6,7 +6,7 @@
6
6
  8:I[76614,["/_next/static/chunks/0.v8w524wvk94.js","/_next/static/chunks/0yelgl0o38y_u.js"],"ViewportBoundary"]
7
7
  a:I[76614,["/_next/static/chunks/0.v8w524wvk94.js","/_next/static/chunks/0yelgl0o38y_u.js"],"MetadataBoundary"]
8
8
  c:I[59179,["/_next/static/chunks/0.v8w524wvk94.js","/_next/static/chunks/0yelgl0o38y_u.js"],"default",1]
9
- 0:{"P":null,"c":["","_global-error"],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]}],[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","html",null,{"id":"__next_error__","children":[["$","head",null,{"children":[["$","title",null,{"children":"500: This page couldn’t load"}],["$","style",null,{"dangerouslySetInnerHTML":{"__html":":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }"}}]]}],["$","body",null,{"children":["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","display":"flex","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"style":{"marginTop":"-32px","maxWidth":"325px","padding":"32px 28px","textAlign":"left"},"children":[["$","svg",null,{"width":"32","height":"32","viewBox":"-0.2 -1.5 32 32","fill":"none","style":{"marginBottom":"24px"},"children":["$","path",null,{"d":"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z","fill":"var(--next-error-title)"}]}],["$","h1",null,{"style":{"fontSize":"24px","fontWeight":500,"letterSpacing":"-0.02em","lineHeight":"32px","margin":"0 0 12px 0","color":"var(--next-error-title)"},"children":"This page couldn’t load"}],["$","p",null,{"style":{"fontSize":"14px","fontWeight":400,"lineHeight":"21px","margin":"0 0 20px 0","color":"var(--next-error-message)"},"children":"A server error occurred. Reload to try again."}],["$","form",null,{"style":{"margin":0},"children":["$","button",null,{"type":"submit","style":{"display":"inline-flex","alignItems":"center","justifyContent":"center","height":"32px","padding":"0 12px","fontSize":"14px","fontWeight":500,"lineHeight":"20px","borderRadius":"6px","cursor":"pointer","color":"var(--next-error-btn-text)","background":"var(--next-error-btn-bg)","border":"var(--next-error-btn-border)"},"children":"Reload"}]}]]}]}]}]]}],null,["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],{},null,false,null]},null,false,"$@7"],["$","$1","h",{"children":[null,["$","$L8",null,{"children":"$L9"}],["$","div",null,{"hidden":true,"children":["$","$La",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$Lb"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$c",[]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"JiUWQvZsup7FxUQYQuZG8"}
9
+ 0:{"P":null,"c":["","_global-error"],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]}],[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","html",null,{"id":"__next_error__","children":[["$","head",null,{"children":[["$","title",null,{"children":"500: This page couldn’t load"}],["$","style",null,{"dangerouslySetInnerHTML":{"__html":":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }"}}]]}],["$","body",null,{"children":["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","display":"flex","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"style":{"marginTop":"-32px","maxWidth":"325px","padding":"32px 28px","textAlign":"left"},"children":[["$","svg",null,{"width":"32","height":"32","viewBox":"-0.2 -1.5 32 32","fill":"none","style":{"marginBottom":"24px"},"children":["$","path",null,{"d":"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z","fill":"var(--next-error-title)"}]}],["$","h1",null,{"style":{"fontSize":"24px","fontWeight":500,"letterSpacing":"-0.02em","lineHeight":"32px","margin":"0 0 12px 0","color":"var(--next-error-title)"},"children":"This page couldn’t load"}],["$","p",null,{"style":{"fontSize":"14px","fontWeight":400,"lineHeight":"21px","margin":"0 0 20px 0","color":"var(--next-error-message)"},"children":"A server error occurred. Reload to try again."}],["$","form",null,{"style":{"margin":0},"children":["$","button",null,{"type":"submit","style":{"display":"inline-flex","alignItems":"center","justifyContent":"center","height":"32px","padding":"0 12px","fontSize":"14px","fontWeight":500,"lineHeight":"20px","borderRadius":"6px","cursor":"pointer","color":"var(--next-error-btn-text)","background":"var(--next-error-btn-bg)","border":"var(--next-error-btn-border)"},"children":"Reload"}]}]]}]}]}]]}],null,["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],{},null,false,null]},null,false,"$@7"],["$","$1","h",{"children":[null,["$","$L8",null,{"children":"$L9"}],["$","div",null,{"hidden":true,"children":["$","$La",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$Lb"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$c",[]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"chwqn4zbU29xc3s0HiFdC"}
10
10
  d:[]
11
11
  7:"$Wd"
12
12
  9:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
@@ -1,5 +1,5 @@
1
1
  1:"$Sreact.fragment"
2
2
  2:I[76614,["/_next/static/chunks/0.v8w524wvk94.js","/_next/static/chunks/0yelgl0o38y_u.js"],"OutletBoundary"]
3
3
  3:"$Sreact.suspense"
4
- 0:{"rsc":["$","$1","c",{"children":[["$","html",null,{"id":"__next_error__","children":[["$","head",null,{"children":[["$","title",null,{"children":"500: This page couldn’t load"}],["$","style",null,{"dangerouslySetInnerHTML":{"__html":":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }"}}]]}],["$","body",null,{"children":["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","display":"flex","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"style":{"marginTop":"-32px","maxWidth":"325px","padding":"32px 28px","textAlign":"left"},"children":[["$","svg",null,{"width":"32","height":"32","viewBox":"-0.2 -1.5 32 32","fill":"none","style":{"marginBottom":"24px"},"children":["$","path",null,{"d":"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z","fill":"var(--next-error-title)"}]}],["$","h1",null,{"style":{"fontSize":"24px","fontWeight":500,"letterSpacing":"-0.02em","lineHeight":"32px","margin":"0 0 12px 0","color":"var(--next-error-title)"},"children":"This page couldn’t load"}],["$","p",null,{"style":{"fontSize":"14px","fontWeight":400,"lineHeight":"21px","margin":"0 0 20px 0","color":"var(--next-error-message)"},"children":"A server error occurred. Reload to try again."}],["$","form",null,{"style":{"margin":0},"children":["$","button",null,{"type":"submit","style":{"display":"inline-flex","alignItems":"center","justifyContent":"center","height":"32px","padding":"0 12px","fontSize":"14px","fontWeight":500,"lineHeight":"20px","borderRadius":"6px","cursor":"pointer","color":"var(--next-error-btn-text)","background":"var(--next-error-btn-bg)","border":"var(--next-error-btn-border)"},"children":"Reload"}]}]]}]}]}]]}],null,["$","$L2",null,{"children":["$","$3",null,{"name":"Next.MetadataOutlet","children":"$@4"}]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"JiUWQvZsup7FxUQYQuZG8"}
4
+ 0:{"rsc":["$","$1","c",{"children":[["$","html",null,{"id":"__next_error__","children":[["$","head",null,{"children":[["$","title",null,{"children":"500: This page couldn’t load"}],["$","style",null,{"dangerouslySetInnerHTML":{"__html":":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }"}}]]}],["$","body",null,{"children":["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","display":"flex","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"style":{"marginTop":"-32px","maxWidth":"325px","padding":"32px 28px","textAlign":"left"},"children":[["$","svg",null,{"width":"32","height":"32","viewBox":"-0.2 -1.5 32 32","fill":"none","style":{"marginBottom":"24px"},"children":["$","path",null,{"d":"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z","fill":"var(--next-error-title)"}]}],["$","h1",null,{"style":{"fontSize":"24px","fontWeight":500,"letterSpacing":"-0.02em","lineHeight":"32px","margin":"0 0 12px 0","color":"var(--next-error-title)"},"children":"This page couldn’t load"}],["$","p",null,{"style":{"fontSize":"14px","fontWeight":400,"lineHeight":"21px","margin":"0 0 20px 0","color":"var(--next-error-message)"},"children":"A server error occurred. Reload to try again."}],["$","form",null,{"style":{"margin":0},"children":["$","button",null,{"type":"submit","style":{"display":"inline-flex","alignItems":"center","justifyContent":"center","height":"32px","padding":"0 12px","fontSize":"14px","fontWeight":500,"lineHeight":"20px","borderRadius":"6px","cursor":"pointer","color":"var(--next-error-btn-text)","background":"var(--next-error-btn-bg)","border":"var(--next-error-btn-border)"},"children":"Reload"}]}]]}]}]}]]}],null,["$","$L2",null,{"children":["$","$3",null,{"name":"Next.MetadataOutlet","children":"$@4"}]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"chwqn4zbU29xc3s0HiFdC"}
5
5
  4:null
@@ -6,7 +6,7 @@
6
6
  8:I[76614,["/_next/static/chunks/0.v8w524wvk94.js","/_next/static/chunks/0yelgl0o38y_u.js"],"ViewportBoundary"]
7
7
  a:I[76614,["/_next/static/chunks/0.v8w524wvk94.js","/_next/static/chunks/0yelgl0o38y_u.js"],"MetadataBoundary"]
8
8
  c:I[59179,["/_next/static/chunks/0.v8w524wvk94.js","/_next/static/chunks/0yelgl0o38y_u.js"],"default",1]
9
- 0:{"P":null,"c":["","_global-error"],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]}],[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","html",null,{"id":"__next_error__","children":[["$","head",null,{"children":[["$","title",null,{"children":"500: This page couldn’t load"}],["$","style",null,{"dangerouslySetInnerHTML":{"__html":":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }"}}]]}],["$","body",null,{"children":["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","display":"flex","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"style":{"marginTop":"-32px","maxWidth":"325px","padding":"32px 28px","textAlign":"left"},"children":[["$","svg",null,{"width":"32","height":"32","viewBox":"-0.2 -1.5 32 32","fill":"none","style":{"marginBottom":"24px"},"children":["$","path",null,{"d":"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z","fill":"var(--next-error-title)"}]}],["$","h1",null,{"style":{"fontSize":"24px","fontWeight":500,"letterSpacing":"-0.02em","lineHeight":"32px","margin":"0 0 12px 0","color":"var(--next-error-title)"},"children":"This page couldn’t load"}],["$","p",null,{"style":{"fontSize":"14px","fontWeight":400,"lineHeight":"21px","margin":"0 0 20px 0","color":"var(--next-error-message)"},"children":"A server error occurred. Reload to try again."}],["$","form",null,{"style":{"margin":0},"children":["$","button",null,{"type":"submit","style":{"display":"inline-flex","alignItems":"center","justifyContent":"center","height":"32px","padding":"0 12px","fontSize":"14px","fontWeight":500,"lineHeight":"20px","borderRadius":"6px","cursor":"pointer","color":"var(--next-error-btn-text)","background":"var(--next-error-btn-bg)","border":"var(--next-error-btn-border)"},"children":"Reload"}]}]]}]}]}]]}],null,["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],{},null,false,null]},null,false,"$@7"],["$","$1","h",{"children":[null,["$","$L8",null,{"children":"$L9"}],["$","div",null,{"hidden":true,"children":["$","$La",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$Lb"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$c",[]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"JiUWQvZsup7FxUQYQuZG8"}
9
+ 0:{"P":null,"c":["","_global-error"],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]}],[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","html",null,{"id":"__next_error__","children":[["$","head",null,{"children":[["$","title",null,{"children":"500: This page couldn’t load"}],["$","style",null,{"dangerouslySetInnerHTML":{"__html":":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }"}}]]}],["$","body",null,{"children":["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","display":"flex","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"style":{"marginTop":"-32px","maxWidth":"325px","padding":"32px 28px","textAlign":"left"},"children":[["$","svg",null,{"width":"32","height":"32","viewBox":"-0.2 -1.5 32 32","fill":"none","style":{"marginBottom":"24px"},"children":["$","path",null,{"d":"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z","fill":"var(--next-error-title)"}]}],["$","h1",null,{"style":{"fontSize":"24px","fontWeight":500,"letterSpacing":"-0.02em","lineHeight":"32px","margin":"0 0 12px 0","color":"var(--next-error-title)"},"children":"This page couldn’t load"}],["$","p",null,{"style":{"fontSize":"14px","fontWeight":400,"lineHeight":"21px","margin":"0 0 20px 0","color":"var(--next-error-message)"},"children":"A server error occurred. Reload to try again."}],["$","form",null,{"style":{"margin":0},"children":["$","button",null,{"type":"submit","style":{"display":"inline-flex","alignItems":"center","justifyContent":"center","height":"32px","padding":"0 12px","fontSize":"14px","fontWeight":500,"lineHeight":"20px","borderRadius":"6px","cursor":"pointer","color":"var(--next-error-btn-text)","background":"var(--next-error-btn-bg)","border":"var(--next-error-btn-border)"},"children":"Reload"}]}]]}]}]}]]}],null,["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],{},null,false,null]},null,false,"$@7"],["$","$1","h",{"children":[null,["$","$L8",null,{"children":"$L9"}],["$","div",null,{"hidden":true,"children":["$","$La",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$Lb"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$c",[]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"chwqn4zbU29xc3s0HiFdC"}
10
10
  d:[]
11
11
  7:"$Wd"
12
12
  9:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
@@ -3,4 +3,4 @@
3
3
  3:I[76614,["/_next/static/chunks/0.v8w524wvk94.js","/_next/static/chunks/0yelgl0o38y_u.js"],"MetadataBoundary"]
4
4
  4:"$Sreact.suspense"
5
5
  5:I[61299,["/_next/static/chunks/0.v8w524wvk94.js","/_next/static/chunks/0yelgl0o38y_u.js"],"IconMark"]
6
- 0:{"rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","link","0",{"rel":"icon","href":"/favicon.ico?favicon.0x3dzn~oxb6tn.ico","sizes":"256x256","type":"image/x-icon"}],["$","$L5","1",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"JiUWQvZsup7FxUQYQuZG8"}
6
+ 0:{"rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","link","0",{"rel":"icon","href":"/favicon.ico?favicon.0x3dzn~oxb6tn.ico","sizes":"256x256","type":"image/x-icon"}],["$","$L5","1",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"chwqn4zbU29xc3s0HiFdC"}
@@ -2,4 +2,4 @@
2
2
  2:I[85530,["/_next/static/chunks/0.v8w524wvk94.js","/_next/static/chunks/0yelgl0o38y_u.js"],"default"]
3
3
  3:I[50571,["/_next/static/chunks/0.v8w524wvk94.js","/_next/static/chunks/0yelgl0o38y_u.js"],"default"]
4
4
  4:[]
5
- 0:{"rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"isPartial":false,"staleTime":300,"varyParams":"$W4","buildId":"JiUWQvZsup7FxUQYQuZG8"}
5
+ 0:{"rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"isPartial":false,"staleTime":300,"varyParams":"$W4","buildId":"chwqn4zbU29xc3s0HiFdC"}
@@ -1 +1 @@
1
- 0:{"tree":{"name":"","param":null,"prefetchHints":0,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":0,"slots":null}}},"staleTime":300,"buildId":"JiUWQvZsup7FxUQYQuZG8"}
1
+ 0:{"tree":{"name":"","param":null,"prefetchHints":0,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":0,"slots":null}}},"staleTime":300,"buildId":"chwqn4zbU29xc3s0HiFdC"}
@@ -6,6 +6,6 @@ ${d}`,e&&`### Fix items
6
6
 
7
7
  ${e}`].filter(Boolean).join("\n\n"))}function u({plan:a}){return(0,b.jsxs)("article",{className:"flex flex-col gap-6","data-testid":"plan-detail","data-plan-name":a.name,children:[(0,b.jsx)(w,{plan:a}),a.malformed&&(0,b.jsx)(x,{}),a.malformed&&a.rawDocuments&&(0,b.jsx)(A,{rawDocuments:a.rawDocuments}),a.research&&(0,b.jsx)(f.CollapsibleSection,{title:"Research",defaultOpen:!a.brief,persistKey:`plan:${a.name}:section:research`,copyMarkdown:o("Research",a.research.content),children:(0,b.jsx)(d.Markdown,{children:a.research.content})}),a.brief&&(0,b.jsx)(y,{planName:a.name,content:a.brief.content}),a.testPlan&&(0,b.jsx)(f.CollapsibleSection,{title:"Test Plan",defaultOpen:!1,persistKey:`plan:${a.name}:section:test-plan`,copyMarkdown:o("Test Plan",a.testPlan.content),children:(0,b.jsx)(d.Markdown,{children:a.testPlan.content})}),a.adr&&(0,b.jsx)(f.CollapsibleSection,{title:"ADR — Goal + Decision",defaultOpen:!1,persistKey:`plan:${a.name}:section:adr`,copyMarkdown:o("ADR — Goal + Decision",a.adr.content),children:(0,b.jsx)(d.Markdown,{children:a.adr.content})}),a.impl&&(0,b.jsx)(v,{plan:a}),!a.impl&&(0,b.jsx)(B,{plan:a,phase:null})]})}function v({plan:a}){if(!a.impl)return null;let c=l(j(a.impl.content,a.impl.trajectory));return(0,b.jsxs)(b.Fragment,{children:[c.pre.length>0&&(0,b.jsx)(z,{phases:c.pre,heading:"Phases",testId:"phases-section",planName:a.name}),(0,b.jsx)(B,{plan:a,phase:c.falsification}),c.post.length>0&&(0,b.jsx)(z,{phases:c.post,heading:"Follow-up Phases",testId:"followup-phases-section",planName:a.name})]})}function w({plan:a}){let c;return(0,b.jsxs)("header",{className:"flex items-center justify-between border-b border-gray-200 pb-3","data-testid":"plan-header",children:[(0,b.jsxs)("div",{className:"flex flex-col",children:[(0,b.jsx)("h1",{className:"text-xl font-semibold text-gray-900",children:a.name}),(0,b.jsx)("span",{className:"text-xs text-gray-500",children:a.archived?"archived":"active"})]}),(0,b.jsxs)("div",{className:"flex items-center gap-3",children:[(0,b.jsx)(e.Badge,{variant:(c=a.status.toLowerCase()).includes("completed")||c.includes("passing")?"passing":c.includes("blocked")?"blocked":c.includes("in-progress")||c.includes("accepted")?"writable":c.includes("draft")||c.includes("planned")?"planned":"neutral",children:a.status}),(0,b.jsx)(g.CopyButton,{text:function(a){let b=[`# ${a.name}
8
8
 
9
- Status: ${a.status}`];if(a.research&&b.push(o("Research",a.research.content)),a.brief&&b.push(o("Brief",a.brief.content)),a.testPlan&&b.push(o("Test Plan",a.testPlan.content)),a.adr&&b.push(o("ADR — Goal + Decision",a.adr.content)),a.impl){let c=l(j(a.impl.content,a.impl.trajectory));for(let a of c.pre)b.push(q(a));for(let d of(b.push(c.falsification?t(c.falsification):s(a.falsification)),c.post))b.push(q(d))}else b.push(s(a.falsification));return b.join("\n\n---\n\n")}(a),label:"Copy whole plan as markdown","data-testid":"copy-plan-button"})]})]})}function x(){return(0,b.jsx)("div",{className:"rounded border border-red-200 bg-red-50 px-3 py-2 text-sm text-red-700","data-testid":"malformed-banner",children:"⚠ This plan has malformed YAML frontmatter. Some sections may be missing or rendered with default values."})}function y({planName:a,content:c}){return(0,b.jsx)("section",{className:"flex flex-col gap-2","data-testid":"brief-section",children:(0,b.jsx)(f.CollapsibleSection,{title:"Brief",defaultOpen:!0,persistKey:`plan:${a}:section:brief`,copyMarkdown:o("Brief",c),children:(0,b.jsx)(d.Markdown,{children:c})})})}function z({phases:a,heading:c,testId:g,planName:i}){return 0===a.length?null:(0,b.jsxs)("section",{className:"flex flex-col gap-2","data-testid":g,children:[(0,b.jsx)("h2",{className:"text-base font-semibold text-gray-900",children:c}),(0,b.jsx)("div",{className:"flex flex-col gap-2",children:a.map(a=>(0,b.jsx)(f.CollapsibleSection,{title:`Phase ${a.number}${a.title?`: ${a.title}`:""}`,defaultOpen:!1,persistKey:`plan:${i}:phase:${a.number}`,copyMarkdown:q(a),children:(0,b.jsxs)("div",{className:"flex flex-col gap-3",children:[a.trajectoryRows.length>0&&(0,b.jsx)("div",{"data-testid":`phase-${a.number}-trajectory`,children:(0,b.jsxs)(h.Table,{children:[(0,b.jsx)(h.TableHeader,{children:(0,b.jsxs)(h.TableRow,{children:[(0,b.jsx)(h.TableHead,{children:"ID"}),(0,b.jsx)(h.TableHead,{children:"Asserts"}),(0,b.jsx)(h.TableHead,{children:"Writable at"}),(0,b.jsx)(h.TableHead,{children:"Passes at"}),(0,b.jsx)(h.TableHead,{children:"State"})]})}),(0,b.jsx)(h.TableBody,{children:a.trajectoryRows.map(a=>(0,b.jsxs)(h.TableRow,{children:[(0,b.jsx)(h.TableCell,{children:(0,b.jsx)("span",{className:"font-mono text-xs",children:a.id})}),(0,b.jsx)(h.TableCell,{children:a.asserts}),(0,b.jsxs)(h.TableCell,{children:["Phase ",a.writableAt]}),(0,b.jsxs)(h.TableCell,{children:["Phase ",a.passesAt]}),(0,b.jsx)(h.TableCell,{children:(0,b.jsx)(e.Badge,{variant:G(a.state),children:a.state})})]},a.id))})]})}),(0,b.jsx)(d.Markdown,{children:a.content})]})},a.number))})]})}function A({rawDocuments:a}){let c=Object.entries(a);return 0===c.length?null:(0,b.jsxs)("section",{className:"flex flex-col gap-2","data-testid":"raw-documents-section",children:[(0,b.jsx)("h2",{className:"text-base font-semibold text-gray-900",children:"Raw documents (malformed frontmatter)"}),(0,b.jsx)("p",{className:"text-xs text-gray-500",children:"These files couldn't be parsed. Showing the raw markdown so you can diagnose. Fix the YAML frontmatter and refresh."}),(0,b.jsx)("div",{className:"flex flex-col gap-2",children:c.map(([a,c])=>(0,b.jsx)(f.CollapsibleSection,{title:a,defaultOpen:!1,children:(0,b.jsx)("pre",{className:"overflow-x-auto rounded bg-gray-50 p-3 text-xs font-mono text-gray-800 whitespace-pre-wrap","data-testid":`raw-${a}`,children:c})},a))})]})}function B({plan:a,phase:c}){if(c)return(0,b.jsx)(C,{phase:c});if(!a.falsification)return(0,b.jsxs)("section",{className:"flex flex-col gap-2","data-testid":"falsification-section",children:[(0,b.jsxs)("header",{className:"flex items-center justify-between",children:[(0,b.jsx)("h2",{className:"text-base font-semibold text-gray-900",children:"Falsification"}),(0,b.jsx)(g.CopyButton,{text:s(void 0)})]}),(0,b.jsx)("p",{className:"text-sm text-gray-500","data-testid":"falsification-empty",children:"No falsification ritual run for this plan."})]});let d=a.falsification.entries.filter(E),f=a.falsification.entries.find(F);return(0,b.jsxs)("section",{className:"flex flex-col gap-2","data-testid":"falsification-section",children:[(0,b.jsxs)("header",{className:"flex items-center justify-between gap-2",children:[(0,b.jsx)("h2",{className:"text-base font-semibold text-gray-900",children:"Falsification"}),(0,b.jsxs)("span",{className:"flex items-center gap-2",children:[(0,b.jsx)(e.Badge,{variant:a.falsification.complete?"passing":"writable",children:a.falsification.complete?"complete":"in-progress"}),(0,b.jsx)(g.CopyButton,{text:s(a.falsification)})]})]}),0===d.length&&(0,b.jsx)("p",{className:"text-sm text-gray-500",children:"No hypotheses logged yet."}),d.length>0&&(0,b.jsx)("ul",{className:"flex flex-col gap-3","data-testid":"falsification-hypotheses",children:d.map(a=>(0,b.jsx)(D,{entry:a},`${a.timestamp}-${a.hypothesis.slice(0,32)}`))}),f&&(0,b.jsxs)("div",{className:"rounded border border-gray-200 bg-gray-50 px-3 py-2 text-sm text-gray-700","data-testid":"falsification-terminator",children:[(0,b.jsx)("span",{className:"font-semibold",children:"Terminated:"})," ",f.reason]})]})}function C({phase:a}){let c=n(a.content),d=a.trajectoryRows.every(a=>"passing"===a.state||"skipped"===a.state),f=c.every(a=>a.checked),i=d&&f;return(0,b.jsxs)("section",{className:"flex flex-col gap-2","data-testid":"falsification-section",children:[(0,b.jsxs)("header",{className:"flex items-center justify-between gap-2",children:[(0,b.jsxs)("h2",{className:"text-base font-semibold text-gray-900",children:["Falsification",a.title?(0,b.jsxs)("span",{className:"ml-2 text-sm font-normal text-gray-500",children:["(Phase ",a.number,": ",a.title,")"]}):null]}),(0,b.jsxs)("span",{className:"flex items-center gap-2",children:[(0,b.jsx)(e.Badge,{variant:i?"passing":"writable",children:i?"complete":"in-progress"}),(0,b.jsx)(g.CopyButton,{text:t(a)})]})]}),a.trajectoryRows.length>0&&(0,b.jsxs)("div",{"data-testid":"falsification-hypotheses",children:[(0,b.jsx)("h3",{className:"text-sm font-semibold text-gray-800 mt-1",children:"Hypotheses"}),(0,b.jsxs)(h.Table,{children:[(0,b.jsx)(h.TableHeader,{children:(0,b.jsxs)(h.TableRow,{children:[(0,b.jsx)(h.TableHead,{children:"ID"}),(0,b.jsx)(h.TableHead,{children:"Asserts"}),(0,b.jsx)(h.TableHead,{children:"State"})]})}),(0,b.jsx)(h.TableBody,{children:a.trajectoryRows.map(a=>(0,b.jsxs)(h.TableRow,{children:[(0,b.jsx)(h.TableCell,{children:(0,b.jsx)("span",{className:"font-mono text-xs",children:a.id})}),(0,b.jsx)(h.TableCell,{children:a.asserts}),(0,b.jsx)(h.TableCell,{children:(0,b.jsx)(e.Badge,{variant:G(a.state),children:a.state})})]},a.id))})]})]}),c.length>0&&(0,b.jsxs)("div",{"data-testid":"falsification-fix-items",className:"mt-2",children:[(0,b.jsx)("h3",{className:"text-sm font-semibold text-gray-800",children:"Fix items"}),(0,b.jsx)("ul",{className:"flex flex-col gap-1",children:c.map(a=>(0,b.jsxs)("li",{className:"flex items-start gap-2 text-sm text-gray-700",children:[(0,b.jsxs)("span",{className:"font-mono text-xs text-gray-500",children:["[",a.checked?"x":" ","]"]}),(0,b.jsx)("span",{className:a.checked?"text-gray-500 line-through":"",children:a.text})]},`${a.checked?"x":"o"}-${a.text}`))})]})]})}function D({entry:a}){var c;return(0,b.jsxs)("li",{className:"flex flex-col gap-1 rounded border border-gray-200 px-3 py-2","data-testid":`hypothesis-${a.outcome}`,children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,b.jsx)("span",{className:"text-sm font-semibold text-gray-900",children:"Hypothesis"}),(0,b.jsx)(e.Badge,{variant:"fix-in-scope"===(c=a.outcome)?"passing":"spawn-plan"===c?"writable":"neutral",children:a.outcome})]}),(0,b.jsx)("p",{className:"text-sm text-gray-700",children:a.hypothesis}),a.testPath&&(0,b.jsx)("p",{className:"text-xs text-gray-500 font-mono",children:a.testPath}),a.note&&(0,b.jsx)("p",{className:"text-xs text-gray-500",children:a.note})]})}function E(a){return"hypothesis"===a.kind}function F(a){return"terminator"===a.kind}function G(a){let b=a.toLowerCase();return["passing","blocked","skipped","planned","writable","written"].includes(b)?b:"neutral"}var H=a.i(42717),I=a.i(765);async function J({params:a}){let{project:d,name:e}=await a,f=(0,I.getProjectPath)(d);if(!f||!(0,I.projectPathExists)(f))return null;let[g,h]=await Promise.all([(0,H.readActivePlans)(f),(0,H.readArchivedPlans)(f)]),i=g.find(a=>a.name===e)??h.find(a=>a.name===e);return i||(0,c.notFound)(),(0,b.jsx)(u,{plan:i})}a.s(["default",0,J],71550)},82388,a=>{a.n(a.i(71550))}];
9
+ Status: ${a.status}`];if(a.research&&b.push(o("Research",a.research.content)),a.brief&&b.push(o("Brief",a.brief.content)),a.testPlan&&b.push(o("Test Plan",a.testPlan.content)),a.adr&&b.push(o("ADR — Goal + Decision",a.adr.content)),a.impl){let c=l(j(a.impl.content,a.impl.trajectory));for(let a of c.pre)b.push(q(a));for(let d of(b.push(c.falsification?t(c.falsification):s(a.falsification)),c.post))b.push(q(d))}else b.push(s(a.falsification));return b.join("\n\n---\n\n")}(a),label:"Copy whole plan as markdown","data-testid":"copy-plan-button"})]})]})}function x(){return(0,b.jsx)("div",{className:"rounded border border-red-200 bg-red-50 px-3 py-2 text-sm text-red-700","data-testid":"malformed-banner",children:"⚠ This plan has malformed YAML frontmatter. Some sections may be missing or rendered with default values."})}function y({planName:a,content:c}){return(0,b.jsx)("section",{className:"flex flex-col gap-2","data-testid":"brief-section",children:(0,b.jsx)(f.CollapsibleSection,{title:"Brief",defaultOpen:!0,persistKey:`plan:${a}:section:brief`,copyMarkdown:o("Brief",c),children:(0,b.jsx)(d.Markdown,{children:c})})})}function z({phases:a,heading:c,testId:g,planName:i}){return 0===a.length?null:(0,b.jsxs)("section",{className:"flex flex-col gap-2","data-testid":g,children:[(0,b.jsx)("h2",{className:"text-base font-semibold text-gray-900",children:c}),(0,b.jsx)("div",{className:"flex flex-col gap-2",children:a.map(a=>(0,b.jsx)(f.CollapsibleSection,{title:`Phase ${a.number}${a.title?`: ${a.title}`:""}`,defaultOpen:!1,persistKey:`plan:${i}:phase:${a.number}`,copyMarkdown:q(a),children:(0,b.jsxs)("div",{className:"flex flex-col gap-3",children:[a.trajectoryRows.length>0&&(0,b.jsx)("div",{"data-testid":`phase-${a.number}-trajectory`,children:(0,b.jsxs)(h.Table,{children:[(0,b.jsx)(h.TableHeader,{children:(0,b.jsxs)(h.TableRow,{children:[(0,b.jsx)(h.TableHead,{children:"ID"}),(0,b.jsx)(h.TableHead,{children:"Asserts"}),(0,b.jsx)(h.TableHead,{children:"Writable at"}),(0,b.jsx)(h.TableHead,{children:"Passes at"}),(0,b.jsx)(h.TableHead,{children:"State"})]})}),(0,b.jsx)(h.TableBody,{children:a.trajectoryRows.map(a=>(0,b.jsxs)(h.TableRow,{children:[(0,b.jsx)(h.TableCell,{children:(0,b.jsx)("span",{className:"font-mono text-xs",children:a.id})}),(0,b.jsx)(h.TableCell,{children:a.asserts}),(0,b.jsxs)(h.TableCell,{children:["Phase ",a.writableAt]}),(0,b.jsxs)(h.TableCell,{children:["Phase ",a.passesAt]}),(0,b.jsx)(h.TableCell,{children:(0,b.jsx)(e.Badge,{variant:G(a.state),children:a.state})})]},a.id))})]})}),(0,b.jsx)(d.Markdown,{children:a.content})]})},a.number))})]})}function A({rawDocuments:a}){let c=Object.entries(a);return 0===c.length?null:(0,b.jsxs)("section",{className:"flex flex-col gap-2","data-testid":"raw-documents-section",children:[(0,b.jsx)("h2",{className:"text-base font-semibold text-gray-900",children:"Raw documents (malformed frontmatter)"}),(0,b.jsx)("p",{className:"text-xs text-gray-500",children:"These files couldn't be parsed. Showing the raw markdown so you can diagnose. Fix the YAML frontmatter and refresh."}),(0,b.jsx)("div",{className:"flex flex-col gap-2",children:c.map(([a,c])=>(0,b.jsx)(f.CollapsibleSection,{title:a,defaultOpen:!1,children:(0,b.jsx)("pre",{className:"overflow-x-auto rounded bg-gray-50 p-3 text-xs font-mono text-gray-800 whitespace-pre-wrap","data-testid":`raw-${a}`,children:c})},a))})]})}function B({plan:a,phase:c}){if(c)return(0,b.jsx)(C,{planName:a.name,phase:c});if(!a.falsification)return(0,b.jsx)("section",{className:"flex flex-col gap-2","data-testid":"falsification-section",children:(0,b.jsx)(f.CollapsibleSection,{title:"Falsification",defaultOpen:!0,persistKey:`plan:${a.name}:section:falsification`,copyMarkdown:s(void 0),children:(0,b.jsx)("p",{className:"text-sm text-gray-500","data-testid":"falsification-empty",children:"No falsification ritual run for this plan."})})});let d=a.falsification.entries.filter(E),g=a.falsification.entries.find(F);return(0,b.jsx)("section",{className:"flex flex-col gap-2","data-testid":"falsification-section",children:(0,b.jsx)(f.CollapsibleSection,{title:"Falsification",defaultOpen:!0,persistKey:`plan:${a.name}:section:falsification`,headerRight:(0,b.jsx)(e.Badge,{variant:a.falsification.complete?"passing":"writable",children:a.falsification.complete?"complete":"in-progress"}),copyMarkdown:s(a.falsification),children:(0,b.jsxs)("div",{className:"flex flex-col gap-2",children:[0===d.length&&(0,b.jsx)("p",{className:"text-sm text-gray-500",children:"No hypotheses logged yet."}),d.length>0&&(0,b.jsx)("ul",{className:"flex flex-col gap-3","data-testid":"falsification-hypotheses",children:d.map(a=>(0,b.jsx)(D,{entry:a},`${a.timestamp}-${a.hypothesis.slice(0,32)}`))}),g&&(0,b.jsxs)("div",{className:"rounded border border-gray-200 bg-gray-50 px-3 py-2 text-sm text-gray-700","data-testid":"falsification-terminator",children:[(0,b.jsx)("span",{className:"font-semibold",children:"Terminated:"})," ",g.reason]})]})})})}function C({planName:a,phase:c}){let d=n(c.content),g=c.trajectoryRows.every(a=>"passing"===a.state||"skipped"===a.state),i=d.every(a=>a.checked),j=g&&i;return(0,b.jsx)("section",{className:"flex flex-col gap-2","data-testid":"falsification-section",children:(0,b.jsx)(f.CollapsibleSection,{title:(0,b.jsxs)(b.Fragment,{children:["Falsification",c.title?(0,b.jsxs)("span",{className:"ml-2 text-xs font-normal text-gray-500",children:["(Phase ",c.number,": ",c.title,")"]}):null]}),defaultOpen:!0,persistKey:`plan:${a}:section:falsification`,headerRight:(0,b.jsx)(e.Badge,{variant:j?"passing":"writable",children:j?"complete":"in-progress"}),copyMarkdown:t(c),children:(0,b.jsxs)("div",{className:"flex flex-col gap-2",children:[c.trajectoryRows.length>0&&(0,b.jsxs)("div",{"data-testid":"falsification-hypotheses",children:[(0,b.jsx)("h3",{className:"text-sm font-semibold text-gray-800 mt-1",children:"Hypotheses"}),(0,b.jsxs)(h.Table,{children:[(0,b.jsx)(h.TableHeader,{children:(0,b.jsxs)(h.TableRow,{children:[(0,b.jsx)(h.TableHead,{children:"ID"}),(0,b.jsx)(h.TableHead,{children:"Asserts"}),(0,b.jsx)(h.TableHead,{children:"State"})]})}),(0,b.jsx)(h.TableBody,{children:c.trajectoryRows.map(a=>(0,b.jsxs)(h.TableRow,{children:[(0,b.jsx)(h.TableCell,{children:(0,b.jsx)("span",{className:"font-mono text-xs",children:a.id})}),(0,b.jsx)(h.TableCell,{children:a.asserts}),(0,b.jsx)(h.TableCell,{children:(0,b.jsx)(e.Badge,{variant:G(a.state),children:a.state})})]},a.id))})]})]}),d.length>0&&(0,b.jsxs)("div",{"data-testid":"falsification-fix-items",className:"mt-2",children:[(0,b.jsx)("h3",{className:"text-sm font-semibold text-gray-800",children:"Fix items"}),(0,b.jsx)("ul",{className:"flex flex-col gap-1",children:d.map(a=>(0,b.jsxs)("li",{className:"flex items-start gap-2 text-sm text-gray-700",children:[(0,b.jsxs)("span",{className:"font-mono text-xs text-gray-500",children:["[",a.checked?"x":" ","]"]}),(0,b.jsx)("span",{className:a.checked?"text-gray-500 line-through":"",children:a.text})]},`${a.checked?"x":"o"}-${a.text}`))})]})]})})})}function D({entry:a}){var c;return(0,b.jsxs)("li",{className:"flex flex-col gap-1 rounded border border-gray-200 px-3 py-2","data-testid":`hypothesis-${a.outcome}`,children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,b.jsx)("span",{className:"text-sm font-semibold text-gray-900",children:"Hypothesis"}),(0,b.jsx)(e.Badge,{variant:"fix-in-scope"===(c=a.outcome)?"passing":"spawn-plan"===c?"writable":"neutral",children:a.outcome})]}),(0,b.jsx)("p",{className:"text-sm text-gray-700",children:a.hypothesis}),a.testPath&&(0,b.jsx)("p",{className:"text-xs text-gray-500 font-mono",children:a.testPath}),a.note&&(0,b.jsx)("p",{className:"text-xs text-gray-500",children:a.note})]})}function E(a){return"hypothesis"===a.kind}function F(a){return"terminator"===a.kind}function G(a){let b=a.toLowerCase();return["passing","blocked","skipped","planned","writable","written"].includes(b)?b:"neutral"}var H=a.i(42717),I=a.i(765);async function J({params:a}){let{project:d,name:e}=await a,f=(0,I.getProjectPath)(d);if(!f||!(0,I.projectPathExists)(f))return null;let[g,h]=await Promise.all([(0,H.readActivePlans)(f),(0,H.readArchivedPlans)(f)]),i=g.find(a=>a.name===e)??h.find(a=>a.name===e);return i||(0,c.notFound)(),(0,b.jsx)(u,{plan:i})}a.s(["default",0,J],71550)},82388,a=>{a.n(a.i(71550))}];
10
10
 
11
11
  //# sourceMappingURL=apps_indusk-admin_src_03_q0_m._.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../apps/indusk-admin/src/components/ui/CopyButton.tsx/__nextjs-internal-proxy.mjs","../../../../../../apps/indusk-admin/src/app/p/%5Bproject%5D/plan/%5Bname%5D/page.tsx","../../../../../../apps/indusk-admin/src/components/PlanDetail.tsx","../../../../../../apps/indusk-admin/src/lib/phases.ts","../../../../../../apps/indusk-admin/src/lib/markdown-export.ts"],"sourcesContent":["// This file is generated by next-core EcmascriptClientReferenceModule.\nimport { registerClientReference } from \"react-server-dom-turbopack/server\";\nexport const CopyButton = registerClientReference(\n function() { throw new Error(\"Attempted to call CopyButton() from the server but CopyButton 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.\"); },\n \"[project]/apps/indusk-admin/src/components/ui/CopyButton.tsx\",\n \"CopyButton\",\n);\n","import { notFound } from \"next/navigation\";\nimport { PlanDetail } from \"@/components/PlanDetail\";\nimport { readActivePlans, readArchivedPlans } from \"@/lib/planning-reader\";\nimport { getProjectPath, projectPathExists } from \"@/lib/registry-client\";\n\ninterface PlanPageProps {\n params: Promise<{ project: string; name: string }>;\n}\n\n/**\n * Server component for `/p/{project}/plan/{name}`. Resolves the project's\n * path via the registry, reads every active + archived plan for that\n * project, finds the requested plan by folder name, and renders PlanDetail.\n *\n * The stale-project branch (path null OR deleted on disk) is handled by\n * the layout (`app/p/[project]/layout.tsx`) — it replaces its own output\n * with `<StaleProjectFailurePage>` in that case, so this page's rendered\n * element is never placed in the DOM. We early-return `null` when path is\n * stale so the page's own code doesn't trip on `readActivePlans` against\n * a deleted dir. `notFound()` is reserved for the genuinely plan-not-found\n * case (path OK, plan name wrong).\n */\nexport default async function PlanPage({ params }: PlanPageProps) {\n const { project, name } = await params;\n const projectPath = getProjectPath(project);\n if (!projectPath || !projectPathExists(projectPath)) return null;\n\n const [active, archived] = await Promise.all([\n readActivePlans(projectPath),\n readArchivedPlans(projectPath),\n ]);\n const plan =\n active.find((p) => p.name === name) ??\n archived.find((p) => p.name === name);\n if (!plan) {\n notFound();\n }\n return <PlanDetail plan={plan} />;\n}\n","import type {\n HypothesisEntry,\n HypothesisOutcome,\n LogEntry,\n TerminatorEntry,\n} from \"@infinitedusky/indusk-mcp/falsification/log\";\nimport { Markdown } from \"@/components/Markdown\";\nimport { Badge, type BadgeVariant } from \"@/components/ui/Badge\";\nimport { CollapsibleSection } from \"@/components/ui/CollapsibleSection\";\nimport { CopyButton } from \"@/components/ui/CopyButton\";\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from \"@/components/ui/Table\";\nimport {\n falsificationLogMarkdown,\n falsificationPhaseMarkdown,\n phaseMarkdown,\n planMarkdown,\n sectionMarkdown,\n} from \"@/lib/markdown-export\";\nimport {\n extractChecklistItems,\n extractPhases,\n type Phase,\n splitPhasesAroundFalsification,\n} from \"@/lib/phases\";\nimport type { Plan } from \"@/lib/planning-reader\";\n\ninterface PlanDetailProps {\n plan: Plan;\n}\n\n/**\n * Main pane for a selected plan. Renders sections conditional on which\n * documents are present:\n * - Always: header (name + status badge)\n * - Brief.md: Markdown render of the brief content (Problem + Proposed Direction visible)\n * - test-plan.md: collapsible Markdown render\n * - ADR.md: collapsible Markdown render (Goal + Y-statement come through verbatim)\n * - Impl.md: PhasesSection — one CollapsibleSection per phase containing trajectory rows\n *\n * Missing documents simply don't render their section (T14). Malformed plans\n * surface a banner indicating malformed YAML; the components-that-can-render\n * still render with whatever data they have.\n */\nexport function PlanDetail({ plan }: PlanDetailProps) {\n return (\n <article\n className=\"flex flex-col gap-6\"\n data-testid=\"plan-detail\"\n data-plan-name={plan.name}\n >\n <PlanHeader plan={plan} />\n\n {plan.malformed && <MalformedBanner />}\n\n {plan.malformed && plan.rawDocuments && (\n <RawDocumentsSection rawDocuments={plan.rawDocuments} />\n )}\n\n {plan.research && (\n <CollapsibleSection\n title=\"Research\"\n defaultOpen={!plan.brief}\n persistKey={`plan:${plan.name}:section:research`}\n copyMarkdown={sectionMarkdown(\"Research\", plan.research.content)}\n >\n <Markdown>{plan.research.content}</Markdown>\n </CollapsibleSection>\n )}\n\n {plan.brief && (\n <BriefSection planName={plan.name} content={plan.brief.content} />\n )}\n\n {plan.testPlan && (\n <CollapsibleSection\n title=\"Test Plan\"\n defaultOpen={false}\n persistKey={`plan:${plan.name}:section:test-plan`}\n copyMarkdown={sectionMarkdown(\"Test Plan\", plan.testPlan.content)}\n >\n <Markdown>{plan.testPlan.content}</Markdown>\n </CollapsibleSection>\n )}\n\n {plan.adr && (\n <CollapsibleSection\n title=\"ADR — Goal + Decision\"\n defaultOpen={false}\n persistKey={`plan:${plan.name}:section:adr`}\n copyMarkdown={sectionMarkdown(\n \"ADR — Goal + Decision\",\n plan.adr.content,\n )}\n >\n <Markdown>{plan.adr.content}</Markdown>\n </CollapsibleSection>\n )}\n\n {plan.impl && <ImplSections plan={plan} />}\n {!plan.impl && <FalsificationSection plan={plan} phase={null} />}\n </article>\n );\n}\n\n/**\n * When an impl.md exists, split its phases into pre-falsification / falsification\n * / post-falsification groups and render each in its own section. The\n * falsification phase (if any) is rendered by `FalsificationSection` instead of\n * mixed into the main Phases section. Post-falsification phases render below as\n * \"Follow-up Phases\" — the fix-in-scope derivatives of the ritual.\n *\n * When no impl is present, the PlanDetail top-level still shows a\n * FalsificationSection directly (legacy-log-only path).\n */\nfunction ImplSections({ plan }: { plan: Plan }) {\n if (!plan.impl) return null;\n const phases = extractPhases(plan.impl.content, plan.impl.trajectory);\n const split = splitPhasesAroundFalsification(phases);\n return (\n <>\n {split.pre.length > 0 && (\n <PhasesSection\n phases={split.pre}\n heading=\"Phases\"\n testId=\"phases-section\"\n planName={plan.name}\n />\n )}\n <FalsificationSection plan={plan} phase={split.falsification} />\n {split.post.length > 0 && (\n <PhasesSection\n phases={split.post}\n heading=\"Follow-up Phases\"\n testId=\"followup-phases-section\"\n planName={plan.name}\n />\n )}\n </>\n );\n}\n\nfunction PlanHeader({ plan }: { plan: Plan }) {\n return (\n <header\n className=\"flex items-center justify-between border-b border-gray-200 pb-3\"\n data-testid=\"plan-header\"\n >\n <div className=\"flex flex-col\">\n <h1 className=\"text-xl font-semibold text-gray-900\">{plan.name}</h1>\n <span className=\"text-xs text-gray-500\">\n {plan.archived ? \"archived\" : \"active\"}\n </span>\n </div>\n <div className=\"flex items-center gap-3\">\n <Badge variant={statusToBadge(plan.status)}>{plan.status}</Badge>\n <CopyButton\n text={planMarkdown(plan)}\n label=\"Copy whole plan as markdown\"\n data-testid=\"copy-plan-button\"\n />\n </div>\n </header>\n );\n}\n\nfunction MalformedBanner() {\n return (\n <div\n className=\"rounded border border-red-200 bg-red-50 px-3 py-2 text-sm text-red-700\"\n data-testid=\"malformed-banner\"\n >\n ⚠ This plan has malformed YAML frontmatter. Some sections may be missing\n or rendered with default values.\n </div>\n );\n}\n\nfunction BriefSection({\n planName,\n content,\n}: {\n planName: string;\n content: string;\n}) {\n return (\n <section className=\"flex flex-col gap-2\" data-testid=\"brief-section\">\n <CollapsibleSection\n title=\"Brief\"\n defaultOpen={true}\n persistKey={`plan:${planName}:section:brief`}\n copyMarkdown={sectionMarkdown(\"Brief\", content)}\n >\n <Markdown>{content}</Markdown>\n </CollapsibleSection>\n </section>\n );\n}\n\nfunction PhasesSection({\n phases,\n heading,\n testId,\n planName,\n}: {\n phases: Phase[];\n heading: string;\n testId: string;\n planName: string;\n}) {\n if (phases.length === 0) return null;\n\n return (\n <section className=\"flex flex-col gap-2\" data-testid={testId}>\n <h2 className=\"text-base font-semibold text-gray-900\">{heading}</h2>\n <div className=\"flex flex-col gap-2\">\n {phases.map((phase) => (\n <CollapsibleSection\n key={phase.number}\n title={`Phase ${phase.number}${phase.title ? `: ${phase.title}` : \"\"}`}\n defaultOpen={false}\n persistKey={`plan:${planName}:phase:${phase.number}`}\n copyMarkdown={phaseMarkdown(phase)}\n >\n <div className=\"flex flex-col gap-3\">\n {phase.trajectoryRows.length > 0 && (\n <div data-testid={`phase-${phase.number}-trajectory`}>\n <Table>\n <TableHeader>\n <TableRow>\n <TableHead>ID</TableHead>\n <TableHead>Asserts</TableHead>\n <TableHead>Writable at</TableHead>\n <TableHead>Passes at</TableHead>\n <TableHead>State</TableHead>\n </TableRow>\n </TableHeader>\n <TableBody>\n {phase.trajectoryRows.map((row) => (\n <TableRow key={row.id}>\n <TableCell>\n <span className=\"font-mono text-xs\">{row.id}</span>\n </TableCell>\n <TableCell>{row.asserts}</TableCell>\n <TableCell>Phase {row.writableAt}</TableCell>\n <TableCell>Phase {row.passesAt}</TableCell>\n <TableCell>\n <Badge variant={stateToBadge(row.state)}>\n {row.state}\n </Badge>\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </div>\n )}\n <Markdown>{phase.content}</Markdown>\n </div>\n </CollapsibleSection>\n ))}\n </div>\n </section>\n );\n}\n\nfunction RawDocumentsSection({\n rawDocuments,\n}: {\n rawDocuments: Record<string, string>;\n}) {\n const entries = Object.entries(rawDocuments);\n if (entries.length === 0) return null;\n return (\n <section\n className=\"flex flex-col gap-2\"\n data-testid=\"raw-documents-section\"\n >\n <h2 className=\"text-base font-semibold text-gray-900\">\n Raw documents (malformed frontmatter)\n </h2>\n <p className=\"text-xs text-gray-500\">\n These files couldn't be parsed. Showing the raw markdown so you can\n diagnose. Fix the YAML frontmatter and refresh.\n </p>\n <div className=\"flex flex-col gap-2\">\n {entries.map(([filename, raw]) => (\n <CollapsibleSection\n key={filename}\n title={filename}\n defaultOpen={false}\n >\n <pre\n className=\"overflow-x-auto rounded bg-gray-50 p-3 text-xs font-mono text-gray-800 whitespace-pre-wrap\"\n data-testid={`raw-${filename}`}\n >\n {raw}\n </pre>\n </CollapsibleSection>\n ))}\n </div>\n </section>\n );\n}\n\nfunction FalsificationSection({\n plan,\n phase,\n}: {\n plan: Plan;\n phase: Phase | null;\n}) {\n // Priority: phase-authoring flow (new, 1.27.4+) > legacy log file > empty state.\n if (phase) {\n return <FalsificationPhaseSection phase={phase} />;\n }\n if (!plan.falsification) {\n return (\n <section\n className=\"flex flex-col gap-2\"\n data-testid=\"falsification-section\"\n >\n <header className=\"flex items-center justify-between\">\n <h2 className=\"text-base font-semibold text-gray-900\">\n Falsification\n </h2>\n <CopyButton text={falsificationLogMarkdown(undefined)} />\n </header>\n <p className=\"text-sm text-gray-500\" data-testid=\"falsification-empty\">\n No falsification ritual run for this plan.\n </p>\n </section>\n );\n }\n\n const hypotheses = plan.falsification.entries.filter(isHypothesis);\n const terminator = plan.falsification.entries.find(isTerminator);\n\n return (\n <section\n className=\"flex flex-col gap-2\"\n data-testid=\"falsification-section\"\n >\n <header className=\"flex items-center justify-between gap-2\">\n <h2 className=\"text-base font-semibold text-gray-900\">Falsification</h2>\n <span className=\"flex items-center gap-2\">\n <Badge variant={plan.falsification.complete ? \"passing\" : \"writable\"}>\n {plan.falsification.complete ? \"complete\" : \"in-progress\"}\n </Badge>\n <CopyButton text={falsificationLogMarkdown(plan.falsification)} />\n </span>\n </header>\n {hypotheses.length === 0 && (\n <p className=\"text-sm text-gray-500\">No hypotheses logged yet.</p>\n )}\n {hypotheses.length > 0 && (\n <ul\n className=\"flex flex-col gap-3\"\n data-testid=\"falsification-hypotheses\"\n >\n {hypotheses.map((entry) => (\n <HypothesisItem\n key={`${entry.timestamp}-${entry.hypothesis.slice(0, 32)}`}\n entry={entry}\n />\n ))}\n </ul>\n )}\n {terminator && (\n <div\n className=\"rounded border border-gray-200 bg-gray-50 px-3 py-2 text-sm text-gray-700\"\n data-testid=\"falsification-terminator\"\n >\n <span className=\"font-semibold\">Terminated:</span> {terminator.reason}\n </div>\n )}\n </section>\n );\n}\n\n/**\n * Render a falsification phase (new phase-authoring flow, 1.27.4+). Hypotheses\n * come from the phase's trajectory rows (each row == one hypothesis); fix items\n * come from the phase's checklist. Status badge derives from the combined state\n * of trajectory rows + unchecked checklist items.\n */\nfunction FalsificationPhaseSection({ phase }: { phase: Phase }) {\n const checklistItems = extractChecklistItems(phase.content);\n const allTrajectoryTerminal = phase.trajectoryRows.every(\n (r) => r.state === \"passing\" || r.state === \"skipped\",\n );\n const allItemsChecked = checklistItems.every((i) => i.checked);\n const complete = allTrajectoryTerminal && allItemsChecked;\n\n return (\n <section\n className=\"flex flex-col gap-2\"\n data-testid=\"falsification-section\"\n >\n <header className=\"flex items-center justify-between gap-2\">\n <h2 className=\"text-base font-semibold text-gray-900\">\n Falsification\n {phase.title ? (\n <span className=\"ml-2 text-sm font-normal text-gray-500\">\n (Phase {phase.number}: {phase.title})\n </span>\n ) : null}\n </h2>\n <span className=\"flex items-center gap-2\">\n <Badge variant={complete ? \"passing\" : \"writable\"}>\n {complete ? \"complete\" : \"in-progress\"}\n </Badge>\n <CopyButton text={falsificationPhaseMarkdown(phase)} />\n </span>\n </header>\n\n {phase.trajectoryRows.length > 0 && (\n <div data-testid=\"falsification-hypotheses\">\n <h3 className=\"text-sm font-semibold text-gray-800 mt-1\">\n Hypotheses\n </h3>\n <Table>\n <TableHeader>\n <TableRow>\n <TableHead>ID</TableHead>\n <TableHead>Asserts</TableHead>\n <TableHead>State</TableHead>\n </TableRow>\n </TableHeader>\n <TableBody>\n {phase.trajectoryRows.map((row) => (\n <TableRow key={row.id}>\n <TableCell>\n <span className=\"font-mono text-xs\">{row.id}</span>\n </TableCell>\n <TableCell>{row.asserts}</TableCell>\n <TableCell>\n <Badge variant={stateToBadge(row.state)}>{row.state}</Badge>\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </div>\n )}\n\n {checklistItems.length > 0 && (\n <div data-testid=\"falsification-fix-items\" className=\"mt-2\">\n <h3 className=\"text-sm font-semibold text-gray-800\">Fix items</h3>\n <ul className=\"flex flex-col gap-1\">\n {checklistItems.map((item) => (\n <li\n key={`${item.checked ? \"x\" : \"o\"}-${item.text}`}\n className=\"flex items-start gap-2 text-sm text-gray-700\"\n >\n <span className=\"font-mono text-xs text-gray-500\">\n [{item.checked ? \"x\" : \" \"}]\n </span>\n <span\n className={item.checked ? \"text-gray-500 line-through\" : \"\"}\n >\n {item.text}\n </span>\n </li>\n ))}\n </ul>\n </div>\n )}\n </section>\n );\n}\n\nfunction HypothesisItem({ entry }: { entry: HypothesisEntry }) {\n return (\n <li\n className=\"flex flex-col gap-1 rounded border border-gray-200 px-3 py-2\"\n data-testid={`hypothesis-${entry.outcome}`}\n >\n <div className=\"flex items-center justify-between gap-2\">\n <span className=\"text-sm font-semibold text-gray-900\">Hypothesis</span>\n <Badge variant={outcomeToBadge(entry.outcome)}>{entry.outcome}</Badge>\n </div>\n <p className=\"text-sm text-gray-700\">{entry.hypothesis}</p>\n {entry.testPath && (\n <p className=\"text-xs text-gray-500 font-mono\">{entry.testPath}</p>\n )}\n {entry.note && <p className=\"text-xs text-gray-500\">{entry.note}</p>}\n </li>\n );\n}\n\nfunction isHypothesis(entry: LogEntry): entry is HypothesisEntry {\n return entry.kind === \"hypothesis\";\n}\n\nfunction isTerminator(entry: LogEntry): entry is TerminatorEntry {\n return entry.kind === \"terminator\";\n}\n\nfunction outcomeToBadge(outcome: HypothesisOutcome): BadgeVariant {\n if (outcome === \"fix-in-scope\") return \"passing\";\n if (outcome === \"spawn-plan\") return \"writable\";\n return \"neutral\"; // accept-finding\n}\n\nfunction statusToBadge(status: string): BadgeVariant {\n const normalized = status.toLowerCase();\n if (normalized.includes(\"completed\") || normalized.includes(\"passing\"))\n return \"passing\";\n if (normalized.includes(\"blocked\")) return \"blocked\";\n if (normalized.includes(\"in-progress\") || normalized.includes(\"accepted\"))\n return \"writable\";\n if (normalized.includes(\"draft\") || normalized.includes(\"planned\"))\n return \"planned\";\n return \"neutral\";\n}\n\nfunction stateToBadge(state: string): BadgeVariant {\n const normalized = state.toLowerCase();\n if (\n [\n \"passing\",\n \"blocked\",\n \"skipped\",\n \"planned\",\n \"writable\",\n \"written\",\n ].includes(normalized)\n ) {\n return normalized as BadgeVariant;\n }\n return \"neutral\";\n}\n","import type {\n Trajectory,\n TrajectoryRow,\n} from \"@infinitedusky/indusk-mcp/trajectory/parser\";\n\n/**\n * Parsed phase from an impl.md `## Checklist` section.\n *\n * The phase parser walks the markdown body, splits on `### Phase N: Title`\n * headings (level-3 H3), and groups every line up to the next `### Phase`\n * heading (or end of document) as that phase's content. It does NOT separate\n * verification / context / document gates — those are still raw markdown\n * inside `content`. The PhasesSection component renders the content as\n * markdown wrapped in a CollapsibleSection.\n *\n * Trajectory rows belonging to a phase are matched via the trajectory's\n * `Passes at` column (rows that pass at this phase number). This pairing\n * makes T8 satisfiable — every phase shows the rows that should flip in it.\n */\nexport interface Phase {\n number: number;\n title: string;\n /** Raw markdown content (everything between this phase's heading and the next). */\n content: string;\n /** Trajectory rows whose `Passes at` is this phase's number. */\n trajectoryRows: TrajectoryRow[];\n}\n\nconst PHASE_HEADING_RE = /^###\\s+Phase\\s+(\\d+)(?::\\s*(.*))?$/m;\n\n/**\n * Extract phases from an impl.md body. Returns phases in the order they appear\n * in the markdown. Returns `[]` if no `### Phase N` headings are present.\n *\n * Stops scanning at any level-2 heading after the first phase (so the trailing\n * `## Files Affected`, `## Dependencies`, `## Notes` sections don't bleed into\n * the last phase).\n */\nexport function extractPhases(\n implContent: string,\n trajectory?: Trajectory,\n): Phase[] {\n const lines = implContent.split(\"\\n\");\n const phases: Phase[] = [];\n let current: { number: number; title: string; lines: string[] } | null = null;\n let stoppedAtL2 = false;\n\n for (const line of lines) {\n if (stoppedAtL2) break;\n\n const phaseMatch = line.match(PHASE_HEADING_RE);\n if (phaseMatch) {\n if (current) {\n phases.push(buildPhase(current, trajectory));\n }\n current = {\n number: Number.parseInt(phaseMatch[1], 10),\n title: (phaseMatch[2] ?? \"\").trim(),\n lines: [],\n };\n continue;\n }\n\n // Stop on any level-2 heading we encounter AFTER the first phase\n if (current && /^##\\s+\\S/.test(line) && !/^###/.test(line)) {\n stoppedAtL2 = true;\n break;\n }\n\n if (current) current.lines.push(line);\n }\n\n if (current) phases.push(buildPhase(current, trajectory));\n return phases;\n}\n\nfunction buildPhase(\n raw: { number: number; title: string; lines: string[] },\n trajectory: Trajectory | undefined,\n): Phase {\n const trajectoryRows = trajectory\n ? trajectory.rows.filter((r) => r.passesAt === raw.number)\n : [];\n return {\n number: raw.number,\n title: raw.title,\n content: raw.lines.join(\"\\n\").trim(),\n trajectoryRows,\n };\n}\n\n/**\n * Split a phase list into three groups around the falsification phase:\n * - `pre`: phases BEFORE the falsification phase\n * - `falsification`: the phase whose title contains \"Falsification\" (case-insensitive);\n * `null` when no such phase exists\n * - `post`: phases AFTER the falsification phase (fix-in-scope follow-ups\n * derived from the ritual)\n *\n * If multiple phases have \"Falsification\" in the title, the FIRST match wins —\n * later ones fall into `post`. In practice plans author exactly one falsification\n * phase; the first-match rule is a defensive choice for the edge case.\n *\n * Matching is a case-insensitive substring, not a regex — the /falsify skill's\n * recommended convention is `### Phase N: Falsification — {summary}` but the\n * title field is free-form, so we match the word loosely.\n */\nexport interface PhaseSplit {\n pre: Phase[];\n falsification: Phase | null;\n post: Phase[];\n}\n\nexport function splitPhasesAroundFalsification(phases: Phase[]): PhaseSplit {\n const idx = phases.findIndex((p) =>\n p.title.toLowerCase().includes(\"falsification\"),\n );\n if (idx === -1) {\n return { pre: phases, falsification: null, post: [] };\n }\n return {\n pre: phases.slice(0, idx),\n falsification: phases[idx],\n post: phases.slice(idx + 1),\n };\n}\n\n/**\n * Extract `- [ ]` / `- [x]` checklist items from markdown content. Used by\n * the falsification-phase rendering to surface fix items as a discrete list.\n *\n * Intentionally narrow — not a general markdown AST parser. Matches only the\n * standard GFM task-list shape at line start with mandatory space between\n * brackets. Uppercase `X` is rejected (contract is lowercase `x`) so we don't\n * silently accept non-standard syntax.\n */\nexport interface ChecklistItem {\n text: string;\n checked: boolean;\n}\n\nconst CHECKLIST_ITEM_RE = /^- \\[( |x)\\] (.+)$/;\n\nexport function extractChecklistItems(markdown: string): ChecklistItem[] {\n const items: ChecklistItem[] = [];\n for (const line of markdown.split(\"\\n\")) {\n const match = line.match(CHECKLIST_ITEM_RE);\n if (match) {\n items.push({\n checked: match[1] === \"x\",\n text: match[2].trim(),\n });\n }\n }\n return items;\n}\n","import type {\n HypothesisEntry,\n TerminatorEntry,\n} from \"@infinitedusky/indusk-mcp/falsification/log\";\nimport type { TrajectoryRow } from \"@infinitedusky/indusk-mcp/trajectory/parser\";\nimport {\n type ChecklistItem,\n extractChecklistItems,\n extractPhases,\n type Phase,\n splitPhasesAroundFalsification,\n} from \"@/lib/phases\";\nimport type { Plan } from \"@/lib/planning-reader\";\n\n/**\n * Plain-markdown serialization of PlanDetail's rendered sections — used by\n * the copy-to-clipboard affordances. Mirrors `PlanDetail.tsx`'s rendering\n * decisions (falsification phase priority, phase splitting) but is kept\n * separate from the component tree since its job is text assembly, not JSX.\n *\n * Every function returns markdown starting with a `##` heading so pasting a\n * single section elsewhere (e.g. Notion) keeps the section's own title.\n */\n\nexport function sectionMarkdown(heading: string, body: string): string {\n const trimmed = body.trim();\n return trimmed ? `## ${heading}\\n\\n${trimmed}` : `## ${heading}`;\n}\n\nexport function trajectoryTableMarkdown(rows: TrajectoryRow[]): string {\n if (rows.length === 0) return \"\";\n const header = \"| ID | Asserts | Writable at | Passes at | State |\";\n const divider = \"| --- | --- | --- | --- | --- |\";\n const body = rows.map(\n (row) =>\n `| ${row.id} | ${row.asserts} | Phase ${row.writableAt} | Phase ${row.passesAt} | ${row.state} |`,\n );\n return [header, divider, ...body].join(\"\\n\");\n}\n\nexport function checklistMarkdown(items: ChecklistItem[]): string {\n return items\n .map((item) => `- [${item.checked ? \"x\" : \" \"}] ${item.text}`)\n .join(\"\\n\");\n}\n\nexport function phaseMarkdown(phase: Phase): string {\n const heading = `Phase ${phase.number}${phase.title ? `: ${phase.title}` : \"\"}`;\n const table = trajectoryTableMarkdown(phase.trajectoryRows);\n const body = [table, phase.content].filter(Boolean).join(\"\\n\\n\");\n return sectionMarkdown(heading, body);\n}\n\nfunction hypothesisMarkdown(entry: HypothesisEntry): string {\n const lines = [`**Hypothesis (${entry.outcome})**`, entry.hypothesis];\n if (entry.testPath) lines.push(`\\`${entry.testPath}\\``);\n if (entry.note) lines.push(entry.note);\n return lines.join(\"\\n\\n\");\n}\n\n/** Falsification rendering for the legacy `falsification.md`-log path. */\nexport function falsificationLogMarkdown(\n falsification: Plan[\"falsification\"],\n): string {\n if (!falsification) {\n return sectionMarkdown(\n \"Falsification\",\n \"No falsification ritual run for this plan.\",\n );\n }\n const hypotheses = falsification.entries.filter(\n (e): e is HypothesisEntry => e.kind === \"hypothesis\",\n );\n const terminator = falsification.entries.find(\n (e): e is TerminatorEntry => e.kind === \"terminator\",\n );\n const parts = hypotheses.map(hypothesisMarkdown);\n if (terminator) parts.push(`**Terminated:** ${terminator.reason}`);\n return sectionMarkdown(\n \"Falsification\",\n parts.length > 0 ? parts.join(\"\\n\\n\") : \"No hypotheses logged yet.\",\n );\n}\n\n/** Falsification rendering for the phase-authoring flow (1.27.4+). */\nexport function falsificationPhaseMarkdown(phase: Phase): string {\n const heading = `Falsification${phase.title ? ` (Phase ${phase.number}: ${phase.title})` : \"\"}`;\n const checklistItems = extractChecklistItems(phase.content);\n const table = trajectoryTableMarkdown(phase.trajectoryRows);\n const checklist = checklistMarkdown(checklistItems);\n const parts = [\n table && `### Hypotheses\\n\\n${table}`,\n checklist && `### Fix items\\n\\n${checklist}`,\n ].filter(Boolean);\n return sectionMarkdown(heading, parts.join(\"\\n\\n\"));\n}\n\n/**\n * Full-plan markdown for the \"copy whole plan\" affordance — every present\n * section concatenated in the same order `PlanDetail` renders them, each\n * separated by a horizontal rule so pasting into Notion keeps sections\n * visually distinct.\n */\nexport function planMarkdown(plan: Plan): string {\n const sections: string[] = [`# ${plan.name}\\n\\nStatus: ${plan.status}`];\n\n if (plan.research)\n sections.push(sectionMarkdown(\"Research\", plan.research.content));\n if (plan.brief) sections.push(sectionMarkdown(\"Brief\", plan.brief.content));\n if (plan.testPlan)\n sections.push(sectionMarkdown(\"Test Plan\", plan.testPlan.content));\n if (plan.adr)\n sections.push(sectionMarkdown(\"ADR — Goal + Decision\", plan.adr.content));\n\n if (plan.impl) {\n const phases = extractPhases(plan.impl.content, plan.impl.trajectory);\n const split = splitPhasesAroundFalsification(phases);\n for (const phase of split.pre) sections.push(phaseMarkdown(phase));\n sections.push(\n split.falsification\n ? falsificationPhaseMarkdown(split.falsification)\n : falsificationLogMarkdown(plan.falsification),\n );\n for (const phase of split.post) sections.push(phaseMarkdown(phase));\n } else {\n sections.push(falsificationLogMarkdown(plan.falsification));\n }\n\n return sections.join(\"\\n\\n---\\n\\n\");\n}\n"],"names":["CopyButton","Error","PHASE_HEADING_RE","extractPhases","implContent","trajectory","lines","split","phases","current","stoppedAtL2","line","phaseMatch","match","push","buildPhase","number","Number","parseInt","title","trim","test","raw","trajectoryRows","rows","filter","r","passesAt","content","join","splitPhasesAroundFalsification","idx","findIndex","p","toLowerCase","includes","pre","falsification","post","slice","CHECKLIST_ITEM_RE","extractChecklistItems","markdown","items","checked","text"],"mappings":"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","ignoreList":[0]}
1
+ {"version":3,"sources":["../../../../../../apps/indusk-admin/src/components/ui/CopyButton.tsx/__nextjs-internal-proxy.mjs","../../../../../../apps/indusk-admin/src/app/p/%5Bproject%5D/plan/%5Bname%5D/page.tsx","../../../../../../apps/indusk-admin/src/components/PlanDetail.tsx","../../../../../../apps/indusk-admin/src/lib/phases.ts","../../../../../../apps/indusk-admin/src/lib/markdown-export.ts"],"sourcesContent":["// This file is generated by next-core EcmascriptClientReferenceModule.\nimport { registerClientReference } from \"react-server-dom-turbopack/server\";\nexport const CopyButton = registerClientReference(\n function() { throw new Error(\"Attempted to call CopyButton() from the server but CopyButton 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.\"); },\n \"[project]/apps/indusk-admin/src/components/ui/CopyButton.tsx\",\n \"CopyButton\",\n);\n","import { notFound } from \"next/navigation\";\nimport { PlanDetail } from \"@/components/PlanDetail\";\nimport { readActivePlans, readArchivedPlans } from \"@/lib/planning-reader\";\nimport { getProjectPath, projectPathExists } from \"@/lib/registry-client\";\n\ninterface PlanPageProps {\n params: Promise<{ project: string; name: string }>;\n}\n\n/**\n * Server component for `/p/{project}/plan/{name}`. Resolves the project's\n * path via the registry, reads every active + archived plan for that\n * project, finds the requested plan by folder name, and renders PlanDetail.\n *\n * The stale-project branch (path null OR deleted on disk) is handled by\n * the layout (`app/p/[project]/layout.tsx`) — it replaces its own output\n * with `<StaleProjectFailurePage>` in that case, so this page's rendered\n * element is never placed in the DOM. We early-return `null` when path is\n * stale so the page's own code doesn't trip on `readActivePlans` against\n * a deleted dir. `notFound()` is reserved for the genuinely plan-not-found\n * case (path OK, plan name wrong).\n */\nexport default async function PlanPage({ params }: PlanPageProps) {\n const { project, name } = await params;\n const projectPath = getProjectPath(project);\n if (!projectPath || !projectPathExists(projectPath)) return null;\n\n const [active, archived] = await Promise.all([\n readActivePlans(projectPath),\n readArchivedPlans(projectPath),\n ]);\n const plan =\n active.find((p) => p.name === name) ??\n archived.find((p) => p.name === name);\n if (!plan) {\n notFound();\n }\n return <PlanDetail plan={plan} />;\n}\n","import type {\n HypothesisEntry,\n HypothesisOutcome,\n LogEntry,\n TerminatorEntry,\n} from \"@infinitedusky/indusk-mcp/falsification/log\";\nimport { Markdown } from \"@/components/Markdown\";\nimport { Badge, type BadgeVariant } from \"@/components/ui/Badge\";\nimport { CollapsibleSection } from \"@/components/ui/CollapsibleSection\";\nimport { CopyButton } from \"@/components/ui/CopyButton\";\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from \"@/components/ui/Table\";\nimport {\n falsificationLogMarkdown,\n falsificationPhaseMarkdown,\n phaseMarkdown,\n planMarkdown,\n sectionMarkdown,\n} from \"@/lib/markdown-export\";\nimport {\n extractChecklistItems,\n extractPhases,\n type Phase,\n splitPhasesAroundFalsification,\n} from \"@/lib/phases\";\nimport type { Plan } from \"@/lib/planning-reader\";\n\ninterface PlanDetailProps {\n plan: Plan;\n}\n\n/**\n * Main pane for a selected plan. Renders sections conditional on which\n * documents are present:\n * - Always: header (name + status badge)\n * - Brief.md: Markdown render of the brief content (Problem + Proposed Direction visible)\n * - test-plan.md: collapsible Markdown render\n * - ADR.md: collapsible Markdown render (Goal + Y-statement come through verbatim)\n * - Impl.md: PhasesSection — one CollapsibleSection per phase containing trajectory rows\n *\n * Missing documents simply don't render their section (T14). Malformed plans\n * surface a banner indicating malformed YAML; the components-that-can-render\n * still render with whatever data they have.\n */\nexport function PlanDetail({ plan }: PlanDetailProps) {\n return (\n <article\n className=\"flex flex-col gap-6\"\n data-testid=\"plan-detail\"\n data-plan-name={plan.name}\n >\n <PlanHeader plan={plan} />\n\n {plan.malformed && <MalformedBanner />}\n\n {plan.malformed && plan.rawDocuments && (\n <RawDocumentsSection rawDocuments={plan.rawDocuments} />\n )}\n\n {plan.research && (\n <CollapsibleSection\n title=\"Research\"\n defaultOpen={!plan.brief}\n persistKey={`plan:${plan.name}:section:research`}\n copyMarkdown={sectionMarkdown(\"Research\", plan.research.content)}\n >\n <Markdown>{plan.research.content}</Markdown>\n </CollapsibleSection>\n )}\n\n {plan.brief && (\n <BriefSection planName={plan.name} content={plan.brief.content} />\n )}\n\n {plan.testPlan && (\n <CollapsibleSection\n title=\"Test Plan\"\n defaultOpen={false}\n persistKey={`plan:${plan.name}:section:test-plan`}\n copyMarkdown={sectionMarkdown(\"Test Plan\", plan.testPlan.content)}\n >\n <Markdown>{plan.testPlan.content}</Markdown>\n </CollapsibleSection>\n )}\n\n {plan.adr && (\n <CollapsibleSection\n title=\"ADR — Goal + Decision\"\n defaultOpen={false}\n persistKey={`plan:${plan.name}:section:adr`}\n copyMarkdown={sectionMarkdown(\n \"ADR — Goal + Decision\",\n plan.adr.content,\n )}\n >\n <Markdown>{plan.adr.content}</Markdown>\n </CollapsibleSection>\n )}\n\n {plan.impl && <ImplSections plan={plan} />}\n {!plan.impl && <FalsificationSection plan={plan} phase={null} />}\n </article>\n );\n}\n\n/**\n * When an impl.md exists, split its phases into pre-falsification / falsification\n * / post-falsification groups and render each in its own section. The\n * falsification phase (if any) is rendered by `FalsificationSection` instead of\n * mixed into the main Phases section. Post-falsification phases render below as\n * \"Follow-up Phases\" — the fix-in-scope derivatives of the ritual.\n *\n * When no impl is present, the PlanDetail top-level still shows a\n * FalsificationSection directly (legacy-log-only path).\n */\nfunction ImplSections({ plan }: { plan: Plan }) {\n if (!plan.impl) return null;\n const phases = extractPhases(plan.impl.content, plan.impl.trajectory);\n const split = splitPhasesAroundFalsification(phases);\n return (\n <>\n {split.pre.length > 0 && (\n <PhasesSection\n phases={split.pre}\n heading=\"Phases\"\n testId=\"phases-section\"\n planName={plan.name}\n />\n )}\n <FalsificationSection plan={plan} phase={split.falsification} />\n {split.post.length > 0 && (\n <PhasesSection\n phases={split.post}\n heading=\"Follow-up Phases\"\n testId=\"followup-phases-section\"\n planName={plan.name}\n />\n )}\n </>\n );\n}\n\nfunction PlanHeader({ plan }: { plan: Plan }) {\n return (\n <header\n className=\"flex items-center justify-between border-b border-gray-200 pb-3\"\n data-testid=\"plan-header\"\n >\n <div className=\"flex flex-col\">\n <h1 className=\"text-xl font-semibold text-gray-900\">{plan.name}</h1>\n <span className=\"text-xs text-gray-500\">\n {plan.archived ? \"archived\" : \"active\"}\n </span>\n </div>\n <div className=\"flex items-center gap-3\">\n <Badge variant={statusToBadge(plan.status)}>{plan.status}</Badge>\n <CopyButton\n text={planMarkdown(plan)}\n label=\"Copy whole plan as markdown\"\n data-testid=\"copy-plan-button\"\n />\n </div>\n </header>\n );\n}\n\nfunction MalformedBanner() {\n return (\n <div\n className=\"rounded border border-red-200 bg-red-50 px-3 py-2 text-sm text-red-700\"\n data-testid=\"malformed-banner\"\n >\n ⚠ This plan has malformed YAML frontmatter. Some sections may be missing\n or rendered with default values.\n </div>\n );\n}\n\nfunction BriefSection({\n planName,\n content,\n}: {\n planName: string;\n content: string;\n}) {\n return (\n <section className=\"flex flex-col gap-2\" data-testid=\"brief-section\">\n <CollapsibleSection\n title=\"Brief\"\n defaultOpen={true}\n persistKey={`plan:${planName}:section:brief`}\n copyMarkdown={sectionMarkdown(\"Brief\", content)}\n >\n <Markdown>{content}</Markdown>\n </CollapsibleSection>\n </section>\n );\n}\n\nfunction PhasesSection({\n phases,\n heading,\n testId,\n planName,\n}: {\n phases: Phase[];\n heading: string;\n testId: string;\n planName: string;\n}) {\n if (phases.length === 0) return null;\n\n return (\n <section className=\"flex flex-col gap-2\" data-testid={testId}>\n <h2 className=\"text-base font-semibold text-gray-900\">{heading}</h2>\n <div className=\"flex flex-col gap-2\">\n {phases.map((phase) => (\n <CollapsibleSection\n key={phase.number}\n title={`Phase ${phase.number}${phase.title ? `: ${phase.title}` : \"\"}`}\n defaultOpen={false}\n persistKey={`plan:${planName}:phase:${phase.number}`}\n copyMarkdown={phaseMarkdown(phase)}\n >\n <div className=\"flex flex-col gap-3\">\n {phase.trajectoryRows.length > 0 && (\n <div data-testid={`phase-${phase.number}-trajectory`}>\n <Table>\n <TableHeader>\n <TableRow>\n <TableHead>ID</TableHead>\n <TableHead>Asserts</TableHead>\n <TableHead>Writable at</TableHead>\n <TableHead>Passes at</TableHead>\n <TableHead>State</TableHead>\n </TableRow>\n </TableHeader>\n <TableBody>\n {phase.trajectoryRows.map((row) => (\n <TableRow key={row.id}>\n <TableCell>\n <span className=\"font-mono text-xs\">{row.id}</span>\n </TableCell>\n <TableCell>{row.asserts}</TableCell>\n <TableCell>Phase {row.writableAt}</TableCell>\n <TableCell>Phase {row.passesAt}</TableCell>\n <TableCell>\n <Badge variant={stateToBadge(row.state)}>\n {row.state}\n </Badge>\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </div>\n )}\n <Markdown>{phase.content}</Markdown>\n </div>\n </CollapsibleSection>\n ))}\n </div>\n </section>\n );\n}\n\nfunction RawDocumentsSection({\n rawDocuments,\n}: {\n rawDocuments: Record<string, string>;\n}) {\n const entries = Object.entries(rawDocuments);\n if (entries.length === 0) return null;\n return (\n <section\n className=\"flex flex-col gap-2\"\n data-testid=\"raw-documents-section\"\n >\n <h2 className=\"text-base font-semibold text-gray-900\">\n Raw documents (malformed frontmatter)\n </h2>\n <p className=\"text-xs text-gray-500\">\n These files couldn't be parsed. Showing the raw markdown so you can\n diagnose. Fix the YAML frontmatter and refresh.\n </p>\n <div className=\"flex flex-col gap-2\">\n {entries.map(([filename, raw]) => (\n <CollapsibleSection\n key={filename}\n title={filename}\n defaultOpen={false}\n >\n <pre\n className=\"overflow-x-auto rounded bg-gray-50 p-3 text-xs font-mono text-gray-800 whitespace-pre-wrap\"\n data-testid={`raw-${filename}`}\n >\n {raw}\n </pre>\n </CollapsibleSection>\n ))}\n </div>\n </section>\n );\n}\n\nfunction FalsificationSection({\n plan,\n phase,\n}: {\n plan: Plan;\n phase: Phase | null;\n}) {\n // Priority: phase-authoring flow (new, 1.27.4+) > legacy log file > empty state.\n if (phase) {\n return <FalsificationPhaseSection planName={plan.name} phase={phase} />;\n }\n if (!plan.falsification) {\n return (\n <section\n className=\"flex flex-col gap-2\"\n data-testid=\"falsification-section\"\n >\n <CollapsibleSection\n title=\"Falsification\"\n defaultOpen={true}\n persistKey={`plan:${plan.name}:section:falsification`}\n copyMarkdown={falsificationLogMarkdown(undefined)}\n >\n <p\n className=\"text-sm text-gray-500\"\n data-testid=\"falsification-empty\"\n >\n No falsification ritual run for this plan.\n </p>\n </CollapsibleSection>\n </section>\n );\n }\n\n const hypotheses = plan.falsification.entries.filter(isHypothesis);\n const terminator = plan.falsification.entries.find(isTerminator);\n\n return (\n <section\n className=\"flex flex-col gap-2\"\n data-testid=\"falsification-section\"\n >\n <CollapsibleSection\n title=\"Falsification\"\n defaultOpen={true}\n persistKey={`plan:${plan.name}:section:falsification`}\n headerRight={\n <Badge variant={plan.falsification.complete ? \"passing\" : \"writable\"}>\n {plan.falsification.complete ? \"complete\" : \"in-progress\"}\n </Badge>\n }\n copyMarkdown={falsificationLogMarkdown(plan.falsification)}\n >\n <div className=\"flex flex-col gap-2\">\n {hypotheses.length === 0 && (\n <p className=\"text-sm text-gray-500\">No hypotheses logged yet.</p>\n )}\n {hypotheses.length > 0 && (\n <ul\n className=\"flex flex-col gap-3\"\n data-testid=\"falsification-hypotheses\"\n >\n {hypotheses.map((entry) => (\n <HypothesisItem\n key={`${entry.timestamp}-${entry.hypothesis.slice(0, 32)}`}\n entry={entry}\n />\n ))}\n </ul>\n )}\n {terminator && (\n <div\n className=\"rounded border border-gray-200 bg-gray-50 px-3 py-2 text-sm text-gray-700\"\n data-testid=\"falsification-terminator\"\n >\n <span className=\"font-semibold\">Terminated:</span>{\" \"}\n {terminator.reason}\n </div>\n )}\n </div>\n </CollapsibleSection>\n </section>\n );\n}\n\n/**\n * Render a falsification phase (new phase-authoring flow, 1.27.4+). Hypotheses\n * come from the phase's trajectory rows (each row == one hypothesis); fix items\n * come from the phase's checklist. Status badge derives from the combined state\n * of trajectory rows + unchecked checklist items.\n */\nfunction FalsificationPhaseSection({\n planName,\n phase,\n}: {\n planName: string;\n phase: Phase;\n}) {\n const checklistItems = extractChecklistItems(phase.content);\n const allTrajectoryTerminal = phase.trajectoryRows.every(\n (r) => r.state === \"passing\" || r.state === \"skipped\",\n );\n const allItemsChecked = checklistItems.every((i) => i.checked);\n const complete = allTrajectoryTerminal && allItemsChecked;\n\n return (\n <section\n className=\"flex flex-col gap-2\"\n data-testid=\"falsification-section\"\n >\n <CollapsibleSection\n title={\n <>\n Falsification\n {phase.title ? (\n <span className=\"ml-2 text-xs font-normal text-gray-500\">\n (Phase {phase.number}: {phase.title})\n </span>\n ) : null}\n </>\n }\n defaultOpen={true}\n persistKey={`plan:${planName}:section:falsification`}\n headerRight={\n <Badge variant={complete ? \"passing\" : \"writable\"}>\n {complete ? \"complete\" : \"in-progress\"}\n </Badge>\n }\n copyMarkdown={falsificationPhaseMarkdown(phase)}\n >\n <div className=\"flex flex-col gap-2\">\n {phase.trajectoryRows.length > 0 && (\n <div data-testid=\"falsification-hypotheses\">\n <h3 className=\"text-sm font-semibold text-gray-800 mt-1\">\n Hypotheses\n </h3>\n <Table>\n <TableHeader>\n <TableRow>\n <TableHead>ID</TableHead>\n <TableHead>Asserts</TableHead>\n <TableHead>State</TableHead>\n </TableRow>\n </TableHeader>\n <TableBody>\n {phase.trajectoryRows.map((row) => (\n <TableRow key={row.id}>\n <TableCell>\n <span className=\"font-mono text-xs\">{row.id}</span>\n </TableCell>\n <TableCell>{row.asserts}</TableCell>\n <TableCell>\n <Badge variant={stateToBadge(row.state)}>\n {row.state}\n </Badge>\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </div>\n )}\n\n {checklistItems.length > 0 && (\n <div data-testid=\"falsification-fix-items\" className=\"mt-2\">\n <h3 className=\"text-sm font-semibold text-gray-800\">Fix items</h3>\n <ul className=\"flex flex-col gap-1\">\n {checklistItems.map((item) => (\n <li\n key={`${item.checked ? \"x\" : \"o\"}-${item.text}`}\n className=\"flex items-start gap-2 text-sm text-gray-700\"\n >\n <span className=\"font-mono text-xs text-gray-500\">\n [{item.checked ? \"x\" : \" \"}]\n </span>\n <span\n className={\n item.checked ? \"text-gray-500 line-through\" : \"\"\n }\n >\n {item.text}\n </span>\n </li>\n ))}\n </ul>\n </div>\n )}\n </div>\n </CollapsibleSection>\n </section>\n );\n}\n\nfunction HypothesisItem({ entry }: { entry: HypothesisEntry }) {\n return (\n <li\n className=\"flex flex-col gap-1 rounded border border-gray-200 px-3 py-2\"\n data-testid={`hypothesis-${entry.outcome}`}\n >\n <div className=\"flex items-center justify-between gap-2\">\n <span className=\"text-sm font-semibold text-gray-900\">Hypothesis</span>\n <Badge variant={outcomeToBadge(entry.outcome)}>{entry.outcome}</Badge>\n </div>\n <p className=\"text-sm text-gray-700\">{entry.hypothesis}</p>\n {entry.testPath && (\n <p className=\"text-xs text-gray-500 font-mono\">{entry.testPath}</p>\n )}\n {entry.note && <p className=\"text-xs text-gray-500\">{entry.note}</p>}\n </li>\n );\n}\n\nfunction isHypothesis(entry: LogEntry): entry is HypothesisEntry {\n return entry.kind === \"hypothesis\";\n}\n\nfunction isTerminator(entry: LogEntry): entry is TerminatorEntry {\n return entry.kind === \"terminator\";\n}\n\nfunction outcomeToBadge(outcome: HypothesisOutcome): BadgeVariant {\n if (outcome === \"fix-in-scope\") return \"passing\";\n if (outcome === \"spawn-plan\") return \"writable\";\n return \"neutral\"; // accept-finding\n}\n\nfunction statusToBadge(status: string): BadgeVariant {\n const normalized = status.toLowerCase();\n if (normalized.includes(\"completed\") || normalized.includes(\"passing\"))\n return \"passing\";\n if (normalized.includes(\"blocked\")) return \"blocked\";\n if (normalized.includes(\"in-progress\") || normalized.includes(\"accepted\"))\n return \"writable\";\n if (normalized.includes(\"draft\") || normalized.includes(\"planned\"))\n return \"planned\";\n return \"neutral\";\n}\n\nfunction stateToBadge(state: string): BadgeVariant {\n const normalized = state.toLowerCase();\n if (\n [\n \"passing\",\n \"blocked\",\n \"skipped\",\n \"planned\",\n \"writable\",\n \"written\",\n ].includes(normalized)\n ) {\n return normalized as BadgeVariant;\n }\n return \"neutral\";\n}\n","import type {\n Trajectory,\n TrajectoryRow,\n} from \"@infinitedusky/indusk-mcp/trajectory/parser\";\n\n/**\n * Parsed phase from an impl.md `## Checklist` section.\n *\n * The phase parser walks the markdown body, splits on `### Phase N: Title`\n * headings (level-3 H3), and groups every line up to the next `### Phase`\n * heading (or end of document) as that phase's content. It does NOT separate\n * verification / context / document gates — those are still raw markdown\n * inside `content`. The PhasesSection component renders the content as\n * markdown wrapped in a CollapsibleSection.\n *\n * Trajectory rows belonging to a phase are matched via the trajectory's\n * `Passes at` column (rows that pass at this phase number). This pairing\n * makes T8 satisfiable — every phase shows the rows that should flip in it.\n */\nexport interface Phase {\n number: number;\n title: string;\n /** Raw markdown content (everything between this phase's heading and the next). */\n content: string;\n /** Trajectory rows whose `Passes at` is this phase's number. */\n trajectoryRows: TrajectoryRow[];\n}\n\nconst PHASE_HEADING_RE = /^###\\s+Phase\\s+(\\d+)(?::\\s*(.*))?$/m;\n\n/**\n * Extract phases from an impl.md body. Returns phases in the order they appear\n * in the markdown. Returns `[]` if no `### Phase N` headings are present.\n *\n * Stops scanning at any level-2 heading after the first phase (so the trailing\n * `## Files Affected`, `## Dependencies`, `## Notes` sections don't bleed into\n * the last phase).\n */\nexport function extractPhases(\n implContent: string,\n trajectory?: Trajectory,\n): Phase[] {\n const lines = implContent.split(\"\\n\");\n const phases: Phase[] = [];\n let current: { number: number; title: string; lines: string[] } | null = null;\n let stoppedAtL2 = false;\n\n for (const line of lines) {\n if (stoppedAtL2) break;\n\n const phaseMatch = line.match(PHASE_HEADING_RE);\n if (phaseMatch) {\n if (current) {\n phases.push(buildPhase(current, trajectory));\n }\n current = {\n number: Number.parseInt(phaseMatch[1], 10),\n title: (phaseMatch[2] ?? \"\").trim(),\n lines: [],\n };\n continue;\n }\n\n // Stop on any level-2 heading we encounter AFTER the first phase\n if (current && /^##\\s+\\S/.test(line) && !/^###/.test(line)) {\n stoppedAtL2 = true;\n break;\n }\n\n if (current) current.lines.push(line);\n }\n\n if (current) phases.push(buildPhase(current, trajectory));\n return phases;\n}\n\nfunction buildPhase(\n raw: { number: number; title: string; lines: string[] },\n trajectory: Trajectory | undefined,\n): Phase {\n const trajectoryRows = trajectory\n ? trajectory.rows.filter((r) => r.passesAt === raw.number)\n : [];\n return {\n number: raw.number,\n title: raw.title,\n content: raw.lines.join(\"\\n\").trim(),\n trajectoryRows,\n };\n}\n\n/**\n * Split a phase list into three groups around the falsification phase:\n * - `pre`: phases BEFORE the falsification phase\n * - `falsification`: the phase whose title contains \"Falsification\" (case-insensitive);\n * `null` when no such phase exists\n * - `post`: phases AFTER the falsification phase (fix-in-scope follow-ups\n * derived from the ritual)\n *\n * If multiple phases have \"Falsification\" in the title, the FIRST match wins —\n * later ones fall into `post`. In practice plans author exactly one falsification\n * phase; the first-match rule is a defensive choice for the edge case.\n *\n * Matching is a case-insensitive substring, not a regex — the /falsify skill's\n * recommended convention is `### Phase N: Falsification — {summary}` but the\n * title field is free-form, so we match the word loosely.\n */\nexport interface PhaseSplit {\n pre: Phase[];\n falsification: Phase | null;\n post: Phase[];\n}\n\nexport function splitPhasesAroundFalsification(phases: Phase[]): PhaseSplit {\n const idx = phases.findIndex((p) =>\n p.title.toLowerCase().includes(\"falsification\"),\n );\n if (idx === -1) {\n return { pre: phases, falsification: null, post: [] };\n }\n return {\n pre: phases.slice(0, idx),\n falsification: phases[idx],\n post: phases.slice(idx + 1),\n };\n}\n\n/**\n * Extract `- [ ]` / `- [x]` checklist items from markdown content. Used by\n * the falsification-phase rendering to surface fix items as a discrete list.\n *\n * Intentionally narrow — not a general markdown AST parser. Matches only the\n * standard GFM task-list shape at line start with mandatory space between\n * brackets. Uppercase `X` is rejected (contract is lowercase `x`) so we don't\n * silently accept non-standard syntax.\n */\nexport interface ChecklistItem {\n text: string;\n checked: boolean;\n}\n\nconst CHECKLIST_ITEM_RE = /^- \\[( |x)\\] (.+)$/;\n\nexport function extractChecklistItems(markdown: string): ChecklistItem[] {\n const items: ChecklistItem[] = [];\n for (const line of markdown.split(\"\\n\")) {\n const match = line.match(CHECKLIST_ITEM_RE);\n if (match) {\n items.push({\n checked: match[1] === \"x\",\n text: match[2].trim(),\n });\n }\n }\n return items;\n}\n","import type {\n HypothesisEntry,\n TerminatorEntry,\n} from \"@infinitedusky/indusk-mcp/falsification/log\";\nimport type { TrajectoryRow } from \"@infinitedusky/indusk-mcp/trajectory/parser\";\nimport {\n type ChecklistItem,\n extractChecklistItems,\n extractPhases,\n type Phase,\n splitPhasesAroundFalsification,\n} from \"@/lib/phases\";\nimport type { Plan } from \"@/lib/planning-reader\";\n\n/**\n * Plain-markdown serialization of PlanDetail's rendered sections — used by\n * the copy-to-clipboard affordances. Mirrors `PlanDetail.tsx`'s rendering\n * decisions (falsification phase priority, phase splitting) but is kept\n * separate from the component tree since its job is text assembly, not JSX.\n *\n * Every function returns markdown starting with a `##` heading so pasting a\n * single section elsewhere (e.g. Notion) keeps the section's own title.\n */\n\nexport function sectionMarkdown(heading: string, body: string): string {\n const trimmed = body.trim();\n return trimmed ? `## ${heading}\\n\\n${trimmed}` : `## ${heading}`;\n}\n\nexport function trajectoryTableMarkdown(rows: TrajectoryRow[]): string {\n if (rows.length === 0) return \"\";\n const header = \"| ID | Asserts | Writable at | Passes at | State |\";\n const divider = \"| --- | --- | --- | --- | --- |\";\n const body = rows.map(\n (row) =>\n `| ${row.id} | ${row.asserts} | Phase ${row.writableAt} | Phase ${row.passesAt} | ${row.state} |`,\n );\n return [header, divider, ...body].join(\"\\n\");\n}\n\nexport function checklistMarkdown(items: ChecklistItem[]): string {\n return items\n .map((item) => `- [${item.checked ? \"x\" : \" \"}] ${item.text}`)\n .join(\"\\n\");\n}\n\nexport function phaseMarkdown(phase: Phase): string {\n const heading = `Phase ${phase.number}${phase.title ? `: ${phase.title}` : \"\"}`;\n const table = trajectoryTableMarkdown(phase.trajectoryRows);\n const body = [table, phase.content].filter(Boolean).join(\"\\n\\n\");\n return sectionMarkdown(heading, body);\n}\n\nfunction hypothesisMarkdown(entry: HypothesisEntry): string {\n const lines = [`**Hypothesis (${entry.outcome})**`, entry.hypothesis];\n if (entry.testPath) lines.push(`\\`${entry.testPath}\\``);\n if (entry.note) lines.push(entry.note);\n return lines.join(\"\\n\\n\");\n}\n\n/** Falsification rendering for the legacy `falsification.md`-log path. */\nexport function falsificationLogMarkdown(\n falsification: Plan[\"falsification\"],\n): string {\n if (!falsification) {\n return sectionMarkdown(\n \"Falsification\",\n \"No falsification ritual run for this plan.\",\n );\n }\n const hypotheses = falsification.entries.filter(\n (e): e is HypothesisEntry => e.kind === \"hypothesis\",\n );\n const terminator = falsification.entries.find(\n (e): e is TerminatorEntry => e.kind === \"terminator\",\n );\n const parts = hypotheses.map(hypothesisMarkdown);\n if (terminator) parts.push(`**Terminated:** ${terminator.reason}`);\n return sectionMarkdown(\n \"Falsification\",\n parts.length > 0 ? parts.join(\"\\n\\n\") : \"No hypotheses logged yet.\",\n );\n}\n\n/** Falsification rendering for the phase-authoring flow (1.27.4+). */\nexport function falsificationPhaseMarkdown(phase: Phase): string {\n const heading = `Falsification${phase.title ? ` (Phase ${phase.number}: ${phase.title})` : \"\"}`;\n const checklistItems = extractChecklistItems(phase.content);\n const table = trajectoryTableMarkdown(phase.trajectoryRows);\n const checklist = checklistMarkdown(checklistItems);\n const parts = [\n table && `### Hypotheses\\n\\n${table}`,\n checklist && `### Fix items\\n\\n${checklist}`,\n ].filter(Boolean);\n return sectionMarkdown(heading, parts.join(\"\\n\\n\"));\n}\n\n/**\n * Full-plan markdown for the \"copy whole plan\" affordance — every present\n * section concatenated in the same order `PlanDetail` renders them, each\n * separated by a horizontal rule so pasting into Notion keeps sections\n * visually distinct.\n */\nexport function planMarkdown(plan: Plan): string {\n const sections: string[] = [`# ${plan.name}\\n\\nStatus: ${plan.status}`];\n\n if (plan.research)\n sections.push(sectionMarkdown(\"Research\", plan.research.content));\n if (plan.brief) sections.push(sectionMarkdown(\"Brief\", plan.brief.content));\n if (plan.testPlan)\n sections.push(sectionMarkdown(\"Test Plan\", plan.testPlan.content));\n if (plan.adr)\n sections.push(sectionMarkdown(\"ADR — Goal + Decision\", plan.adr.content));\n\n if (plan.impl) {\n const phases = extractPhases(plan.impl.content, plan.impl.trajectory);\n const split = splitPhasesAroundFalsification(phases);\n for (const phase of split.pre) sections.push(phaseMarkdown(phase));\n sections.push(\n split.falsification\n ? falsificationPhaseMarkdown(split.falsification)\n : falsificationLogMarkdown(plan.falsification),\n );\n for (const phase of split.post) sections.push(phaseMarkdown(phase));\n } else {\n sections.push(falsificationLogMarkdown(plan.falsification));\n }\n\n return sections.join(\"\\n\\n---\\n\\n\");\n}\n"],"names":["CopyButton","Error","PHASE_HEADING_RE","extractPhases","implContent","trajectory","lines","split","phases","current","stoppedAtL2","line","phaseMatch","match","push","buildPhase","number","Number","parseInt","title","trim","test","raw","trajectoryRows","rows","filter","r","passesAt","content","join","splitPhasesAroundFalsification","idx","findIndex","p","toLowerCase","includes","pre","falsification","post","slice","CHECKLIST_ITEM_RE","extractChecklistItems","markdown","items","checked","text"],"mappings":"iEAEO,IAAMA,EAAa,CAAA,EAAA,AAD1B,EAAA,CAAA,CAAA,OAC0B,uBAAA,AAAuB,EAC7C,WAAa,MAAM,AAAIC,MAAM,kOAAoO,EACjQ,mFACA,gEAHG,IAAMD,EAAa,CAAA,EAD1B,AAC0B,EAD1B,CAAA,CAAA,OAC0B,uBAAA,AAAuB,EAC7C,WAAa,MAAM,AAAIC,MAAM,kOAAoO,EACjQ,+DACA,kHCLJ,EAAA,CAAA,CAAA,OAAA,IAAA,EAAA,EAAA,CAAA,CAAA,OCMA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OCkBA,IAAMC,EAAmB,sCAUlB,SAASC,EACdC,CAAmB,CACnBC,CAAuB,EAEvB,IAAMC,EAAQF,EAAYG,KAAK,CAAC,MAC1BC,EAAkB,EAAE,CACtBC,EAAqE,KACrEC,GAAc,EAElB,IAAK,IAAMC,KAAQL,EAAO,CACxB,GAAII,EAAa,MAEjB,IAAME,EAAaD,EAAKE,KAAK,CAACX,GAC9B,GAAIU,EAAY,CACVH,GACFD,EAAOM,IADI,AACA,CAACC,EAAWN,EAASJ,IAElCI,EAAU,CACRO,OAAQC,OAAOC,QAAQ,CAACN,CAAU,CAAC,EAAE,CAAE,IACvCO,MAAO,CAACP,CAAU,CAAC,EAAE,EAAI,EAAA,CAAE,CAAEQ,IAAI,GACjCd,MAAO,EAAE,AACX,EACA,QACF,CAGA,GAAIG,GAAW,WAAWY,IAAI,CAACV,IAAS,CAAC,OAAOU,IAAI,CAACV,GAAO,CAC1DD,GAAc,EACd,KACF,CAEID,GAASA,EAAQH,KAAK,CAACQ,IAAI,CAACH,EAClC,CAGA,OADIF,GAASD,EAAOM,IAAI,CAACC,EAAWN,EAASJ,IACtCG,CACT,CAEA,SAASO,EACPO,CAAuD,CACvDjB,CAAkC,EAElC,IAAMkB,EAAiBlB,EACnBA,EAAWmB,IAAI,CAACC,MAAM,CAAC,AAACC,GAAMA,EAAEC,QAAQ,GAAKL,EAAIN,MAAM,EACvD,EAAE,CACN,MAAO,CACLA,OAAQM,EAAIN,MAAM,CAClBG,MAAOG,EAAIH,KAAK,CAChBS,QAASN,EAAIhB,KAAK,CAACuB,IAAI,CAAC,MAAMT,IAAI,GAClCG,gBACF,CACF,CAwBO,SAASO,EAA+BtB,CAAe,EAC5D,IAAMuB,EAAMvB,EAAOwB,SAAS,CAAC,AAACC,GAC5BA,EAAEd,KAAK,CAACe,WAAW,GAAGC,QAAQ,CAAC,yBAEjC,AAAY,CAAC,GAAG,CAAZJ,EACK,CAAEK,IAAK5B,EAAQ6B,cAAe,KAAMC,KAAM,EAAE,AAAC,EAE/C,CACLF,IAAK5B,EAAO+B,KAAK,CAAC,EAAGR,GACrBM,cAAe7B,CAAM,CAACuB,EAAI,CAC1BO,KAAM9B,EAAO+B,KAAK,CAACR,EAAM,EAC3B,CACF,CAgBA,IAAMS,EAAoB,qBAEnB,SAASC,EAAsBC,CAAgB,EACpD,IAAMC,EAAyB,EAAE,CACjC,IAAK,IAAMhC,KAAQ+B,EAASnC,KAAK,CAAC,MAAO,CACvC,IAAMM,EAAQF,EAAKE,KAAK,CAAC2B,GACrB3B,GACF8B,EAAM7B,EADG,EACC,CAAC,CACT8B,QAAsB,MAAb/B,CAAK,CAAC,EAAE,CACjBgC,KAAMhC,CAAK,CAAC,EAAE,CAACO,IAAI,EACrB,EAEJ,CACA,OAAOuB,CACT,CCnIO,SAAS,EAAgB,CAAe,CAAE,CAAY,EAC3D,IAAM,EAAU,EAAK,IAAI,GACzB,OAAO,EAAU,CAAC,GAAG,EAAE,QAAQ;AAAA;AAAI,EAAE,EAAA,CAAS,CAAG,CAAC,GAAG,EAAE,EAAA,CAAS,AAClE,CAEO,SAAS,EAAwB,CAAqB,SAC3D,AAAoB,GAAG,CAAnB,EAAK,MAAM,CAAe,GAOvB,CANQ,qDACC,qCACH,EAAK,GAAG,CACnB,AAAC,GACC,CAAC,EAAE,EAAE,EAAI,EAAE,CAAC,GAAG,EAAE,EAAI,OAAO,CAAC,SAAS,EAAE,EAAI,UAAU,CAAC,SAAS,EAAE,EAAI,QAAQ,CAAC,GAAG,EAAE,EAAI,KAAK,CAAC,EAAE,CAAC,EAEpE,CAAC,IAAI,CAAC,KACzC,CAQO,SAASnC,EAAc,CAAY,EAIxC,OAAO,EAHS,CAAC,MAAM,EAAE,EAAM,GAGR,GAHc,CAAA,EAAG,EAAM,CAGd,IAHmB,CAAG,CAAC,EAAE,EAAE,EAAM,KAAK,CAAA,CAAE,CAAG,GAAA,CAAI,CAElE,CADC,EAAwB,EAAM,cAAc,EACrC,EAAMG,OAAO,CAAC,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,QAE3D,CAEA,SAAS,EAAmB,CAAsB,EAChD,IAAM,EAAQK,CAAC,CAAC,cAAc,EAAE,EAAMJ,OAAO,CAAC,GAAG,CAAC,CAAE,EAAM,UAAU,CAAC,CAGrE,OAFI,EAAM,QAAQ,EAAE,EAAM,IAAI,CAAC,CAAC,EAAE,EAAE,EAAM,QAAQ,CAAC,EAAE,CAAC,EAClD,EAAM,IAAI,EAAE,EAAM,IAAI,CAAC,EAAM,IAAI,EAC9B,EAAM,IAAI,CAAC,OACpB,CAGO,SAAS,EACd,CAAoC,EAEpC,GAAI,CAAC,EACH,OAAO,EACLP,IAFgB,YAGhBG,8CAGJ,IAAM,EAAa,EAAc,OAAO,CAAC,MAAM,CAC7C,AAAC,GAAuC,eAAX,EAAE,IAAI,EAE/B,EAAa,EAAckB,OAAO,CAACC,IAAI,CAC1C,AAAD,GAAwCX,eAAX,EAAE,IAAI,EAE/B,EAAQG,EAAWS,GAAG,CAAC,GAE7B,OADI,GAAY,EAAM,IAAI,CAAC,CAAC,gBAAgB,EAAE,EAAW,MAAM,CAAA,CAAE,EAC1D,EACL,gBACA,EAAM,MAAM,CAAG,EAAI,EAAM,IAAI,CAAC,QAAU,4BAE5C,CAGO,SAAS,EAA2B,CAAY,EACrD,IAAM,EAAU,CAAC,aAAa,EAAE,EAAM,KAAK,CAAG,CAAC,QAAQ,EAAE,EAAM,MAAM,CAAC,EAAE,EAAE,EAAM,KAAK,CAAC,CAAC,CAAC,CAAG,GAAA,CAAI,CACzF,EAAiB,EAAsB,EAAM,OAAO,EACpD,EAAQ,EAAwB,EAAM,cAAc,EACpD,EAA8B,AAhD7B,EACJ,GAAG,CAAC,AAAC,GAAS,CAAC,AA+CA,GA/CG,EAAE,EAAK,OAAO,CAAG,IAAM,IAAI,EAAE,EAAE,EAAK,IAAI,CAAA,CAAE,EAC5D,IAAI,CAAC,MAmDR,OAAO,EAAgB,EAJT,AAIkB,CAH9B,GAAS,CAAC;AAAA;AAAkB,EAAE,EAAA,CAAO,CACrC,GAAa,CAAC;AAAA;AAAiB,EAAE,EAAA,CAAW,CAC7C,CAAC,MAAM,CAAC,SAC6B,IAAI,CAAC,QAC7C,CF7COvB,SAAS,EAAW,MAAE,CAAI,CAAmB,EAClD,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,UAAA,CACC,UAAU,sBACV,cAAY,cACZ,iBAAgB,EAAK,IAAI,WAEzB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAW,KAAM,IAEjB,EAAK,SAAS,EAAI,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAA,GAEnB,EAAK,SAAS,EAAI,EAAK,YAAYQ,EAClC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAoB,aAAc,EAAK,YAAY,GAGrDE,EAAK,QAAQ,EACZ,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,kBAAkB,CAAA,CACjB,MAAM,WACN,YAAa,CAAC,EAAK,KAAK,CACxBI,WAAY,CAAC,KAAK,EAAE,EAAK,IAAIC,CAAC,iBAAiB,CAAC,CAChD,aAAc,EAAgB,WAAY,EAAK,QAAQ,CAAC,OAAO,WAE/D,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,QAAQ,CAAA,UAAE,EAAK,QAAQ,CAAC,OAAO,KAInC,EAAK,KAAK,EACT,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAa,SAAU,EAAK,IAAId,CAAE,QAASK,EAAK,KAAK,CAAC,OAAOF,GAG/D,EAAK,QAAQ,EACZ,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,kBAAkB,CAAA,CACjB,MAAM,YACN,aAAa,EACb,WAAY,CAAC,KAAK,EAAEJ,EAAK,IAAI,CAAC,kBAAkB,CAAC,CACjD,aAAckB,EAAgB,YAAa,EAAKlB,QAAQ,CAAC,OAAOoB,WAEhE,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,QAAQ,CAAA,UAAE,EAAK,QAAQ,CAAC,OAAO,KAInC,EAAK,GAAG,EACP,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,kBAAkB,CAAA,CACjB,MAAM,wBACN,aAAa,EACb,WAAY,CAAC,KAAK,EAAE,EAAK,IAAI,CAAC,YAAY,CAAC,CAC3C,aAAc,EACZ,wBACA,EAAK,GAAG,CAAC,OAAO,WAGlB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,QAAQ,CAAA,UAAE,EAAK,GAAG,CAAC,OAAO,KAI9B,EAAK,IAAI,EAAI,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAa,KAAM,IACjC,CAAC,EAAK,IAAI,EAAI,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAqB,KAAM,EAAM,MAAO,SAG9D,CAYA,SAAS,EAAa,MAAE,CAAI,CAAkB,EAC5C,GAAI,CAAC,EAAK,IAAI,CAAE,OAAO,KAEvB,IAAM,EAAQ,EADC,EAAc,EAAK,IAAI,CAAC,OAAO,CAAE,EAAK,IAAI,CAAC,KACb,KADuB,GAEpE,MACE,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,QAAA,CAAA,WACG,EAAM,GAAG,CAAC,MAAM,CAAG,GAClB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CACCY,OAAQ,EAAM,GAAG,CACjB,QAAQ,SACR,OAAO,iBACP,SAAU,EAAK,IAAI,GAGvB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAqB,KAAM,EAAM,MAAO,EAAM,aAAa,GAC3D,EAAM,IAAI,CAAC,MAAM,CAAG,GACnB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CACC,OAAQ,EAAM,IAAI,CAClB,QAAQ,mBACR,OAAO,0BACP,SAAU,EAAK,IAAI,KAK7B,CAEA,SAAS,EAAW,MAAE,CAAI,CAAkB,EAsY1C,MArYA,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,SAAA,CACC,UAAU,kEACV,cAAY,wBAEZ,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,0BACb,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAG,UAAU,+CAAuC,EAAK,IAAI,GAC9D,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,iCACb,EAAK,QAAQG,CAAG,WAAa,cAGlC,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,oCACb,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CAAC,QA0Xb,AAAI,CA1XkB,AAyXhB,EAAa,AAzXiB,EAAK,MAAM,CAyXrB,WAAW,IACtB,QAAQ,CAAC,cAAgB,EAAW,QAAQ,CAAC,WACnD,CAAP,SACE,EAAW,QAAQ,CAAC,WAAmB,CAAP,SAChC,EAAW,QAAQ,CAAC,gBAAkB,EAAW,QAAQ,CAAC,YACrD,CAAP,UACE,EAAW,QAAQ,CAAC,UAAY,EAAW,QAAQ,CAAC,WAC/C,CAAP,SACK,mBAjY4C,EAAK,MAAM,GACxD,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,UAAU,CAAA,CACT,KE5DH,AF4DS,SE5DA,AAAa,CAAU,EACrC,IAAM,EAAqB,CAAC,CAAC,EAAE,EAAE,EAAK,IAAI,CAACN;AAAAA;AAAAA,QAAY,EAAEC,EAAK,MAAM,CAAA,CAAE,CAAC,CAUvE,GARI,EAAK,QAAQ,EACf,EAAS,IAAI,CAAC,EAAgB,WAAY,EAAK,QAAQ,CAAC,OAAO,GAC7D,EAAK,KAAK,EAAE,EAAS,IAAI,CAAC,EAAgB,QAAS,EAAK,KAAK3B,CAAC,OAAO,GACrE,EAAKA,QAAQ,EACf,EAAS,IAAI,CAAC,EAAgB,YAAa,EAAK,QAAQ,CAAC,OAAO,GAC9D,EAAK,GAAG,EACV,EAAS,IAAI,CAAC,EAAgB,wBAAyB,EAAK,GAAG,CAAC,OAAO,GAErE,EAAK,IAAI,CAAE,CAEb,IAAM,EAAQ,EADC,EAAc,EAAK,IAAI,CAAC,OAAO,CAAE,EAAK,IAAI,CAAC,KACb,KADuB,GAEpE,IAAK,IAAM,KAAS,EAAM,GAAG,CAAE,EAAS,IAAI,CAAC,EAAc,IAM3D,IAAK,IAAM,KALX,EAAS,IAAI,CACX,EAAM,aAAa,CACf,EAA2B,EAAM,aAAa,EAC9C,EAAyB,EAAK,aAAa,GAE7B,EAAM,IAAI,EAAE,EAAS,IAAI,CAAC,EAAc,GAC9D,MACE,CADK,CACI,IAAI,CAAC,EAAyB,EAAK,aAAa,GAG3D,OAAOD,EAAS,IAAI,CAAC,cACvB,EFkC6B,GACnB,MAAM,8BACN,cAAY,0BAKtB,CAEA,SAAS,IACP,MACE,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CACC,UAAU,yEACV,cAAY,4BACb,6GAKL,CAEA,SAAS,EAAa,UACpB,CAAQ,SACR,CAAO,CAIR,EACC,MACE,CAAA,EAAA,EAAA,GAAA,EAAC,UAAA,CAAQ,UAAU,sBAAsB,cAAY,yBACnD,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,kBAAkB,CAAA,CACjB,MAAM,QACN,aAAa,EACb,WAAY,CAAC,KAAK,EAAE,EAAS,cAAc,CAAC,CAC5C,aAAc,EAAgB,QAAS,YAEvC,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,QAAQ,CAAA,UAAE,OAInB,CAEA,SAAS,EAAc,QACrB,CAAM,CACN,SAAO,QACP,CAAM,UACN,CAAQ,CAMT,SACuB,AAAtB,GAAyB,CAArB,EAAO,MAAM,CAAe,KAG9B,CAAA,EAAA,EAAA,IAAA,EAAC,UAAA,CAAQ,UAAU,sBAAsB,cAAa,YACpD,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAG,UAAU,iDAAyC,IACvD,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,+BACZ,EAAO,GAAG,CAAC,AAAC,GACX,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,kBAAkB,CAAA,CAEjB,MAAO,CAAC,MAAM,EAAE,EAAM,MAAM,CAAA,EAAG,EAAM,KAAK,CAAG,CAAC,EAAE,EAAE,EAAM,KAAK,CAAA,CAAE,CAAG,GAAA,CAAI,CACtE,aAAa,EACb,WAAY,CAAC,KAAK,EAAE,EAAS,OAAO,EAAE,EAAM,MAAM,CAAA,CAAE,CACpD,aAAc,EAAc,YAE5B,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,gCACZ,EAAM,cAAc,CAAC,MAAM,CAAG,GAC7B,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,cAAa,CAAC,MAAM,EAAE,EAAM,MAAM,CAAC,WAAW,CAAC,UAClD,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,KAAK,CAAA,WACJ,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,WAAW,CAAA,UACV,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,QAAQ,CAAA,WACP,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,SAAS,CAAA,UAAC,OACX,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,SAAS,CAAA,UAAC,YACX,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,SAAS,CAAA,UAAC,gBACX,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,SAAS,CAAA,UAAC,cACX,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,SAAS,CAAA,UAAC,eAGf,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,SAAS,CAAA,UACP,EAAM,cAAc,CAAC,GAAG,CAAC,AAAC,GACzB,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,QAAQ,CAAA,WACP,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,SAAS,CAAA,UACR,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,6BAAqB,EAAI,EAAE,KAE7C,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,SAAS,CAAA,UAAE,EAAI,OAAO,GACvB,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,SAAS,CAAA,WAAC,SAAO,EAAI,UAAU,IAChC,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,SAAS,CAAA,WAAC,SAAO,EAAI,QAAQ,IAC9B,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,SAAS,CAAA,UACR,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CAAC,QAAS,EAAa,EAAI,KAAK,WACnC,EAAI,KAAK,OATD,EAAI,EAAE,UAkB/B,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,QAAQ,CAAA,UAAE,EAAM,OAAO,OAvCrB,EAAM,MAAM,OA8C7B,CAEA,SAAS,EAAoB,cAC3B,CAAY,CAGb,EACC,IAAM,EAAU,OAAO,OAAO,CAAC,UACR,AAAvB,GAA0B,CAAtB,EAAQ,MAAM,CAAe,KAE/B,CAAA,EAAA,EAAA,IAAA,EAAC,UAAA,CACC,UAAU,sBACV,cAAY,kCAEZ,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAG,UAAU,iDAAwC,0CAGtD,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAE,UAAU,iCAAwB,wHAIrC,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CAAI,UAAU,+BACZ,EAAQ,GAAG,CAAC,CAAC,CAAC,EAAU,EAAI,GAC3B,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,kBAAkB,CAAA,CAEjB,MAAO,EACP,aAAa,WAEb,CAAA,EAAA,EAAA,GAAA,EAAC,MAAA,CACC,UAAU,6FACV,cAAa,CAAC,IAAI,EAAE,EAAA,CAAU,UAE7B,KARE,QAejB,CAEA,SAAS,EAAqB,CAC5B,MAAI,OACJ,CAAK,CAIN,EAEC,GAAI,EACF,KADS,CACF,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAA0B,SAAU,EAAK,IAAI,CAAE,MAAO,IAEhE,GAAI,CAAC,EAAK,aAAa,CACrB,CADuB,KAErB,CAAA,EAAA,EAAA,GAAA,EAAC,UAAA,CACC,UAAU,sBACV,cAAY,iCAEZ,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,kBAAkB,CAAA,CACjB,MAAM,gBACN,aAAa,EACb,WAAY,CAAC,KAAK,EAAE,EAAK,IAAI,CAAC,sBAAsB,CAAC,CACrD,aAAc,OAAyB,YAEvC,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CACC,UAAU,wBACV,cAAY,+BACb,mDAQT,IAAM,EAAa,EAAK,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,GAC/C,EAAa,EAAK,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,GAEnD,MACE,CAAA,EAAA,EAAA,GAAA,EAAC,UAAA,CACC,UAAU,sBACV,cAAY,iCAEZ,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,kBAAkB,CAAA,CACjB,MAAM,gBACN,YAAa,GACb,WAAY,CAAC,KAAK,EAAE,EAAK,IAAI,CAAC,sBAAsB,CAAC,CACrD,YACE,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CAAC,QAAS,EAAK,aAAa,CAAC,QAAQ,CAAG,UAAY,oBACvD,EAAK,aAAa,CAAC,QAAQ,CAAG,WAAa,gBAGhD,aAAc,EAAyB,EAAK,aAAa,WAEzD,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,gCACU,IAAtB,EAAW,MAAM,EAChB,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAE,UAAU,iCAAwB,8BAEtC,EAAW,MAAM,CAAG,GACnB,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CACC,UAAU,sBACV,cAAY,oCAEX,EAAW,GAAG,CAAC,AAAC,GACf,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAEC,MAAO,GADF,CAAA,EAAG,EAAM,SAAS,CAAC,CAAC,EAAE,EAAM,UAAU,CAAC,KAAK,CAAC,EAAG,IAAA,CAAK,KAMjE,GACC,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CACC,UAAU,4EACV,cAAY,qCAEZ,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,yBAAgB,gBAAmB,IAClD,EAAW,MAAM,UAOhC,CAQA,SAAS,EAA0B,UACjC,CAAQ,OACR,CAAK,CAIN,EACC,IAAM,EAAiB,EAAsB,EAAM,OAAO,EACpD,EAAwB,EAAM,cAAc,CAAC,KAAK,CACtD,AAAC,GAAkB,YAAZ,EAAE,KAAK,EAAkB,AAAY,cAAV,KAAK,EAEnC,EAAkB,EAAe,KAAK,CAAC,AAAC,GAAM,EAAE,OAAO,EACvD,EAAW,GAAyB,EAE1C,MACE,CAAA,EAAA,EAAA,GAAA,EAAC,UAAA,CACC,UAAU,sBACV,cAAY,iCAEZ,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,kBAAkB,CAAA,CACjB,MACE,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,QAAA,CAAA,WAAE,gBAEC,EAAM,KAAK,CACV,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,CAAK,UAAU,mDAAyC,UAC/C,EAAM,MAAM,CAAC,KAAG,EAAM,KAAK,CAAC,OAEpC,QAGR,aAAa,EACb,WAAY,CAAC,KAAK,EAAE,EAAS,sBAAsB,CAAC,CACpD,YACE,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CAAC,QAAS,EAAW,UAAY,oBACpC,EAAW,WAAa,gBAG7B,aAAc,EAA2B,YAEzC,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,gCACZ,EAAM,cAAc,CAAC,MAAM,CAAG,GAC7B,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,cAAY,qCACf,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAG,UAAU,oDAA2C,eAGzD,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,KAAK,CAAA,WACJ,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,WAAW,CAAA,UACV,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,QAAQ,CAAA,WACP,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,SAAS,CAAA,UAAC,OACX,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,SAAS,CAAA,UAAC,YACX,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,SAAS,CAAA,UAAC,eAGf,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,SAAS,CAAA,UACP,EAAM,cAAc,CAAC,GAAG,CAAC,AAAC,GACzB,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,QAAQ,CAAA,WACP,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,SAAS,CAAA,UACR,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,6BAAqB,EAAI,EAAE,KAE7C,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,SAAS,CAAA,UAAE,EAAI,OAAO,GACvB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,SAAS,CAAA,UACR,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CAAC,QAAS,EAAa,EAAI,KAAK,WACnC,EAAI,KAAK,OAPD,EAAI,EAAE,WAiB9B,EAAe,MAAM,CAAG,GACvB,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,cAAY,0BAA0B,UAAU,iBACnD,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAG,UAAU,+CAAsC,cACpD,CAAA,EAAA,EAAA,GAAA,EAAC,KAAA,CAAG,UAAU,+BACX,EAAe,GAAG,CAAC,AAAC,GACnB,CAAA,EAAA,EAAA,IAAA,EAAC,KAAA,CAEC,UAAU,yDAEV,CAAA,EAAA,EAAA,IAAA,EAAC,OAAA,CAAK,UAAU,4CAAkC,IAC9C,EAAK,OAAO,CAAG,IAAM,IAAI,OAE7B,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CACC,UACE,EAAK,OAAO,CAAG,6BAA+B,YAG/C,EAAK,IAAI,KAXP,CAAA,EAAG,EAAK,OAAO,CAAG,IAAM,IAAI,CAAC,EAAE,EAAK,IAAI,CAAA,CAAE,cAsBnE,CAEA,SAAS,EAAe,OAAE,CAAK,CAA8B,MA2BrC,EA1BtB,KA0BgD,CAzB9C,CAAA,EAAA,EAAA,IAAA,EAAC,KAAA,CACC,UAAU,+DACV,cAAa,CAAC,WAAW,EAAE,EAAM,OAAO,CAAA,CAAE,WAE1C,CAAA,EAAA,EAAA,IAAA,EAAC,MAAA,CAAI,UAAU,oDACb,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,+CAAsC,eACtD,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,KAAK,CAAA,CAAC,QAoBG,AAAhB,AAAI,CApBkB,eAoBU,IApBK,EAAM,OAAO,EAoBX,UACvB,cAAc,CAA1B,EAAiC,WAC9B,WAAW,QAtBoC,EAAM,OAsBzB,AAtBgC,MAE/D,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAE,UAAU,iCAAyB,EAAM,UAAU,GACrD,EAAM,QAAQ,EACb,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAE,UAAU,2CAAmC,EAAM,QAAQ,GAE/D,EAAM,IAAI,EAAI,CAAA,EAAA,EAAA,GAAA,EAAC,IAAA,CAAE,UAAU,iCAAyB,EAAM,IAAI,KAGrE,CAEA,SAAS,EAAa,CAAe,EACnC,MAAsB,eAAf,EAAM,IAAI,AACnB,CAEA,SAAS,EAAa,CAAe,EACnC,MAAsB,eAAf,EAAM,IAAI,AACnB,CAoBA,SAAS,EAAa,CAAa,EACjC,IAAM,EAAa,EAAM,WAAW,SACpC,AACE,CACE,UACA,UACA,UACA,UACA,WACA,UACD,CAAC,QAAQ,CAAC,GAEJ,EAEF,QAHL,CAIJ,CDljBA,IAAA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,KAmBe,eAAe,EAAS,QAAE,CAAM,CAAiB,EAC9D,GAAM,SAAE,CAAO,MAAE,CAAI,CAAE,CAAG,MAAM,EAC1B,EAAc,CAAA,EAAA,EAAA,cAAA,AAAc,EAAC,GACnC,GAAI,CAAC,GAAe,CAAC,CAAA,EAAA,EAAA,iBAAA,AAAiB,EAAC,GAAc,OAAO,KAE5D,GAAM,CAAC,EAAQ,EAAS,CAAG,MAAM,QAAQ,GAAG,CAAC,CAC3C,CAAA,EAAA,EAAA,eAAA,AAAe,EAAC,GAChB,CAAA,EAAA,EAAA,iBAAA,AAAiB,EAAC,GACnB,EACK,EACJ,EAAO,IAAI,CAAC,AAAC,GAAM,EAAE,IAAI,GAAK,IAC9B,EAAS,IAAI,CAAC,AAAC,GAAM,EAAE,IAAI,GAAK,GAIlC,OAHI,AAAC,GACH,CAAA,EADSJ,AACT,EAAA,QAAA,AAAQ,IAEH,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAW,KAAM,GAC3B","ignoreList":[0]}
@@ -7,9 +7,9 @@ globalThis.__BUILD_MANIFEST = {
7
7
  "static/chunks/03~yq9q893hmn.js"
8
8
  ],
9
9
  "lowPriorityFiles": [
10
- "static/JiUWQvZsup7FxUQYQuZG8/_buildManifest.js",
11
- "static/JiUWQvZsup7FxUQYQuZG8/_ssgManifest.js",
12
- "static/JiUWQvZsup7FxUQYQuZG8/_clientMiddlewareManifest.js"
10
+ "static/chwqn4zbU29xc3s0HiFdC/_buildManifest.js",
11
+ "static/chwqn4zbU29xc3s0HiFdC/_ssgManifest.js",
12
+ "static/chwqn4zbU29xc3s0HiFdC/_clientMiddlewareManifest.js"
13
13
  ],
14
14
  "rootMainFiles": [
15
15
  "static/chunks/15r3deq0oc~d..js",
@@ -1 +1 @@
1
- <!DOCTYPE html><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/15r3deq0oc~d..js"/><script src="/_next/static/chunks/0_r.3~d-5z8~_.js" async=""></script><script src="/_next/static/chunks/02p8lah64~lvh.js" async=""></script><script src="/_next/static/chunks/0gomaooulfzoq.js" async=""></script><script src="/_next/static/chunks/turbopack-130jszne6su0h.js" async=""></script><script src="/_next/static/chunks/0.v8w524wvk94.js" async=""></script><script src="/_next/static/chunks/0yelgl0o38y_u.js" async=""></script><meta name="next-size-adjust" content=""/><title>500: This page couldn’t load</title><link rel="icon" href="/favicon.ico?favicon.0x3dzn~oxb6tn.ico" sizes="256x256" type="image/x-icon"/><style>:root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }</style><script src="/_next/static/chunks/03~yq9q893hmn.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;display:flex;align-items:center;justify-content:center"><div style="margin-top:-32px;max-width:325px;padding:32px 28px;text-align:left"><svg width="32" height="32" viewBox="-0.2 -1.5 32 32" fill="none" style="margin-bottom:24px"><path d="M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z" fill="var(--next-error-title)"></path></svg><h1 style="font-size:24px;font-weight:500;letter-spacing:-0.02em;line-height:32px;margin:0 0 12px 0;color:var(--next-error-title)">This page couldn’t load</h1><p style="font-size:14px;font-weight:400;line-height:21px;margin:0 0 20px 0;color:var(--next-error-message)">A server error occurred. Reload to try again.</p><form style="margin:0"><button type="submit" style="display:inline-flex;align-items:center;justify-content:center;height:32px;padding:0 12px;font-size:14px;font-weight:500;line-height:20px;border-radius:6px;cursor:pointer;color:var(--next-error-btn-text);background:var(--next-error-btn-bg);border:var(--next-error-btn-border)">Reload</button></form></div></div><!--$--><!--/$--><script src="/_next/static/chunks/15r3deq0oc~d..js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[85530,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0yelgl0o38y_u.js\"],\"default\"]\n3:I[50571,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0yelgl0o38y_u.js\"],\"default\"]\n4:I[76614,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0yelgl0o38y_u.js\"],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[76614,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0yelgl0o38y_u.js\"],\"ViewportBoundary\"]\na:I[76614,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0yelgl0o38y_u.js\"],\"MetadataBoundary\"]\nc:I[59179,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0yelgl0o38y_u.js\"],\"default\",1]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"__PAGE__\",{}]}],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"title\",null,{\"children\":\"500: This page couldn’t load\"}],[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }\"}}]]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"display\":\"flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"marginTop\":\"-32px\",\"maxWidth\":\"325px\",\"padding\":\"32px 28px\",\"textAlign\":\"left\"},\"children\":[[\"$\",\"svg\",null,{\"width\":\"32\",\"height\":\"32\",\"viewBox\":\"-0.2 -1.5 32 32\",\"fill\":\"none\",\"style\":{\"marginBottom\":\"24px\"},\"children\":[\"$\",\"path\",null,{\"d\":\"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z\",\"fill\":\"var(--next-error-title)\"}]}],[\"$\",\"h1\",null,{\"style\":{\"fontSize\":\"24px\",\"fontWeight\":500,\"letterSpacing\":\"-0.02em\",\"lineHeight\":\"32px\",\"margin\":\"0 0 12px 0\",\"color\":\"var(--next-error-title)\"},\"children\":\"This page couldn’t load\"}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":\"14px\",\"fontWeight\":400,\"lineHeight\":\"21px\",\"margin\":\"0 0 20px 0\",\"color\":\"var(--next-error-message)\"},\"children\":\"A server error occurred. Reload to try again.\"}],[\"$\",\"form\",null,{\"style\":{\"margin\":0},\"children\":[\"$\",\"button\",null,{\"type\":\"submit\",\"style\":{\"display\":\"inline-flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\",\"height\":\"32px\",\"padding\":\"0 12px\",\"fontSize\":\"14px\",\"fontWeight\":500,\"lineHeight\":\"20px\",\"borderRadius\":\"6px\",\"cursor\":\"pointer\",\"color\":\"var(--next-error-btn-text)\",\"background\":\"var(--next-error-btn-bg)\",\"border\":\"var(--next-error-btn-border)\"},\"children\":\"Reload\"}]}]]}]}]}]]}],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,null]},null,false,\"$@7\"],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$La\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lb\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$c\",[]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"JiUWQvZsup7FxUQYQuZG8\"}\n"])</script><script>self.__next_f.push([1,"d:[]\n7:\"$Wd\"\n"])</script><script>self.__next_f.push([1,"9:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"e:I[61299,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0yelgl0o38y_u.js\"],\"IconMark\"]\n6:null\nb:[[\"$\",\"link\",\"0\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?favicon.0x3dzn~oxb6tn.ico\",\"sizes\":\"256x256\",\"type\":\"image/x-icon\"}],[\"$\",\"$Le\",\"1\",{}]]\n"])</script></body></html>
1
+ <!DOCTYPE html><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/15r3deq0oc~d..js"/><script src="/_next/static/chunks/0_r.3~d-5z8~_.js" async=""></script><script src="/_next/static/chunks/02p8lah64~lvh.js" async=""></script><script src="/_next/static/chunks/0gomaooulfzoq.js" async=""></script><script src="/_next/static/chunks/turbopack-130jszne6su0h.js" async=""></script><script src="/_next/static/chunks/0.v8w524wvk94.js" async=""></script><script src="/_next/static/chunks/0yelgl0o38y_u.js" async=""></script><meta name="next-size-adjust" content=""/><title>500: This page couldn’t load</title><link rel="icon" href="/favicon.ico?favicon.0x3dzn~oxb6tn.ico" sizes="256x256" type="image/x-icon"/><style>:root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }</style><script src="/_next/static/chunks/03~yq9q893hmn.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;display:flex;align-items:center;justify-content:center"><div style="margin-top:-32px;max-width:325px;padding:32px 28px;text-align:left"><svg width="32" height="32" viewBox="-0.2 -1.5 32 32" fill="none" style="margin-bottom:24px"><path d="M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z" fill="var(--next-error-title)"></path></svg><h1 style="font-size:24px;font-weight:500;letter-spacing:-0.02em;line-height:32px;margin:0 0 12px 0;color:var(--next-error-title)">This page couldn’t load</h1><p style="font-size:14px;font-weight:400;line-height:21px;margin:0 0 20px 0;color:var(--next-error-message)">A server error occurred. Reload to try again.</p><form style="margin:0"><button type="submit" style="display:inline-flex;align-items:center;justify-content:center;height:32px;padding:0 12px;font-size:14px;font-weight:500;line-height:20px;border-radius:6px;cursor:pointer;color:var(--next-error-btn-text);background:var(--next-error-btn-bg);border:var(--next-error-btn-border)">Reload</button></form></div></div><!--$--><!--/$--><script src="/_next/static/chunks/15r3deq0oc~d..js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[85530,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0yelgl0o38y_u.js\"],\"default\"]\n3:I[50571,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0yelgl0o38y_u.js\"],\"default\"]\n4:I[76614,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0yelgl0o38y_u.js\"],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[76614,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0yelgl0o38y_u.js\"],\"ViewportBoundary\"]\na:I[76614,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0yelgl0o38y_u.js\"],\"MetadataBoundary\"]\nc:I[59179,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0yelgl0o38y_u.js\"],\"default\",1]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"__PAGE__\",{}]}],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"title\",null,{\"children\":\"500: This page couldn’t load\"}],[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }\"}}]]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"display\":\"flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"marginTop\":\"-32px\",\"maxWidth\":\"325px\",\"padding\":\"32px 28px\",\"textAlign\":\"left\"},\"children\":[[\"$\",\"svg\",null,{\"width\":\"32\",\"height\":\"32\",\"viewBox\":\"-0.2 -1.5 32 32\",\"fill\":\"none\",\"style\":{\"marginBottom\":\"24px\"},\"children\":[\"$\",\"path\",null,{\"d\":\"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z\",\"fill\":\"var(--next-error-title)\"}]}],[\"$\",\"h1\",null,{\"style\":{\"fontSize\":\"24px\",\"fontWeight\":500,\"letterSpacing\":\"-0.02em\",\"lineHeight\":\"32px\",\"margin\":\"0 0 12px 0\",\"color\":\"var(--next-error-title)\"},\"children\":\"This page couldn’t load\"}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":\"14px\",\"fontWeight\":400,\"lineHeight\":\"21px\",\"margin\":\"0 0 20px 0\",\"color\":\"var(--next-error-message)\"},\"children\":\"A server error occurred. Reload to try again.\"}],[\"$\",\"form\",null,{\"style\":{\"margin\":0},\"children\":[\"$\",\"button\",null,{\"type\":\"submit\",\"style\":{\"display\":\"inline-flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\",\"height\":\"32px\",\"padding\":\"0 12px\",\"fontSize\":\"14px\",\"fontWeight\":500,\"lineHeight\":\"20px\",\"borderRadius\":\"6px\",\"cursor\":\"pointer\",\"color\":\"var(--next-error-btn-text)\",\"background\":\"var(--next-error-btn-bg)\",\"border\":\"var(--next-error-btn-border)\"},\"children\":\"Reload\"}]}]]}]}]}]]}],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,null]},null,false,\"$@7\"],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$La\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lb\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$c\",[]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"chwqn4zbU29xc3s0HiFdC\"}\n"])</script><script>self.__next_f.push([1,"d:[]\n7:\"$Wd\"\n"])</script><script>self.__next_f.push([1,"9:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"e:I[61299,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0yelgl0o38y_u.js\"],\"IconMark\"]\n6:null\nb:[[\"$\",\"link\",\"0\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?favicon.0x3dzn~oxb6tn.ico\",\"sizes\":\"256x256\",\"type\":\"image/x-icon\"}],[\"$\",\"$Le\",\"1\",{}]]\n"])</script></body></html>
@@ -1 +1 @@
1
- self.__RSC_SERVER_MANIFEST="{\n \"node\": {},\n \"edge\": {},\n \"encryptionKey\": \"VGmsNAiI0jKPa/n2sdUroWbdJLu+m9WbRDYEm10/lYk=\"\n}"
1
+ self.__RSC_SERVER_MANIFEST="{\n \"node\": {},\n \"edge\": {},\n \"encryptionKey\": \"yDHopK6wXqiUo4cylhzQRnD7lWGZzhMZo+zOkhsGHjE=\"\n}"
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "node": {},
3
3
  "edge": {},
4
- "encryptionKey": "VGmsNAiI0jKPa/n2sdUroWbdJLu+m9WbRDYEm10/lYk="
4
+ "encryptionKey": "yDHopK6wXqiUo4cylhzQRnD7lWGZzhMZo+zOkhsGHjE="
5
5
  }
package/admin/.next/trace CHANGED
@@ -1 +1 @@
1
- [{"name":"generate-buildid","duration":161,"timestamp":156072578904,"id":4,"parentId":1,"tags":{},"startTime":1784959853452,"traceId":"3849680ac47b740f"},{"name":"load-custom-routes","duration":241,"timestamp":156072579134,"id":5,"parentId":1,"tags":{},"startTime":1784959853452,"traceId":"3849680ac47b740f"},{"name":"create-dist-dir","duration":112,"timestamp":156072579395,"id":6,"parentId":1,"tags":{},"startTime":1784959853453,"traceId":"3849680ac47b740f"},{"name":"clean","duration":54687,"timestamp":156072580195,"id":7,"parentId":1,"tags":{},"startTime":1784959853453,"traceId":"3849680ac47b740f"},{"name":"discover-routes","duration":3762,"timestamp":156072640548,"id":8,"parentId":1,"tags":{},"startTime":1784959853514,"traceId":"3849680ac47b740f"},{"name":"create-root-mapping","duration":35,"timestamp":156072644344,"id":9,"parentId":1,"tags":{},"startTime":1784959853517,"traceId":"3849680ac47b740f"},{"name":"generate-route-types","duration":11954,"timestamp":156072645131,"id":10,"parentId":1,"tags":{},"startTime":1784959853518,"traceId":"3849680ac47b740f"},{"name":"public-dir-conflict-check","duration":69,"timestamp":156072657136,"id":11,"parentId":1,"tags":{},"startTime":1784959853530,"traceId":"3849680ac47b740f"},{"name":"generate-routes-manifest","duration":1154,"timestamp":156072657255,"id":12,"parentId":1,"tags":{},"startTime":1784959853530,"traceId":"3849680ac47b740f"},{"name":"run-turbopack","duration":5645350,"timestamp":156072660213,"id":14,"parentId":1,"tags":{},"startTime":1784959853533,"traceId":"3849680ac47b740f"},{"name":"turbopack-build-events","duration":44,"timestamp":156072838082,"id":15,"parentId":1,"tags":{},"startTime":1784959853711,"traceId":"3849680ac47b740f"},{"name":"run-typescript","duration":2498085,"timestamp":156078349587,"id":16,"parentId":1,"tags":{},"startTime":1784959859223,"traceId":"3849680ac47b740f"},{"name":"generate-required-server-files","duration":1112,"timestamp":156080850163,"id":18,"parentId":1,"tags":{},"startTime":1784959861723,"traceId":"3849680ac47b740f"},{"name":"check-static-error-page","duration":3314,"timestamp":156080860623,"id":20,"parentId":19,"tags":{},"startTime":1784959861734,"traceId":"3849680ac47b740f"},{"name":"is-page-static","duration":178446,"timestamp":156080866168,"id":30,"parentId":22,"tags":{},"startTime":1784959861739,"traceId":"3849680ac47b740f"},{"name":"check-page","duration":181682,"timestamp":156080863152,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1784959861736,"traceId":"3849680ac47b740f"},{"name":"is-page-static","duration":228821,"timestamp":156080866198,"id":31,"parentId":23,"tags":{},"startTime":1784959861739,"traceId":"3849680ac47b740f"},{"name":"check-page","duration":231652,"timestamp":156080863439,"id":23,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1784959861737,"traceId":"3849680ac47b740f"},{"name":"is-page-static","duration":244995,"timestamp":156080866054,"id":29,"parentId":21,"tags":{},"startTime":1784959861739,"traceId":"3849680ac47b740f"},{"name":"check-page","duration":248860,"timestamp":156080862230,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1784959861735,"traceId":"3849680ac47b740f"},{"name":"is-page-static","duration":241676,"timestamp":156080873897,"id":32,"parentId":28,"tags":{},"startTime":1784959861747,"traceId":"3849680ac47b740f"},{"name":"check-page","duration":251714,"timestamp":156080863887,"id":28,"parentId":19,"tags":{"page":"/"},"startTime":1784959861737,"traceId":"3849680ac47b740f"},{"name":"is-page-static","duration":246755,"timestamp":156080874000,"id":33,"parentId":24,"tags":{},"startTime":1784959861747,"traceId":"3849680ac47b740f"},{"name":"check-page","duration":257097,"timestamp":156080863714,"id":24,"parentId":19,"tags":{"page":"/p/[project]"},"startTime":1784959861737,"traceId":"3849680ac47b740f"},{"name":"is-page-static","duration":249676,"timestamp":156080874031,"id":34,"parentId":25,"tags":{},"startTime":1784959861747,"traceId":"3849680ac47b740f"},{"name":"check-page","duration":260018,"timestamp":156080863759,"id":25,"parentId":19,"tags":{"page":"/p/[project]/plan/[name]"},"startTime":1784959861737,"traceId":"3849680ac47b740f"},{"name":"is-page-static","duration":251316,"timestamp":156080874093,"id":36,"parentId":27,"tags":{},"startTime":1784959861747,"traceId":"3849680ac47b740f"},{"name":"check-page","duration":261626,"timestamp":156080863838,"id":27,"parentId":19,"tags":{"page":"/p/[project]/scorecards"},"startTime":1784959861737,"traceId":"3849680ac47b740f"},{"name":"is-page-static","duration":253681,"timestamp":156080874057,"id":35,"parentId":26,"tags":{},"startTime":1784959861747,"traceId":"3849680ac47b740f"},{"name":"check-page","duration":263962,"timestamp":156080863804,"id":26,"parentId":19,"tags":{"page":"/p/[project]/research/[slug]"},"startTime":1784959861737,"traceId":"3849680ac47b740f"},{"name":"static-check","duration":267549,"timestamp":156080860233,"id":19,"parentId":1,"tags":{},"startTime":1784959861733,"traceId":"3849680ac47b740f"},{"name":"write-routes-manifest","duration":543,"timestamp":156081131961,"id":38,"parentId":1,"tags":{},"startTime":1784959862005,"traceId":"3849680ac47b740f"},{"name":"load-dotenv","duration":21,"timestamp":156081138507,"id":41,"parentId":40,"tags":{},"startTime":1784959862012,"traceId":"3849680ac47b740f"},{"name":"run-export-path-map","duration":229,"timestamp":156081139930,"id":42,"parentId":40,"tags":{},"startTime":1784959862013,"traceId":"3849680ac47b740f"},{"name":"next-export","duration":197982,"timestamp":156081137935,"id":40,"parentId":1,"tags":{},"startTime":1784959862011,"traceId":"3849680ac47b740f"},{"name":"move-exported-app-global-error-","duration":451,"timestamp":156081336613,"id":43,"parentId":39,"tags":{},"startTime":1784959862210,"traceId":"3849680ac47b740f"},{"name":"static-generation","duration":204192,"timestamp":156081133750,"id":39,"parentId":1,"tags":{},"startTime":1784959862007,"traceId":"3849680ac47b740f"},{"name":"write-routes-manifest","duration":287,"timestamp":156081338051,"id":44,"parentId":1,"tags":{},"startTime":1784959862211,"traceId":"3849680ac47b740f"},{"name":"print-tree-view","duration":1104,"timestamp":156081348551,"id":45,"parentId":1,"tags":{},"startTime":1784959862222,"traceId":"3849680ac47b740f"},{"name":"write-route-bundle-stats","duration":2844,"timestamp":156081349666,"id":46,"parentId":1,"tags":{},"startTime":1784959862223,"traceId":"3849680ac47b740f"},{"name":"telemetry-flush","duration":490411,"timestamp":156081352517,"id":47,"parentId":1,"tags":{},"startTime":1784959862226,"traceId":"3849680ac47b740f"},{"name":"next-build","duration":9359933,"timestamp":156072483063,"id":1,"tags":{"buildMode":"default","version":"16.2.4","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1784959853356,"traceId":"3849680ac47b740f"}]
1
+ [{"name":"generate-buildid","duration":92,"timestamp":640335585207,"id":4,"parentId":1,"tags":{},"startTime":1785444116241,"traceId":"ad5f0a270b7270f0"},{"name":"load-custom-routes","duration":190,"timestamp":640335585347,"id":5,"parentId":1,"tags":{},"startTime":1785444116241,"traceId":"ad5f0a270b7270f0"},{"name":"create-dist-dir","duration":101,"timestamp":640335585549,"id":6,"parentId":1,"tags":{},"startTime":1785444116241,"traceId":"ad5f0a270b7270f0"},{"name":"clean","duration":25156,"timestamp":640335586142,"id":7,"parentId":1,"tags":{},"startTime":1785444116242,"traceId":"ad5f0a270b7270f0"},{"name":"discover-routes","duration":3166,"timestamp":640335616416,"id":8,"parentId":1,"tags":{},"startTime":1785444116272,"traceId":"ad5f0a270b7270f0"},{"name":"create-root-mapping","duration":32,"timestamp":640335619610,"id":9,"parentId":1,"tags":{},"startTime":1785444116275,"traceId":"ad5f0a270b7270f0"},{"name":"generate-route-types","duration":10026,"timestamp":640335620234,"id":10,"parentId":1,"tags":{},"startTime":1785444116276,"traceId":"ad5f0a270b7270f0"},{"name":"public-dir-conflict-check","duration":51,"timestamp":640335630306,"id":11,"parentId":1,"tags":{},"startTime":1785444116286,"traceId":"ad5f0a270b7270f0"},{"name":"generate-routes-manifest","duration":1178,"timestamp":640335630402,"id":12,"parentId":1,"tags":{},"startTime":1785444116286,"traceId":"ad5f0a270b7270f0"},{"name":"run-turbopack","duration":5202285,"timestamp":640335635469,"id":14,"parentId":1,"tags":{},"startTime":1785444116291,"traceId":"ad5f0a270b7270f0"},{"name":"turbopack-build-events","duration":39,"timestamp":640335769967,"id":15,"parentId":1,"tags":{},"startTime":1785444116426,"traceId":"ad5f0a270b7270f0"},{"name":"run-typescript","duration":2171455,"timestamp":640340881224,"id":16,"parentId":1,"tags":{},"startTime":1785444121537,"traceId":"ad5f0a270b7270f0"},{"name":"generate-required-server-files","duration":1087,"timestamp":640343054201,"id":18,"parentId":1,"tags":{},"startTime":1785444123710,"traceId":"ad5f0a270b7270f0"},{"name":"check-static-error-page","duration":3458,"timestamp":640343071438,"id":20,"parentId":19,"tags":{},"startTime":1785444123727,"traceId":"ad5f0a270b7270f0"},{"name":"is-page-static","duration":158167,"timestamp":640343078276,"id":30,"parentId":22,"tags":{},"startTime":1785444123734,"traceId":"ad5f0a270b7270f0"},{"name":"check-page","duration":162550,"timestamp":640343074013,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1785444123730,"traceId":"ad5f0a270b7270f0"},{"name":"is-page-static","duration":199667,"timestamp":640343078097,"id":29,"parentId":21,"tags":{},"startTime":1785444123734,"traceId":"ad5f0a270b7270f0"},{"name":"check-page","duration":204843,"timestamp":640343072951,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1785444123729,"traceId":"ad5f0a270b7270f0"},{"name":"is-page-static","duration":203509,"timestamp":640343078307,"id":31,"parentId":23,"tags":{},"startTime":1785444123734,"traceId":"ad5f0a270b7270f0"},{"name":"check-page","duration":207450,"timestamp":640343074388,"id":23,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1785444123730,"traceId":"ad5f0a270b7270f0"},{"name":"is-page-static","duration":210488,"timestamp":640343082744,"id":33,"parentId":24,"tags":{},"startTime":1785444123738,"traceId":"ad5f0a270b7270f0"},{"name":"check-page","duration":218602,"timestamp":640343074662,"id":24,"parentId":19,"tags":{"page":"/p/[project]"},"startTime":1785444123730,"traceId":"ad5f0a270b7270f0"},{"name":"is-page-static","duration":211123,"timestamp":640343082659,"id":32,"parentId":28,"tags":{},"startTime":1785444123738,"traceId":"ad5f0a270b7270f0"},{"name":"check-page","duration":218964,"timestamp":640343074854,"id":28,"parentId":19,"tags":{"page":"/"},"startTime":1785444123730,"traceId":"ad5f0a270b7270f0"},{"name":"is-page-static","duration":215133,"timestamp":640343082842,"id":36,"parentId":27,"tags":{},"startTime":1785444123738,"traceId":"ad5f0a270b7270f0"},{"name":"check-page","duration":223235,"timestamp":640343074810,"id":27,"parentId":19,"tags":{"page":"/p/[project]/scorecards"},"startTime":1785444123730,"traceId":"ad5f0a270b7270f0"},{"name":"is-page-static","duration":215333,"timestamp":640343082809,"id":35,"parentId":26,"tags":{},"startTime":1785444123738,"traceId":"ad5f0a270b7270f0"},{"name":"check-page","duration":223406,"timestamp":640343074766,"id":26,"parentId":19,"tags":{"page":"/p/[project]/research/[slug]"},"startTime":1785444123730,"traceId":"ad5f0a270b7270f0"},{"name":"is-page-static","duration":215932,"timestamp":640343082781,"id":34,"parentId":25,"tags":{},"startTime":1785444123738,"traceId":"ad5f0a270b7270f0"},{"name":"check-page","duration":224019,"timestamp":640343074720,"id":25,"parentId":19,"tags":{"page":"/p/[project]/plan/[name]"},"startTime":1785444123730,"traceId":"ad5f0a270b7270f0"},{"name":"static-check","duration":231509,"timestamp":640343067246,"id":19,"parentId":1,"tags":{},"startTime":1785444123723,"traceId":"ad5f0a270b7270f0"},{"name":"write-routes-manifest","duration":2771,"timestamp":640343303059,"id":38,"parentId":1,"tags":{},"startTime":1785444123959,"traceId":"ad5f0a270b7270f0"},{"name":"load-dotenv","duration":25,"timestamp":640343312058,"id":41,"parentId":40,"tags":{},"startTime":1785444123968,"traceId":"ad5f0a270b7270f0"},{"name":"run-export-path-map","duration":185,"timestamp":640343313148,"id":42,"parentId":40,"tags":{},"startTime":1785444123969,"traceId":"ad5f0a270b7270f0"},{"name":"next-export","duration":188098,"timestamp":640343311553,"id":40,"parentId":1,"tags":{},"startTime":1785444123967,"traceId":"ad5f0a270b7270f0"},{"name":"move-exported-app-global-error-","duration":437,"timestamp":640343500339,"id":43,"parentId":39,"tags":{},"startTime":1785444124156,"traceId":"ad5f0a270b7270f0"},{"name":"static-generation","duration":193591,"timestamp":640343307908,"id":39,"parentId":1,"tags":{},"startTime":1785444123963,"traceId":"ad5f0a270b7270f0"},{"name":"write-routes-manifest","duration":158,"timestamp":640343501594,"id":44,"parentId":1,"tags":{},"startTime":1785444124157,"traceId":"ad5f0a270b7270f0"},{"name":"print-tree-view","duration":1891,"timestamp":640343506797,"id":45,"parentId":1,"tags":{},"startTime":1785444124162,"traceId":"ad5f0a270b7270f0"},{"name":"write-route-bundle-stats","duration":5287,"timestamp":640343508702,"id":46,"parentId":1,"tags":{},"startTime":1785444124164,"traceId":"ad5f0a270b7270f0"},{"name":"telemetry-flush","duration":489155,"timestamp":640343514002,"id":47,"parentId":1,"tags":{},"startTime":1785444124170,"traceId":"ad5f0a270b7270f0"},{"name":"next-build","duration":8507223,"timestamp":640335495991,"id":1,"tags":{"buildMode":"default","version":"16.2.4","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1785444116152,"traceId":"ad5f0a270b7270f0"}]
@@ -1 +1 @@
1
- [{"name":"run-turbopack","duration":5645350,"timestamp":156072660213,"id":14,"parentId":1,"tags":{},"startTime":1784959853533,"traceId":"3849680ac47b740f"},{"name":"turbopack-build-events","duration":44,"timestamp":156072838082,"id":15,"parentId":1,"tags":{},"startTime":1784959853711,"traceId":"3849680ac47b740f"},{"name":"run-typescript","duration":2498085,"timestamp":156078349587,"id":16,"parentId":1,"tags":{},"startTime":1784959859223,"traceId":"3849680ac47b740f"},{"name":"static-check","duration":267549,"timestamp":156080860233,"id":19,"parentId":1,"tags":{},"startTime":1784959861733,"traceId":"3849680ac47b740f"},{"name":"static-generation","duration":204192,"timestamp":156081133750,"id":39,"parentId":1,"tags":{},"startTime":1784959862007,"traceId":"3849680ac47b740f"},{"name":"telemetry-flush","duration":490411,"timestamp":156081352517,"id":47,"parentId":1,"tags":{},"startTime":1784959862226,"traceId":"3849680ac47b740f"},{"name":"next-build","duration":9359933,"timestamp":156072483063,"id":1,"tags":{"buildMode":"default","version":"16.2.4","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1784959853356,"traceId":"3849680ac47b740f"}]
1
+ [{"name":"run-turbopack","duration":5202285,"timestamp":640335635469,"id":14,"parentId":1,"tags":{},"startTime":1785444116291,"traceId":"ad5f0a270b7270f0"},{"name":"turbopack-build-events","duration":39,"timestamp":640335769967,"id":15,"parentId":1,"tags":{},"startTime":1785444116426,"traceId":"ad5f0a270b7270f0"},{"name":"run-typescript","duration":2171455,"timestamp":640340881224,"id":16,"parentId":1,"tags":{},"startTime":1785444121537,"traceId":"ad5f0a270b7270f0"},{"name":"static-check","duration":231509,"timestamp":640343067246,"id":19,"parentId":1,"tags":{},"startTime":1785444123723,"traceId":"ad5f0a270b7270f0"},{"name":"static-generation","duration":193591,"timestamp":640343307908,"id":39,"parentId":1,"tags":{},"startTime":1785444123963,"traceId":"ad5f0a270b7270f0"},{"name":"telemetry-flush","duration":489155,"timestamp":640343514002,"id":47,"parentId":1,"tags":{},"startTime":1785444124170,"traceId":"ad5f0a270b7270f0"},{"name":"next-build","duration":8507223,"timestamp":640335495991,"id":1,"tags":{"buildMode":"default","version":"16.2.4","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1785444116152,"traceId":"ad5f0a270b7270f0"}]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@infinitedusky/indusk-mcp",
3
- "version": "1.35.0",
3
+ "version": "1.35.1",
4
4
  "description": "InDusk development system — skills, MCP tools, and CLI for structured AI-assisted development",
5
5
  "type": "module",
6
6
  "files": [