@infinitedusky/indusk-mcp 1.28.26 → 1.28.27

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 (28) 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 +9 -0
  16. package/dist/bin/commands/doppler.d.ts +10 -0
  17. package/dist/bin/commands/doppler.js +179 -0
  18. package/dist/bin/commands/init.js +6 -0
  19. package/dist/bin/commands/update.d.ts +7 -0
  20. package/dist/bin/commands/update.js +21 -0
  21. package/dist/bin/commands/worktree.js +39 -1
  22. package/extensions/doppler/.env.example +31 -0
  23. package/extensions/doppler/manifest.json +25 -0
  24. package/extensions/doppler/skill.md +100 -0
  25. package/package.json +1 -1
  26. /package/admin/.next/static/{TcnArobszE9wONTBBMWOB → yUJyByMf3DK4Az8t9gKZ5}/_buildManifest.js +0 -0
  27. /package/admin/.next/static/{TcnArobszE9wONTBBMWOB → yUJyByMf3DK4Az8t9gKZ5}/_clientMiddlewareManifest.js +0 -0
  28. /package/admin/.next/static/{TcnArobszE9wONTBBMWOB → yUJyByMf3DK4Az8t9gKZ5}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- TcnArobszE9wONTBBMWOB
1
+ yUJyByMf3DK4Az8t9gKZ5
@@ -7,9 +7,9 @@
7
7
  "static/chunks/03~yq9q893hmn.js"
8
8
  ],
