@infinitedusky/indusk-mcp 1.31.8 → 1.31.11
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.
- package/admin/.next/BUILD_ID +1 -1
- package/admin/.next/build-manifest.json +3 -3
- package/admin/.next/fallback-build-manifest.json +3 -3
- package/admin/.next/server/app/_global-error.html +1 -1
- package/admin/.next/server/app/_global-error.rsc +1 -1
- package/admin/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/admin/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/admin/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/admin/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/admin/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/admin/.next/server/middleware-build-manifest.js +3 -3
- package/admin/.next/server/pages/500.html +1 -1
- package/admin/.next/trace +1 -1
- package/admin/.next/trace-build +1 -1
- package/dist/bin/cli.js +17 -0
- package/dist/bin/commands/prune.d.ts +20 -0
- package/dist/bin/commands/prune.js +121 -0
- package/dist/lib/eval/persistent-evaluator.js +9 -2
- package/dist/lib/prune/measure.d.ts +68 -0
- package/dist/lib/prune/measure.js +179 -0
- package/extensions/worktree/scripts/wt.sh +56 -9
- package/hooks/_hook-paths.js +65 -6
- package/package.json +1 -1
- package/skills/retrospective.md +32 -0
- /package/admin/.next/static/{rBO82tgC1ec6duziqb0_O → V1Q5UoD4oB6LEf_Sjt3D5}/_buildManifest.js +0 -0
- /package/admin/.next/static/{rBO82tgC1ec6duziqb0_O → V1Q5UoD4oB6LEf_Sjt3D5}/_clientMiddlewareManifest.js +0 -0
- /package/admin/.next/static/{rBO82tgC1ec6duziqb0_O → V1Q5UoD4oB6LEf_Sjt3D5}/_ssgManifest.js +0 -0
package/admin/.next/BUILD_ID
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
V1Q5UoD4oB6LEf_Sjt3D5
|
|
@@ -7,9 +7,9 @@
|
|
|
7
7
|
"static/chunks/03~yq9q893hmn.js"
|
|
8
8
|
],
|
|
9
9
|
"lowPriorityFiles": [
|
|
10
|
-
"static/
|
|
11
|
-
"static/
|
|
12
|
-
"static/
|
|
10
|
+
"static/V1Q5UoD4oB6LEf_Sjt3D5/_buildManifest.js",
|
|
11
|
+
"static/V1Q5UoD4oB6LEf_Sjt3D5/_ssgManifest.js",
|
|
12
|
+
"static/V1Q5UoD4oB6LEf_Sjt3D5/_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/
|
|
9
|
-
"static/
|
|
10
|
-
"static/
|
|
8
|
+
"static/V1Q5UoD4oB6LEf_Sjt3D5/_buildManifest.js",
|
|
9
|
+
"static/V1Q5UoD4oB6LEf_Sjt3D5/_ssgManifest.js",
|
|
10
|
+
"static/V1Q5UoD4oB6LEf_Sjt3D5/_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,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";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\":\"
|
|
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,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";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\":\"V1Q5UoD4oB6LEf_Sjt3D5\"}\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":"
|
|
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":"V1Q5UoD4oB6LEf_Sjt3D5"}
|
|
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":"
|
|
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":"V1Q5UoD4oB6LEf_Sjt3D5"}
|
|
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":"
|
|
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":"V1Q5UoD4oB6LEf_Sjt3D5"}
|
|
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":"
|
|
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":"V1Q5UoD4oB6LEf_Sjt3D5"}
|
|
@@ -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":"
|
|
5
|
+
0:{"rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"isPartial":false,"staleTime":300,"varyParams":"$W4","buildId":"V1Q5UoD4oB6LEf_Sjt3D5"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
0:{"tree":{"name":"","param":null,"prefetchHints":0,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":0,"slots":null}}},"staleTime":300,"buildId":"
|
|
1
|
+
0:{"tree":{"name":"","param":null,"prefetchHints":0,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":0,"slots":null}}},"staleTime":300,"buildId":"V1Q5UoD4oB6LEf_Sjt3D5"}
|
|
@@ -7,9 +7,9 @@ globalThis.__BUILD_MANIFEST = {
|
|
|
7
7
|
"static/chunks/03~yq9q893hmn.js"
|
|
8
8
|
],
|
|
9
9
|
"lowPriorityFiles": [
|
|
10
|
-
"static/
|
|
11
|
-
"static/
|
|
12
|
-
"static/
|
|
10
|
+
"static/V1Q5UoD4oB6LEf_Sjt3D5/_buildManifest.js",
|
|
11
|
+
"static/V1Q5UoD4oB6LEf_Sjt3D5/_ssgManifest.js",
|
|
12
|
+
"static/V1Q5UoD4oB6LEf_Sjt3D5/_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,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";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\":\"
|
|
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,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";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\":\"V1Q5UoD4oB6LEf_Sjt3D5\"}\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":
|
|
1
|
+
[{"name":"generate-buildid","duration":115,"timestamp":1901826913649,"id":4,"parentId":1,"tags":{},"startTime":1782742325292,"traceId":"565ab8c2e433cc4b"},{"name":"load-custom-routes","duration":271,"timestamp":1901826913831,"id":5,"parentId":1,"tags":{},"startTime":1782742325292,"traceId":"565ab8c2e433cc4b"},{"name":"create-dist-dir","duration":88,"timestamp":1901826914118,"id":6,"parentId":1,"tags":{},"startTime":1782742325293,"traceId":"565ab8c2e433cc4b"},{"name":"clean","duration":54771,"timestamp":1901826914974,"id":7,"parentId":1,"tags":{},"startTime":1782742325294,"traceId":"565ab8c2e433cc4b"},{"name":"discover-routes","duration":7442,"timestamp":1901826976535,"id":8,"parentId":1,"tags":{},"startTime":1782742325355,"traceId":"565ab8c2e433cc4b"},{"name":"create-root-mapping","duration":40,"timestamp":1901826984019,"id":9,"parentId":1,"tags":{},"startTime":1782742325363,"traceId":"565ab8c2e433cc4b"},{"name":"generate-route-types","duration":10862,"timestamp":1901826984718,"id":10,"parentId":1,"tags":{},"startTime":1782742325363,"traceId":"565ab8c2e433cc4b"},{"name":"public-dir-conflict-check","duration":60,"timestamp":1901826995644,"id":11,"parentId":1,"tags":{},"startTime":1782742325374,"traceId":"565ab8c2e433cc4b"},{"name":"generate-routes-manifest","duration":1363,"timestamp":1901826995770,"id":12,"parentId":1,"tags":{},"startTime":1782742325374,"traceId":"565ab8c2e433cc4b"},{"name":"run-turbopack","duration":2422058,"timestamp":1901827001790,"id":14,"parentId":1,"tags":{},"startTime":1782742325380,"traceId":"565ab8c2e433cc4b"},{"name":"turbopack-build-events","duration":43,"timestamp":1901827155604,"id":15,"parentId":1,"tags":{},"startTime":1782742325534,"traceId":"565ab8c2e433cc4b"},{"name":"run-typescript","duration":2244021,"timestamp":1901829452158,"id":16,"parentId":1,"tags":{},"startTime":1782742327831,"traceId":"565ab8c2e433cc4b"},{"name":"generate-required-server-files","duration":603,"timestamp":1901831697084,"id":18,"parentId":1,"tags":{},"startTime":1782742330076,"traceId":"565ab8c2e433cc4b"},{"name":"check-static-error-page","duration":1972,"timestamp":1901831719182,"id":20,"parentId":19,"tags":{},"startTime":1782742330098,"traceId":"565ab8c2e433cc4b"},{"name":"is-page-static","duration":235906,"timestamp":1901831728005,"id":30,"parentId":22,"tags":{},"startTime":1782742330107,"traceId":"565ab8c2e433cc4b"},{"name":"check-page","duration":243460,"timestamp":1901831720536,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1782742330099,"traceId":"565ab8c2e433cc4b"},{"name":"is-page-static","duration":248735,"timestamp":1901831728037,"id":31,"parentId":23,"tags":{},"startTime":1782742330107,"traceId":"565ab8c2e433cc4b"},{"name":"check-page","duration":256073,"timestamp":1901831720734,"id":23,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1782742330099,"traceId":"565ab8c2e433cc4b"},{"name":"is-page-static","duration":252902,"timestamp":1901831727848,"id":29,"parentId":21,"tags":{},"startTime":1782742330106,"traceId":"565ab8c2e433cc4b"},{"name":"check-page","duration":261188,"timestamp":1901831719666,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1782742330098,"traceId":"565ab8c2e433cc4b"},{"name":"is-page-static","duration":248795,"timestamp":1901831736822,"id":32,"parentId":28,"tags":{},"startTime":1782742330115,"traceId":"565ab8c2e433cc4b"},{"name":"check-page","duration":264536,"timestamp":1901831721112,"id":28,"parentId":19,"tags":{"page":"/"},"startTime":1782742330100,"traceId":"565ab8c2e433cc4b"},{"name":"is-page-static","duration":259461,"timestamp":1901831736906,"id":33,"parentId":24,"tags":{},"startTime":1782742330116,"traceId":"565ab8c2e433cc4b"},{"name":"check-page","duration":275480,"timestamp":1901831720947,"id":24,"parentId":19,"tags":{"page":"/p/[project]"},"startTime":1782742330100,"traceId":"565ab8c2e433cc4b"},{"name":"is-page-static","duration":265716,"timestamp":1901831736934,"id":34,"parentId":25,"tags":{},"startTime":1782742330116,"traceId":"565ab8c2e433cc4b"},{"name":"check-page","duration":281734,"timestamp":1901831720987,"id":25,"parentId":19,"tags":{"page":"/p/[project]/plan/[name]"},"startTime":1782742330100,"traceId":"565ab8c2e433cc4b"},{"name":"is-page-static","duration":266855,"timestamp":1901831736965,"id":35,"parentId":26,"tags":{},"startTime":1782742330116,"traceId":"565ab8c2e433cc4b"},{"name":"check-page","duration":282812,"timestamp":1901831721029,"id":26,"parentId":19,"tags":{"page":"/p/[project]/research/[slug]"},"startTime":1782742330100,"traceId":"565ab8c2e433cc4b"},{"name":"is-page-static","duration":280219,"timestamp":1901831736995,"id":36,"parentId":27,"tags":{},"startTime":1782742330116,"traceId":"565ab8c2e433cc4b"},{"name":"check-page","duration":296188,"timestamp":1901831721064,"id":27,"parentId":19,"tags":{"page":"/p/[project]/scorecards"},"startTime":1782742330100,"traceId":"565ab8c2e433cc4b"},{"name":"static-check","duration":298454,"timestamp":1901831718814,"id":19,"parentId":1,"tags":{},"startTime":1782742330097,"traceId":"565ab8c2e433cc4b"},{"name":"write-routes-manifest","duration":368,"timestamp":1901832018290,"id":38,"parentId":1,"tags":{},"startTime":1782742330397,"traceId":"565ab8c2e433cc4b"},{"name":"load-dotenv","duration":18,"timestamp":1901832024830,"id":41,"parentId":40,"tags":{},"startTime":1782742330403,"traceId":"565ab8c2e433cc4b"},{"name":"run-export-path-map","duration":200,"timestamp":1901832026271,"id":42,"parentId":40,"tags":{},"startTime":1782742330405,"traceId":"565ab8c2e433cc4b"},{"name":"next-export","duration":205503,"timestamp":1901832024271,"id":40,"parentId":1,"tags":{},"startTime":1782742330403,"traceId":"565ab8c2e433cc4b"},{"name":"move-exported-app-global-error-","duration":449,"timestamp":1901832230429,"id":43,"parentId":39,"tags":{},"startTime":1782742330609,"traceId":"565ab8c2e433cc4b"},{"name":"static-generation","duration":211607,"timestamp":1901832020153,"id":39,"parentId":1,"tags":{},"startTime":1782742330399,"traceId":"565ab8c2e433cc4b"},{"name":"write-routes-manifest","duration":269,"timestamp":1901832231848,"id":44,"parentId":1,"tags":{},"startTime":1782742330610,"traceId":"565ab8c2e433cc4b"},{"name":"print-tree-view","duration":2540,"timestamp":1901832238760,"id":45,"parentId":1,"tags":{},"startTime":1782742330617,"traceId":"565ab8c2e433cc4b"},{"name":"write-route-bundle-stats","duration":6062,"timestamp":1901832241316,"id":46,"parentId":1,"tags":{},"startTime":1782742330620,"traceId":"565ab8c2e433cc4b"},{"name":"telemetry-flush","duration":486424,"timestamp":1901832247392,"id":47,"parentId":1,"tags":{},"startTime":1782742330626,"traceId":"565ab8c2e433cc4b"},{"name":"next-build","duration":5917601,"timestamp":1901826816285,"id":1,"tags":{"buildMode":"default","version":"16.2.4","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1782742325195,"traceId":"565ab8c2e433cc4b"}]
|
package/admin/.next/trace-build
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"name":"run-turbopack","duration":
|
|
1
|
+
[{"name":"run-turbopack","duration":2422058,"timestamp":1901827001790,"id":14,"parentId":1,"tags":{},"startTime":1782742325380,"traceId":"565ab8c2e433cc4b"},{"name":"turbopack-build-events","duration":43,"timestamp":1901827155604,"id":15,"parentId":1,"tags":{},"startTime":1782742325534,"traceId":"565ab8c2e433cc4b"},{"name":"run-typescript","duration":2244021,"timestamp":1901829452158,"id":16,"parentId":1,"tags":{},"startTime":1782742327831,"traceId":"565ab8c2e433cc4b"},{"name":"static-check","duration":298454,"timestamp":1901831718814,"id":19,"parentId":1,"tags":{},"startTime":1782742330097,"traceId":"565ab8c2e433cc4b"},{"name":"static-generation","duration":211607,"timestamp":1901832020153,"id":39,"parentId":1,"tags":{},"startTime":1782742330399,"traceId":"565ab8c2e433cc4b"},{"name":"telemetry-flush","duration":486424,"timestamp":1901832247392,"id":47,"parentId":1,"tags":{},"startTime":1782742330626,"traceId":"565ab8c2e433cc4b"},{"name":"next-build","duration":5917601,"timestamp":1901826816285,"id":1,"tags":{"buildMode":"default","version":"16.2.4","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1782742325195,"traceId":"565ab8c2e433cc4b"}]
|
package/dist/bin/cli.js
CHANGED
|
@@ -69,6 +69,23 @@ program
|
|
|
69
69
|
const { upgrade } = await import("./commands/upgrade.js");
|
|
70
70
|
await upgrade({ force: opts.force === true });
|
|
71
71
|
});
|
|
72
|
+
program
|
|
73
|
+
.command("prune")
|
|
74
|
+
.description("Audit auto-loaded context bloat (CLAUDE.md sections, lessons, current.md). --dry-run is the default and only mode in this version; no destructive action.")
|
|
75
|
+
.option("--dry-run", "Report only, no destructive action (default; only mode in this version)", true)
|
|
76
|
+
.option("--large-section-chars <n>", "Flag CLAUDE.md sections larger than this many chars (default 4000)", (v) => Number.parseInt(v, 10))
|
|
77
|
+
.option("--stale-lesson-days <n>", "Flag lessons untouched for more than this many days (default 180)", (v) => Number.parseInt(v, 10))
|
|
78
|
+
.option("--stale-section-days <n>", "Flag current.md per-agent sections whose lastUpdated is older than this (default 7)", (v) => Number.parseInt(v, 10))
|
|
79
|
+
.action(async function () {
|
|
80
|
+
const opts = this.opts();
|
|
81
|
+
const { prune } = await import("./commands/prune.js");
|
|
82
|
+
await prune(rootOrExit(), {
|
|
83
|
+
dryRun: opts.dryRun !== false,
|
|
84
|
+
largeSectionChars: opts.largeSectionChars,
|
|
85
|
+
staleLessonDays: opts.staleLessonDays,
|
|
86
|
+
staleSectionDays: opts.staleSectionDays,
|
|
87
|
+
});
|
|
88
|
+
});
|
|
72
89
|
const ext = program
|
|
73
90
|
.command("extensions")
|
|
74
91
|
.description("Manage extensions (built-in and third-party)");
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `indusk prune --dry-run` — context-budget measurement surface.
|
|
3
|
+
*
|
|
4
|
+
* Reports CLAUDE.md size by section, per-lesson ages, per-current-md-section
|
|
5
|
+
* ages, and total auto-loaded bytes. Recommends manual cleanup commands.
|
|
6
|
+
*
|
|
7
|
+
* `--dry-run` is the DEFAULT — no destructive action in v1. Auto-pruning
|
|
8
|
+
* (`--apply`) is intentionally deferred to a future architectural plan
|
|
9
|
+
* (Piece 3 of context-budget). v1 surfaces; operator decides.
|
|
10
|
+
*
|
|
11
|
+
* See `.indusk/planning/context-budget/` for full design.
|
|
12
|
+
*/
|
|
13
|
+
interface PruneOptions {
|
|
14
|
+
dryRun?: boolean;
|
|
15
|
+
largeSectionChars?: number;
|
|
16
|
+
staleLessonDays?: number;
|
|
17
|
+
staleSectionDays?: number;
|
|
18
|
+
}
|
|
19
|
+
export declare function prune(projectRoot: string, opts?: PruneOptions): Promise<void>;
|
|
20
|
+
export {};
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `indusk prune --dry-run` — context-budget measurement surface.
|
|
3
|
+
*
|
|
4
|
+
* Reports CLAUDE.md size by section, per-lesson ages, per-current-md-section
|
|
5
|
+
* ages, and total auto-loaded bytes. Recommends manual cleanup commands.
|
|
6
|
+
*
|
|
7
|
+
* `--dry-run` is the DEFAULT — no destructive action in v1. Auto-pruning
|
|
8
|
+
* (`--apply`) is intentionally deferred to a future architectural plan
|
|
9
|
+
* (Piece 3 of context-budget). v1 surfaces; operator decides.
|
|
10
|
+
*
|
|
11
|
+
* See `.indusk/planning/context-budget/` for full design.
|
|
12
|
+
*/
|
|
13
|
+
import { measureProjectContext } from "../../lib/prune/measure.js";
|
|
14
|
+
export async function prune(projectRoot, opts = {}) {
|
|
15
|
+
// --dry-run is the default. v1 has no other mode.
|
|
16
|
+
if (opts.dryRun === false) {
|
|
17
|
+
console.error("Error: --dry-run is the only supported mode in this version. " +
|
|
18
|
+
"Auto-pruning (--apply) is intentionally deferred to a future architectural " +
|
|
19
|
+
"plan. See .indusk/planning/context-budget/ for the design.");
|
|
20
|
+
process.exit(2);
|
|
21
|
+
}
|
|
22
|
+
const thresholds = {};
|
|
23
|
+
if (opts.largeSectionChars !== undefined)
|
|
24
|
+
thresholds.large_section_chars = opts.largeSectionChars;
|
|
25
|
+
if (opts.staleLessonDays !== undefined)
|
|
26
|
+
thresholds.stale_lesson_days = opts.staleLessonDays;
|
|
27
|
+
if (opts.staleSectionDays !== undefined)
|
|
28
|
+
thresholds.stale_section_days = opts.staleSectionDays;
|
|
29
|
+
const report = measureProjectContext(projectRoot, thresholds);
|
|
30
|
+
printReport(projectRoot, report);
|
|
31
|
+
// Always exit 0 — this is informational, never an error.
|
|
32
|
+
process.exit(0);
|
|
33
|
+
}
|
|
34
|
+
function printReport(projectRoot, report) {
|
|
35
|
+
console.info(`\n[indusk prune --dry-run] context-budget audit for ${projectRoot}\n`);
|
|
36
|
+
if (report.notes.length > 0) {
|
|
37
|
+
for (const note of report.notes)
|
|
38
|
+
console.info(` note: ${note}`);
|
|
39
|
+
console.info("");
|
|
40
|
+
}
|
|
41
|
+
printClaudeMd(report);
|
|
42
|
+
printCurrentMd(report);
|
|
43
|
+
printLessons(report);
|
|
44
|
+
printSummary(report);
|
|
45
|
+
}
|
|
46
|
+
function printClaudeMd(report) {
|
|
47
|
+
console.info("CLAUDE.md sections:");
|
|
48
|
+
if (report.claudeMd.length === 0) {
|
|
49
|
+
console.info(" (no CLAUDE.md or no ## sections found)\n");
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
for (const section of report.claudeMd) {
|
|
53
|
+
const marker = section.flagged ? " ⚠ " : " ";
|
|
54
|
+
console.info(`${marker}${section.title.padEnd(30)} ${formatBytes(section.sizeChars)}`);
|
|
55
|
+
if (section.recommendedAction) {
|
|
56
|
+
console.info(` → ${section.recommendedAction}`);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
console.info("");
|
|
60
|
+
}
|
|
61
|
+
function printCurrentMd(report) {
|
|
62
|
+
console.info("current.md:");
|
|
63
|
+
if (!report.currentMd.exists) {
|
|
64
|
+
console.info(" (not found — run indusk init or check workbench root)\n");
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
console.info(` total size: ${formatBytes(report.currentMd.totalSizeChars)}, ` +
|
|
68
|
+
`shared section: ${formatBytes(report.currentMd.sharedSectionSizeChars)}, ` +
|
|
69
|
+
`agent sections: ${report.currentMd.sectionCount}`);
|
|
70
|
+
if (report.currentMd.staleSections.length > 0) {
|
|
71
|
+
console.info(` ⚠ ${report.currentMd.staleSections.length} stale per-agent section(s):`);
|
|
72
|
+
for (const section of report.currentMd.staleSections) {
|
|
73
|
+
console.info(` session ${section.sessionShort} (${section.task}) — ${section.ageDays}d old, ${formatBytes(section.sizeChars)} body`);
|
|
74
|
+
}
|
|
75
|
+
console.info(" → Consider archiving stale sections from .indusk/current.md.");
|
|
76
|
+
console.info(" → Auto-archive will land in context-budget Piece 3; manual edit for now.");
|
|
77
|
+
}
|
|
78
|
+
console.info("");
|
|
79
|
+
}
|
|
80
|
+
function printLessons(report) {
|
|
81
|
+
console.info("Lessons (.claude/lessons/):");
|
|
82
|
+
if (report.lessons.length === 0) {
|
|
83
|
+
console.info(" (none found)\n");
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
const flagged = report.lessons.filter((l) => l.flagged);
|
|
87
|
+
console.info(` total: ${report.lessons.length} lesson(s); ${flagged.length} stale`);
|
|
88
|
+
if (flagged.length > 0) {
|
|
89
|
+
console.info(" ⚠ Stale (consider reviewing or removing):");
|
|
90
|
+
for (const lesson of flagged) {
|
|
91
|
+
console.info(` ${lesson.name.padEnd(50)} ${lesson.ageDays}d old (${lesson.lastModified.slice(0, 10)})`);
|
|
92
|
+
}
|
|
93
|
+
console.info(" → Lessons referencing code/conventions that no longer exist are dead weight.");
|
|
94
|
+
console.info(" → Review each; `rm -i <path>` after confirming irrelevance.");
|
|
95
|
+
}
|
|
96
|
+
console.info("");
|
|
97
|
+
}
|
|
98
|
+
function printSummary(report) {
|
|
99
|
+
const flaggedClaudeMd = report.claudeMd.filter((s) => s.flagged).length;
|
|
100
|
+
const flaggedLessons = report.lessons.filter((l) => l.flagged).length;
|
|
101
|
+
const staleSections = report.currentMd.staleSections.length;
|
|
102
|
+
const totalFlagged = flaggedClaudeMd + flaggedLessons + staleSections;
|
|
103
|
+
console.info("Summary:");
|
|
104
|
+
console.info(` Estimated auto-loaded bytes per catchup: ${formatBytes(report.estimatedAutoLoadBytes)}`);
|
|
105
|
+
console.info(` Flagged: ${flaggedClaudeMd} CLAUDE.md section(s), ${flaggedLessons} lesson(s), ${staleSections} current.md section(s)`);
|
|
106
|
+
if (totalFlagged === 0) {
|
|
107
|
+
console.info(" ✓ No bloat detected at current thresholds.");
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
console.info(" → No destructive action taken (this is --dry-run; v1 has no --apply mode).");
|
|
111
|
+
console.info(" → See .indusk/planning/context-budget/ for the distillation discipline.");
|
|
112
|
+
}
|
|
113
|
+
console.info("");
|
|
114
|
+
}
|
|
115
|
+
function formatBytes(n) {
|
|
116
|
+
if (n < 1024)
|
|
117
|
+
return `${n}B`;
|
|
118
|
+
if (n < 1024 * 1024)
|
|
119
|
+
return `${(n / 1024).toFixed(1)}KB`;
|
|
120
|
+
return `${(n / 1024 / 1024).toFixed(1)}MB`;
|
|
121
|
+
}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* Session state stored in `.indusk/eval/evaluator-session.json`.
|
|
8
8
|
*/
|
|
9
9
|
import { spawn } from "node:child_process";
|
|
10
|
-
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
10
|
+
import { existsSync, mkdirSync, readFileSync, unlinkSync, writeFileSync } from "node:fs";
|
|
11
11
|
import { dirname, join } from "node:path";
|
|
12
12
|
import { getEvalModel, getProjectGroupId } from "../config.js";
|
|
13
13
|
import { readUnprocessedHighlights } from "../highlights/highlights.js";
|
|
@@ -42,7 +42,14 @@ function writeSession(projectRoot, session) {
|
|
|
42
42
|
function clearSession(projectRoot) {
|
|
43
43
|
const path = getSessionPath(projectRoot);
|
|
44
44
|
if (existsSync(path)) {
|
|
45
|
-
|
|
45
|
+
// ESM-native unlinkSync — never reintroduce CJS `require()` here.
|
|
46
|
+
// The runner is loaded via dynamic `import()` from a Node ESM context;
|
|
47
|
+
// any top-level or inline `require(...)` throws "require is not defined"
|
|
48
|
+
// at parse and the eval agent crashes silently. This was the bug-fix-
|
|
49
|
+
// eval-agent (1.19.1) pattern; it re-escaped here in persistent-
|
|
50
|
+
// evaluator.ts because the original regression test only scanned
|
|
51
|
+
// hooks/eval-trigger.js. Fixed in 1.31.10 by widening the regression
|
|
52
|
+
// scan to cover every file in src/lib/eval/.
|
|
46
53
|
unlinkSync(path);
|
|
47
54
|
}
|
|
48
55
|
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Context-budget measurement library (1.31.11).
|
|
3
|
+
*
|
|
4
|
+
* Pure function `measureProjectContext(projectRoot, thresholds?)` returns a
|
|
5
|
+
* structured PruneReport describing what's accreted in the project's auto-
|
|
6
|
+
* loaded surfaces (CLAUDE.md sections, lessons, current.md sections). The
|
|
7
|
+
* `indusk prune --dry-run` CLI consumes this report and prints a human-
|
|
8
|
+
* readable surface with recommended manual cleanup commands.
|
|
9
|
+
*
|
|
10
|
+
* The library is read-only — no writes, no side effects. Auto-pruning is
|
|
11
|
+
* intentionally deferred to a future architectural plan (Piece 3 of the
|
|
12
|
+
* context-budget brief). v1 surfaces; operator decides.
|
|
13
|
+
*
|
|
14
|
+
* See `.indusk/planning/context-budget/` for full design.
|
|
15
|
+
*/
|
|
16
|
+
export interface Thresholds {
|
|
17
|
+
/** Flag CLAUDE.md sections larger than this. */
|
|
18
|
+
large_section_chars: number;
|
|
19
|
+
/** Flag lessons whose mtime is older than this. */
|
|
20
|
+
stale_lesson_days: number;
|
|
21
|
+
/** Flag current.md per-agent sections whose lastUpdated is older than this. */
|
|
22
|
+
stale_section_days: number;
|
|
23
|
+
}
|
|
24
|
+
export interface ClaudeMdSection {
|
|
25
|
+
title: string;
|
|
26
|
+
sizeChars: number;
|
|
27
|
+
flagged: boolean;
|
|
28
|
+
recommendedAction?: string;
|
|
29
|
+
}
|
|
30
|
+
export interface LessonReport {
|
|
31
|
+
name: string;
|
|
32
|
+
path: string;
|
|
33
|
+
sizeChars: number;
|
|
34
|
+
lastModified: string;
|
|
35
|
+
ageDays: number;
|
|
36
|
+
flagged: boolean;
|
|
37
|
+
recommendedAction?: string;
|
|
38
|
+
}
|
|
39
|
+
export interface CurrentMdStaleSection {
|
|
40
|
+
sessionId: string;
|
|
41
|
+
sessionShort: string;
|
|
42
|
+
task: string;
|
|
43
|
+
lastUpdated: string;
|
|
44
|
+
ageDays: number;
|
|
45
|
+
sizeChars: number;
|
|
46
|
+
}
|
|
47
|
+
export interface CurrentMdReport {
|
|
48
|
+
exists: boolean;
|
|
49
|
+
totalSizeChars: number;
|
|
50
|
+
sharedSectionSizeChars: number;
|
|
51
|
+
sectionCount: number;
|
|
52
|
+
staleSections: CurrentMdStaleSection[];
|
|
53
|
+
}
|
|
54
|
+
export interface PruneReport {
|
|
55
|
+
claudeMd: ClaudeMdSection[];
|
|
56
|
+
lessons: LessonReport[];
|
|
57
|
+
currentMd: CurrentMdReport;
|
|
58
|
+
/** Approximate total bytes loaded into every conversation today. */
|
|
59
|
+
estimatedAutoLoadBytes: number;
|
|
60
|
+
/** Diagnostic notes about what was found / missing. */
|
|
61
|
+
notes: string[];
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Measure the project's auto-loaded context surfaces. Pure-read, no side
|
|
65
|
+
* effects. Returns a structured report the CLI prints + future tooling can
|
|
66
|
+
* consume programmatically.
|
|
67
|
+
*/
|
|
68
|
+
export declare function measureProjectContext(projectRoot: string, thresholds?: Partial<Thresholds>): PruneReport;
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Context-budget measurement library (1.31.11).
|
|
3
|
+
*
|
|
4
|
+
* Pure function `measureProjectContext(projectRoot, thresholds?)` returns a
|
|
5
|
+
* structured PruneReport describing what's accreted in the project's auto-
|
|
6
|
+
* loaded surfaces (CLAUDE.md sections, lessons, current.md sections). The
|
|
7
|
+
* `indusk prune --dry-run` CLI consumes this report and prints a human-
|
|
8
|
+
* readable surface with recommended manual cleanup commands.
|
|
9
|
+
*
|
|
10
|
+
* The library is read-only — no writes, no side effects. Auto-pruning is
|
|
11
|
+
* intentionally deferred to a future architectural plan (Piece 3 of the
|
|
12
|
+
* context-budget brief). v1 surfaces; operator decides.
|
|
13
|
+
*
|
|
14
|
+
* See `.indusk/planning/context-budget/` for full design.
|
|
15
|
+
*/
|
|
16
|
+
import { existsSync, readFileSync, readdirSync, statSync } from "node:fs";
|
|
17
|
+
import { join } from "node:path";
|
|
18
|
+
import { parseCurrentMd } from "../agents/current-md.js";
|
|
19
|
+
const DEFAULT_THRESHOLDS = {
|
|
20
|
+
large_section_chars: 4000,
|
|
21
|
+
stale_lesson_days: 180,
|
|
22
|
+
stale_section_days: 7,
|
|
23
|
+
};
|
|
24
|
+
const MS_PER_DAY = 24 * 60 * 60 * 1000;
|
|
25
|
+
/**
|
|
26
|
+
* Split CLAUDE.md body into sections by `^## ` headings. Returns the section
|
|
27
|
+
* title (without the `## ` prefix) and the body (everything until the next
|
|
28
|
+
* `## ` heading or EOF). Lines before the first `## ` are not returned (the
|
|
29
|
+
* `# H1` preamble is treated as overhead, not a section).
|
|
30
|
+
*/
|
|
31
|
+
function splitClaudeMdSections(body) {
|
|
32
|
+
const lines = body.split("\n");
|
|
33
|
+
const sections = [];
|
|
34
|
+
let current = null;
|
|
35
|
+
for (const line of lines) {
|
|
36
|
+
const match = /^## (.+)$/.exec(line);
|
|
37
|
+
if (match) {
|
|
38
|
+
if (current) {
|
|
39
|
+
sections.push({ title: current.title, content: current.lines.join("\n") });
|
|
40
|
+
}
|
|
41
|
+
current = { title: match[1].trim(), lines: [] };
|
|
42
|
+
}
|
|
43
|
+
else if (current) {
|
|
44
|
+
current.lines.push(line);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
if (current) {
|
|
48
|
+
sections.push({ title: current.title, content: current.lines.join("\n") });
|
|
49
|
+
}
|
|
50
|
+
return sections;
|
|
51
|
+
}
|
|
52
|
+
function readClaudeMd(projectRoot, thresholds) {
|
|
53
|
+
const claudeMdPath = join(projectRoot, "CLAUDE.md");
|
|
54
|
+
if (!existsSync(claudeMdPath))
|
|
55
|
+
return [];
|
|
56
|
+
const body = readFileSync(claudeMdPath, "utf-8");
|
|
57
|
+
const sections = splitClaudeMdSections(body);
|
|
58
|
+
return sections.map((s) => {
|
|
59
|
+
const sizeChars = s.content.length;
|
|
60
|
+
const flagged = sizeChars > thresholds.large_section_chars;
|
|
61
|
+
const out = { title: s.title, sizeChars, flagged };
|
|
62
|
+
if (flagged) {
|
|
63
|
+
out.recommendedAction = `Collapse "${s.title}" to one-line entries + links to archive. ${sizeChars} chars currently; target < ${thresholds.large_section_chars}. See .indusk/planning/context-budget/ for the distillation discipline.`;
|
|
64
|
+
}
|
|
65
|
+
return out;
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
function readLessons(projectRoot, thresholds) {
|
|
69
|
+
const lessonsDir = join(projectRoot, ".claude/lessons");
|
|
70
|
+
if (!existsSync(lessonsDir))
|
|
71
|
+
return [];
|
|
72
|
+
const now = Date.now();
|
|
73
|
+
const reports = [];
|
|
74
|
+
const entries = readdirSync(lessonsDir, { withFileTypes: true });
|
|
75
|
+
for (const entry of entries) {
|
|
76
|
+
if (!entry.isFile() || !entry.name.endsWith(".md"))
|
|
77
|
+
continue;
|
|
78
|
+
const path = join(lessonsDir, entry.name);
|
|
79
|
+
let stat;
|
|
80
|
+
try {
|
|
81
|
+
stat = statSync(path);
|
|
82
|
+
}
|
|
83
|
+
catch {
|
|
84
|
+
continue;
|
|
85
|
+
}
|
|
86
|
+
const ageDays = Math.floor((now - stat.mtimeMs) / MS_PER_DAY);
|
|
87
|
+
const flagged = ageDays > thresholds.stale_lesson_days;
|
|
88
|
+
const lastModified = new Date(stat.mtimeMs).toISOString();
|
|
89
|
+
const report = {
|
|
90
|
+
name: entry.name.replace(/\.md$/, ""),
|
|
91
|
+
path,
|
|
92
|
+
sizeChars: stat.size,
|
|
93
|
+
lastModified,
|
|
94
|
+
ageDays,
|
|
95
|
+
flagged,
|
|
96
|
+
};
|
|
97
|
+
if (flagged) {
|
|
98
|
+
report.recommendedAction = `Review and (if obsolete) rm -i "${path}". Untouched for ${ageDays} days; threshold is ${thresholds.stale_lesson_days}.`;
|
|
99
|
+
}
|
|
100
|
+
reports.push(report);
|
|
101
|
+
}
|
|
102
|
+
return reports.sort((a, b) => b.ageDays - a.ageDays);
|
|
103
|
+
}
|
|
104
|
+
function readCurrentMd(projectRoot, thresholds) {
|
|
105
|
+
const currentMdPath = join(projectRoot, ".indusk/current.md");
|
|
106
|
+
if (!existsSync(currentMdPath)) {
|
|
107
|
+
return {
|
|
108
|
+
exists: false,
|
|
109
|
+
totalSizeChars: 0,
|
|
110
|
+
sharedSectionSizeChars: 0,
|
|
111
|
+
sectionCount: 0,
|
|
112
|
+
staleSections: [],
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
const body = readFileSync(currentMdPath, "utf-8");
|
|
116
|
+
const parsed = parseCurrentMd(body);
|
|
117
|
+
const now = Date.now();
|
|
118
|
+
const stale = [];
|
|
119
|
+
for (const section of parsed.sections) {
|
|
120
|
+
const lastUpdatedMs = Date.parse(section.lastUpdated);
|
|
121
|
+
if (Number.isNaN(lastUpdatedMs))
|
|
122
|
+
continue;
|
|
123
|
+
const ageDays = Math.floor((now - lastUpdatedMs) / MS_PER_DAY);
|
|
124
|
+
if (ageDays <= thresholds.stale_section_days)
|
|
125
|
+
continue;
|
|
126
|
+
const sectionSize = section.inFlight.length + section.openQuestions.length + section.cursor.length;
|
|
127
|
+
stale.push({
|
|
128
|
+
sessionId: section.sessionId,
|
|
129
|
+
sessionShort: section.sessionShort,
|
|
130
|
+
task: section.task,
|
|
131
|
+
lastUpdated: section.lastUpdated,
|
|
132
|
+
ageDays,
|
|
133
|
+
sizeChars: sectionSize,
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
return {
|
|
137
|
+
exists: true,
|
|
138
|
+
totalSizeChars: body.length,
|
|
139
|
+
sharedSectionSizeChars: parsed.sharedSection.length,
|
|
140
|
+
sectionCount: parsed.sections.length,
|
|
141
|
+
staleSections: stale,
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Measure the project's auto-loaded context surfaces. Pure-read, no side
|
|
146
|
+
* effects. Returns a structured report the CLI prints + future tooling can
|
|
147
|
+
* consume programmatically.
|
|
148
|
+
*/
|
|
149
|
+
export function measureProjectContext(projectRoot, thresholds) {
|
|
150
|
+
const resolved = { ...DEFAULT_THRESHOLDS, ...thresholds };
|
|
151
|
+
const notes = [];
|
|
152
|
+
const induskDir = join(projectRoot, ".indusk");
|
|
153
|
+
if (!existsSync(induskDir)) {
|
|
154
|
+
notes.push(`no .indusk/ directory found at ${projectRoot} — not an InDusk project, or init not run`);
|
|
155
|
+
}
|
|
156
|
+
const claudeMd = readClaudeMd(projectRoot, resolved);
|
|
157
|
+
if (claudeMd.length === 0) {
|
|
158
|
+
notes.push("no CLAUDE.md found (or no ## sections)");
|
|
159
|
+
}
|
|
160
|
+
const lessons = readLessons(projectRoot, resolved);
|
|
161
|
+
if (lessons.length === 0) {
|
|
162
|
+
notes.push("no lessons found in .claude/lessons/");
|
|
163
|
+
}
|
|
164
|
+
const currentMd = readCurrentMd(projectRoot, resolved);
|
|
165
|
+
// Estimated auto-loaded bytes — approximate sum of what catchup loads.
|
|
166
|
+
const claudeMdBytes = claudeMd.reduce((sum, s) => sum + s.sizeChars, 0);
|
|
167
|
+
const lessonsBytes = lessons.reduce((sum, l) => sum + l.sizeChars, 0);
|
|
168
|
+
// Lessons are lazy-loaded as of 1.31.5; only titles + paths appear in
|
|
169
|
+
// list_lessons output. Estimate ~150 bytes per lesson for the summary.
|
|
170
|
+
const lessonsTitlesBytes = lessons.length * 150;
|
|
171
|
+
const estimatedAutoLoadBytes = claudeMdBytes + lessonsTitlesBytes + currentMd.totalSizeChars;
|
|
172
|
+
return {
|
|
173
|
+
claudeMd,
|
|
174
|
+
lessons,
|
|
175
|
+
currentMd,
|
|
176
|
+
estimatedAutoLoadBytes,
|
|
177
|
+
notes,
|
|
178
|
+
};
|
|
179
|
+
}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
|
-
# wt.sh — run a
|
|
2
|
+
# wt.sh — run a command inside a worktree or the trunk of a flat
|
|
3
3
|
# single-repo workbench.
|
|
4
4
|
#
|
|
5
5
|
# Usage:
|
|
6
6
|
# pnpm wt <slug>[:<app>] <command> [args...]
|
|
7
|
+
# pnpm wt <slug>[:<app>] -- <binary> [args...]
|
|
7
8
|
#
|
|
8
9
|
# Examples:
|
|
9
10
|
# pnpm wt cancel-polish dev # cd <workbench>/cancel-polish/, run `pnpm dev`
|
|
@@ -12,6 +13,11 @@
|
|
|
12
13
|
# pnpm wt cancel-polish ce dc:up local
|
|
13
14
|
# # cd cancel-polish/, run `pnpm ce dc:up local`
|
|
14
15
|
# # composable.env picks up the worktree's env
|
|
16
|
+
# pnpm wt solana-migration -- docker compose --env-file .env.local up -d
|
|
17
|
+
# # cd solana-migration/, exec `docker compose ...`
|
|
18
|
+
# # directly — no pnpm prefix. Use `--` to bypass
|
|
19
|
+
# # pnpm when args would otherwise be consumed by
|
|
20
|
+
# # pnpm's own flag parsing (e.g., --env-file).
|
|
15
21
|
#
|
|
16
22
|
# Resolution (single-pass, flat workbench shape):
|
|
17
23
|
# - Look at subdirs/symlinks at workbench root
|
|
@@ -20,6 +26,15 @@
|
|
|
20
26
|
# - Reserved names skipped: `.indusk`, `node_modules`, `dist`, `.git`
|
|
21
27
|
# - Multiple matches → error with the candidates listed
|
|
22
28
|
# - Zero matches → error with the available subdirs listed
|
|
29
|
+
#
|
|
30
|
+
# pnpm-prefix vs raw exec:
|
|
31
|
+
# - Default: prepends `pnpm` to the command (works for package.json scripts
|
|
32
|
+
# and pnpm-aware tools like `pnpm ce`).
|
|
33
|
+
# - With `--` as the first command arg: exec the remaining args directly,
|
|
34
|
+
# without prepending pnpm. Required when running external binaries whose
|
|
35
|
+
# flags conflict with pnpm's own flags (notably `--env-file`, which pnpm
|
|
36
|
+
# 9+ consumes as a global option). See `pnpm docker compose --env-file
|
|
37
|
+
# .env.local …` for the bug shape this fixes.
|
|
23
38
|
|
|
24
39
|
set -euo pipefail
|
|
25
40
|
|
|
@@ -33,13 +48,19 @@ COMMAND=("$@")
|
|
|
33
48
|
|
|
34
49
|
usage() {
|
|
35
50
|
cat <<'EOF'
|
|
36
|
-
Usage:
|
|
51
|
+
Usage:
|
|
52
|
+
pnpm wt <slug>[:<app>] <command> [args...]
|
|
53
|
+
pnpm wt <slug>[:<app>] -- <binary> [args...]
|
|
37
54
|
|
|
38
55
|
Examples:
|
|
39
56
|
pnpm wt cancel-polish dev
|
|
40
57
|
pnpm wt cancel-polish:web build
|
|
41
58
|
pnpm wt <wrapped-repo> lint # the trunk
|
|
42
|
-
pnpm wt cancel-polish ce dc:up local # ce composition
|
|
59
|
+
pnpm wt cancel-polish ce dc:up local # ce composition (pnpm-aware)
|
|
60
|
+
pnpm wt cancel-polish -- docker compose --env-file .env.local up -d
|
|
61
|
+
# raw exec, no pnpm prefix.
|
|
62
|
+
# Use when args conflict with
|
|
63
|
+
# pnpm flags (e.g., --env-file).
|
|
43
64
|
|
|
44
65
|
EOF
|
|
45
66
|
}
|
|
@@ -117,6 +138,20 @@ fi
|
|
|
117
138
|
WORKTREE_PATH="${candidate_paths[0]}"
|
|
118
139
|
WORKTREE_NAME="$(basename "$WORKTREE_PATH")"
|
|
119
140
|
|
|
141
|
+
# Raw-exec mode: if the first command token is `--`, run the rest directly
|
|
142
|
+
# without prepending `pnpm`. Required for commands whose flags conflict with
|
|
143
|
+
# pnpm's own flag parsing (e.g., `--env-file` is consumed by pnpm 9+).
|
|
144
|
+
RAW_EXEC=0
|
|
145
|
+
if [[ ${#COMMAND[@]} -gt 0 && "${COMMAND[0]}" == "--" ]]; then
|
|
146
|
+
RAW_EXEC=1
|
|
147
|
+
COMMAND=("${COMMAND[@]:1}")
|
|
148
|
+
if [[ ${#COMMAND[@]} -eq 0 ]]; then
|
|
149
|
+
echo "Error: '--' specified but no command followed" >&2
|
|
150
|
+
usage
|
|
151
|
+
exit 1
|
|
152
|
+
fi
|
|
153
|
+
fi
|
|
154
|
+
|
|
120
155
|
if [[ -n "$APP" ]]; then
|
|
121
156
|
APP_PATH="$WORKTREE_PATH/apps/$APP"
|
|
122
157
|
if [[ ! -d "$APP_PATH" ]]; then
|
|
@@ -127,11 +162,23 @@ if [[ -n "$APP" ]]; then
|
|
|
127
162
|
fi
|
|
128
163
|
exit 1
|
|
129
164
|
fi
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
165
|
+
if (( RAW_EXEC )); then
|
|
166
|
+
echo "[$WORKTREE_NAME/apps/$APP] ${COMMAND[*]}"
|
|
167
|
+
cd "$APP_PATH"
|
|
168
|
+
exec "${COMMAND[@]}"
|
|
169
|
+
else
|
|
170
|
+
echo "[$WORKTREE_NAME/apps/$APP] pnpm ${COMMAND[*]}"
|
|
171
|
+
cd "$APP_PATH"
|
|
172
|
+
exec pnpm "${COMMAND[@]}"
|
|
173
|
+
fi
|
|
133
174
|
fi
|
|
134
175
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
176
|
+
if (( RAW_EXEC )); then
|
|
177
|
+
echo "[$WORKTREE_NAME] ${COMMAND[*]}"
|
|
178
|
+
cd "$WORKTREE_PATH"
|
|
179
|
+
exec "${COMMAND[@]}"
|
|
180
|
+
else
|
|
181
|
+
echo "[$WORKTREE_NAME] pnpm ${COMMAND[*]}"
|
|
182
|
+
cd "$WORKTREE_PATH"
|
|
183
|
+
exec pnpm "${COMMAND[@]}"
|
|
184
|
+
fi
|
package/hooks/_hook-paths.js
CHANGED
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
*/
|
|
27
27
|
|
|
28
28
|
import { execFileSync } from "node:child_process";
|
|
29
|
-
import { existsSync, realpathSync } from "node:fs";
|
|
29
|
+
import { existsSync, readFileSync, realpathSync } from "node:fs";
|
|
30
30
|
import { dirname, resolve } from "node:path";
|
|
31
31
|
|
|
32
32
|
/**
|
|
@@ -76,7 +76,7 @@ function findStatePath(startDir) {
|
|
|
76
76
|
* @param {string} cwd
|
|
77
77
|
* @returns {string | null}
|
|
78
78
|
*/
|
|
79
|
-
function
|
|
79
|
+
function findGitPathFromCwd(cwd) {
|
|
80
80
|
try {
|
|
81
81
|
const out = execFileSync("git", ["rev-parse", "--show-toplevel"], {
|
|
82
82
|
cwd,
|
|
@@ -97,6 +97,56 @@ function findGitPath(cwd) {
|
|
|
97
97
|
}
|
|
98
98
|
}
|
|
99
99
|
|
|
100
|
+
/**
|
|
101
|
+
* Workbench-mode gitPath fallback (1.31.10 falsification finding). When
|
|
102
|
+
* `findGitPathFromCwd` returns null (cwd is not inside any git repo), check
|
|
103
|
+
* whether `statePath` is a workbench root and, if so, derive gitPath from
|
|
104
|
+
* the configured wrapped repo.
|
|
105
|
+
*
|
|
106
|
+
* This is the common case for hooks fired by Claude Code in workbench mode:
|
|
107
|
+
* the session's `event.cwd` is the workbench root (where Claude Code was
|
|
108
|
+
* launched), NOT the wrapped repo or a worktree. `event.cwd` is the session
|
|
109
|
+
* cwd, not the subprocess cwd that ran `git commit` — so `git rev-parse`
|
|
110
|
+
* against it fails even though the commit DID happen in a real git repo
|
|
111
|
+
* inside the workbench.
|
|
112
|
+
*
|
|
113
|
+
* The fallback reads `${statePath}/.indusk/config.json` for the
|
|
114
|
+
* `worktree.wrapped_repo` field. If present and the path exists, returns
|
|
115
|
+
* the realpath of `${statePath}/${wrapped_repo}`. Otherwise returns null
|
|
116
|
+
* (caller logs an actionable skip message naming `statePath`).
|
|
117
|
+
*
|
|
118
|
+
* Trade-off accepted: if the user committed in a SIBLING WORKTREE rather
|
|
119
|
+
* than the wrapped repo, this resolves `gitPath` to the wrapped repo
|
|
120
|
+
* (giving the eval agent the wrapped repo's HEAD, which may not be the
|
|
121
|
+
* commit just made). That's a known incompleteness — Phase N+1 work
|
|
122
|
+
* could read `tool_input.command` for a `cd <worktree>` prefix to
|
|
123
|
+
* disambiguate. Until then, the wrapped-repo fallback is strictly better
|
|
124
|
+
* than the pre-1.31.10 behavior of silently bailing every commit.
|
|
125
|
+
*
|
|
126
|
+
* @param {string | null} statePath
|
|
127
|
+
* @returns {string | null}
|
|
128
|
+
*/
|
|
129
|
+
function findGitPathFromWorkbenchConfig(statePath) {
|
|
130
|
+
if (!statePath) return null;
|
|
131
|
+
const configPath = resolve(statePath, ".indusk/config.json");
|
|
132
|
+
if (!existsSync(configPath)) return null;
|
|
133
|
+
let config;
|
|
134
|
+
try {
|
|
135
|
+
config = JSON.parse(readFileSync(configPath, "utf-8"));
|
|
136
|
+
} catch {
|
|
137
|
+
return null;
|
|
138
|
+
}
|
|
139
|
+
const wrappedRepo = config?.worktree?.wrapped_repo;
|
|
140
|
+
if (!wrappedRepo || typeof wrappedRepo !== "string") return null;
|
|
141
|
+
const candidate = resolve(statePath, wrappedRepo);
|
|
142
|
+
if (!existsSync(candidate)) return null;
|
|
143
|
+
try {
|
|
144
|
+
return realpathSync(candidate);
|
|
145
|
+
} catch {
|
|
146
|
+
return candidate;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
|
|
100
150
|
/**
|
|
101
151
|
* Resolve both the InDusk state path and the git path for a given cwd. Either
|
|
102
152
|
* may be null:
|
|
@@ -112,8 +162,17 @@ function findGitPath(cwd) {
|
|
|
112
162
|
* @returns {{ statePath: string | null, gitPath: string | null }}
|
|
113
163
|
*/
|
|
114
164
|
export function resolveStateAndGitPaths(cwd) {
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
165
|
+
const statePath = findStatePath(cwd);
|
|
166
|
+
let gitPath = findGitPathFromCwd(cwd);
|
|
167
|
+
if (!gitPath) {
|
|
168
|
+
// Workbench-mode fallback (1.31.10). When event.cwd is the workbench
|
|
169
|
+
// root, `git rev-parse` against it fails because the workbench root
|
|
170
|
+
// isn't a git repo — but the wrapped repo IS, and its path is
|
|
171
|
+
// recoverable from the workbench's config. Without this fallback,
|
|
172
|
+
// Claude Code's PostToolUse hook bails on every commit when launched
|
|
173
|
+
// from the workbench root (the dominant operating model on Numero
|
|
174
|
+
// and any future FDE engagement).
|
|
175
|
+
gitPath = findGitPathFromWorkbenchConfig(statePath);
|
|
176
|
+
}
|
|
177
|
+
return { statePath, gitPath };
|
|
119
178
|
}
|
package/package.json
CHANGED
package/skills/retrospective.md
CHANGED
|
@@ -189,6 +189,38 @@ Re-read CLAUDE.md in full. After the entire impl is done, verify:
|
|
|
189
189
|
|
|
190
190
|
Fix any inaccuracies. The impl may have changed things that weren't anticipated in the per-phase context updates.
|
|
191
191
|
|
|
192
|
+
#### Current State entries are ONE LINE + link to archive (1.31.11)
|
|
193
|
+
|
|
194
|
+
When you add a Current State entry for a newly-completed plan, write it as **one line + a link to the archive**, not as a multi-paragraph prose entry. Every retrospective accretes Current State; over 20-30 plans, paragraph entries push CLAUDE.md past 30KB of always-loaded prose. The detail lives in the archived plan + the docs site decisions/lessons pages — the Current State entry is a pointer, not a duplicate.
|
|
195
|
+
|
|
196
|
+
**Use this shape:**
|
|
197
|
+
|
|
198
|
+
```markdown
|
|
199
|
+
- **{plan-name} ({version})** — one-sentence summary of what shipped. See [archive](.indusk/planning/archive/{plan-name}/) for full detail.
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
Example:
|
|
203
|
+
|
|
204
|
+
```markdown
|
|
205
|
+
- **workbench-mode-rail-integrity (1.31.10)** — eval→Graphiti pipeline works on workbench-shaped projects; 4 hooks refactored, stray-state audit added, falsification surfaced 2 more bugs both fixed. See [archive](.indusk/planning/archive/workbench-mode-rail-integrity/) for full detail.
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
**Counter-example — do NOT write this shape going forward**:
|
|
209
|
+
|
|
210
|
+
```markdown
|
|
211
|
+
- **plan-name shipped in 1.X.Y (2026-XX-XX)** — three paragraphs of detail
|
|
212
|
+
about what the plan did, what shipped in each phase, what bugs were
|
|
213
|
+
found in falsification, what lessons were captured, what's deferred to
|
|
214
|
+
follow-up work, with embedded code references and file paths and...
|
|
215
|
+
[continues for ~500 chars]
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
The counter-example is **token bloat on every catchup**, paid by every Claude Code session forever. The one-line shape preserves discoverability (the plan name + version + link is enough for the agent to know what to query) at a fraction of the cost.
|
|
219
|
+
|
|
220
|
+
Existing multi-paragraph entries (pre-1.31.11) can be collapsed via `indusk prune --dry-run` (which surfaces them) plus manual operator cleanup — they are not auto-migrated.
|
|
221
|
+
|
|
222
|
+
Why this matters: CLAUDE.md is auto-loaded into every Claude Code session. Every byte you add accrues to every prompt indefinitely. The discipline is "thinner navigation layer, queryable detail" — see [context-budget brief](../../.indusk/planning/context-budget/brief.md) for the full rationale.
|
|
223
|
+
|
|
192
224
|
### Step 8: Knowledge Handoff
|
|
193
225
|
|
|
194
226
|
Distill planning artifacts into the docs site so the knowledge survives archival.
|
/package/admin/.next/static/{rBO82tgC1ec6duziqb0_O → V1Q5UoD4oB6LEf_Sjt3D5}/_buildManifest.js
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|