@infinitedusky/indusk-mcp 1.28.18 → 1.28.19

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 (26) 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/server/app/_global-error.html +1 -1
  5. package/admin/.next/server/app/_global-error.rsc +1 -1
  6. package/admin/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  7. package/admin/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  8. package/admin/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  9. package/admin/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  10. package/admin/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  11. package/admin/.next/server/middleware-build-manifest.js +3 -3
  12. package/admin/.next/server/pages/500.html +1 -1
  13. package/admin/.next/trace +1 -1
  14. package/admin/.next/trace-build +1 -1
  15. package/dist/bin/cli.js +10 -7
  16. package/dist/bin/commands/update.js +22 -63
  17. package/dist/bin/commands/upgrade.d.ts +32 -1
  18. package/dist/bin/commands/upgrade.js +140 -57
  19. package/dist/lib/global-install-manager.d.ts +41 -0
  20. package/dist/lib/global-install-manager.js +45 -0
  21. package/dist/lib/version-check.d.ts +51 -0
  22. package/dist/lib/version-check.js +137 -0
  23. package/package.json +1 -1
  24. /package/admin/.next/static/{mwkqCCI15TP59qrR_B361 → 3rik_r3yzK3Fjeh2XwzNR}/_buildManifest.js +0 -0
  25. /package/admin/.next/static/{mwkqCCI15TP59qrR_B361 → 3rik_r3yzK3Fjeh2XwzNR}/_clientMiddlewareManifest.js +0 -0
  26. /package/admin/.next/static/{mwkqCCI15TP59qrR_B361 → 3rik_r3yzK3Fjeh2XwzNR}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- mwkqCCI15TP59qrR_B361
1
+ 3rik_r3yzK3Fjeh2XwzNR
@@ -7,9 +7,9 @@
7
7
  "static/chunks/03~yq9q893hmn.js"
8
8
  ],
9
9
  "lowPriorityFiles": [
10
- "static/mwkqCCI15TP59qrR_B361/_buildManifest.js",
11
- "static/mwkqCCI15TP59qrR_B361/_ssgManifest.js",
12
- "static/mwkqCCI15TP59qrR_B361/_clientMiddlewareManifest.js"
10
+ "static/3rik_r3yzK3Fjeh2XwzNR/_buildManifest.js",
11
+ "static/3rik_r3yzK3Fjeh2XwzNR/_ssgManifest.js",
12
+ "static/3rik_r3yzK3Fjeh2XwzNR/_clientMiddlewareManifest.js"
13
13
  ],
14
14
  "rootMainFiles": [
15
15
  "static/chunks/0_yzfo7pu205m.js",
@@ -5,9 +5,9 @@
5
5
  "devFiles": [],
6
6
  "polyfillFiles": [],
7
7
  "lowPriorityFiles": [
8
- "static/mwkqCCI15TP59qrR_B361/_buildManifest.js",
9
- "static/mwkqCCI15TP59qrR_B361/_ssgManifest.js",
10
- "static/mwkqCCI15TP59qrR_B361/_clientMiddlewareManifest.js"
8
+ "static/3rik_r3yzK3Fjeh2XwzNR/_buildManifest.js",
9
+ "static/3rik_r3yzK3Fjeh2XwzNR/_ssgManifest.js",
10
+ "static/3rik_r3yzK3Fjeh2XwzNR/_clientMiddlewareManifest.js"
11
11
  ],
12
12
  "rootMainFiles": []
13
13
  }
@@ -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/0_yzfo7pu205m.js"/><script src="/_next/static/chunks/0_r.3~d-5z8~_.js" async=""></script><script src="/_next/static/chunks/0u1lny1.4-f8c.js" async=""></script><script src="/_next/static/chunks/036h9~rhidv.e.js" async=""></script><script src="/_next/static/chunks/turbopack-129yl57l2cd7_.js" async=""></script><script src="/_next/static/chunks/0.v8w524wvk94.js" async=""></script><script src="/_next/static/chunks/0z9652tpun_.d.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/0_yzfo7pu205m.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/0z9652tpun_.d.js\"],\"default\"]\n3:I[50571,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0z9652tpun_.d.js\"],\"default\"]\n4:I[76614,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0z9652tpun_.d.js\"],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[76614,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0z9652tpun_.d.js\"],\"ViewportBoundary\"]\na:I[76614,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0z9652tpun_.d.js\"],\"MetadataBoundary\"]\nc:I[59179,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0z9652tpun_.d.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\":\"mwkqCCI15TP59qrR_B361\"}\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/0z9652tpun_.d.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/0_yzfo7pu205m.js"/><script src="/_next/static/chunks/0_r.3~d-5z8~_.js" async=""></script><script src="/_next/static/chunks/0u1lny1.4-f8c.js" async=""></script><script src="/_next/static/chunks/036h9~rhidv.e.js" async=""></script><script src="/_next/static/chunks/turbopack-129yl57l2cd7_.js" async=""></script><script src="/_next/static/chunks/0.v8w524wvk94.js" async=""></script><script src="/_next/static/chunks/0z9652tpun_.d.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/0_yzfo7pu205m.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/0z9652tpun_.d.js\"],\"default\"]\n3:I[50571,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0z9652tpun_.d.js\"],\"default\"]\n4:I[76614,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0z9652tpun_.d.js\"],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[76614,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0z9652tpun_.d.js\"],\"ViewportBoundary\"]\na:I[76614,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0z9652tpun_.d.js\"],\"MetadataBoundary\"]\nc:I[59179,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0z9652tpun_.d.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\":\"3rik_r3yzK3Fjeh2XwzNR\"}\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/0z9652tpun_.d.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/0z9652tpun_.d.js"],"ViewportBoundary"]
7
7
  a:I[76614,["/_next/static/chunks/0.v8w524wvk94.js","/_next/static/chunks/0z9652tpun_.d.js"],"MetadataBoundary"]