9
9
  "lowPriorityFiles": [
10
- "static/TcnArobszE9wONTBBMWOB/_buildManifest.js",
11
- "static/TcnArobszE9wONTBBMWOB/_ssgManifest.js",
12
- "static/TcnArobszE9wONTBBMWOB/_clientMiddlewareManifest.js"
10
+ "static/yUJyByMf3DK4Az8t9gKZ5/_buildManifest.js",
11
+ "static/yUJyByMf3DK4Az8t9gKZ5/_ssgManifest.js",
12
+ "static/yUJyByMf3DK4Az8t9gKZ5/_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/TcnArobszE9wONTBBMWOB/_buildManifest.js",
9
- "static/TcnArobszE9wONTBBMWOB/_ssgManifest.js",
10
- "static/TcnArobszE9wONTBBMWOB/_clientMiddlewareManifest.js"
8
+ "static/yUJyByMf3DK4Az8t9gKZ5/_buildManifest.js",
9
+ "static/yUJyByMf3DK4Az8t9gKZ5/_ssgManifest.js",
10
+ "static/yUJyByMf3DK4Az8t9gKZ5/_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\":\"TcnArobszE9wONTBBMWOB\"}\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\":\"yUJyByMf3DK4Az8t9gKZ5\"}\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":"TcnArobszE9wONTBBMWOB"}
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":"yUJyByMf3DK4Az8t9gKZ5"}
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":"TcnArobszE9wONTBBMWOB"}
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":"yUJyByMf3DK4Az8t9gKZ5"}
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":"TcnArobszE9wONTBBMWOB"}
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":"yUJyByMf3DK4Az8t9gKZ5"}
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":"TcnArobszE9wONTBBMWOB"}
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":"yUJyByMf3DK4Az8t9gKZ5"}
@@ -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":"TcnArobszE9wONTBBMWOB"}
5
+ 0:{"rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"isPartial":false,"staleTime":300,"varyParams":"$W4","buildId":"yUJyByMf3DK4Az8t9gKZ5"}
@@ -1 +1 @@
1
- 0:{"tree":{"name":"","param":null,"prefetchHints":0,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":0,"slots":null}}},"staleTime":300,"buildId":"TcnArobszE9wONTBBMWOB"}
1
+ 0:{"tree":{"name":"","param":null,"prefetchHints":0,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":0,"slots":null}}},"staleTime":300,"buildId":"yUJyByMf3DK4Az8t9gKZ5"}
@@ -7,9 +7,9 @@ globalThis.__BUILD_MANIFEST = {
7
7
  "static/chunks/03~yq9q893hmn.js"
8
8
  ],
9
9
  "lowPriorityFiles": [
10
- "static/TcnArobszE9wONTBBMWOB/_buildManifest.js",
11
- "static/TcnArobszE9wONTBBMWOB/_ssgManifest.js",
12
- "static/TcnArobszE9wONTBBMWOB/_clientMiddlewareManifest.js"
10
+ "static/yUJyByMf3DK4Az8t9gKZ5/_buildManifest.js",
11
+ "static/yUJyByMf3DK4Az8t9gKZ5/_ssgManifest.js",
12
+ "static/yUJyByMf3DK4Az8t9gKZ5/_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\":\"TcnArobszE9wONTBBMWOB\"}\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\":\"yUJyByMf3DK4Az8t9gKZ5\"}\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":137,"timestamp":293429854463,"id":4,"parentId":1,"tags":{},"startTime":1780605351462,"traceId":"0935d9cd57b9c890"},{"name":"load-custom-routes","duration":224,"timestamp":293429854659,"id":5,"parentId":1,"tags":{},"startTime":1780605351462,"traceId":"0935d9cd57b9c890"},{"name":"create-dist-dir","duration":99,"timestamp":293429854898,"id":6,"parentId":1,"tags":{},"startTime":1780605351462,"traceId":"0935d9cd57b9c890"},{"name":"clean","duration":14119,"timestamp":293429855552,"id":7,"parentId":1,"tags":{},"startTime":1780605351463,"traceId":"0935d9cd57b9c890"},{"name":"discover-routes","duration":3636,"timestamp":293429874650,"id":8,"parentId":1,"tags":{},"startTime":1780605351482,"traceId":"0935d9cd57b9c890"},{"name":"create-root-mapping","duration":36,"timestamp":293429878316,"id":9,"parentId":1,"tags":{},"startTime":1780605351485,"traceId":"0935d9cd57b9c890"},{"name":"generate-route-types","duration":12280,"timestamp":293429878980,"id":10,"parentId":1,"tags":{},"startTime":1780605351486,"traceId":"0935d9cd57b9c890"},{"name":"public-dir-conflict-check","duration":38,"timestamp":293429891301,"id":11,"parentId":1,"tags":{},"startTime":1780605351498,"traceId":"0935d9cd57b9c890"},{"name":"generate-routes-manifest","duration":1108,"timestamp":293429891380,"id":12,"parentId":1,"tags":{},"startTime":1780605351498,"traceId":"0935d9cd57b9c890"},{"name":"run-turbopack","duration":1605893,"timestamp":293429894043,"id":14,"parentId":1,"tags":{},"startTime":1780605351501,"traceId":"0935d9cd57b9c890"},{"name":"turbopack-build-events","duration":39,"timestamp":293430029026,"id":15,"parentId":1,"tags":{},"startTime":1780605351636,"traceId":"0935d9cd57b9c890"},{"name":"run-typescript","duration":1893160,"timestamp":293431520444,"id":16,"parentId":1,"tags":{},"startTime":1780605353128,"traceId":"0935d9cd57b9c890"},{"name":"generate-required-server-files","duration":703,"timestamp":293433414712,"id":18,"parentId":1,"tags":{},"startTime":1780605355022,"traceId":"0935d9cd57b9c890"},{"name":"check-static-error-page","duration":4573,"timestamp":293433432116,"id":20,"parentId":19,"tags":{},"startTime":1780605355039,"traceId":"0935d9cd57b9c890"},{"name":"is-page-static","duration":163046,"timestamp":293433441891,"id":30,"parentId":22,"tags":{},"startTime":1780605355049,"traceId":"0935d9cd57b9c890"},{"name":"check-page","duration":169411,"timestamp":293433435594,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1780605355043,"traceId":"0935d9cd57b9c890"},{"name":"is-page-static","duration":193959,"timestamp":293433441622,"id":29,"parentId":21,"tags":{},"startTime":1780605355049,"traceId":"0935d9cd57b9c890"},{"name":"check-page","duration":202526,"timestamp":293433433086,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1780605355040,"traceId":"0935d9cd57b9c890"},{"name":"is-page-static","duration":203189,"timestamp":293433441939,"id":31,"parentId":23,"tags":{},"startTime":1780605355049,"traceId":"0935d9cd57b9c890"},{"name":"check-page","duration":208922,"timestamp":293433436246,"id":23,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1780605355043,"traceId":"0935d9cd57b9c890"},{"name":"is-page-static","duration":207113,"timestamp":293433445898,"id":32,"parentId":28,"tags":{},"startTime":1780605355053,"traceId":"0935d9cd57b9c890"},{"name":"check-page","duration":216401,"timestamp":293433436638,"id":28,"parentId":19,"tags":{"page":"/"},"startTime":1780605355044,"traceId":"0935d9cd57b9c890"},{"name":"is-page-static","duration":208917,"timestamp":293433446007,"id":33,"parentId":24,"tags":{},"startTime":1780605355053,"traceId":"0935d9cd57b9c890"},{"name":"check-page","duration":218491,"timestamp":293433436475,"id":24,"parentId":19,"tags":{"page":"/p/[project]"},"startTime":1780605355044,"traceId":"0935d9cd57b9c890"},{"name":"is-page-static","duration":210430,"timestamp":293433446103,"id":36,"parentId":27,"tags":{},"startTime":1780605355053,"traceId":"0935d9cd57b9c890"},{"name":"check-page","duration":219965,"timestamp":293433436597,"id":27,"parentId":19,"tags":{"page":"/p/[project]/scorecards"},"startTime":1780605355044,"traceId":"0935d9cd57b9c890"},{"name":"is-page-static","duration":211769,"timestamp":293433446066,"id":35,"parentId":26,"tags":{},"startTime":1780605355053,"traceId":"0935d9cd57b9c890"},{"name":"check-page","duration":221299,"timestamp":293433436563,"id":26,"parentId":19,"tags":{"page":"/p/[project]/research/[slug]"},"startTime":1780605355044,"traceId":"0935d9cd57b9c890"},{"name":"is-page-static","duration":232079,"timestamp":293433446039,"id":34,"parentId":25,"tags":{},"startTime":1780605355053,"traceId":"0935d9cd57b9c890"},{"name":"check-page","duration":241686,"timestamp":293433436522,"id":25,"parentId":19,"tags":{"page":"/p/[project]/plan/[name]"},"startTime":1780605355044,"traceId":"0935d9cd57b9c890"},{"name":"static-check","duration":247002,"timestamp":293433431246,"id":19,"parentId":1,"tags":{},"startTime":1780605355038,"traceId":"0935d9cd57b9c890"},{"name":"write-routes-manifest","duration":429,"timestamp":293433679229,"id":38,"parentId":1,"tags":{},"startTime":1780605355286,"traceId":"0935d9cd57b9c890"},{"name":"load-dotenv","duration":17,"timestamp":293433684922,"id":41,"parentId":40,"tags":{},"startTime":1780605355292,"traceId":"0935d9cd57b9c890"},{"name":"run-export-path-map","duration":174,"timestamp":293433686052,"id":42,"parentId":40,"tags":{},"startTime":1780605355293,"traceId":"0935d9cd57b9c890"},{"name":"next-export","duration":186490,"timestamp":293433684341,"id":40,"parentId":1,"tags":{},"startTime":1780605355291,"traceId":"0935d9cd57b9c890"},{"name":"move-exported-app-global-error-","duration":351,"timestamp":293433871399,"id":43,"parentId":39,"tags":{},"startTime":1780605355479,"traceId":"0935d9cd57b9c890"},{"name":"static-generation","duration":191917,"timestamp":293433680615,"id":39,"parentId":1,"tags":{},"startTime":1780605355288,"traceId":"0935d9cd57b9c890"},{"name":"write-routes-manifest","duration":146,"timestamp":293433872616,"id":44,"parentId":1,"tags":{},"startTime":1780605355480,"traceId":"0935d9cd57b9c890"},{"name":"print-tree-view","duration":999,"timestamp":293433877237,"id":45,"parentId":1,"tags":{},"startTime":1780605355484,"traceId":"0935d9cd57b9c890"},{"name":"write-route-bundle-stats","duration":4863,"timestamp":293433878265,"id":46,"parentId":1,"tags":{},"startTime":1780605355485,"traceId":"0935d9cd57b9c890"},{"name":"telemetry-flush","duration":492842,"timestamp":293433883139,"id":47,"parentId":1,"tags":{},"startTime":1780605355490,"traceId":"0935d9cd57b9c890"},{"name":"next-build","duration":4615665,"timestamp":293429766941,"id":1,"tags":{"buildMode":"default","version":"16.2.4","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1780605351374,"traceId":"0935d9cd57b9c890"}]
1
+ [{"name":"generate-buildid","duration":90,"timestamp":4259431231,"id":4,"parentId":1,"tags":{},"startTime":1780844758654,"traceId":"e9bb71768b44201d"},{"name":"load-custom-routes","duration":187,"timestamp":4259431368,"id":5,"parentId":1,"tags":{},"startTime":1780844758654,"traceId":"e9bb71768b44201d"},{"name":"create-dist-dir","duration":85,"timestamp":4259431566,"id":6,"parentId":1,"tags":{},"startTime":1780844758654,"traceId":"e9bb71768b44201d"},{"name":"clean","duration":13540,"timestamp":4259432220,"id":7,"parentId":1,"tags":{},"startTime":1780844758655,"traceId":"e9bb71768b44201d"},{"name":"discover-routes","duration":3234,"timestamp":4259450425,"id":8,"parentId":1,"tags":{},"startTime":1780844758673,"traceId":"e9bb71768b44201d"},{"name":"create-root-mapping","duration":28,"timestamp":4259453681,"id":9,"parentId":1,"tags":{},"startTime":1780844758676,"traceId":"e9bb71768b44201d"},{"name":"generate-route-types","duration":11883,"timestamp":4259454298,"id":10,"parentId":1,"tags":{},"startTime":1780844758677,"traceId":"e9bb71768b44201d"},{"name":"public-dir-conflict-check","duration":39,"timestamp":4259466214,"id":11,"parentId":1,"tags":{},"startTime":1780844758689,"traceId":"e9bb71768b44201d"},{"name":"generate-routes-manifest","duration":1091,"timestamp":4259466297,"id":12,"parentId":1,"tags":{},"startTime":1780844758689,"traceId":"e9bb71768b44201d"},{"name":"run-turbopack","duration":1577151,"timestamp":4259469092,"id":14,"parentId":1,"tags":{},"startTime":1780844758691,"traceId":"e9bb71768b44201d"},{"name":"turbopack-build-events","duration":46,"timestamp":4259602239,"id":15,"parentId":1,"tags":{},"startTime":1780844758825,"traceId":"e9bb71768b44201d"},{"name":"run-typescript","duration":1842679,"timestamp":4261065368,"id":16,"parentId":1,"tags":{},"startTime":1780844760288,"traceId":"e9bb71768b44201d"},{"name":"generate-required-server-files","duration":558,"timestamp":4262908967,"id":18,"parentId":1,"tags":{},"startTime":1780844762131,"traceId":"e9bb71768b44201d"},{"name":"check-static-error-page","duration":1800,"timestamp":4262918333,"id":20,"parentId":19,"tags":{},"startTime":1780844762141,"traceId":"e9bb71768b44201d"},{"name":"is-page-static","duration":156952,"timestamp":4262924412,"id":30,"parentId":22,"tags":{},"startTime":1780844762147,"traceId":"e9bb71768b44201d"},{"name":"check-page","duration":161864,"timestamp":4262919559,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1780844762142,"traceId":"e9bb71768b44201d"},{"name":"is-page-static","duration":180866,"timestamp":4262924441,"id":31,"parentId":23,"tags":{},"startTime":1780844762147,"traceId":"e9bb71768b44201d"},{"name":"check-page","duration":185635,"timestamp":4262919746,"id":23,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1780844762142,"traceId":"e9bb71768b44201d"},{"name":"is-page-static","duration":208213,"timestamp":4262924210,"id":29,"parentId":21,"tags":{},"startTime":1780844762147,"traceId":"e9bb71768b44201d"},{"name":"check-page","duration":213722,"timestamp":4262918737,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1780844762141,"traceId":"e9bb71768b44201d"},{"name":"is-page-static","duration":211031,"timestamp":4262927912,"id":32,"parentId":28,"tags":{},"startTime":1780844762150,"traceId":"e9bb71768b44201d"},{"name":"check-page","duration":218912,"timestamp":4262920093,"id":28,"parentId":19,"tags":{"page":"/"},"startTime":1780844762142,"traceId":"e9bb71768b44201d"},{"name":"is-page-static","duration":217039,"timestamp":4262927982,"id":33,"parentId":24,"tags":{},"startTime":1780844762150,"traceId":"e9bb71768b44201d"},{"name":"check-page","duration":225143,"timestamp":4262919939,"id":24,"parentId":19,"tags":{"page":"/p/[project]"},"startTime":1780844762142,"traceId":"e9bb71768b44201d"},{"name":"is-page-static","duration":222510,"timestamp":4262928014,"id":34,"parentId":25,"tags":{},"startTime":1780844762150,"traceId":"e9bb71768b44201d"},{"name":"check-page","duration":230613,"timestamp":4262919979,"id":25,"parentId":19,"tags":{"page":"/p/[project]/plan/[name]"},"startTime":1780844762142,"traceId":"e9bb71768b44201d"},{"name":"is-page-static","duration":223648,"timestamp":4262928040,"id":35,"parentId":26,"tags":{},"startTime":1780844762150,"traceId":"e9bb71768b44201d"},{"name":"check-page","duration":231727,"timestamp":4262920017,"id":26,"parentId":19,"tags":{"page":"/p/[project]/research/[slug]"},"startTime":1780844762142,"traceId":"e9bb71768b44201d"},{"name":"is-page-static","duration":235328,"timestamp":4262928069,"id":36,"parentId":27,"tags":{},"startTime":1780844762150,"traceId":"e9bb71768b44201d"},{"name":"check-page","duration":243375,"timestamp":4262920053,"id":27,"parentId":19,"tags":{"page":"/p/[project]/scorecards"},"startTime":1780844762142,"traceId":"e9bb71768b44201d"},{"name":"static-check","duration":245413,"timestamp":4262918032,"id":19,"parentId":1,"tags":{},"startTime":1780844762140,"traceId":"e9bb71768b44201d"},{"name":"write-routes-manifest","duration":346,"timestamp":4263164628,"id":38,"parentId":1,"tags":{},"startTime":1780844762387,"traceId":"e9bb71768b44201d"},{"name":"load-dotenv","duration":20,"timestamp":4263170179,"id":41,"parentId":40,"tags":{},"startTime":1780844762393,"traceId":"e9bb71768b44201d"},{"name":"run-export-path-map","duration":177,"timestamp":4263171270,"id":42,"parentId":40,"tags":{},"startTime":1780844762394,"traceId":"e9bb71768b44201d"},{"name":"next-export","duration":186117,"timestamp":4263169597,"id":40,"parentId":1,"tags":{},"startTime":1780844762392,"traceId":"e9bb71768b44201d"},{"name":"move-exported-app-global-error-","duration":383,"timestamp":4263356298,"id":43,"parentId":39,"tags":{},"startTime":1780844762579,"traceId":"e9bb71768b44201d"},{"name":"static-generation","duration":191468,"timestamp":4263165951,"id":39,"parentId":1,"tags":{},"startTime":1780844762388,"traceId":"e9bb71768b44201d"},{"name":"write-routes-manifest","duration":143,"timestamp":4263357513,"id":44,"parentId":1,"tags":{},"startTime":1780844762580,"traceId":"e9bb71768b44201d"},{"name":"print-tree-view","duration":1088,"timestamp":4263362183,"id":45,"parentId":1,"tags":{},"startTime":1780844762585,"traceId":"e9bb71768b44201d"},{"name":"write-route-bundle-stats","duration":5034,"timestamp":4263363281,"id":46,"parentId":1,"tags":{},"startTime":1780844762586,"traceId":"e9bb71768b44201d"},{"name":"telemetry-flush","duration":491935,"timestamp":4263368327,"id":47,"parentId":1,"tags":{},"startTime":1780844762591,"traceId":"e9bb71768b44201d"},{"name":"next-build","duration":4514852,"timestamp":4259345451,"id":1,"tags":{"buildMode":"default","version":"16.2.4","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1780844758568,"traceId":"e9bb71768b44201d"}]
@@ -1 +1 @@
1
- [{"name":"run-turbopack","duration":1605893,"timestamp":293429894043,"id":14,"parentId":1,"tags":{},"startTime":1780605351501,"traceId":"0935d9cd57b9c890"},{"name":"turbopack-build-events","duration":39,"timestamp":293430029026,"id":15,"parentId":1,"tags":{},"startTime":1780605351636,"traceId":"0935d9cd57b9c890"},{"name":"run-typescript","duration":1893160,"timestamp":293431520444,"id":16,"parentId":1,"tags":{},"startTime":1780605353128,"traceId":"0935d9cd57b9c890"},{"name":"static-check","duration":247002,"timestamp":293433431246,"id":19,"parentId":1,"tags":{},"startTime":1780605355038,"traceId":"0935d9cd57b9c890"},{"name":"static-generation","duration":191917,"timestamp":293433680615,"id":39,"parentId":1,"tags":{},"startTime":1780605355288,"traceId":"0935d9cd57b9c890"},{"name":"telemetry-flush","duration":492842,"timestamp":293433883139,"id":47,"parentId":1,"tags":{},"startTime":1780605355490,"traceId":"0935d9cd57b9c890"},{"name":"next-build","duration":4615665,"timestamp":293429766941,"id":1,"tags":{"buildMode":"default","version":"16.2.4","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1780605351374,"traceId":"0935d9cd57b9c890"}]
1
+ [{"name":"run-turbopack","duration":1577151,"timestamp":4259469092,"id":14,"parentId":1,"tags":{},"startTime":1780844758691,"traceId":"e9bb71768b44201d"},{"name":"turbopack-build-events","duration":46,"timestamp":4259602239,"id":15,"parentId":1,"tags":{},"startTime":1780844758825,"traceId":"e9bb71768b44201d"},{"name":"run-typescript","duration":1842679,"timestamp":4261065368,"id":16,"parentId":1,"tags":{},"startTime":1780844760288,"traceId":"e9bb71768b44201d"},{"name":"static-check","duration":245413,"timestamp":4262918032,"id":19,"parentId":1,"tags":{},"startTime":1780844762140,"traceId":"e9bb71768b44201d"},{"name":"static-generation","duration":191468,"timestamp":4263165951,"id":39,"parentId":1,"tags":{},"startTime":1780844762388,"traceId":"e9bb71768b44201d"},{"name":"telemetry-flush","duration":491935,"timestamp":4263368327,"id":47,"parentId":1,"tags":{},"startTime":1780844762591,"traceId":"e9bb71768b44201d"},{"name":"next-build","duration":4514852,"timestamp":4259345451,"id":1,"tags":{"buildMode":"default","version":"16.2.4","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1780844758568,"traceId":"e9bb71768b44201d"}]
package/dist/bin/cli.js CHANGED
@@ -566,4 +566,13 @@ worktreeCmd
566
566
  const { worktreePreflight } = await import("./commands/worktree.js");
567
567
  worktreePreflight(slug, baseBranch);
568
568
  });
569
+ // ---- doppler extension: env management ----
570
+ const dopplerCmd = program.command("doppler").description("Doppler env management (env-pull)");
571
+ dopplerCmd
572
+ .command("env-pull <profile>")
573
+ .description("Materialize apps/<app>/.env.<profile> from Doppler (profile: local | staging | production), using the InDusk-level service token")
574
+ .action(async (profile) => {
575
+ const { dopplerEnvPull } = await import("./commands/doppler.js");
576
+ dopplerEnvPull(rootOrExit(), profile);
577
+ });
569
578
  program.parse();
@@ -0,0 +1,10 @@
1
+ /** CLI entry: `indusk doppler env-pull <profile>` — token + apps both at projectRoot. */
2
+ export declare function dopplerEnvPull(projectRoot: string, profile: string): void;
3
+ /**
4
+ * Auto-provision a freshly-created worktree's env: token/config from the workbench
5
+ * root, apps written into the worktree. Attempts when the doppler extension is enabled
6
+ * for the workbench; auth resolves to a service token (env/.env) or the logged-in
7
+ * Doppler CLI session. Returns true if it ran without a hard error, false to skip
8
+ * silently (extension not enabled). Per-app download failures are non-fatal.
9
+ */
10
+ export declare function provisionWorktreeEnv(workbenchRoot: string, worktreeDir: string, profile?: string): boolean;
@@ -0,0 +1,179 @@
1
+ import { spawnSync } from "node:child_process";
2
+ import { existsSync, readdirSync, readFileSync, statSync, writeFileSync } from "node:fs";
3
+ import { join } from "node:path";
4
+ /**
5
+ * doppler extension — `env-pull` + worktree auto-provisioning.
6
+ *
7
+ * Config-driven (declarative, per the dawn "config as source of truth" direction):
8
+ * the project's `.indusk/config.json` carries a `doppler` section —
9
+ *
10
+ * "doppler": {
11
+ * "project": "indusk", // Doppler project
12
+ * "profiles": { "local": "local", "production": "prd" }, // profile → Doppler config-root
13
+ * "apps": [ // explicit app list (excludes libraries)
14
+ * { "dir": "docs" }, // folder + Doppler leaf "<prefix>_docs"
15
+ * { "dir": "indusk-admin", "config": "admin" } // folder indusk-admin → leaf "<prefix>_admin"
16
+ * ]
17
+ * }
18
+ *
19
+ * For each listed app, env-pull runs
20
+ * doppler secrets download --project <project> --config <prefix>_<config|dir> --format env
21
+ * and writes `<appsRoot>/apps/<dir>/.env.<profile>` (gitignored).
22
+ *
23
+ * The token (DOPPLER_TOKEN) lives in the gitignored `.indusk/extensions/doppler/.env`.
24
+ * When `.indusk/config.json` has no `doppler` section, env-pull falls back to globbing
25
+ * `apps/*` with the default prefixes (local→loc, staging→stg, production→prd) and the
26
+ * folder name as the Doppler config — backward-compatible with pre-config projects.
27
+ */
28
+ const DEFAULT_PROFILE_PREFIX = {
29
+ local: "loc",
30
+ staging: "stg",
31
+ production: "prd",
32
+ };
33
+ const GITIGNORE_MARKER = "# doppler env-pull (machine-local, provisioned from Doppler)";
34
+ const GITIGNORE_BLOCK = [
35
+ GITIGNORE_MARKER,
36
+ ".indusk/extensions/doppler/.env",
37
+ "apps/*/.env.local",
38
+ "apps/*/.env.staging",
39
+ "apps/*/.env.production",
40
+ ];
41
+ function parseEnvFile(path) {
42
+ const out = {};
43
+ if (!existsSync(path))
44
+ return out;
45
+ for (const line of readFileSync(path, "utf-8").split("\n")) {
46
+ const m = line.match(/^([A-Z0-9_]+)=(.*)$/);
47
+ if (m)
48
+ out[m[1]] = m[2];
49
+ }
50
+ return out;
51
+ }
52
+ /** Read the `doppler` section from the project's `.indusk/config.json` (token-root). */
53
+ function readDopplerConfig(tokenRoot) {
54
+ const path = join(tokenRoot, ".indusk", "config.json");
55
+ if (!existsSync(path))
56
+ return {};
57
+ try {
58
+ return (JSON.parse(readFileSync(path, "utf-8")).doppler ??
59
+ {});
60
+ }
61
+ catch {
62
+ return {};
63
+ }
64
+ }
65
+ /** Token (+ optional legacy project) from the gitignored extension `.env`. */
66
+ function readDopplerEnv(tokenRoot) {
67
+ const env = parseEnvFile(join(tokenRoot, ".indusk/extensions/doppler/.env"));
68
+ return { token: env.DOPPLER_TOKEN, project: env.DOPPLER_PROJECT };
69
+ }
70
+ /** Resolve the app list: explicit config.apps, else glob apps/* (each folder as its own config). */
71
+ function resolveApps(cfg, appsRoot) {
72
+ if (cfg.apps && cfg.apps.length > 0)
73
+ return cfg.apps;
74
+ const appsDir = join(appsRoot, "apps");
75
+ if (!existsSync(appsDir))
76
+ return [];
77
+ return readdirSync(appsDir)
78
+ .filter((a) => statSync(join(appsDir, a)).isDirectory())
79
+ .map((dir) => ({ dir }));
80
+ }
81
+ /** Idempotently ensure the provisioned env files (and the token) are gitignored. */
82
+ function ensureGitignore(projectRoot) {
83
+ const path = join(projectRoot, ".gitignore");
84
+ const current = existsSync(path) ? readFileSync(path, "utf-8") : "";
85
+ if (current.includes(GITIGNORE_MARKER))
86
+ return;
87
+ const prefix = current.length > 0 && !current.endsWith("\n") ? "\n" : "";
88
+ writeFileSync(path, `${current}${prefix}\n${GITIGNORE_BLOCK.join("\n")}\n`);
89
+ }
90
+ /**
91
+ * Pull env from Doppler for every configured app under `appsRoot/apps`, using the
92
+ * token + config at `tokenRoot`. Returns files written, or -1 on a hard error
93
+ * (bad profile / missing token or project / no apps).
94
+ */
95
+ function runEnvPull(tokenRoot, appsRoot, profile, opts = {}) {
96
+ const cfg = readDopplerConfig(tokenRoot);
97
+ const prefix = cfg.profiles?.[profile] ?? DEFAULT_PROFILE_PREFIX[profile];
98
+ if (!prefix) {
99
+ console.error(`Unknown profile "${profile}". Use one of: local, staging, production (or declare it in .indusk/config.json doppler.profiles).`);
100
+ return -1;
101
+ }
102
+ const env = readDopplerEnv(tokenRoot);
103
+ // Auth precedence: explicit service token (CI via DOPPLER_TOKEN env, or the
104
+ // extension .env) → otherwise the logged-in Doppler CLI session (`doppler login`).
105
+ // So a dev who's logged in needs no token file; CI sets DOPPLER_TOKEN from a secret.
106
+ const token = process.env.DOPPLER_TOKEN ?? env.token;
107
+ const project = cfg.project ?? env.project;
108
+ if (!project) {
109
+ if (!opts.quiet) {
110
+ console.error("Missing Doppler project. Set doppler.project in .indusk/config.json (or DOPPLER_PROJECT in the extension .env).");
111
+ }
112
+ return -1;
113
+ }
114
+ const apps = resolveApps(cfg, appsRoot);
115
+ if (apps.length === 0) {
116
+ if (!opts.quiet)
117
+ console.error(`No apps to provision (no doppler.apps config, no apps/* dirs).`);
118
+ return -1;
119
+ }
120
+ if (opts.manageGitignore)
121
+ ensureGitignore(appsRoot);
122
+ let written = 0;
123
+ for (const app of apps) {
124
+ const leaf = `${prefix}_${app.config ?? app.dir}`;
125
+ const outDir = join(appsRoot, "apps", app.dir);
126
+ if (!existsSync(outDir)) {
127
+ if (!opts.quiet)
128
+ console.error(` ${app.dir}: skipped — apps/${app.dir} not found`);
129
+ continue;
130
+ }
131
+ const dopplerArgs = [
132
+ "secrets",
133
+ "download",
134
+ "--project",
135
+ project,
136
+ "--config",
137
+ leaf,
138
+ "--format",
139
+ "env",
140
+ "--no-file",
141
+ ];
142
+ // Only pass --token when we have one; otherwise rely on `doppler login`.
143
+ if (token)
144
+ dopplerArgs.push("--token", token);
145
+ const res = spawnSync("doppler", dopplerArgs, { encoding: "utf-8" });
146
+ if (res.status !== 0) {
147
+ if (!opts.quiet) {
148
+ console.error(` ${app.dir}: skipped — doppler download failed for ${leaf}: ${(res.stderr ?? "").trim()}`);
149
+ }
150
+ continue;
151
+ }
152
+ writeFileSync(join(outDir, `.env.${profile}`), res.stdout);
153
+ if (!opts.quiet)
154
+ console.info(` ${app.dir} → apps/${app.dir}/.env.${profile} (${leaf})`);
155
+ written++;
156
+ }
157
+ if (!opts.quiet) {
158
+ console.info(`env-pull (${profile}): wrote ${written} file(s) from Doppler project "${project}".`);
159
+ }
160
+ return written;
161
+ }
162
+ /** CLI entry: `indusk doppler env-pull <profile>` — token + apps both at projectRoot. */
163
+ export function dopplerEnvPull(projectRoot, profile) {
164
+ if (runEnvPull(projectRoot, projectRoot, profile, { manageGitignore: true }) < 0) {
165
+ process.exit(1);
166
+ }
167
+ }
168
+ /**
169
+ * Auto-provision a freshly-created worktree's env: token/config from the workbench
170
+ * root, apps written into the worktree. Attempts when the doppler extension is enabled
171
+ * for the workbench; auth resolves to a service token (env/.env) or the logged-in
172
+ * Doppler CLI session. Returns true if it ran without a hard error, false to skip
173
+ * silently (extension not enabled). Per-app download failures are non-fatal.
174
+ */
175
+ export function provisionWorktreeEnv(workbenchRoot, worktreeDir, profile = "local") {
176
+ if (!existsSync(join(workbenchRoot, ".indusk", "extensions", "doppler")))
177
+ return false;
178
+ return runEnvPull(workbenchRoot, worktreeDir, profile, { manageGitignore: false }) >= 0;
179
+ }
@@ -1043,6 +1043,12 @@ export async function init(projectRoot, options = {}) {
1043
1043
  console.info("\n[Extensions]");
1044
1044
  const { autoEnableExtensions } = await import("./extensions.js");
1045
1045
  await autoEnableExtensions(projectRoot);
1046
+ // composable.env deprecation nudge if the project being initialized still
1047
+ // carries a ce.json (non-destructive — just prints).
1048
+ const { ceDeprecationNotice } = await import("./update.js");
1049
+ const ceNotice = ceDeprecationNotice(projectRoot);
1050
+ if (ceNotice)
1051
+ console.info(ceNotice);
1046
1052
  // 12. Write .indusk/config.json — InDusk is opinionated: linter is always
1047
1053
  // Biome. ESLint/Prettier detection becomes a vestige warning (see step 6.5),
1048
1054
  // not a recorded preference. Dawn (v2) will move this to a config-file-driven
@@ -1 +1,8 @@
1
+ /**
2
+ * composable.env deprecation notice. Returns a non-destructive nudge toward the
3
+ * `doppler` extension when the project still has a `ce.json`, else null. Pure
4
+ * read — never mutates or removes the project's composable.env setup, so the
5
+ * legacy opt-in keeps working.
6
+ */
7
+ export declare function ceDeprecationNotice(projectRoot: string): string | null;
1
8
  export declare function update(projectRoot: string): Promise<void>;
@@ -9,6 +9,23 @@ import { checkLatestVersion, hasNewerVersion } from "../../lib/version-check.js"
9
9
  import { envIsFunctional } from "./extensions.js";
10
10
  const __dirname = dirname(fileURLToPath(import.meta.url));
11
11
  const packageRoot = join(__dirname, "../../..");
12
+ /**
13
+ * composable.env deprecation notice. Returns a non-destructive nudge toward the
14
+ * `doppler` extension when the project still has a `ce.json`, else null. Pure
15
+ * read — never mutates or removes the project's composable.env setup, so the
16
+ * legacy opt-in keeps working.
17
+ */
18
+ export function ceDeprecationNotice(projectRoot) {
19
+ if (!existsSync(join(projectRoot, "ce.json")))
20
+ return null;
21
+ return [
22
+ "\n[composable.env]",
23
+ " ⚠ composable.env is deprecated in favor of the `doppler` extension",
24
+ " (Doppler + plain docker-compose; per-worktree auto-provisioning).",
25
+ " Your ce.json is untouched — composable.env keeps working (opt-in).",
26
+ " To migrate, see numero's `composable-env-removal` plan as the worked example.",
27
+ ].join("\n");
28
+ }
12
29
  const pkgJsonPath = join(packageRoot, "package.json");
13
30
  function fileHash(path) {
14
31
  return createHash("sha256").update(readFileSync(path)).digest("hex").slice(0, 12);
@@ -455,6 +472,10 @@ export async function update(projectRoot) {
455
472
  console.info("\n[Required Extensions]\n");
456
473
  const { autoEnableExtensions } = await import("./extensions.js");
457
474
  await autoEnableExtensions(projectRoot);
475
+ // composable.env deprecation nudge (non-destructive — only prints).
476
+ const ceNotice = ceDeprecationNotice(projectRoot);
477
+ if (ceNotice)
478
+ console.info(ceNotice);
458
479
  // 7c. SCM field migration. Pre-1.28.x projects don't have `scm` in their
459
480
  // config — detect once and write it back. Idempotent on subsequent runs:
460
481
  // if the field is already populated, do nothing.
@@ -3,6 +3,7 @@ import { existsSync, lstatSync, readdirSync, readFileSync, readlinkSync } from "
3
3
  import { dirname, join, resolve } from "node:path";
4
4
  import { fileURLToPath } from "node:url";
5
5
  import { validateWorktreeConfig } from "../../lib/worktree/validate-config.js";
6
+ import { provisionWorktreeEnv } from "./doppler.js";
6
7
  /**
7
8
  * `indusk worktree` subcommands.
8
9
  *
@@ -88,7 +89,44 @@ function runWorktreeScript(scriptName, args) {
88
89
  process.exit(r.status ?? 1);
89
90
  }
90
91
  export function worktreeCreate(slug, baseBranch) {
91
- runWorktreeScript("setup-worktree", baseBranch ? [slug, baseBranch] : [slug]);
92
+ const pkgRoot = indusKMcpPackageRoot();
93
+ const script = resolve(pkgRoot, "extensions/worktree/scripts/setup-worktree.sh");
94
+ if (!existsSync(script)) {
95
+ console.error(`Error: setup-worktree.sh not found at ${script}`);
96
+ process.exit(1);
97
+ }
98
+ const r = spawnSync("bash", [script, ...(baseBranch ? [slug, baseBranch] : [slug])], {
99
+ cwd: process.cwd(),
100
+ stdio: "inherit",
101
+ });
102
+ const code = r.status ?? 1;
103
+ // On success, auto-provision the worktree's env if the doppler extension is
104
+ // configured (token at the workbench level). Skips silently otherwise.
105
+ if (code === 0) {
106
+ try {
107
+ const workbenchRoot = resolveWorkbenchRoot(process.cwd());
108
+ if (workbenchRoot && provisionWorktreeEnv(workbenchRoot, join(workbenchRoot, slug))) {
109
+ console.info(` doppler: auto-provisioned env for ${slug}`);
110
+ }
111
+ }
112
+ catch (e) {
113
+ console.error(` doppler: env auto-provision failed — ${e.message}`);
114
+ }
115
+ }
116
+ process.exit(code);
117
+ }
118
+ /** Walk up from `start` to the nearest workbench root (`.indusk/config.json` with worktree.shape === "workbench"). */
119
+ function resolveWorkbenchRoot(start) {
120
+ let dir = resolve(start);
121
+ for (let i = 0; i < 40; i++) {
122
+ if (readWorkbenchConfig(dir)?.worktree?.shape === "workbench")
123
+ return dir;
124
+ const parent = dirname(dir);
125
+ if (parent === dir)
126
+ break;
127
+ dir = parent;
128
+ }
129
+ return null;
92
130
  }
93
131
  export function worktreeRefresh(slug) {
94
132
  runWorktreeScript("refresh-worktree", [slug]);
@@ -0,0 +1,31 @@
1
+ # doppler extension — auth (gitignored once copied to .env)
2
+ #
3
+ # Auth is OPTIONAL here. env-pull resolves auth in this order:
4
+ # 1. DOPPLER_TOKEN env var (CI / deployment — set from a GitHub secret)
5
+ # 2. DOPPLER_TOKEN in this file (a service token, for headless/local use)
6
+ # 3. the logged-in Doppler CLI session (`doppler login`)
7
+ #
8
+ # So if you've run `doppler login` on this machine, you need NOTHING here —
9
+ # just leave this file empty (or don't create it). The token path exists for
10
+ # CI and headless environments where interactive login isn't possible.
11
+ #
12
+ # The Doppler PROJECT and the app→config mapping live in .indusk/config.json
13
+ # under the `doppler` key (committed, declarative) — NOT here. This file is
14
+ # only ever the secret.
15
+ #
16
+ # cp .indusk/extensions/doppler/.env.example .indusk/extensions/doppler/.env
17
+ #
18
+ # `.indusk/` sits at the workbench root, so this one auth (or your CLI login)
19
+ # is shared by the trunk and every worktree; `indusk worktree create` provisions
20
+ # each new worktree's env automatically.
21
+
22
+ # --- Service token (optional) ---
23
+ # A Doppler SERVICE TOKEN. Only needed if you are NOT using `doppler login`
24
+ # (e.g. CI, or a headless box). Scope it to the configs this project reads.
25
+ # Create one: Doppler dashboard > project > config > Access > Service Tokens.
26
+ # In CI, set this as an environment variable from a GitHub secret instead of
27
+ # putting it in a file.
28
+ DOPPLER_TOKEN=
29
+
30
+ # DOPPLER_PROJECT is deprecated here — set doppler.project in .indusk/config.json.
31
+ # (Still read as a fallback if present, for backward-compat.)
@@ -0,0 +1,25 @@
1
+ {
2
+ "name": "doppler",
3
+ "description": "Doppler-backed environment management — env vars from Doppler branched configs + plain docker-compose, with per-worktree auto-provisioning. Replaces composable.env as the default InDusk env layer.",
4
+ "required": true,
5
+ "provides": {
6
+ "skill": true,
7
+ "health_checks": [
8
+ {
9
+ "name": "doppler-cli-installed",
10
+ "command": "command -v doppler >/dev/null 2>&1"
11
+ },
12
+ {
13
+ "name": "doppler-token-present",
14
+ "command": "node -e \"const fs=require('fs');const p='.indusk/extensions/doppler/.env';if(!fs.existsSync(p))process.exit(1);process.exit(/DOPPLER_TOKEN=\\S/.test(fs.readFileSync(p,'utf-8'))?0:1)\""
15
+ }
16
+ ]
17
+ },
18
+ "hooks": {
19
+ "on_enable": "echo 'Doppler extension enabled. Add your Doppler service token to .indusk/extensions/doppler/.env (copy from .env.example), then env auto-provisions on worktree create.'",
20
+ "on_disable": "echo 'Doppler extension disabled. .indusk/extensions/doppler/.env is left in place; remove it manually if you no longer want the token on disk.'"
21
+ },
22
+ "detect": {
23
+ "file": ".indusk/extensions/doppler/.env"
24
+ }
25
+ }
@@ -0,0 +1,100 @@
1
+ ---
2
+ name: doppler
3
+ description: Doppler-backed env management for InDusk projects — env vars from Doppler branched configs + plain docker-compose, materialized per-app via env-pull, auto-provisioned into every worktree from a single InDusk-level service token. The default InDusk env layer (replaces composable.env).
4
+ ---
5
+
6
+ # Doppler — Environment Management
7
+
8
+ This extension is how InDusk projects get their environment, replacing
9
+ composable.env. Two pieces, both things every developer already knows:
10
+
11
+ - **Doppler** holds the env vars (in branched configs).
12
+ - **Plain docker-compose** defines container shape (per-app fragments via `include:`).
13
+
14
+ There is no custom contract/component/profile language to learn. Env reaches a
15
+ checkout via an `env-pull` step that downloads from Doppler and writes ordinary
16
+ `.env` files.
17
+
18
+ ## The model
19
+
20
+ ### Doppler branched configs
21
+
22
+ Env vars live in Doppler, organized as a project with branched configs:
23
+
24
+ ```
25
+ <project>/base ← cross-environment defaults (CHAIN_ID, LOG_LEVEL)
26
+ ├─ <project>/loc ← local-dev overrides
27
+ │ ├─ <project>/loc_<app> ← per-app leaf (one per app under apps/*/)
28
+ │ └─ ...
29
+ ├─ <project>/stg ← staging
30
+ └─ <project>/prd ← production + secrets
31
+ ```
32
+
33
+ Naming convention: `<prefix>_<app>` where prefix is `loc` (local), `stg`
34
+ (staging), `prd` (production). Per-app leaves inherit from the env parent, which
35
+ inherits from `base`.
36
+
37
+ ### env-pull materializes `.env` files
38
+
39
+ `pnpm env:pull <profile>` walks `apps/*/`, calls
40
+ `doppler secrets download --project <p> --config <prefix>_<app> --format env`
41
+ for each app, and writes `apps/<app>/.env.<profile>` — gitignored. CI runs the
42
+ same step before `docker compose up`.
43
+
44
+ Test profile is the exception: `.env.test` files are committed to git with safe,
45
+ non-secret defaults so tests run without a Doppler token.
46
+
47
+ ## Auth — one token at the InDusk level
48
+
49
+ Auth is a Doppler **service token** stored once in a gitignored file:
50
+
51
+ ```
52
+ .indusk/extensions/doppler/.env ← gitignored; DOPPLER_TOKEN + DOPPLER_PROJECT
53
+ .indusk/extensions/doppler/.env.example ← committed template
54
+ ```
55
+
56
+ `.indusk/` lives at the workbench root, so this **one token is shared by the
57
+ trunk and every worktree**. No `doppler login` OAuth, no per-worktree auth.
58
+
59
+ Setup (once per machine/workbench):
60
+
61
+ ```sh
62
+ cp .indusk/extensions/doppler/.env.example .indusk/extensions/doppler/.env
63
+ # edit .env: paste a Doppler service token + the project name
64
+ ```
65
+
66
+ A new/3rd-party dev requests a token, drops it in that file once — done.
67
+
68
+ ## Worktrees auto-provision (the load-bearing behavior)
69
+
70
+ When the doppler extension is enabled, **`indusk worktree create <slug>` pulls
71
+ env automatically** as part of provisioning — the developer runs nothing. A
72
+ freshly created worktree is build-ready: its apps already have populated `.env`
73
+ files, pulled from Doppler using the workbench-level token.
74
+
75
+ This is the whole point: worktrees "just work" with zero per-worktree env steps.
76
+
77
+ ## Commands
78
+
79
+ | Command | What |
80
+ |---------|------|
81
+ | `pnpm env:pull local` | write `apps/*/.env.local` from Doppler `loc_*` configs |
82
+ | `pnpm env:pull staging` | write `apps/*/.env.staging` from `stg_*` |
83
+ | `pnpm env:pull production` | write `apps/*/.env.production` from `prd_*` |
84
+ | `indusk worktree create <slug>` | create a worktree with env auto-provisioned |
85
+
86
+ ## Health
87
+
88
+ - `doppler-cli-installed` — the `doppler` binary is on PATH (`brew install dopplerhq/cli/doppler`).
89
+ - `doppler-token-present` — `.indusk/extensions/doppler/.env` exists and has a `DOPPLER_TOKEN`.
90
+
91
+ If a worktree comes up without env, check both: the binary must be installed and
92
+ the token file must be present at the InDusk level.
93
+
94
+ ## Migrating off composable.env
95
+
96
+ composable.env is deprecated. To migrate a project, see numero's
97
+ `composable-env-removal` plan as the worked example: restructure Doppler into
98
+ branched configs, write `env-pull`, replace the generated compose with
99
+ hand-written per-app fragments, delete `env/` + `ce.json`. Reversible until the
100
+ final cleanup.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@infinitedusky/indusk-mcp",
3
- "version": "1.28.26",
3
+ "version": "1.28.27",
4
4
  "description": "InDusk development system — skills, MCP tools, and CLI for structured AI-assisted development",
5
5
  "type": "module",
6
6
  "files": [