8
8
  c:I[59179,["/_next/static/chunks/0.v8w524wvk94.js","/_next/static/chunks/0z9652tpun_.d.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":"mwkqCCI15TP59qrR_B361"}
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":"3rik_r3yzK3Fjeh2XwzNR"}
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/0z9652tpun_.d.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":"mwkqCCI15TP59qrR_B361"}
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":"3rik_r3yzK3Fjeh2XwzNR"}
5
5
  4:null
@@ -6,7 +6,7 @@
6
6
  8:I[76614,["/_next/static/chunks/0.v8w524wvk94.js","/_next/static/chunks/0z9652tpun_.d.js"],"ViewportBoundary"]
7
7
  a:I[76614,["/_next/static/chunks/0.v8w524wvk94.js","/_next/static/chunks/0z9652tpun_.d.js"],"MetadataBoundary"]
8
8
  c:I[59179,["/_next/static/chunks/0.v8w524wvk94.js","/_next/static/chunks/0z9652tpun_.d.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":"mwkqCCI15TP59qrR_B361"}
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":"3rik_r3yzK3Fjeh2XwzNR"}
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/0z9652tpun_.d.js"],"MetadataBoundary"]
4
4
  4:"$Sreact.suspense"
5
5
  5:I[61299,["/_next/static/chunks/0.v8w524wvk94.js","/_next/static/chunks/0z9652tpun_.d.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":"mwkqCCI15TP59qrR_B361"}
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":"3rik_r3yzK3Fjeh2XwzNR"}
@@ -2,4 +2,4 @@
2
2
  2:I[85530,["/_next/static/chunks/0.v8w524wvk94.js","/_next/static/chunks/0z9652tpun_.d.js"],"default"]
3
3
  3:I[50571,["/_next/static/chunks/0.v8w524wvk94.js","/_next/static/chunks/0z9652tpun_.d.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":"mwkqCCI15TP59qrR_B361"}
5
+ 0:{"rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"isPartial":false,"staleTime":300,"varyParams":"$W4","buildId":"3rik_r3yzK3Fjeh2XwzNR"}
@@ -1 +1 @@
1
- 0:{"tree":{"name":"","param":null,"prefetchHints":0,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":0,"slots":null}}},"staleTime":300,"buildId":"mwkqCCI15TP59qrR_B361"}
1
+ 0:{"tree":{"name":"","param":null,"prefetchHints":0,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":0,"slots":null}}},"staleTime":300,"buildId":"3rik_r3yzK3Fjeh2XwzNR"}
@@ -7,9 +7,9 @@ globalThis.__BUILD_MANIFEST = {
7
7
  "static/chunks/03~yq9q893hmn.js"
8
8
  ],
9
9
  "lowPriorityFiles": [
10
- "static/mwkqCCI15TP59qrR_B361/_buildManifest.js",
11
- "static/mwkqCCI15TP59qrR_B361/_ssgManifest.js",
12
- "static/mwkqCCI15TP59qrR_B361/_clientMiddlewareManifest.js"
10
+ "static/3rik_r3yzK3Fjeh2XwzNR/_buildManifest.js",
11
+ "static/3rik_r3yzK3Fjeh2XwzNR/_ssgManifest.js",
12
+ "static/3rik_r3yzK3Fjeh2XwzNR/_clientMiddlewareManifest.js"
13
13
  ],
14
14
  "rootMainFiles": [
15
15
  "static/chunks/0_yzfo7pu205m.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/0_yzfo7pu205m.js"/><script src="/_next/static/chunks/0_r.3~d-5z8~_.js" async=""></script><script src="/_next/static/chunks/0u1lny1.4-f8c.js" async=""></script><script src="/_next/static/chunks/036h9~rhidv.e.js" async=""></script><script src="/_next/static/chunks/turbopack-129yl57l2cd7_.js" async=""></script><script src="/_next/static/chunks/0.v8w524wvk94.js" async=""></script><script src="/_next/static/chunks/0z9652tpun_.d.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/0_yzfo7pu205m.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/0z9652tpun_.d.js\"],\"default\"]\n3:I[50571,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0z9652tpun_.d.js\"],\"default\"]\n4:I[76614,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0z9652tpun_.d.js\"],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[76614,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0z9652tpun_.d.js\"],\"ViewportBoundary\"]\na:I[76614,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0z9652tpun_.d.js\"],\"MetadataBoundary\"]\nc:I[59179,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0z9652tpun_.d.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\":\"mwkqCCI15TP59qrR_B361\"}\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/0z9652tpun_.d.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/0_yzfo7pu205m.js"/><script src="/_next/static/chunks/0_r.3~d-5z8~_.js" async=""></script><script src="/_next/static/chunks/0u1lny1.4-f8c.js" async=""></script><script src="/_next/static/chunks/036h9~rhidv.e.js" async=""></script><script src="/_next/static/chunks/turbopack-129yl57l2cd7_.js" async=""></script><script src="/_next/static/chunks/0.v8w524wvk94.js" async=""></script><script src="/_next/static/chunks/0z9652tpun_.d.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/0_yzfo7pu205m.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/0z9652tpun_.d.js\"],\"default\"]\n3:I[50571,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0z9652tpun_.d.js\"],\"default\"]\n4:I[76614,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0z9652tpun_.d.js\"],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[76614,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0z9652tpun_.d.js\"],\"ViewportBoundary\"]\na:I[76614,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0z9652tpun_.d.js\"],\"MetadataBoundary\"]\nc:I[59179,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0z9652tpun_.d.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\":\"3rik_r3yzK3Fjeh2XwzNR\"}\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/0z9652tpun_.d.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>
package/admin/.next/trace CHANGED
@@ -1 +1 @@
1
- [{"name":"generate-buildid","duration":133,"timestamp":4243675033895,"id":4,"parentId":1,"tags":{},"startTime":1778890544968,"traceId":"c4c059e9eb7a09a7"},{"name":"load-custom-routes","duration":225,"timestamp":4243675034090,"id":5,"parentId":1,"tags":{},"startTime":1778890544968,"traceId":"c4c059e9eb7a09a7"},{"name":"create-dist-dir","duration":4920,"timestamp":4243675034327,"id":6,"parentId":1,"tags":{},"startTime":1778890544969,"traceId":"c4c059e9eb7a09a7"},{"name":"clean","duration":29213,"timestamp":4243675039946,"id":7,"parentId":1,"tags":{},"startTime":1778890544974,"traceId":"c4c059e9eb7a09a7"},{"name":"discover-routes","duration":15115,"timestamp":4243675075446,"id":8,"parentId":1,"tags":{},"startTime":1778890545010,"traceId":"c4c059e9eb7a09a7"},{"name":"create-root-mapping","duration":48,"timestamp":4243675090641,"id":9,"parentId":1,"tags":{},"startTime":1778890545025,"traceId":"c4c059e9eb7a09a7"},{"name":"generate-route-types","duration":17385,"timestamp":4243675093363,"id":10,"parentId":1,"tags":{},"startTime":1778890545028,"traceId":"c4c059e9eb7a09a7"},{"name":"public-dir-conflict-check","duration":53,"timestamp":4243675110808,"id":11,"parentId":1,"tags":{},"startTime":1778890545045,"traceId":"c4c059e9eb7a09a7"},{"name":"generate-routes-manifest","duration":1581,"timestamp":4243675110911,"id":12,"parentId":1,"tags":{},"startTime":1778890545045,"traceId":"c4c059e9eb7a09a7"},{"name":"run-turbopack","duration":2048388,"timestamp":4243675115765,"id":14,"parentId":1,"tags":{},"startTime":1778890545050,"traceId":"c4c059e9eb7a09a7"},{"name":"turbopack-build-events","duration":44,"timestamp":4243675306388,"id":15,"parentId":1,"tags":{},"startTime":1778890545241,"traceId":"c4c059e9eb7a09a7"},{"name":"run-typescript","duration":2347536,"timestamp":4243677203111,"id":16,"parentId":1,"tags":{},"startTime":1778890547138,"traceId":"c4c059e9eb7a09a7"},{"name":"generate-required-server-files","duration":792,"timestamp":4243679552019,"id":18,"parentId":1,"tags":{},"startTime":1778890549486,"traceId":"c4c059e9eb7a09a7"},{"name":"check-static-error-page","duration":6296,"timestamp":4243679564991,"id":20,"parentId":19,"tags":{},"startTime":1778890549499,"traceId":"c4c059e9eb7a09a7"},{"name":"is-page-static","duration":226075,"timestamp":4243679579762,"id":30,"parentId":22,"tags":{},"startTime":1778890549514,"traceId":"c4c059e9eb7a09a7"},{"name":"check-page","duration":236364,"timestamp":4243679569534,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1778890549504,"traceId":"c4c059e9eb7a09a7"},{"name":"is-page-static","duration":264051,"timestamp":4243679579833,"id":31,"parentId":23,"tags":{},"startTime":1778890549514,"traceId":"c4c059e9eb7a09a7"},{"name":"check-page","duration":273781,"timestamp":4243679570138,"id":23,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1778890549505,"traceId":"c4c059e9eb7a09a7"},{"name":"is-page-static","duration":269958,"timestamp":4243679579402,"id":29,"parentId":21,"tags":{},"startTime":1778890549514,"traceId":"c4c059e9eb7a09a7"},{"name":"check-page","duration":283881,"timestamp":4243679565505,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1778890549500,"traceId":"c4c059e9eb7a09a7"},{"name":"is-page-static","duration":275732,"timestamp":4243679582716,"id":33,"parentId":24,"tags":{},"startTime":1778890549517,"traceId":"c4c059e9eb7a09a7"},{"name":"check-page","duration":287844,"timestamp":4243679570635,"id":24,"parentId":19,"tags":{"page":"/p/[project]"},"startTime":1778890549505,"traceId":"c4c059e9eb7a09a7"},{"name":"is-page-static","duration":279431,"timestamp":4243679582644,"id":32,"parentId":28,"tags":{},"startTime":1778890549517,"traceId":"c4c059e9eb7a09a7"},{"name":"check-page","duration":291290,"timestamp":4243679571115,"id":28,"parentId":19,"tags":{"page":"/"},"startTime":1778890549506,"traceId":"c4c059e9eb7a09a7"},{"name":"is-page-static","duration":290484,"timestamp":4243679582779,"id":35,"parentId":26,"tags":{},"startTime":1778890549517,"traceId":"c4c059e9eb7a09a7"},{"name":"check-page","duration":302420,"timestamp":4243679570880,"id":26,"parentId":19,"tags":{"page":"/p/[project]/research/[slug]"},"startTime":1778890549505,"traceId":"c4c059e9eb7a09a7"},{"name":"is-page-static","duration":295947,"timestamp":4243679582810,"id":36,"parentId":27,"tags":{},"startTime":1778890549517,"traceId":"c4c059e9eb7a09a7"},{"name":"check-page","duration":307855,"timestamp":4243679570998,"id":27,"parentId":19,"tags":{"page":"/p/[project]/scorecards"},"startTime":1778890549505,"traceId":"c4c059e9eb7a09a7"},{"name":"is-page-static","duration":297353,"timestamp":4243679582751,"id":34,"parentId":25,"tags":{},"startTime":1778890549517,"traceId":"c4c059e9eb7a09a7"},{"name":"check-page","duration":309361,"timestamp":4243679570762,"id":25,"parentId":19,"tags":{"page":"/p/[project]/plan/[name]"},"startTime":1778890549505,"traceId":"c4c059e9eb7a09a7"},{"name":"static-check","duration":315519,"timestamp":4243679564625,"id":19,"parentId":1,"tags":{},"startTime":1778890549499,"traceId":"c4c059e9eb7a09a7"},{"name":"write-routes-manifest","duration":392,"timestamp":4243679883457,"id":38,"parentId":1,"tags":{},"startTime":1778890549818,"traceId":"c4c059e9eb7a09a7"},{"name":"load-dotenv","duration":25,"timestamp":4243679891490,"id":41,"parentId":40,"tags":{},"startTime":1778890549826,"traceId":"c4c059e9eb7a09a7"},{"name":"run-export-path-map","duration":211,"timestamp":4243679893140,"id":42,"parentId":40,"tags":{},"startTime":1778890549828,"traceId":"c4c059e9eb7a09a7"},{"name":"next-export","duration":243661,"timestamp":4243679890787,"id":40,"parentId":1,"tags":{},"startTime":1778890549825,"traceId":"c4c059e9eb7a09a7"},{"name":"move-exported-app-global-error-","duration":1413,"timestamp":4243680135192,"id":43,"parentId":39,"tags":{},"startTime":1778890550070,"traceId":"c4c059e9eb7a09a7"},{"name":"static-generation","duration":253210,"timestamp":4243679886251,"id":39,"parentId":1,"tags":{},"startTime":1778890549821,"traceId":"c4c059e9eb7a09a7"},{"name":"write-routes-manifest","duration":391,"timestamp":4243680139620,"id":44,"parentId":1,"tags":{},"startTime":1778890550074,"traceId":"c4c059e9eb7a09a7"},{"name":"print-tree-view","duration":1308,"timestamp":4243680151464,"id":45,"parentId":1,"tags":{},"startTime":1778890550086,"traceId":"c4c059e9eb7a09a7"},{"name":"write-route-bundle-stats","duration":4353,"timestamp":4243680152792,"id":46,"parentId":1,"tags":{},"startTime":1778890550087,"traceId":"c4c059e9eb7a09a7"},{"name":"telemetry-flush","duration":485672,"timestamp":4243680157165,"id":47,"parentId":1,"tags":{},"startTime":1778890550092,"traceId":"c4c059e9eb7a09a7"},{"name":"next-build","duration":5738528,"timestamp":4243674904342,"id":1,"tags":{"buildMode":"default","version":"16.2.4","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778890544839,"traceId":"c4c059e9eb7a09a7"}]
1
+ [{"name":"generate-buildid","duration":150,"timestamp":4245781126652,"id":4,"parentId":1,"tags":{},"startTime":1778892651058,"traceId":"31df19b909dad025"},{"name":"load-custom-routes","duration":228,"timestamp":4245781126863,"id":5,"parentId":1,"tags":{},"startTime":1778892651058,"traceId":"31df19b909dad025"},{"name":"create-dist-dir","duration":1101,"timestamp":4245781127104,"id":6,"parentId":1,"tags":{},"startTime":1778892651058,"traceId":"31df19b909dad025"},{"name":"clean","duration":43512,"timestamp":4245781128988,"id":7,"parentId":1,"tags":{},"startTime":1778892651060,"traceId":"31df19b909dad025"},{"name":"discover-routes","duration":4282,"timestamp":4245781178011,"id":8,"parentId":1,"tags":{},"startTime":1778892651109,"traceId":"31df19b909dad025"},{"name":"create-root-mapping","duration":35,"timestamp":4245781182321,"id":9,"parentId":1,"tags":{},"startTime":1778892651114,"traceId":"31df19b909dad025"},{"name":"generate-route-types","duration":15850,"timestamp":4245781183380,"id":10,"parentId":1,"tags":{},"startTime":1778892651115,"traceId":"31df19b909dad025"},{"name":"public-dir-conflict-check","duration":40,"timestamp":4245781199277,"id":11,"parentId":1,"tags":{},"startTime":1778892651131,"traceId":"31df19b909dad025"},{"name":"generate-routes-manifest","duration":1191,"timestamp":4245781199368,"id":12,"parentId":1,"tags":{},"startTime":1778892651131,"traceId":"31df19b909dad025"},{"name":"run-turbopack","duration":1775379,"timestamp":4245781202365,"id":14,"parentId":1,"tags":{},"startTime":1778892651134,"traceId":"31df19b909dad025"},{"name":"turbopack-build-events","duration":46,"timestamp":4245781370791,"id":15,"parentId":1,"tags":{},"startTime":1778892651302,"traceId":"31df19b909dad025"},{"name":"run-typescript","duration":2116076,"timestamp":4245783000693,"id":16,"parentId":1,"tags":{},"startTime":1778892652932,"traceId":"31df19b909dad025"},{"name":"generate-required-server-files","duration":636,"timestamp":4245785117699,"id":18,"parentId":1,"tags":{},"startTime":1778892655049,"traceId":"31df19b909dad025"},{"name":"check-static-error-page","duration":2375,"timestamp":4245785141121,"id":20,"parentId":19,"tags":{},"startTime":1778892655072,"traceId":"31df19b909dad025"},{"name":"is-page-static","duration":219218,"timestamp":4245785147432,"id":30,"parentId":22,"tags":{},"startTime":1778892655079,"traceId":"31df19b909dad025"},{"name":"check-page","duration":224158,"timestamp":4245785142559,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1778892655074,"traceId":"31df19b909dad025"},{"name":"is-page-static","duration":241558,"timestamp":4245785147266,"id":29,"parentId":21,"tags":{},"startTime":1778892655079,"traceId":"31df19b909dad025"},{"name":"check-page","duration":247203,"timestamp":4245785141682,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1778892655073,"traceId":"31df19b909dad025"},{"name":"is-page-static","duration":261418,"timestamp":4245785147459,"id":31,"parentId":23,"tags":{},"startTime":1778892655079,"traceId":"31df19b909dad025"},{"name":"check-page","duration":265846,"timestamp":4245785143063,"id":23,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1778892655074,"traceId":"31df19b909dad025"},{"name":"is-page-static","duration":263352,"timestamp":4245785151698,"id":32,"parentId":28,"tags":{},"startTime":1778892655083,"traceId":"31df19b909dad025"},{"name":"check-page","duration":271624,"timestamp":4245785143453,"id":28,"parentId":19,"tags":{"page":"/"},"startTime":1778892655075,"traceId":"31df19b909dad025"},{"name":"is-page-static","duration":266993,"timestamp":4245785151853,"id":35,"parentId":26,"tags":{},"startTime":1778892655083,"traceId":"31df19b909dad025"},{"name":"check-page","duration":275538,"timestamp":4245785143369,"id":26,"parentId":19,"tags":{"page":"/p/[project]/research/[slug]"},"startTime":1778892655075,"traceId":"31df19b909dad025"},{"name":"is-page-static","duration":270629,"timestamp":4245785151825,"id":34,"parentId":25,"tags":{},"startTime":1778892655083,"traceId":"31df19b909dad025"},{"name":"check-page","duration":279176,"timestamp":4245785143320,"id":25,"parentId":19,"tags":{"page":"/p/[project]/plan/[name]"},"startTime":1778892655075,"traceId":"31df19b909dad025"},{"name":"is-page-static","duration":274165,"timestamp":4245785151886,"id":36,"parentId":27,"tags":{},"startTime":1778892655083,"traceId":"31df19b909dad025"},{"name":"check-page","duration":282675,"timestamp":4245785143409,"id":27,"parentId":19,"tags":{"page":"/p/[project]/scorecards"},"startTime":1778892655075,"traceId":"31df19b909dad025"},{"name":"is-page-static","duration":280089,"timestamp":4245785151793,"id":33,"parentId":24,"tags":{},"startTime":1778892655083,"traceId":"31df19b909dad025"},{"name":"check-page","duration":288635,"timestamp":4245785143276,"id":24,"parentId":19,"tags":{"page":"/p/[project]"},"startTime":1778892655075,"traceId":"31df19b909dad025"},{"name":"static-check","duration":291208,"timestamp":4245785140727,"id":19,"parentId":1,"tags":{},"startTime":1778892655072,"traceId":"31df19b909dad025"},{"name":"write-routes-manifest","duration":255,"timestamp":4245785432795,"id":38,"parentId":1,"tags":{},"startTime":1778892655364,"traceId":"31df19b909dad025"},{"name":"load-dotenv","duration":28,"timestamp":4245785439292,"id":41,"parentId":40,"tags":{},"startTime":1778892655371,"traceId":"31df19b909dad025"},{"name":"run-export-path-map","duration":198,"timestamp":4245785440740,"id":42,"parentId":40,"tags":{},"startTime":1778892655372,"traceId":"31df19b909dad025"},{"name":"next-export","duration":214233,"timestamp":4245785438562,"id":40,"parentId":1,"tags":{},"startTime":1778892655370,"traceId":"31df19b909dad025"},{"name":"move-exported-app-global-error-","duration":445,"timestamp":4245785653432,"id":43,"parentId":39,"tags":{},"startTime":1778892655585,"traceId":"31df19b909dad025"},{"name":"static-generation","duration":220363,"timestamp":4245785434405,"id":39,"parentId":1,"tags":{},"startTime":1778892655366,"traceId":"31df19b909dad025"},{"name":"write-routes-manifest","duration":210,"timestamp":4245785654859,"id":44,"parentId":1,"tags":{},"startTime":1778892655586,"traceId":"31df19b909dad025"},{"name":"print-tree-view","duration":1318,"timestamp":4245785660649,"id":45,"parentId":1,"tags":{},"startTime":1778892655592,"traceId":"31df19b909dad025"},{"name":"write-route-bundle-stats","duration":5616,"timestamp":4245785661979,"id":46,"parentId":1,"tags":{},"startTime":1778892655593,"traceId":"31df19b909dad025"},{"name":"telemetry-flush","duration":488977,"timestamp":4245785667608,"id":47,"parentId":1,"tags":{},"startTime":1778892655599,"traceId":"31df19b909dad025"},{"name":"next-build","duration":5057980,"timestamp":4245781098631,"id":1,"tags":{"buildMode":"default","version":"16.2.4","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778892651030,"traceId":"31df19b909dad025"}]
@@ -1 +1 @@
1
- [{"name":"run-turbopack","duration":2048388,"timestamp":4243675115765,"id":14,"parentId":1,"tags":{},"startTime":1778890545050,"traceId":"c4c059e9eb7a09a7"},{"name":"turbopack-build-events","duration":44,"timestamp":4243675306388,"id":15,"parentId":1,"tags":{},"startTime":1778890545241,"traceId":"c4c059e9eb7a09a7"},{"name":"run-typescript","duration":2347536,"timestamp":4243677203111,"id":16,"parentId":1,"tags":{},"startTime":1778890547138,"traceId":"c4c059e9eb7a09a7"},{"name":"static-check","duration":315519,"timestamp":4243679564625,"id":19,"parentId":1,"tags":{},"startTime":1778890549499,"traceId":"c4c059e9eb7a09a7"},{"name":"static-generation","duration":253210,"timestamp":4243679886251,"id":39,"parentId":1,"tags":{},"startTime":1778890549821,"traceId":"c4c059e9eb7a09a7"},{"name":"telemetry-flush","duration":485672,"timestamp":4243680157165,"id":47,"parentId":1,"tags":{},"startTime":1778890550092,"traceId":"c4c059e9eb7a09a7"},{"name":"next-build","duration":5738528,"timestamp":4243674904342,"id":1,"tags":{"buildMode":"default","version":"16.2.4","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778890544839,"traceId":"c4c059e9eb7a09a7"}]
1
+ [{"name":"run-turbopack","duration":1775379,"timestamp":4245781202365,"id":14,"parentId":1,"tags":{},"startTime":1778892651134,"traceId":"31df19b909dad025"},{"name":"turbopack-build-events","duration":46,"timestamp":4245781370791,"id":15,"parentId":1,"tags":{},"startTime":1778892651302,"traceId":"31df19b909dad025"},{"name":"run-typescript","duration":2116076,"timestamp":4245783000693,"id":16,"parentId":1,"tags":{},"startTime":1778892652932,"traceId":"31df19b909dad025"},{"name":"static-check","duration":291208,"timestamp":4245785140727,"id":19,"parentId":1,"tags":{},"startTime":1778892655072,"traceId":"31df19b909dad025"},{"name":"static-generation","duration":220363,"timestamp":4245785434405,"id":39,"parentId":1,"tags":{},"startTime":1778892655366,"traceId":"31df19b909dad025"},{"name":"telemetry-flush","duration":488977,"timestamp":4245785667608,"id":47,"parentId":1,"tags":{},"startTime":1778892655599,"traceId":"31df19b909dad025"},{"name":"next-build","duration":5057980,"timestamp":4245781098631,"id":1,"tags":{"buildMode":"default","version":"16.2.4","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1778892651030,"traceId":"31df19b909dad025"}]
package/dist/bin/cli.js CHANGED
@@ -54,6 +54,15 @@ program
54
54
  const { update } = await import("./commands/update.js");
55
55
  await update(rootOrExit());
56
56
  });
57
+ program
58
+ .command("upgrade")
59
+ .description("Upgrade the global indusk-mcp CLI to the latest published version")
60
+ .option("--force", "Install latest without comparing versions (use to recover from a stuck state)")
61
+ .action(async function () {
62
+ const opts = this.opts();
63
+ const { upgrade } = await import("./commands/upgrade.js");
64
+ await upgrade({ force: opts.force === true });
65
+ });
57
66
  const ext = program
58
67
  .command("extensions")
59
68
  .description("Manage extensions (built-in and third-party)");
@@ -476,13 +485,7 @@ telemetryCmd
476
485
  .option("--limit <n>", "max records to print", "50")
477
486
  .action(async (opts) => {
478
487
  const { telemetryTail } = await import("./commands/telemetry.js");
479
- const level = [
480
- "error",
481
- "warn",
482
- "info",
483
- "debug",
484
- "any",
485
- ].includes(opts.level)
488
+ const level = ["error", "warn", "info", "debug", "any"].includes(opts.level)
486
489
  ? opts.level
487
490
  : "any";
488
491
  await telemetryTail({
@@ -5,6 +5,7 @@ import { dirname, join } from "node:path";
5
5
  import { fileURLToPath } from "node:url";
6
6
  import { globSync } from "glob";
7
7
  import { loadExtension } from "../../lib/extension-loader.js";
8
+ import { checkLatestVersion, hasNewerVersion } from "../../lib/version-check.js";
8
9
  import { envIsFunctional } from "./extensions.js";
9
10
  const __dirname = dirname(fileURLToPath(import.meta.url));
10
11
  const packageRoot = join(__dirname, "../../..");
@@ -29,69 +30,15 @@ function getLocalVersion() {
29
30
  return JSON.parse(readFileSync(pkgJsonPath, "utf-8")).version;
30
31
  }
31
32
  export async function update(projectRoot) {
32
- // 1. Self-update: check npm for newer version and install it
33
+ // CLI version is informational only here. The actual upgrade lives in
34
+ // `indusk upgrade` — see `bin/commands/upgrade.ts` for the rationale.
35
+ // `indusk update` is strictly project-state work (skills, hooks,
36
+ // extensions, settings overlay, registry); it never mutates the
37
+ // machine-state global install. A non-blocking notice at the end
38
+ // surfaces newer versions without coupling the two.
33
39
  console.info("[indusk-mcp]\n");
34
40
  const currentVersion = getLocalVersion();
35
- let didUpgrade = false;
36
- // Short-circuit when recursively invoked from a just-completed self-update,
37
- // or when tests need deterministic offline behavior. Also lets preview
38
- // users pin to a specific version without the self-update dance on every
39
- // `indusk update` call.
40
- const skipSelfUpdate = process.env.INDUSK_SKIP_SELF_UPDATE === "1";
41
- if (skipSelfUpdate) {
42
- console.info(` current: v${currentVersion} (self-update skipped)`);
43
- }
44
- try {
45
- if (skipSelfUpdate)
46
- throw new Error("skip");
47
- const latestVersion = run("npm view @infinitedusky/indusk-mcp version");
48
- if (latestVersion !== currentVersion) {
49
- console.info(` update available: ${currentVersion} → ${latestVersion}`);
50
- const hasGlobal = run("which indusk").length > 0;
51
- if (hasGlobal) {
52
- console.info(" updating global install...");
53
- try {
54
- run(`npm i -g @infinitedusky/indusk-mcp@${latestVersion}`, { timeout: 60000 });
55
- console.info(` global: updated to ${latestVersion}`);
56
- didUpgrade = true;
57
- }
58
- catch (err) {
59
- console.error(` global: FAILED — ${err instanceof Error ? err.message : err}`);
60
- console.error(" run manually: npm i -g @infinitedusky/indusk-mcp@latest");
61
- }
62
- }
63
- // Clear npx cache
64
- try {
65
- run("rm -rf ~/.npm/_npx/*");
66
- console.info(" npx cache: cleared");
67
- }
68
- catch {
69
- // ignore
70
- }
71
- }
72
- else {
73
- console.info(` current: v${currentVersion}`);
74
- }
75
- }
76
- catch {
77
- console.info(` could not check npm registry — continuing with v${currentVersion}`);
78
- }
79
- // If we upgraded, re-run update from the new version
80
- if (didUpgrade) {
81
- console.info("\n Re-running update from new version...\n");
82
- try {
83
- execSync("indusk update", {
84
- cwd: projectRoot,
85
- timeout: 120000,
86
- stdio: "inherit",
87
- env: { ...process.env, INDUSK_SKIP_SELF_UPDATE: "1" },
88
- });
89
- }
90
- catch {
91
- console.info(" re-run failed — run `indusk update` again manually");
92
- }
93
- return;
94
- }
41
+ console.info(` current: v${currentVersion}`);
95
42
  // 2. Sync skills
96
43
  console.info("\n[Skills]\n");
97
44
  const skillsSource = join(packageRoot, "skills");
@@ -554,7 +501,19 @@ export async function update(projectRoot) {
554
501
  }
555
502
  }
556
503
  console.info("\nDone.");
557
- if (didUpgrade) {
558
- console.info("Restart Claude Code to pick up the new MCP server.");
504
+ // Non-blocking version notice. Uses the 6h-cached lookup so we don't
505
+ // hit npm on every invocation. Silently no-ops when offline, when the
506
+ // cache is empty and the network fails, or when INDUSK_SKIP_UPDATE_CHECK=1.
507
+ // This is the ONLY place `indusk update` touches the npm registry — and
508
+ // it never installs anything. See `bin/commands/upgrade.ts` for the
509
+ // install path.
510
+ try {
511
+ const check = await checkLatestVersion();
512
+ if (hasNewerVersion(currentVersion, check.latestVersion)) {
513
+ console.info(`\nv${check.latestVersion} is available (current: v${currentVersion}). Run \`indusk upgrade\`.`);
514
+ }
515
+ }
516
+ catch {
517
+ // Best-effort — never let the notice break the update.
559
518
  }
560
519
  }
@@ -1 +1,32 @@
1
- export declare function upgrade(projectRoot: string): Promise<void>;
1
+ /**
2
+ * `indusk upgrade` — install a newer version of the indusk-mcp global CLI.
3
+ *
4
+ * Split out from `indusk update` (which used to do both project-state
5
+ * syncing AND CLI self-install in one breath, with a recursive
6
+ * re-invocation that could silently loop forever — see issue Sandy hit
7
+ * 2026-05-15 where `npm i -g` installed to homebrew's prefix while the
8
+ * on-PATH `indusk` lived under pnpm and never moved).
9
+ *
10
+ * This command:
11
+ * 1. Reads the current globally-resolved binary's version via `indusk
12
+ * --version`, not the running process's package.json (which can be a
13
+ * dev-from-source workspace copy).
14
+ * 2. Fetches the latest npm version, bypassing any cached value (explicit
15
+ * upgrade is always a fresh check).
16
+ * 3. Detects the package manager that owns the on-PATH binary by
17
+ * inspecting its path string.
18
+ * 4. Runs the manager-appropriate install command.
19
+ * 5. Verifies post-install by re-spawning `indusk --version` and
20
+ * comparing to the expected latest. If the version didn't move,
21
+ * prints a diagnostic with the PATH binary location, the install
22
+ * destination, and the manual recovery command. No recursive
23
+ * re-invocation, ever.
24
+ *
25
+ * Exits non-zero on any failure (network, install, verify) so wrappers
26
+ * and CI can act on it.
27
+ */
28
+ export interface UpgradeOptions {
29
+ /** Skip the npm version check and force an install of `latest`. */
30
+ force?: boolean;
31
+ }
32
+ export declare function upgrade(opts?: UpgradeOptions): Promise<void>;
@@ -1,78 +1,161 @@
1
- import { execSync } from "node:child_process";
2
- import { readFileSync } from "node:fs";
3
- import { dirname, join } from "node:path";
4
- import { fileURLToPath } from "node:url";
5
- const __dirname = dirname(fileURLToPath(import.meta.url));
6
- const packageRoot = join(__dirname, "../../..");
7
- const pkgJsonPath = join(packageRoot, "package.json");
8
- function run(cmd, opts) {
1
+ /**
2
+ * `indusk upgrade` install a newer version of the indusk-mcp global CLI.
3
+ *
4
+ * Split out from `indusk update` (which used to do both project-state
5
+ * syncing AND CLI self-install in one breath, with a recursive
6
+ * re-invocation that could silently loop forever — see issue Sandy hit
7
+ * 2026-05-15 where `npm i -g` installed to homebrew's prefix while the
8
+ * on-PATH `indusk` lived under pnpm and never moved).
9
+ *
10
+ * This command:
11
+ * 1. Reads the current globally-resolved binary's version via `indusk
12
+ * --version`, not the running process's package.json (which can be a
13
+ * dev-from-source workspace copy).
14
+ * 2. Fetches the latest npm version, bypassing any cached value (explicit
15
+ * upgrade is always a fresh check).
16
+ * 3. Detects the package manager that owns the on-PATH binary by
17
+ * inspecting its path string.
18
+ * 4. Runs the manager-appropriate install command.
19
+ * 5. Verifies post-install by re-spawning `indusk --version` and
20
+ * comparing to the expected latest. If the version didn't move,
21
+ * prints a diagnostic with the PATH binary location, the install
22
+ * destination, and the manual recovery command. No recursive
23
+ * re-invocation, ever.
24
+ *
25
+ * Exits non-zero on any failure (network, install, verify) so wrappers
26
+ * and CI can act on it.
27
+ */
28
+ import { execFileSync, execSync, spawnSync } from "node:child_process";
29
+ import { detectGlobalManagerFromPath, installCommandFor, } from "../../lib/global-install-manager.js";
30
+ import { checkLatestVersion } from "../../lib/version-check.js";
31
+ function whichIndusk() {
9
32
  try {
10
- return execSync(cmd, {
33
+ const out = execFileSync("which", ["indusk"], {
11
34
  encoding: "utf-8",
12
- timeout: opts?.timeout ?? 30000,
13
- stdio: ["ignore", "pipe", "pipe"],
14
- }).trim();
35
+ stdio: ["ignore", "pipe", "ignore"],
36
+ })
37
+ .trim()
38
+ .split("\n")[0]
39
+ ?.trim();
40
+ return out && out.length > 0 ? out : null;
15
41
  }
16
- catch (err) {
17
- const execErr = err;
18
- throw new Error(execErr.stderr?.trim() || execErr.message || "Command failed");
42
+ catch {
43
+ return null;
19
44
  }
20
45
  }
21
- function getLocalVersion() {
22
- return JSON.parse(readFileSync(pkgJsonPath, "utf-8")).version;
46
+ function readBinaryVersion() {
47
+ try {
48
+ const out = execFileSync("indusk", ["--version"], {
49
+ encoding: "utf-8",
50
+ stdio: ["ignore", "pipe", "ignore"],
51
+ timeout: 10_000,
52
+ }).trim();
53
+ // `commander` prints just the version string, possibly with a leading "v"
54
+ return out.replace(/^v/, "");
55
+ }
56
+ catch {
57
+ return null;
58
+ }
23
59
  }
24
- export async function upgrade(projectRoot) {
25
- const currentVersion = getLocalVersion();
26
- // 1. Check what's latest on npm
27
- let latestVersion;
60
+ function npmGlobalRoot() {
28
61
  try {
29
- latestVersion = run("npm view @infinitedusky/indusk-mcp version");
62
+ return execFileSync("npm", ["root", "-g"], {
63
+ encoding: "utf-8",
64
+ stdio: ["ignore", "pipe", "ignore"],
65
+ timeout: 10_000,
66
+ }).trim();
30
67
  }
31
68
  catch {
32
- console.error("Could not check npm registry. Are you online?");
33
- process.exitCode = 1;
34
- return;
35
- }
36
- if (latestVersion === currentVersion) {
37
- console.info(`Already on latest: v${currentVersion}`);
38
- return;
39
- }
40
- console.info(`Update available: ${currentVersion} → ${latestVersion}\n`);
41
- // 2. Update global install if present, otherwise clear npx cache
42
- const globalPath = run("which indusk").length > 0;
43
- if (globalPath) {
44
- console.info(" updating global install...");
45
- try {
46
- run(`npm i -g @infinitedusky/indusk-mcp@${latestVersion}`, { timeout: 60000 });
47
- console.info(` global: updated to ${latestVersion}`);
69
+ return null;
70
+ }
71
+ }
72
+ function runInstall(command, timeoutMs = 120_000) {
73
+ try {
74
+ execSync(command, {
75
+ stdio: "inherit",
76
+ timeout: timeoutMs,
77
+ });
78
+ return { ok: true };
79
+ }
80
+ catch (err) {
81
+ const message = err instanceof Error ? err.message : String(err);
82
+ return { ok: false, error: message };
83
+ }
84
+ }
85
+ export async function upgrade(opts = {}) {
86
+ const binaryPath = whichIndusk();
87
+ if (!binaryPath) {
88
+ console.error("No global `indusk` binary on PATH. First-time install: choose one — `npm i -g @infinitedusky/indusk-mcp`, `pnpm add -g @infinitedusky/indusk-mcp`, or `bun install -g @infinitedusky/indusk-mcp`.");
89
+ process.exit(1);
90
+ }
91
+ const currentVersion = readBinaryVersion();
92
+ if (currentVersion === null) {
93
+ console.error(`Found \`indusk\` at ${binaryPath} but \`indusk --version\` failed. The install is broken; reinstall manually.`);
94
+ process.exit(1);
95
+ }
96
+ const check = await checkLatestVersion({ bypassCache: true });
97
+ const targetVersion = opts.force ? "latest" : check.latestVersion;
98
+ if (!opts.force) {
99
+ if (targetVersion === null) {
100
+ console.error("Could not reach the npm registry. Try again, or run `indusk upgrade --force` to install latest.");
101
+ process.exit(1);
48
102
  }
49
- catch (err) {
50
- console.error(` global: FAILED ${err instanceof Error ? err.message : err}`);
51
- console.error(" run manually: npm i -g @infinitedusky/indusk-mcp@latest");
52
- process.exitCode = 1;
103
+ if (targetVersion === currentVersion) {
104
+ console.info(`indusk-mcp is already at v${currentVersion}.`);
53
105
  return;
54
106
  }
55
107
  }
56
- else {
57
- console.info(" no global install found — updating npx cache");
108
+ const manager = detectGlobalManagerFromPath(binaryPath);
109
+ if (manager === null) {
110
+ // detectGlobalManagerFromPath returns null only for empty input,
111
+ // which we've already guarded against. This branch is structural
112
+ // belt-and-suspenders; if we land here, surface the path so the
113
+ // user can self-diagnose.
114
+ console.error(`Unrecognized install location for \`indusk\` (${binaryPath}). Reinstall manually with your package manager.`);
115
+ process.exit(1);
58
116
  }
59
- // 3. Clear npx cache so MCP servers pick up the new version
60
- try {
61
- run("rm -rf ~/.npm/_npx/*");
62
- console.info(" npx cache: cleared");
117
+ const versionForCommand = opts.force ? "latest" : targetVersion;
118
+ const installCommand = installCommandFor(manager, versionForCommand);
119
+ console.info(`Upgrading indusk-mcp via ${manager}: ${installCommand}`);
120
+ const install = runInstall(installCommand);
121
+ if (!install.ok) {
122
+ console.error(`\nInstall failed: ${install.error}`);
123
+ console.error(`Run manually: ${installCommand}`);
124
+ process.exit(1);
63
125
  }
64
- catch {
65
- console.info(" npx cache: could not clear");
126
+ const afterVersion = readBinaryVersion();
127
+ if (afterVersion === null) {
128
+ console.error(`\nInstall reported success, but \`indusk --version\` failed after the upgrade. Inspect ${binaryPath}.`);
129
+ process.exit(1);
66
130
  }
67
- // 4. Sync skills to current project
68
- console.info(" syncing skills...");
131
+ const expected = opts.force ? null : targetVersion;
132
+ const versionChanged = afterVersion !== currentVersion;
133
+ const matchesExpected = expected === null ? true : afterVersion === expected;
134
+ if (!versionChanged || !matchesExpected) {
135
+ const npmRoot = npmGlobalRoot();
136
+ console.error("\n┃ Upgrade verification FAILED.");
137
+ console.error(`┃ on-PATH binary: ${binaryPath}`);
138
+ console.error(`┃ version before: ${currentVersion}`);
139
+ console.error(`┃ version after: ${afterVersion}`);
140
+ if (expected !== null)
141
+ console.error(`┃ expected: ${expected}`);
142
+ console.error(`┃ package manager: ${manager}`);
143
+ if (npmRoot)
144
+ console.error(`┃ npm -g prefix: ${npmRoot}`);
145
+ console.error("┃");
146
+ console.error("┃ The install command exited 0 but the resolved binary did not change.");
147
+ console.error("┃ Likely cause: the install command targeted a different prefix than the one on PATH.");
148
+ console.error("┃ Verify with: `which indusk` and your package manager's global-list command.");
149
+ process.exit(1);
150
+ }
151
+ console.info(`\nindusk-mcp upgraded: v${currentVersion} → v${afterVersion}.`);
152
+ console.info("Restart Claude Code to pick up the new MCP server.");
153
+ // Best-effort: clear the npx cache so older cached invocations don't
154
+ // keep firing the previous version. Errors are non-fatal.
69
155
  try {
70
- const { update } = await import("./update.js");
71
- await update(projectRoot);
156
+ spawnSync("sh", ["-c", "rm -rf ~/.npm/_npx/*"], { stdio: "ignore", timeout: 5_000 });
72
157
  }
73
158
  catch {
74
- console.info(" skills: could not sync — run: indusk update");
159
+ // ignore
75
160
  }
76
- console.info(`\nDone! Updated to v${latestVersion}.`);
77
- console.info("Restart Claude Code to pick up the new MCP server.");
78
161
  }
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Detect which global-install package manager owns the on-PATH `indusk`
3
+ * binary, and build the right install command for it.
4
+ *
5
+ * The self-update flow in `commands/update.ts` historically hardcoded
6
+ * `npm i -g`, which is wrong whenever the user installed via pnpm or bun:
7
+ * `npm i -g` writes to npm's prefix (typically homebrew or nvm), while
8
+ * the actual `indusk` on PATH lives under pnpm's or bun's prefix. The
9
+ * install reports success but the resolved binary's version never changes,
10
+ * so every subsequent `indusk update` re-detects "update available" and
11
+ * loops forever from the user's perspective.
12
+ *
13
+ * Detection is path-string based — robust to symlinks (we look at the
14
+ * binary path that `which` returned, not its realpath) and to the fact
15
+ * that pnpm/bun shims aren't symlinks at all.
16
+ */
17
+ export type GlobalInstallManager = "pnpm" | "bun" | "npm";
18
+ /**
19
+ * Map an on-PATH `indusk` binary path to the package manager that installed
20
+ * it. Returns null for unknown locations or empty input.
21
+ *
22
+ * pnpm: `~/Library/pnpm/indusk` (macOS), `~/.local/share/pnpm/indusk`
23
+ * (Linux), `%LOCALAPPDATA%\pnpm\indusk` (Windows). Detection key: the
24
+ * path contains `/pnpm/` (or `\pnpm\`) as a segment.
25
+ * bun: `~/.bun/bin/indusk`. Detection key: contains `/.bun/`.
26
+ * npm: anything under a `node_modules/.bin` ancestor, or homebrew's
27
+ * `/opt/homebrew/bin`, or nvm's per-version `bin/` dirs. Default for
28
+ * everything that didn't match pnpm or bun.
29
+ */
30
+ export declare function detectGlobalManagerFromPath(binaryPath: string | null | undefined): GlobalInstallManager | null;
31
+ /**
32
+ * Build the global-install command for a given manager + version. Returned
33
+ * as a single shell-safe string suitable for `execSync` (version is pinned
34
+ * with `@${version}`; the package name is a fixed literal).
35
+ */
36
+ export declare function installCommandFor(manager: GlobalInstallManager, version: string): string;
37
+ /**
38
+ * Human-readable name for error/help messages. Same string the user would
39
+ * type to recover manually.
40
+ */
41
+ export declare function managerLabel(manager: GlobalInstallManager): string;
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Map an on-PATH `indusk` binary path to the package manager that installed
3
+ * it. Returns null for unknown locations or empty input.
4
+ *
5
+ * pnpm: `~/Library/pnpm/indusk` (macOS), `~/.local/share/pnpm/indusk`
6
+ * (Linux), `%LOCALAPPDATA%\pnpm\indusk` (Windows). Detection key: the
7
+ * path contains `/pnpm/` (or `\pnpm\`) as a segment.
8
+ * bun: `~/.bun/bin/indusk`. Detection key: contains `/.bun/`.
9
+ * npm: anything under a `node_modules/.bin` ancestor, or homebrew's
10
+ * `/opt/homebrew/bin`, or nvm's per-version `bin/` dirs. Default for
11
+ * everything that didn't match pnpm or bun.
12
+ */
13
+ export function detectGlobalManagerFromPath(binaryPath) {
14
+ if (!binaryPath)
15
+ return null;
16
+ const normalized = binaryPath.replace(/\\/g, "/");
17
+ if (/\/pnpm\//.test(normalized))
18
+ return "pnpm";
19
+ if (/\/\.bun\//.test(normalized))
20
+ return "bun";
21
+ return "npm";
22
+ }
23
+ /**
24
+ * Build the global-install command for a given manager + version. Returned
25
+ * as a single shell-safe string suitable for `execSync` (version is pinned
26
+ * with `@${version}`; the package name is a fixed literal).
27
+ */
28
+ export function installCommandFor(manager, version) {
29
+ const pkg = `@infinitedusky/indusk-mcp@${version}`;
30
+ switch (manager) {
31
+ case "pnpm":
32
+ return `pnpm add -g ${pkg}`;
33
+ case "bun":
34
+ return `bun install -g ${pkg}`;
35
+ case "npm":
36
+ return `npm i -g ${pkg}`;
37
+ }
38
+ }
39
+ /**
40
+ * Human-readable name for error/help messages. Same string the user would
41
+ * type to recover manually.
42
+ */
43
+ export function managerLabel(manager) {
44
+ return manager;
45
+ }
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Cached version-availability check against the public npm registry.
3
+ *
4
+ * Rationale: `indusk update` used to shell out to `npm view` and trigger an
5
+ * in-process self-install on every invocation, which (a) loops infinitely
6
+ * when the install lands somewhere other than the on-PATH binary, and
7
+ * (b) couples project-state work to machine-state work. The new model is
8
+ * notify-only: a quiet TTL-cached fetch surfaces a one-line "upgrade
9
+ * available" notice, and the user explicitly runs `indusk upgrade` to
10
+ * install. See `bin/commands/upgrade.ts` for the install side.
11
+ *
12
+ * Network failure is silent (returns the cached value if present, else
13
+ * null). Cache lives at `${INDUSK_HOME}/version-check.json` with a 6h TTL,
14
+ * tunable per call. Set `INDUSK_SKIP_UPDATE_CHECK=1` to suppress.
15
+ */
16
+ export interface VersionCheckResult {
17
+ /** Latest version per npm, or null when unknown (no cache and network failed). */
18
+ latestVersion: string | null;
19
+ /** Whether the value came from the on-disk cache (true) or a fresh fetch (false). */
20
+ fromCache: boolean;
21
+ /** When the value was originally fetched. ISO-8601. */
22
+ checkedAt: string | null;
23
+ }
24
+ export interface VersionCheckOptions {
25
+ /** Override the cache path (testing). Default: `${INDUSK_HOME}/version-check.json`. */
26
+ cachePath?: string;
27
+ /** TTL in ms. Default: 6h. */
28
+ ttlMs?: number;
29
+ /** Fetch timeout in ms. Default: 5s. */
30
+ timeoutMs?: number;
31
+ /** Inject a fetch implementation for tests. Default: global fetch. */
32
+ fetchImpl?: typeof fetch;
33
+ /** Bypass the cache and force a fresh network call. */
34
+ bypassCache?: boolean;
35
+ }
36
+ /**
37
+ * Resolve the latest version. Read-through cache: if the on-disk cache is
38
+ * fresh, return it without touching the network; otherwise fetch, persist,
39
+ * and return. On network failure with no cache, returns `latestVersion:
40
+ * null`. Honors `INDUSK_SKIP_UPDATE_CHECK=1` (returns null without any
41
+ * disk or network access).
42
+ */
43
+ export declare function checkLatestVersion(options?: VersionCheckOptions): Promise<VersionCheckResult>;
44
+ /**
45
+ * Pure comparator: returns true when `latest` is a different, presumably
46
+ * newer version than `current`. Intentionally string-equality — pre-1.0
47
+ * semver gymnastics aren't worth it for the notify path; if npm publishes
48
+ * a different string than what's installed, we surface it. The user's
49
+ * `upgrade` command does the actual decision.
50
+ */
51
+ export declare function hasNewerVersion(current: string, latest: string | null): boolean;
@@ -0,0 +1,137 @@
1
+ /**
2
+ * Cached version-availability check against the public npm registry.
3
+ *
4
+ * Rationale: `indusk update` used to shell out to `npm view` and trigger an
5
+ * in-process self-install on every invocation, which (a) loops infinitely
6
+ * when the install lands somewhere other than the on-PATH binary, and
7
+ * (b) couples project-state work to machine-state work. The new model is
8
+ * notify-only: a quiet TTL-cached fetch surfaces a one-line "upgrade
9
+ * available" notice, and the user explicitly runs `indusk upgrade` to
10
+ * install. See `bin/commands/upgrade.ts` for the install side.
11
+ *
12
+ * Network failure is silent (returns the cached value if present, else
13
+ * null). Cache lives at `${INDUSK_HOME}/version-check.json` with a 6h TTL,
14
+ * tunable per call. Set `INDUSK_SKIP_UPDATE_CHECK=1` to suppress.
15
+ */
16
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
17
+ import { homedir } from "node:os";
18
+ import { dirname, join } from "node:path";
19
+ const PKG_NAME = "@infinitedusky/indusk-mcp";
20
+ const DEFAULT_TTL_MS = 6 * 60 * 60 * 1000; // 6h
21
+ const DEFAULT_TIMEOUT_MS = 5_000;
22
+ function induskHome() {
23
+ return process.env.INDUSK_HOME ?? join(homedir(), ".indusk");
24
+ }
25
+ function defaultCachePath() {
26
+ return join(induskHome(), "version-check.json");
27
+ }
28
+ function readCache(path) {
29
+ if (!existsSync(path))
30
+ return null;
31
+ try {
32
+ const parsed = JSON.parse(readFileSync(path, "utf-8"));
33
+ if (typeof parsed.checkedAt !== "string" || typeof parsed.latestVersion !== "string") {
34
+ return null;
35
+ }
36
+ return { checkedAt: parsed.checkedAt, latestVersion: parsed.latestVersion };
37
+ }
38
+ catch {
39
+ return null;
40
+ }
41
+ }
42
+ function writeCache(path, cache) {
43
+ mkdirSync(dirname(path), { recursive: true });
44
+ writeFileSync(path, `${JSON.stringify(cache, null, 2)}\n`);
45
+ }
46
+ function isFresh(cache, ttlMs, now = Date.now()) {
47
+ const checkedAtMs = Date.parse(cache.checkedAt);
48
+ if (!Number.isFinite(checkedAtMs))
49
+ return false;
50
+ return now - checkedAtMs < ttlMs;
51
+ }
52
+ /**
53
+ * Resolve the latest published version from npm. 5s timeout, JSON-only,
54
+ * no auth. Returns null on any error — callers fall back to cache.
55
+ */
56
+ async function fetchLatestFromNpm(timeoutMs, fetchImpl) {
57
+ const url = `https://registry.npmjs.org/${encodeURIComponent(PKG_NAME)}/latest`;
58
+ const controller = new AbortController();
59
+ const timer = setTimeout(() => controller.abort(), timeoutMs);
60
+ try {
61
+ const res = await fetchImpl(url, {
62
+ headers: { Accept: "application/json" },
63
+ signal: controller.signal,
64
+ });
65
+ if (!res.ok)
66
+ return null;
67
+ const body = (await res.json());
68
+ return typeof body.version === "string" ? body.version : null;
69
+ }
70
+ catch {
71
+ return null;
72
+ }
73
+ finally {
74
+ clearTimeout(timer);
75
+ }
76
+ }
77
+ /**
78
+ * Resolve the latest version. Read-through cache: if the on-disk cache is
79
+ * fresh, return it without touching the network; otherwise fetch, persist,
80
+ * and return. On network failure with no cache, returns `latestVersion:
81
+ * null`. Honors `INDUSK_SKIP_UPDATE_CHECK=1` (returns null without any
82
+ * disk or network access).
83
+ */
84
+ export async function checkLatestVersion(options = {}) {
85
+ // INDUSK_SKIP_UPDATE_CHECK is the new name; INDUSK_SKIP_SELF_UPDATE is
86
+ // the legacy alias used by ~7 existing tests (set to suppress network
87
+ // access during `indusk update` runs against a tmp project). Honor both
88
+ // so test scaffolding doesn't need to change.
89
+ if (process.env.INDUSK_SKIP_UPDATE_CHECK === "1" || process.env.INDUSK_SKIP_SELF_UPDATE === "1") {
90
+ return { latestVersion: null, fromCache: false, checkedAt: null };
91
+ }
92
+ const cachePath = options.cachePath ?? defaultCachePath();
93
+ const ttlMs = options.ttlMs ?? DEFAULT_TTL_MS;
94
+ const timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;
95
+ const fetchImpl = options.fetchImpl ?? fetch;
96
+ const bypass = options.bypassCache === true;
97
+ const cached = readCache(cachePath);
98
+ if (!bypass && cached && isFresh(cached, ttlMs)) {
99
+ return {
100
+ latestVersion: cached.latestVersion,
101
+ fromCache: true,
102
+ checkedAt: cached.checkedAt,
103
+ };
104
+ }
105
+ const fresh = await fetchLatestFromNpm(timeoutMs, fetchImpl);
106
+ if (fresh === null) {
107
+ // Network failed — fall back to whatever's cached (even if stale),
108
+ // so the notice is "best known" rather than absent.
109
+ if (cached) {
110
+ return {
111
+ latestVersion: cached.latestVersion,
112
+ fromCache: true,
113
+ checkedAt: cached.checkedAt,
114
+ };
115
+ }
116
+ return { latestVersion: null, fromCache: false, checkedAt: null };
117
+ }
118
+ const checkedAt = new Date().toISOString();
119
+ try {
120
+ writeCache(cachePath, { checkedAt, latestVersion: fresh });
121
+ }
122
+ catch {
123
+ // Cache write failed (permission, full disk) — return the fresh
124
+ // value anyway; next invocation just won't have the cache hit.
125
+ }
126
+ return { latestVersion: fresh, fromCache: false, checkedAt };
127
+ }
128
+ /**
129
+ * Pure comparator: returns true when `latest` is a different, presumably
130
+ * newer version than `current`. Intentionally string-equality — pre-1.0
131
+ * semver gymnastics aren't worth it for the notify path; if npm publishes
132
+ * a different string than what's installed, we surface it. The user's
133
+ * `upgrade` command does the actual decision.
134
+ */
135
+ export function hasNewerVersion(current, latest) {
136
+ return latest !== null && latest.length > 0 && latest !== current;
137
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@infinitedusky/indusk-mcp",
3
- "version": "1.28.18",
3
+ "version": "1.28.19",
4
4
  "description": "InDusk development system — skills, MCP tools, and CLI for structured AI-assisted development",
5
5
  "type": "module",
6
6
  "files": [