@infinitedusky/indusk-mcp 1.41.0 → 1.43.0
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/prerender-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/server/server-reference-manifest.js +1 -1
- package/admin/.next/server/server-reference-manifest.json +1 -1
- package/admin/.next/trace +1 -1
- package/admin/.next/trace-build +1 -1
- package/dist/bin/commands/init.js +12 -2
- package/dist/bin/commands/update.js +12 -3
- package/dist/lib/agents-md-sections.d.ts +44 -0
- package/dist/lib/agents-md-sections.js +76 -0
- package/extensions/worktree/scripts/lib/workbench-helpers.sh +223 -0
- package/extensions/worktree/scripts/wt-pm2.sh +21 -46
- package/extensions/worktree/scripts/wt.sh +29 -120
- package/extensions/worktree/skill.md +3 -2
- package/package.json +1 -1
- package/templates/AGENTS.md +8 -0
- /package/admin/.next/static/{WxUGu7NCQs8pb0nSvDzv6 → yPSZ27nvfv9JVMxGc9U6T}/_buildManifest.js +0 -0
- /package/admin/.next/static/{WxUGu7NCQs8pb0nSvDzv6 → yPSZ27nvfv9JVMxGc9U6T}/_clientMiddlewareManifest.js +0 -0
- /package/admin/.next/static/{WxUGu7NCQs8pb0nSvDzv6 → yPSZ27nvfv9JVMxGc9U6T}/_ssgManifest.js +0 -0
package/admin/.next/BUILD_ID
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
yPSZ27nvfv9JVMxGc9U6T
|
|
@@ -7,9 +7,9 @@
|
|
|
7
7
|
"static/chunks/03~yq9q893hmn.js"
|
|
8
8
|
],
|
|
9
9
|
"lowPriorityFiles": [
|
|
10
|
-
"static/
|
|
11
|
-
"static/
|
|
12
|
-
"static/
|
|
10
|
+
"static/yPSZ27nvfv9JVMxGc9U6T/_buildManifest.js",
|
|
11
|
+
"static/yPSZ27nvfv9JVMxGc9U6T/_ssgManifest.js",
|
|
12
|
+
"static/yPSZ27nvfv9JVMxGc9U6T/_clientMiddlewareManifest.js"
|
|
13
13
|
],
|
|
14
14
|
"rootMainFiles": [
|
|
15
15
|
"static/chunks/15r3deq0oc~d..js",
|
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
"devFiles": [],
|
|
6
6
|
"polyfillFiles": [],
|
|
7
7
|
"lowPriorityFiles": [
|
|
8
|
-
"static/
|
|
9
|
-
"static/
|
|
10
|
-
"static/
|
|
8
|
+
"static/yPSZ27nvfv9JVMxGc9U6T/_buildManifest.js",
|
|
9
|
+
"static/yPSZ27nvfv9JVMxGc9U6T/_ssgManifest.js",
|
|
10
|
+
"static/yPSZ27nvfv9JVMxGc9U6T/_clientMiddlewareManifest.js"
|
|
11
11
|
],
|
|
12
12
|
"rootMainFiles": []
|
|
13
13
|
}
|
|
@@ -58,8 +58,8 @@
|
|
|
58
58
|
"dynamicRoutes": {},
|
|
59
59
|
"notFoundRoutes": [],
|
|
60
60
|
"preview": {
|
|
61
|
-
"previewModeId": "
|
|
62
|
-
"previewModeSigningKey": "
|
|
63
|
-
"previewModeEncryptionKey": "
|
|
61
|
+
"previewModeId": "ede2eae8dc4f1169ddc814984d8c8dc7",
|
|
62
|
+
"previewModeSigningKey": "6adc2c247f8d265beacbbb88dae822ae0f5062e845f71ea5e887f32423067e36",
|
|
63
|
+
"previewModeEncryptionKey": "ac9add8f94f82f8863856ac26dfaf97324b0309ee018bbcb4f5f2c24065dd83c"
|
|
64
64
|
}
|
|
65
65
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/15r3deq0oc~d..js"/><script src="/_next/static/chunks/0_r.3~d-5z8~_.js" async=""></script><script src="/_next/static/chunks/02p8lah64~lvh.js" async=""></script><script src="/_next/static/chunks/0gomaooulfzoq.js" async=""></script><script src="/_next/static/chunks/turbopack-130jszne6su0h.js" async=""></script><script src="/_next/static/chunks/0.v8w524wvk94.js" async=""></script><script src="/_next/static/chunks/0yelgl0o38y_u.js" async=""></script><meta name="next-size-adjust" content=""/><title>500: This page couldn’t load</title><link rel="icon" href="/favicon.ico?favicon.0x3dzn~oxb6tn.ico" sizes="256x256" type="image/x-icon"/><style>:root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }</style><script src="/_next/static/chunks/03~yq9q893hmn.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,"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/15r3deq0oc~d..js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[85530,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0yelgl0o38y_u.js\"],\"default\"]\n3:I[50571,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0yelgl0o38y_u.js\"],\"default\"]\n4:I[76614,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0yelgl0o38y_u.js\"],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[76614,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0yelgl0o38y_u.js\"],\"ViewportBoundary\"]\na:I[76614,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0yelgl0o38y_u.js\"],\"MetadataBoundary\"]\nc:I[59179,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0yelgl0o38y_u.js\"],\"default\",1]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"__PAGE__\",{}]}],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"title\",null,{\"children\":\"500: This page couldn’t load\"}],[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }\"}}]]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"display\":\"flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"marginTop\":\"-32px\",\"maxWidth\":\"325px\",\"padding\":\"32px 28px\",\"textAlign\":\"left\"},\"children\":[[\"$\",\"svg\",null,{\"width\":\"32\",\"height\":\"32\",\"viewBox\":\"-0.2 -1.5 32 32\",\"fill\":\"none\",\"style\":{\"marginBottom\":\"24px\"},\"children\":[\"$\",\"path\",null,{\"d\":\"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z\",\"fill\":\"var(--next-error-title)\"}]}],[\"$\",\"h1\",null,{\"style\":{\"fontSize\":\"24px\",\"fontWeight\":500,\"letterSpacing\":\"-0.02em\",\"lineHeight\":\"32px\",\"margin\":\"0 0 12px 0\",\"color\":\"var(--next-error-title)\"},\"children\":\"This page couldn’t load\"}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":\"14px\",\"fontWeight\":400,\"lineHeight\":\"21px\",\"margin\":\"0 0 20px 0\",\"color\":\"var(--next-error-message)\"},\"children\":\"A server error occurred. Reload to try again.\"}],[\"$\",\"form\",null,{\"style\":{\"margin\":0},\"children\":[\"$\",\"button\",null,{\"type\":\"submit\",\"style\":{\"display\":\"inline-flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\",\"height\":\"32px\",\"padding\":\"0 12px\",\"fontSize\":\"14px\",\"fontWeight\":500,\"lineHeight\":\"20px\",\"borderRadius\":\"6px\",\"cursor\":\"pointer\",\"color\":\"var(--next-error-btn-text)\",\"background\":\"var(--next-error-btn-bg)\",\"border\":\"var(--next-error-btn-border)\"},\"children\":\"Reload\"}]}]]}]}]}]]}],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,null]},null,false,\"$@7\"],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$La\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lb\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$c\",[]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"
|
|
1
|
+
<!DOCTYPE html><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/15r3deq0oc~d..js"/><script src="/_next/static/chunks/0_r.3~d-5z8~_.js" async=""></script><script src="/_next/static/chunks/02p8lah64~lvh.js" async=""></script><script src="/_next/static/chunks/0gomaooulfzoq.js" async=""></script><script src="/_next/static/chunks/turbopack-130jszne6su0h.js" async=""></script><script src="/_next/static/chunks/0.v8w524wvk94.js" async=""></script><script src="/_next/static/chunks/0yelgl0o38y_u.js" async=""></script><meta name="next-size-adjust" content=""/><title>500: This page couldn’t load</title><link rel="icon" href="/favicon.ico?favicon.0x3dzn~oxb6tn.ico" sizes="256x256" type="image/x-icon"/><style>:root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }</style><script src="/_next/static/chunks/03~yq9q893hmn.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,"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/15r3deq0oc~d..js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[85530,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0yelgl0o38y_u.js\"],\"default\"]\n3:I[50571,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0yelgl0o38y_u.js\"],\"default\"]\n4:I[76614,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0yelgl0o38y_u.js\"],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[76614,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0yelgl0o38y_u.js\"],\"ViewportBoundary\"]\na:I[76614,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0yelgl0o38y_u.js\"],\"MetadataBoundary\"]\nc:I[59179,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0yelgl0o38y_u.js\"],\"default\",1]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"__PAGE__\",{}]}],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"title\",null,{\"children\":\"500: This page couldn’t load\"}],[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }\"}}]]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"display\":\"flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"marginTop\":\"-32px\",\"maxWidth\":\"325px\",\"padding\":\"32px 28px\",\"textAlign\":\"left\"},\"children\":[[\"$\",\"svg\",null,{\"width\":\"32\",\"height\":\"32\",\"viewBox\":\"-0.2 -1.5 32 32\",\"fill\":\"none\",\"style\":{\"marginBottom\":\"24px\"},\"children\":[\"$\",\"path\",null,{\"d\":\"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z\",\"fill\":\"var(--next-error-title)\"}]}],[\"$\",\"h1\",null,{\"style\":{\"fontSize\":\"24px\",\"fontWeight\":500,\"letterSpacing\":\"-0.02em\",\"lineHeight\":\"32px\",\"margin\":\"0 0 12px 0\",\"color\":\"var(--next-error-title)\"},\"children\":\"This page couldn’t load\"}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":\"14px\",\"fontWeight\":400,\"lineHeight\":\"21px\",\"margin\":\"0 0 20px 0\",\"color\":\"var(--next-error-message)\"},\"children\":\"A server error occurred. Reload to try again.\"}],[\"$\",\"form\",null,{\"style\":{\"margin\":0},\"children\":[\"$\",\"button\",null,{\"type\":\"submit\",\"style\":{\"display\":\"inline-flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\",\"height\":\"32px\",\"padding\":\"0 12px\",\"fontSize\":\"14px\",\"fontWeight\":500,\"lineHeight\":\"20px\",\"borderRadius\":\"6px\",\"cursor\":\"pointer\",\"color\":\"var(--next-error-btn-text)\",\"background\":\"var(--next-error-btn-bg)\",\"border\":\"var(--next-error-btn-border)\"},\"children\":\"Reload\"}]}]]}]}]}]]}],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,null]},null,false,\"$@7\"],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$La\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lb\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$c\",[]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"yPSZ27nvfv9JVMxGc9U6T\"}\n"])</script><script>self.__next_f.push([1,"d:[]\n7:\"$Wd\"\n"])</script><script>self.__next_f.push([1,"9:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"e:I[61299,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0yelgl0o38y_u.js\"],\"IconMark\"]\n6:null\nb:[[\"$\",\"link\",\"0\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?favicon.0x3dzn~oxb6tn.ico\",\"sizes\":\"256x256\",\"type\":\"image/x-icon\"}],[\"$\",\"$Le\",\"1\",{}]]\n"])</script></body></html>
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
8:I[76614,["/_next/static/chunks/0.v8w524wvk94.js","/_next/static/chunks/0yelgl0o38y_u.js"],"ViewportBoundary"]
|
|
7
7
|
a:I[76614,["/_next/static/chunks/0.v8w524wvk94.js","/_next/static/chunks/0yelgl0o38y_u.js"],"MetadataBoundary"]
|
|
8
8
|
c:I[59179,["/_next/static/chunks/0.v8w524wvk94.js","/_next/static/chunks/0yelgl0o38y_u.js"],"default",1]
|
|
9
|
-
0:{"P":null,"c":["","_global-error"],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]}],[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","html",null,{"id":"__next_error__","children":[["$","head",null,{"children":[["$","title",null,{"children":"500: This page couldn’t load"}],["$","style",null,{"dangerouslySetInnerHTML":{"__html":":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }"}}]]}],["$","body",null,{"children":["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","display":"flex","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"style":{"marginTop":"-32px","maxWidth":"325px","padding":"32px 28px","textAlign":"left"},"children":[["$","svg",null,{"width":"32","height":"32","viewBox":"-0.2 -1.5 32 32","fill":"none","style":{"marginBottom":"24px"},"children":["$","path",null,{"d":"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z","fill":"var(--next-error-title)"}]}],["$","h1",null,{"style":{"fontSize":"24px","fontWeight":500,"letterSpacing":"-0.02em","lineHeight":"32px","margin":"0 0 12px 0","color":"var(--next-error-title)"},"children":"This page couldn’t load"}],["$","p",null,{"style":{"fontSize":"14px","fontWeight":400,"lineHeight":"21px","margin":"0 0 20px 0","color":"var(--next-error-message)"},"children":"A server error occurred. Reload to try again."}],["$","form",null,{"style":{"margin":0},"children":["$","button",null,{"type":"submit","style":{"display":"inline-flex","alignItems":"center","justifyContent":"center","height":"32px","padding":"0 12px","fontSize":"14px","fontWeight":500,"lineHeight":"20px","borderRadius":"6px","cursor":"pointer","color":"var(--next-error-btn-text)","background":"var(--next-error-btn-bg)","border":"var(--next-error-btn-border)"},"children":"Reload"}]}]]}]}]}]]}],null,["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],{},null,false,null]},null,false,"$@7"],["$","$1","h",{"children":[null,["$","$L8",null,{"children":"$L9"}],["$","div",null,{"hidden":true,"children":["$","$La",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$Lb"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$c",[]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"
|
|
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":"yPSZ27nvfv9JVMxGc9U6T"}
|
|
10
10
|
d:[]
|
|
11
11
|
7:"$Wd"
|
|
12
12
|
9:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
1:"$Sreact.fragment"
|
|
2
2
|
2:I[76614,["/_next/static/chunks/0.v8w524wvk94.js","/_next/static/chunks/0yelgl0o38y_u.js"],"OutletBoundary"]
|
|
3
3
|
3:"$Sreact.suspense"
|
|
4
|
-
0:{"rsc":["$","$1","c",{"children":[["$","html",null,{"id":"__next_error__","children":[["$","head",null,{"children":[["$","title",null,{"children":"500: This page couldn’t load"}],["$","style",null,{"dangerouslySetInnerHTML":{"__html":":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }"}}]]}],["$","body",null,{"children":["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","display":"flex","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"style":{"marginTop":"-32px","maxWidth":"325px","padding":"32px 28px","textAlign":"left"},"children":[["$","svg",null,{"width":"32","height":"32","viewBox":"-0.2 -1.5 32 32","fill":"none","style":{"marginBottom":"24px"},"children":["$","path",null,{"d":"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z","fill":"var(--next-error-title)"}]}],["$","h1",null,{"style":{"fontSize":"24px","fontWeight":500,"letterSpacing":"-0.02em","lineHeight":"32px","margin":"0 0 12px 0","color":"var(--next-error-title)"},"children":"This page couldn’t load"}],["$","p",null,{"style":{"fontSize":"14px","fontWeight":400,"lineHeight":"21px","margin":"0 0 20px 0","color":"var(--next-error-message)"},"children":"A server error occurred. Reload to try again."}],["$","form",null,{"style":{"margin":0},"children":["$","button",null,{"type":"submit","style":{"display":"inline-flex","alignItems":"center","justifyContent":"center","height":"32px","padding":"0 12px","fontSize":"14px","fontWeight":500,"lineHeight":"20px","borderRadius":"6px","cursor":"pointer","color":"var(--next-error-btn-text)","background":"var(--next-error-btn-bg)","border":"var(--next-error-btn-border)"},"children":"Reload"}]}]]}]}]}]]}],null,["$","$L2",null,{"children":["$","$3",null,{"name":"Next.MetadataOutlet","children":"$@4"}]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"
|
|
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":"yPSZ27nvfv9JVMxGc9U6T"}
|
|
5
5
|
4:null
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
8:I[76614,["/_next/static/chunks/0.v8w524wvk94.js","/_next/static/chunks/0yelgl0o38y_u.js"],"ViewportBoundary"]
|
|
7
7
|
a:I[76614,["/_next/static/chunks/0.v8w524wvk94.js","/_next/static/chunks/0yelgl0o38y_u.js"],"MetadataBoundary"]
|
|
8
8
|
c:I[59179,["/_next/static/chunks/0.v8w524wvk94.js","/_next/static/chunks/0yelgl0o38y_u.js"],"default",1]
|
|
9
|
-
0:{"P":null,"c":["","_global-error"],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]}],[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","html",null,{"id":"__next_error__","children":[["$","head",null,{"children":[["$","title",null,{"children":"500: This page couldn’t load"}],["$","style",null,{"dangerouslySetInnerHTML":{"__html":":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }"}}]]}],["$","body",null,{"children":["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","display":"flex","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"style":{"marginTop":"-32px","maxWidth":"325px","padding":"32px 28px","textAlign":"left"},"children":[["$","svg",null,{"width":"32","height":"32","viewBox":"-0.2 -1.5 32 32","fill":"none","style":{"marginBottom":"24px"},"children":["$","path",null,{"d":"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z","fill":"var(--next-error-title)"}]}],["$","h1",null,{"style":{"fontSize":"24px","fontWeight":500,"letterSpacing":"-0.02em","lineHeight":"32px","margin":"0 0 12px 0","color":"var(--next-error-title)"},"children":"This page couldn’t load"}],["$","p",null,{"style":{"fontSize":"14px","fontWeight":400,"lineHeight":"21px","margin":"0 0 20px 0","color":"var(--next-error-message)"},"children":"A server error occurred. Reload to try again."}],["$","form",null,{"style":{"margin":0},"children":["$","button",null,{"type":"submit","style":{"display":"inline-flex","alignItems":"center","justifyContent":"center","height":"32px","padding":"0 12px","fontSize":"14px","fontWeight":500,"lineHeight":"20px","borderRadius":"6px","cursor":"pointer","color":"var(--next-error-btn-text)","background":"var(--next-error-btn-bg)","border":"var(--next-error-btn-border)"},"children":"Reload"}]}]]}]}]}]]}],null,["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],{},null,false,null]},null,false,"$@7"],["$","$1","h",{"children":[null,["$","$L8",null,{"children":"$L9"}],["$","div",null,{"hidden":true,"children":["$","$La",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$Lb"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$c",[]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"
|
|
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":"yPSZ27nvfv9JVMxGc9U6T"}
|
|
10
10
|
d:[]
|
|
11
11
|
7:"$Wd"
|
|
12
12
|
9:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
|
|
@@ -3,4 +3,4 @@
|
|
|
3
3
|
3:I[76614,["/_next/static/chunks/0.v8w524wvk94.js","/_next/static/chunks/0yelgl0o38y_u.js"],"MetadataBoundary"]
|
|
4
4
|
4:"$Sreact.suspense"
|
|
5
5
|
5:I[61299,["/_next/static/chunks/0.v8w524wvk94.js","/_next/static/chunks/0yelgl0o38y_u.js"],"IconMark"]
|
|
6
|
-
0:{"rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","link","0",{"rel":"icon","href":"/favicon.ico?favicon.0x3dzn~oxb6tn.ico","sizes":"256x256","type":"image/x-icon"}],["$","$L5","1",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"
|
|
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":"yPSZ27nvfv9JVMxGc9U6T"}
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
2:I[85530,["/_next/static/chunks/0.v8w524wvk94.js","/_next/static/chunks/0yelgl0o38y_u.js"],"default"]
|
|
3
3
|
3:I[50571,["/_next/static/chunks/0.v8w524wvk94.js","/_next/static/chunks/0yelgl0o38y_u.js"],"default"]
|
|
4
4
|
4:[]
|
|
5
|
-
0:{"rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"isPartial":false,"staleTime":300,"varyParams":"$W4","buildId":"
|
|
5
|
+
0:{"rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"isPartial":false,"staleTime":300,"varyParams":"$W4","buildId":"yPSZ27nvfv9JVMxGc9U6T"}
|
|
@@ -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":"yPSZ27nvfv9JVMxGc9U6T"}
|
|
@@ -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/yPSZ27nvfv9JVMxGc9U6T/_buildManifest.js",
|
|
11
|
+
"static/yPSZ27nvfv9JVMxGc9U6T/_ssgManifest.js",
|
|
12
|
+
"static/yPSZ27nvfv9JVMxGc9U6T/_clientMiddlewareManifest.js"
|
|
13
13
|
],
|
|
14
14
|
"rootMainFiles": [
|
|
15
15
|
"static/chunks/15r3deq0oc~d..js",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/15r3deq0oc~d..js"/><script src="/_next/static/chunks/0_r.3~d-5z8~_.js" async=""></script><script src="/_next/static/chunks/02p8lah64~lvh.js" async=""></script><script src="/_next/static/chunks/0gomaooulfzoq.js" async=""></script><script src="/_next/static/chunks/turbopack-130jszne6su0h.js" async=""></script><script src="/_next/static/chunks/0.v8w524wvk94.js" async=""></script><script src="/_next/static/chunks/0yelgl0o38y_u.js" async=""></script><meta name="next-size-adjust" content=""/><title>500: This page couldn’t load</title><link rel="icon" href="/favicon.ico?favicon.0x3dzn~oxb6tn.ico" sizes="256x256" type="image/x-icon"/><style>:root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }</style><script src="/_next/static/chunks/03~yq9q893hmn.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,"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/15r3deq0oc~d..js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[85530,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0yelgl0o38y_u.js\"],\"default\"]\n3:I[50571,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0yelgl0o38y_u.js\"],\"default\"]\n4:I[76614,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0yelgl0o38y_u.js\"],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[76614,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0yelgl0o38y_u.js\"],\"ViewportBoundary\"]\na:I[76614,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0yelgl0o38y_u.js\"],\"MetadataBoundary\"]\nc:I[59179,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0yelgl0o38y_u.js\"],\"default\",1]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"__PAGE__\",{}]}],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"title\",null,{\"children\":\"500: This page couldn’t load\"}],[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }\"}}]]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"display\":\"flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"marginTop\":\"-32px\",\"maxWidth\":\"325px\",\"padding\":\"32px 28px\",\"textAlign\":\"left\"},\"children\":[[\"$\",\"svg\",null,{\"width\":\"32\",\"height\":\"32\",\"viewBox\":\"-0.2 -1.5 32 32\",\"fill\":\"none\",\"style\":{\"marginBottom\":\"24px\"},\"children\":[\"$\",\"path\",null,{\"d\":\"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z\",\"fill\":\"var(--next-error-title)\"}]}],[\"$\",\"h1\",null,{\"style\":{\"fontSize\":\"24px\",\"fontWeight\":500,\"letterSpacing\":\"-0.02em\",\"lineHeight\":\"32px\",\"margin\":\"0 0 12px 0\",\"color\":\"var(--next-error-title)\"},\"children\":\"This page couldn’t load\"}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":\"14px\",\"fontWeight\":400,\"lineHeight\":\"21px\",\"margin\":\"0 0 20px 0\",\"color\":\"var(--next-error-message)\"},\"children\":\"A server error occurred. Reload to try again.\"}],[\"$\",\"form\",null,{\"style\":{\"margin\":0},\"children\":[\"$\",\"button\",null,{\"type\":\"submit\",\"style\":{\"display\":\"inline-flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\",\"height\":\"32px\",\"padding\":\"0 12px\",\"fontSize\":\"14px\",\"fontWeight\":500,\"lineHeight\":\"20px\",\"borderRadius\":\"6px\",\"cursor\":\"pointer\",\"color\":\"var(--next-error-btn-text)\",\"background\":\"var(--next-error-btn-bg)\",\"border\":\"var(--next-error-btn-border)\"},\"children\":\"Reload\"}]}]]}]}]}]]}],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,null]},null,false,\"$@7\"],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$La\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lb\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$c\",[]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"
|
|
1
|
+
<!DOCTYPE html><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/15r3deq0oc~d..js"/><script src="/_next/static/chunks/0_r.3~d-5z8~_.js" async=""></script><script src="/_next/static/chunks/02p8lah64~lvh.js" async=""></script><script src="/_next/static/chunks/0gomaooulfzoq.js" async=""></script><script src="/_next/static/chunks/turbopack-130jszne6su0h.js" async=""></script><script src="/_next/static/chunks/0.v8w524wvk94.js" async=""></script><script src="/_next/static/chunks/0yelgl0o38y_u.js" async=""></script><meta name="next-size-adjust" content=""/><title>500: This page couldn’t load</title><link rel="icon" href="/favicon.ico?favicon.0x3dzn~oxb6tn.ico" sizes="256x256" type="image/x-icon"/><style>:root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }</style><script src="/_next/static/chunks/03~yq9q893hmn.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,"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/15r3deq0oc~d..js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[85530,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0yelgl0o38y_u.js\"],\"default\"]\n3:I[50571,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0yelgl0o38y_u.js\"],\"default\"]\n4:I[76614,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0yelgl0o38y_u.js\"],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[76614,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0yelgl0o38y_u.js\"],\"ViewportBoundary\"]\na:I[76614,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0yelgl0o38y_u.js\"],\"MetadataBoundary\"]\nc:I[59179,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0yelgl0o38y_u.js\"],\"default\",1]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"__PAGE__\",{}]}],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"title\",null,{\"children\":\"500: This page couldn’t load\"}],[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }\"}}]]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"display\":\"flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"marginTop\":\"-32px\",\"maxWidth\":\"325px\",\"padding\":\"32px 28px\",\"textAlign\":\"left\"},\"children\":[[\"$\",\"svg\",null,{\"width\":\"32\",\"height\":\"32\",\"viewBox\":\"-0.2 -1.5 32 32\",\"fill\":\"none\",\"style\":{\"marginBottom\":\"24px\"},\"children\":[\"$\",\"path\",null,{\"d\":\"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z\",\"fill\":\"var(--next-error-title)\"}]}],[\"$\",\"h1\",null,{\"style\":{\"fontSize\":\"24px\",\"fontWeight\":500,\"letterSpacing\":\"-0.02em\",\"lineHeight\":\"32px\",\"margin\":\"0 0 12px 0\",\"color\":\"var(--next-error-title)\"},\"children\":\"This page couldn’t load\"}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":\"14px\",\"fontWeight\":400,\"lineHeight\":\"21px\",\"margin\":\"0 0 20px 0\",\"color\":\"var(--next-error-message)\"},\"children\":\"A server error occurred. Reload to try again.\"}],[\"$\",\"form\",null,{\"style\":{\"margin\":0},\"children\":[\"$\",\"button\",null,{\"type\":\"submit\",\"style\":{\"display\":\"inline-flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\",\"height\":\"32px\",\"padding\":\"0 12px\",\"fontSize\":\"14px\",\"fontWeight\":500,\"lineHeight\":\"20px\",\"borderRadius\":\"6px\",\"cursor\":\"pointer\",\"color\":\"var(--next-error-btn-text)\",\"background\":\"var(--next-error-btn-bg)\",\"border\":\"var(--next-error-btn-border)\"},\"children\":\"Reload\"}]}]]}]}]}]]}],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,null]},null,false,\"$@7\"],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$La\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lb\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$c\",[]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"yPSZ27nvfv9JVMxGc9U6T\"}\n"])</script><script>self.__next_f.push([1,"d:[]\n7:\"$Wd\"\n"])</script><script>self.__next_f.push([1,"9:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"e:I[61299,[\"/_next/static/chunks/0.v8w524wvk94.js\",\"/_next/static/chunks/0yelgl0o38y_u.js\"],\"IconMark\"]\n6:null\nb:[[\"$\",\"link\",\"0\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?favicon.0x3dzn~oxb6tn.ico\",\"sizes\":\"256x256\",\"type\":\"image/x-icon\"}],[\"$\",\"$Le\",\"1\",{}]]\n"])</script></body></html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
self.__RSC_SERVER_MANIFEST="{\n \"node\": {},\n \"edge\": {},\n \"encryptionKey\": \"
|
|
1
|
+
self.__RSC_SERVER_MANIFEST="{\n \"node\": {},\n \"edge\": {},\n \"encryptionKey\": \"RtcpK13s6kIN73U0T9HagWX/dLIQdgIWJsT8XJ35Tsc=\"\n}"
|
package/admin/.next/trace
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"name":"generate-buildid","duration":
|
|
1
|
+
[{"name":"generate-buildid","duration":294,"timestamp":1049617685686,"id":4,"parentId":1,"tags":{},"startTime":1788896347380,"traceId":"d439e0408110d67f"},{"name":"load-custom-routes","duration":7615,"timestamp":1049617686118,"id":5,"parentId":1,"tags":{},"startTime":1788896347381,"traceId":"d439e0408110d67f"},{"name":"create-dist-dir","duration":439,"timestamp":1049617693777,"id":6,"parentId":1,"tags":{},"startTime":1788896347388,"traceId":"d439e0408110d67f"},{"name":"clean","duration":25194,"timestamp":1049617694641,"id":7,"parentId":1,"tags":{},"startTime":1788896347389,"traceId":"d439e0408110d67f"},{"name":"discover-routes","duration":2605,"timestamp":1049617726064,"id":8,"parentId":1,"tags":{},"startTime":1788896347421,"traceId":"d439e0408110d67f"},{"name":"create-root-mapping","duration":29,"timestamp":1049617728695,"id":9,"parentId":1,"tags":{},"startTime":1788896347423,"traceId":"d439e0408110d67f"},{"name":"generate-route-types","duration":10384,"timestamp":1049617729294,"id":10,"parentId":1,"tags":{},"startTime":1788896347424,"traceId":"d439e0408110d67f"},{"name":"public-dir-conflict-check","duration":48,"timestamp":1049617739719,"id":11,"parentId":1,"tags":{},"startTime":1788896347434,"traceId":"d439e0408110d67f"},{"name":"generate-routes-manifest","duration":1097,"timestamp":1049617739810,"id":12,"parentId":1,"tags":{},"startTime":1788896347434,"traceId":"d439e0408110d67f"},{"name":"run-turbopack","duration":4979962,"timestamp":1049617744735,"id":14,"parentId":1,"tags":{},"startTime":1788896347439,"traceId":"d439e0408110d67f"},{"name":"turbopack-build-events","duration":36,"timestamp":1049617861943,"id":15,"parentId":1,"tags":{},"startTime":1788896347556,"traceId":"d439e0408110d67f"},{"name":"run-typescript","duration":2028688,"timestamp":1049622753231,"id":16,"parentId":1,"tags":{},"startTime":1788896352448,"traceId":"d439e0408110d67f"},{"name":"generate-required-server-files","duration":816,"timestamp":1049624783375,"id":18,"parentId":1,"tags":{},"startTime":1788896354478,"traceId":"d439e0408110d67f"},{"name":"check-static-error-page","duration":2738,"timestamp":1049624795452,"id":20,"parentId":19,"tags":{},"startTime":1788896354490,"traceId":"d439e0408110d67f"},{"name":"is-page-static","duration":155821,"timestamp":1049624804145,"id":30,"parentId":22,"tags":{},"startTime":1788896354499,"traceId":"d439e0408110d67f"},{"name":"check-page","duration":163275,"timestamp":1049624796751,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1788896354491,"traceId":"d439e0408110d67f"},{"name":"is-page-static","duration":196606,"timestamp":1049624804214,"id":31,"parentId":23,"tags":{},"startTime":1788896354499,"traceId":"d439e0408110d67f"},{"name":"check-page","duration":203958,"timestamp":1049624796895,"id":23,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1788896354491,"traceId":"d439e0408110d67f"},{"name":"is-page-static","duration":200917,"timestamp":1049624803741,"id":29,"parentId":21,"tags":{},"startTime":1788896354498,"traceId":"d439e0408110d67f"},{"name":"check-page","duration":208765,"timestamp":1049624795917,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1788896354490,"traceId":"d439e0408110d67f"},{"name":"is-page-static","duration":205504,"timestamp":1049624807546,"id":32,"parentId":28,"tags":{},"startTime":1788896354502,"traceId":"d439e0408110d67f"},{"name":"check-page","duration":214937,"timestamp":1049624798140,"id":28,"parentId":19,"tags":{"page":"/"},"startTime":1788896354493,"traceId":"d439e0408110d67f"},{"name":"is-page-static","duration":207915,"timestamp":1049624807633,"id":33,"parentId":24,"tags":{},"startTime":1788896354502,"traceId":"d439e0408110d67f"},{"name":"check-page","duration":217725,"timestamp":1049624797869,"id":24,"parentId":19,"tags":{"page":"/p/[project]"},"startTime":1788896354492,"traceId":"d439e0408110d67f"},{"name":"is-page-static","duration":209704,"timestamp":1049624807695,"id":35,"parentId":26,"tags":{},"startTime":1788896354502,"traceId":"d439e0408110d67f"},{"name":"check-page","duration":219404,"timestamp":1049624798058,"id":26,"parentId":19,"tags":{"page":"/p/[project]/research/[slug]"},"startTime":1788896354493,"traceId":"d439e0408110d67f"},{"name":"is-page-static","duration":218892,"timestamp":1049624807727,"id":36,"parentId":27,"tags":{},"startTime":1788896354502,"traceId":"d439e0408110d67f"},{"name":"check-page","duration":228555,"timestamp":1049624798099,"id":27,"parentId":19,"tags":{"page":"/p/[project]/scorecards"},"startTime":1788896354493,"traceId":"d439e0408110d67f"},{"name":"is-page-static","duration":223669,"timestamp":1049624807664,"id":34,"parentId":25,"tags":{},"startTime":1788896354502,"traceId":"d439e0408110d67f"},{"name":"check-page","duration":233357,"timestamp":1049624797999,"id":25,"parentId":19,"tags":{"page":"/p/[project]/plan/[name]"},"startTime":1788896354492,"traceId":"d439e0408110d67f"},{"name":"static-check","duration":236265,"timestamp":1049624795102,"id":19,"parentId":1,"tags":{},"startTime":1788896354490,"traceId":"d439e0408110d67f"},{"name":"write-routes-manifest","duration":391,"timestamp":1049625032825,"id":38,"parentId":1,"tags":{},"startTime":1788896354727,"traceId":"d439e0408110d67f"},{"name":"load-dotenv","duration":22,"timestamp":1049625038656,"id":41,"parentId":40,"tags":{},"startTime":1788896354733,"traceId":"d439e0408110d67f"},{"name":"run-export-path-map","duration":212,"timestamp":1049625040210,"id":42,"parentId":40,"tags":{},"startTime":1788896354735,"traceId":"d439e0408110d67f"},{"name":"next-export","duration":195081,"timestamp":1049625038077,"id":40,"parentId":1,"tags":{},"startTime":1788896354733,"traceId":"d439e0408110d67f"},{"name":"move-exported-app-global-error-","duration":352,"timestamp":1049625233754,"id":43,"parentId":39,"tags":{},"startTime":1788896354928,"traceId":"d439e0408110d67f"},{"name":"static-generation","duration":200599,"timestamp":1049625034173,"id":39,"parentId":1,"tags":{},"startTime":1788896354729,"traceId":"d439e0408110d67f"},{"name":"write-routes-manifest","duration":172,"timestamp":1049625234869,"id":44,"parentId":1,"tags":{},"startTime":1788896354929,"traceId":"d439e0408110d67f"},{"name":"print-tree-view","duration":1014,"timestamp":1049625240273,"id":45,"parentId":1,"tags":{},"startTime":1788896354935,"traceId":"d439e0408110d67f"},{"name":"write-route-bundle-stats","duration":4598,"timestamp":1049625241297,"id":46,"parentId":1,"tags":{},"startTime":1788896354936,"traceId":"d439e0408110d67f"},{"name":"telemetry-flush","duration":491130,"timestamp":1049625245907,"id":47,"parentId":1,"tags":{},"startTime":1788896354940,"traceId":"d439e0408110d67f"},{"name":"next-build","duration":8088179,"timestamp":1049617648906,"id":1,"tags":{"buildMode":"default","version":"16.2.4","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1788896347343,"traceId":"d439e0408110d67f"}]
|
package/admin/.next/trace-build
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"name":"run-turbopack","duration":
|
|
1
|
+
[{"name":"run-turbopack","duration":4979962,"timestamp":1049617744735,"id":14,"parentId":1,"tags":{},"startTime":1788896347439,"traceId":"d439e0408110d67f"},{"name":"turbopack-build-events","duration":36,"timestamp":1049617861943,"id":15,"parentId":1,"tags":{},"startTime":1788896347556,"traceId":"d439e0408110d67f"},{"name":"run-typescript","duration":2028688,"timestamp":1049622753231,"id":16,"parentId":1,"tags":{},"startTime":1788896352448,"traceId":"d439e0408110d67f"},{"name":"static-check","duration":236265,"timestamp":1049624795102,"id":19,"parentId":1,"tags":{},"startTime":1788896354490,"traceId":"d439e0408110d67f"},{"name":"static-generation","duration":200599,"timestamp":1049625034173,"id":39,"parentId":1,"tags":{},"startTime":1788896354729,"traceId":"d439e0408110d67f"},{"name":"telemetry-flush","duration":491130,"timestamp":1049625245907,"id":47,"parentId":1,"tags":{},"startTime":1788896354940,"traceId":"d439e0408110d67f"},{"name":"next-build","duration":8088179,"timestamp":1049617648906,"id":1,"tags":{"buildMode":"default","version":"16.2.4","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1788896347343,"traceId":"d439e0408110d67f"}]
|
|
@@ -4,6 +4,7 @@ import { homedir } from "node:os";
|
|
|
4
4
|
import { basename, dirname, join, relative } from "node:path";
|
|
5
5
|
import { fileURLToPath } from "node:url";
|
|
6
6
|
import { globSync } from "glob";
|
|
7
|
+
import { ensureAgentsMdSections } from "../../lib/agents-md-sections.js";
|
|
7
8
|
import { ensureHooksModuleType } from "../../lib/hooks-module-type.js";
|
|
8
9
|
import { linkTrunk } from "../../lib/worktree/layout.js";
|
|
9
10
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
@@ -488,10 +489,19 @@ export async function init(projectRoot, options = {}) {
|
|
|
488
489
|
cpSync(join(packageRoot, "templates/CLAUDE.md"), claudeMdPath);
|
|
489
490
|
console.info(" create: CLAUDE.md");
|
|
490
491
|
}
|
|
491
|
-
// AGENTS.md — agent conduct directives, imported by CLAUDE.md via @AGENTS.md
|
|
492
|
+
// AGENTS.md — agent conduct directives, imported by CLAUDE.md via @AGENTS.md.
|
|
493
|
+
// An existing file is never overwritten, but template sections it lacks are
|
|
494
|
+
// appended — the same additive shape `update` uses.
|
|
492
495
|
const agentsMdPath = join(projectRoot, "AGENTS.md");
|
|
493
496
|
if (existsSync(agentsMdPath)) {
|
|
494
|
-
|
|
497
|
+
const ensured = ensureAgentsMdSections(projectRoot, packageRoot);
|
|
498
|
+
if (ensured.added.length > 0) {
|
|
499
|
+
const names = ensured.added.map((h) => h.replace(/^## /, "")).join(", ");
|
|
500
|
+
console.info(` update: AGENTS.md (appended: ${names})`);
|
|
501
|
+
}
|
|
502
|
+
else {
|
|
503
|
+
console.info(" skip: AGENTS.md (already exists)");
|
|
504
|
+
}
|
|
495
505
|
}
|
|
496
506
|
else {
|
|
497
507
|
cpSync(join(packageRoot, "templates/AGENTS.md"), agentsMdPath);
|
|
@@ -4,6 +4,7 @@ import { cpSync, existsSync, mkdirSync, readdirSync, readFileSync } from "node:f
|
|
|
4
4
|
import { dirname, join } from "node:path";
|
|
5
5
|
import { fileURLToPath } from "node:url";
|
|
6
6
|
import { globSync } from "glob";
|
|
7
|
+
import { ensureAgentsMdSections } from "../../lib/agents-md-sections.js";
|
|
7
8
|
import { loadExtensionTolerant, localOverrideErrors } from "../../lib/extension-loader.js";
|
|
8
9
|
import { ensureHooksModuleType } from "../../lib/hooks-module-type.js";
|
|
9
10
|
import { checkLatestVersion, hasNewerVersion } from "../../lib/version-check.js";
|
|
@@ -446,13 +447,21 @@ export async function update(projectRoot) {
|
|
|
446
447
|
}
|
|
447
448
|
}
|
|
448
449
|
// 5b. Ensure AGENTS.md exists (agent conduct directives, imported by CLAUDE.md
|
|
449
|
-
// via @AGENTS.md). Never overwrites — users may extend the file
|
|
450
|
-
//
|
|
450
|
+
// via @AGENTS.md). Never overwrites — users may extend the file — but template
|
|
451
|
+
// sections an existing file lacks are appended (`ensureAgentsMdSections`):
|
|
452
|
+
// copy-only-when-absent shipped a new conduct rule to no existing project.
|
|
451
453
|
console.info("\n[Project files]\n");
|
|
452
454
|
{
|
|
453
455
|
const agentsMdPath = join(projectRoot, "AGENTS.md");
|
|
454
456
|
if (existsSync(agentsMdPath)) {
|
|
455
|
-
|
|
457
|
+
const ensured = ensureAgentsMdSections(projectRoot, packageRoot);
|
|
458
|
+
if (ensured.added.length > 0) {
|
|
459
|
+
const names = ensured.added.map((h) => h.replace(/^## /, "")).join(", ");
|
|
460
|
+
console.info(` updated: AGENTS.md (appended: ${names})`);
|
|
461
|
+
}
|
|
462
|
+
else {
|
|
463
|
+
console.info(" current: AGENTS.md");
|
|
464
|
+
}
|
|
456
465
|
}
|
|
457
466
|
else {
|
|
458
467
|
cpSync(join(packageRoot, "templates/AGENTS.md"), agentsMdPath);
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Additive section ensure for AGENTS.md — the twin of `hook-migration.ts` for
|
|
3
|
+
* a user-owned prose file.
|
|
4
|
+
*
|
|
5
|
+
* `init` and `update` copy `templates/AGENTS.md` only when the project has no
|
|
6
|
+
* AGENTS.md, and never overwrite one that exists (users extend it). So a
|
|
7
|
+
* section added to the template reaches new projects and pre-1.28 projects,
|
|
8
|
+
* and never reaches a project that already has the file — which is every
|
|
9
|
+
* project that matters. A conduct rule that ships only to projects that do
|
|
10
|
+
* not exist yet has not shipped.
|
|
11
|
+
*
|
|
12
|
+
* This closes the other half additively: each heading in
|
|
13
|
+
* `ENSURED_AGENTS_MD_SECTIONS` is appended, verbatim from the template, to a
|
|
14
|
+
* project AGENTS.md that lacks it. A present section is never rewritten (the
|
|
15
|
+
* user's wording wins), an absent file is never created (that is the copy
|
|
16
|
+
* path's job), and the heading is the identity — matched as a whole line,
|
|
17
|
+
* because the phrase appearing in prose is not the section being there.
|
|
18
|
+
*/
|
|
19
|
+
/** Template sections every project AGENTS.md must carry. Extend on new rules. */
|
|
20
|
+
export declare const ENSURED_AGENTS_MD_SECTIONS: readonly string[];
|
|
21
|
+
export interface EnsureAgentsMdSectionsResult {
|
|
22
|
+
/** Headings appended to the project file. */
|
|
23
|
+
added: string[];
|
|
24
|
+
/** Headings already present — left byte-untouched. */
|
|
25
|
+
current: string[];
|
|
26
|
+
/** No project AGENTS.md — nothing to ensure into; creation belongs to the copy path. */
|
|
27
|
+
fileMissing: boolean;
|
|
28
|
+
}
|
|
29
|
+
export interface EnsureAgentsMdSectionsOptions {
|
|
30
|
+
/** Override the ensured list (tests). */
|
|
31
|
+
headings?: readonly string[];
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* The block from `heading` through the line before the next `## ` heading (or
|
|
35
|
+
* EOF), trailing blank lines trimmed. Throws when the template has no such
|
|
36
|
+
* heading: a template missing a section it promises is a packaging bug, not
|
|
37
|
+
* consumer state, and a silent no-op here would ship the rule to nobody.
|
|
38
|
+
*/
|
|
39
|
+
export declare function extractSection(template: string, heading: string): string;
|
|
40
|
+
/**
|
|
41
|
+
* Append every ensured template section the project's AGENTS.md lacks.
|
|
42
|
+
* Idempotent: a second run reports every heading as current and writes nothing.
|
|
43
|
+
*/
|
|
44
|
+
export declare function ensureAgentsMdSections(projectRoot: string, packageRoot: string, opts?: EnsureAgentsMdSectionsOptions): EnsureAgentsMdSectionsResult;
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Additive section ensure for AGENTS.md — the twin of `hook-migration.ts` for
|
|
3
|
+
* a user-owned prose file.
|
|
4
|
+
*
|
|
5
|
+
* `init` and `update` copy `templates/AGENTS.md` only when the project has no
|
|
6
|
+
* AGENTS.md, and never overwrite one that exists (users extend it). So a
|
|
7
|
+
* section added to the template reaches new projects and pre-1.28 projects,
|
|
8
|
+
* and never reaches a project that already has the file — which is every
|
|
9
|
+
* project that matters. A conduct rule that ships only to projects that do
|
|
10
|
+
* not exist yet has not shipped.
|
|
11
|
+
*
|
|
12
|
+
* This closes the other half additively: each heading in
|
|
13
|
+
* `ENSURED_AGENTS_MD_SECTIONS` is appended, verbatim from the template, to a
|
|
14
|
+
* project AGENTS.md that lacks it. A present section is never rewritten (the
|
|
15
|
+
* user's wording wins), an absent file is never created (that is the copy
|
|
16
|
+
* path's job), and the heading is the identity — matched as a whole line,
|
|
17
|
+
* because the phrase appearing in prose is not the section being there.
|
|
18
|
+
*/
|
|
19
|
+
import { existsSync, readFileSync, writeFileSync } from "node:fs";
|
|
20
|
+
import { join } from "node:path";
|
|
21
|
+
/** Template sections every project AGENTS.md must carry. Extend on new rules. */
|
|
22
|
+
export const ENSURED_AGENTS_MD_SECTIONS = ["## Citing plan artifacts"];
|
|
23
|
+
const isH2 = (line) => /^## /.test(line);
|
|
24
|
+
/**
|
|
25
|
+
* The block from `heading` through the line before the next `## ` heading (or
|
|
26
|
+
* EOF), trailing blank lines trimmed. Throws when the template has no such
|
|
27
|
+
* heading: a template missing a section it promises is a packaging bug, not
|
|
28
|
+
* consumer state, and a silent no-op here would ship the rule to nobody.
|
|
29
|
+
*/
|
|
30
|
+
export function extractSection(template, heading) {
|
|
31
|
+
const lines = template.split("\n");
|
|
32
|
+
const start = lines.findIndex((l) => l.trimEnd() === heading);
|
|
33
|
+
if (start === -1)
|
|
34
|
+
throw new Error(`templates/AGENTS.md has no "${heading}" section`);
|
|
35
|
+
let end = lines.length;
|
|
36
|
+
for (let i = start + 1; i < lines.length; i++) {
|
|
37
|
+
if (isH2(lines[i])) {
|
|
38
|
+
end = i;
|
|
39
|
+
break;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return lines.slice(start, end).join("\n").trimEnd();
|
|
43
|
+
}
|
|
44
|
+
const hasHeading = (body, heading) => body.split("\n").some((l) => l.trimEnd() === heading);
|
|
45
|
+
/**
|
|
46
|
+
* Append every ensured template section the project's AGENTS.md lacks.
|
|
47
|
+
* Idempotent: a second run reports every heading as current and writes nothing.
|
|
48
|
+
*/
|
|
49
|
+
export function ensureAgentsMdSections(projectRoot, packageRoot, opts = {}) {
|
|
50
|
+
const headings = opts.headings ?? ENSURED_AGENTS_MD_SECTIONS;
|
|
51
|
+
const result = { added: [], current: [], fileMissing: false };
|
|
52
|
+
// Validate the template before looking at the project, so a packaging bug
|
|
53
|
+
// is loud on every path rather than only on projects that happen to lack
|
|
54
|
+
// the section.
|
|
55
|
+
const template = readFileSync(join(packageRoot, "templates/AGENTS.md"), "utf-8");
|
|
56
|
+
const sections = headings.map((h) => [h, extractSection(template, h)]);
|
|
57
|
+
const target = join(projectRoot, "AGENTS.md");
|
|
58
|
+
if (!existsSync(target)) {
|
|
59
|
+
result.fileMissing = true;
|
|
60
|
+
return result;
|
|
61
|
+
}
|
|
62
|
+
const original = readFileSync(target, "utf-8");
|
|
63
|
+
let body = original;
|
|
64
|
+
for (const [heading, section] of sections) {
|
|
65
|
+
if (hasHeading(body, heading)) {
|
|
66
|
+
result.current.push(heading);
|
|
67
|
+
continue;
|
|
68
|
+
}
|
|
69
|
+
const trimmed = body.replace(/\s+$/, "");
|
|
70
|
+
body = trimmed ? `${trimmed}\n\n${section}\n` : `${section}\n`;
|
|
71
|
+
result.added.push(heading);
|
|
72
|
+
}
|
|
73
|
+
if (body !== original)
|
|
74
|
+
writeFileSync(target, body);
|
|
75
|
+
return result;
|
|
76
|
+
}
|
|
@@ -234,3 +234,226 @@ _read_worktree_config() {
|
|
|
234
234
|
fi
|
|
235
235
|
jq -r "$filter" "$config" 2>/dev/null
|
|
236
236
|
}
|
|
237
|
+
|
|
238
|
+
# Emit "<name>\t<path>" per declared repo. The path is the declared `path`
|
|
239
|
+
# (the repo's workbench-side trunk location), or empty meaning `<name>` at the
|
|
240
|
+
# workbench root. Same sanitization as the worktrees variant above: relative
|
|
241
|
+
# only, no `~`, no `..` in any position — a bad value degrades to the default,
|
|
242
|
+
# never to a traversal.
|
|
243
|
+
#
|
|
244
|
+
# DELIBERATE PORT of repoDir() in src/lib/worktree/repos.ts — bash cannot
|
|
245
|
+
# import the TS module, so the rule lives twice and must move together.
|
|
246
|
+
_read_workbench_repo_paths() {
|
|
247
|
+
local root="${WORKBENCH_ROOT:-}"
|
|
248
|
+
[[ -n "$root" ]] || { echo "Error: _read_workbench_repo_paths: WORKBENCH_ROOT must be set" >&2; return 1; }
|
|
249
|
+
local config="$root/.indusk/config.json"
|
|
250
|
+
[[ -f "$config" ]] || return 0
|
|
251
|
+
jq -r '
|
|
252
|
+
(.worktree // {}) as $w
|
|
253
|
+
| (
|
|
254
|
+
if ($w.repos | type) == "array" then $w.repos
|
|
255
|
+
elif ($w.wrapped_repo | type) == "string" then [{ name: $w.wrapped_repo }]
|
|
256
|
+
else []
|
|
257
|
+
end
|
|
258
|
+
)
|
|
259
|
+
| map(select(type == "object"))
|
|
260
|
+
| map(select((.name | type) == "string" and .name != ""))
|
|
261
|
+
| map([
|
|
262
|
+
.name,
|
|
263
|
+
(if (.path | type) == "string"
|
|
264
|
+
and (.path | test("^/|^~|(^|/)\\.\\.(/|$)") | not)
|
|
265
|
+
then .path else "" end)
|
|
266
|
+
])
|
|
267
|
+
| .[] | @tsv
|
|
268
|
+
' "$config" 2>/dev/null || echo ""
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
# Root entries that are never worktrees. ONE definition for the bash lane —
|
|
272
|
+
# wt.sh and wt-pm2.sh each carried a copy, and they had already drifted from
|
|
273
|
+
# RESERVED_ROOT_DIRS in src/lib/worktree/layout.ts (`docs` was missing from
|
|
274
|
+
# both). DELIBERATE PORT of that set; change TS and this together.
|
|
275
|
+
_wt_is_reserved_name() {
|
|
276
|
+
case "$1" in
|
|
277
|
+
.indusk | .claude | .vscode | .cursor | node_modules | dist | build | .git | .next | scripts | env | docs) return 0 ;;
|
|
278
|
+
*) return 1 ;;
|
|
279
|
+
esac
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
# Where <repo>'s trunk checkout is, from CONFIG — never from scanning.
|
|
283
|
+
# 1. The declared workbench-side location: <workbench>/<path-or-name>,
|
|
284
|
+
# which is the trunk symlink in a linked layout or the real directory in
|
|
285
|
+
# a nested one (`repos_root: "."`).
|
|
286
|
+
# 2. Else <repos_root>/<name> — the checkout itself, for a workbench whose
|
|
287
|
+
# trunk link was never made. Routing there is what "the config says where
|
|
288
|
+
# things are" means; failing because a symlink is missing is scan-luck.
|
|
289
|
+
_wt_resolve_trunk_dir() {
|
|
290
|
+
local repo="$1"
|
|
291
|
+
local declared_path="" name path
|
|
292
|
+
while IFS=$'\t' read -r name path; do
|
|
293
|
+
[[ "$name" == "$repo" ]] || continue
|
|
294
|
+
declared_path="$path"
|
|
295
|
+
break
|
|
296
|
+
done < <(_read_workbench_repo_paths)
|
|
297
|
+
local side="$WORKBENCH_ROOT/${declared_path:-$repo}"
|
|
298
|
+
if [[ -d "$side" ]]; then
|
|
299
|
+
echo "$side"
|
|
300
|
+
return 0
|
|
301
|
+
fi
|
|
302
|
+
local repos_root
|
|
303
|
+
repos_root="$(_read_repos_root)" || return 1
|
|
304
|
+
if [[ -d "$repos_root/$repo" ]]; then
|
|
305
|
+
echo "$repos_root/$repo"
|
|
306
|
+
return 0
|
|
307
|
+
fi
|
|
308
|
+
echo "Error: trunk for repo '$repo' not found — looked at $side and $repos_root/$repo. Run \`indusk workbench restore\`." >&2
|
|
309
|
+
return 1
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
# _wt_resolve_target <slug-or-qualified-slug> — the ONE resolution surface
|
|
313
|
+
# behind `pnpm wt` and `pnpm wt:pm2`. Each script carried its own copy once,
|
|
314
|
+
# and only one of them learned declared layouts — wt-pm2.sh stayed root-only
|
|
315
|
+
# for a full release while its header claimed "resolution matches wt.sh".
|
|
316
|
+
#
|
|
317
|
+
# Order:
|
|
318
|
+
# 1. Trunks, from config: `main` (qualified `<repo>/main` when several repos
|
|
319
|
+
# are declared) or a declared repo name routes via _wt_resolve_trunk_dir.
|
|
320
|
+
# 2. Worktrees, by scanning the workbench root and every DECLARED worktrees
|
|
321
|
+
# directory. Exact match wins; `-<slug>` suffix as fallback; ambiguity
|
|
322
|
+
# refuses and names the qualified `<repo>/<slug>` forms.
|
|
323
|
+
#
|
|
324
|
+
# Echoes the resolved absolute path. Errors to stderr, non-zero return.
|
|
325
|
+
_wt_resolve_target() {
|
|
326
|
+
local target="$1"
|
|
327
|
+
local qualifier="" slug="$target"
|
|
328
|
+
if [[ "$slug" == */* ]]; then
|
|
329
|
+
qualifier="${slug%%/*}"
|
|
330
|
+
slug="${slug#*/}"
|
|
331
|
+
fi
|
|
332
|
+
|
|
333
|
+
local repos=() r
|
|
334
|
+
while IFS= read -r r; do
|
|
335
|
+
[[ -n "$r" ]] && repos+=("$r")
|
|
336
|
+
done < <(_read_workbench_repos)
|
|
337
|
+
|
|
338
|
+
# --- 1. trunks come from config, never from scanning ---
|
|
339
|
+
if [[ "$slug" == "main" ]]; then
|
|
340
|
+
local repo=""
|
|
341
|
+
if [[ -n "$qualifier" ]]; then
|
|
342
|
+
if [[ ${#repos[@]} -gt 0 ]]; then
|
|
343
|
+
for r in "${repos[@]}"; do
|
|
344
|
+
[[ "$r" == "$qualifier" ]] && repo="$r"
|
|
345
|
+
done
|
|
346
|
+
fi
|
|
347
|
+
if [[ -z "$repo" ]]; then
|
|
348
|
+
echo "Error: no declared repo named '$qualifier' in .indusk/config.json." >&2
|
|
349
|
+
return 1
|
|
350
|
+
fi
|
|
351
|
+
elif [[ ${#repos[@]} -eq 1 ]]; then
|
|
352
|
+
repo="${repos[0]}"
|
|
353
|
+
elif [[ ${#repos[@]} -gt 1 ]]; then
|
|
354
|
+
echo "Error: 'main' is ambiguous — this workbench declares several repos:" >&2
|
|
355
|
+
for r in "${repos[@]}"; do printf ' %s/main\n' "$r" >&2; done
|
|
356
|
+
return 1
|
|
357
|
+
else
|
|
358
|
+
echo "Error: no repos declared in .indusk/config.json — not a workbench?" >&2
|
|
359
|
+
return 1
|
|
360
|
+
fi
|
|
361
|
+
_wt_resolve_trunk_dir "$repo"
|
|
362
|
+
return $?
|
|
363
|
+
fi
|
|
364
|
+
|
|
365
|
+
if [[ ${#repos[@]} -gt 0 && ( -z "$qualifier" || "$qualifier" == "$slug" ) ]]; then
|
|
366
|
+
for r in "${repos[@]}"; do
|
|
367
|
+
if [[ "$r" == "$slug" ]]; then
|
|
368
|
+
_wt_resolve_trunk_dir "$r"
|
|
369
|
+
return $?
|
|
370
|
+
fi
|
|
371
|
+
done
|
|
372
|
+
fi
|
|
373
|
+
|
|
374
|
+
# --- 2. worktrees, from the root and every declared worktrees dir ---
|
|
375
|
+
local search_repos=() search_dirs=() _name _dir
|
|
376
|
+
while IFS=$'\t' read -r _name _dir; do
|
|
377
|
+
[[ -n "$_name" ]] || continue
|
|
378
|
+
# Only DECLARED directories get their own pass — the root pass below
|
|
379
|
+
# covers repos that declare none (the flat layout). Searching the root
|
|
380
|
+
# twice turned every flat-layout slug into a false ambiguity.
|
|
381
|
+
[[ -n "$_dir" ]] || continue
|
|
382
|
+
search_repos+=("$_name")
|
|
383
|
+
search_dirs+=("$_dir")
|
|
384
|
+
done < <(_read_workbench_worktree_dirs)
|
|
385
|
+
search_repos+=("")
|
|
386
|
+
search_dirs+=("")
|
|
387
|
+
|
|
388
|
+
local exact_paths=() exact_repos=() suffix_paths=() suffix_repos=()
|
|
389
|
+
local idx repo dir base entry name
|
|
390
|
+
for idx in "${!search_dirs[@]}"; do
|
|
391
|
+
repo="${search_repos[$idx]}"
|
|
392
|
+
dir="${search_dirs[$idx]}"
|
|
393
|
+
if [[ -n "$qualifier" && -n "$repo" && "$repo" != "$qualifier" ]]; then continue; fi
|
|
394
|
+
if [[ -n "$qualifier" && -z "$repo" ]]; then continue; fi
|
|
395
|
+
base="$WORKBENCH_ROOT"
|
|
396
|
+
[[ -n "$dir" ]] && base="$WORKBENCH_ROOT/$dir"
|
|
397
|
+
[[ -d "$base" ]] || continue
|
|
398
|
+
for entry in "$base"/*; do
|
|
399
|
+
[[ -e "$entry" ]] || continue
|
|
400
|
+
[[ -d "$entry" ]] || continue
|
|
401
|
+
name="$(basename "$entry")"
|
|
402
|
+
[[ -z "$dir" ]] && _wt_is_reserved_name "$name" && continue
|
|
403
|
+
if [[ "$name" == "$slug" ]]; then
|
|
404
|
+
exact_paths+=("$entry"); exact_repos+=("$repo")
|
|
405
|
+
elif [[ "$name" == *"-$slug" ]]; then
|
|
406
|
+
suffix_paths+=("$entry"); suffix_repos+=("$repo")
|
|
407
|
+
fi
|
|
408
|
+
done
|
|
409
|
+
done
|
|
410
|
+
|
|
411
|
+
local candidate_paths=() candidate_repos=()
|
|
412
|
+
if [[ ${#exact_paths[@]} -gt 0 ]]; then
|
|
413
|
+
candidate_paths=("${exact_paths[@]}"); candidate_repos=("${exact_repos[@]}")
|
|
414
|
+
elif [[ ${#suffix_paths[@]} -gt 0 ]]; then
|
|
415
|
+
candidate_paths=("${suffix_paths[@]}"); candidate_repos=("${suffix_repos[@]}")
|
|
416
|
+
fi
|
|
417
|
+
|
|
418
|
+
if [[ ${#candidate_paths[@]} -eq 0 ]]; then
|
|
419
|
+
echo "Error: no worktree or trunk matching slug '$slug' at $WORKBENCH_ROOT" >&2
|
|
420
|
+
echo "Available targets:" >&2
|
|
421
|
+
if [[ ${#repos[@]} -gt 0 ]]; then
|
|
422
|
+
for r in "${repos[@]}"; do
|
|
423
|
+
if [[ ${#repos[@]} -eq 1 ]]; then
|
|
424
|
+
printf ' %s (trunk — also `wt main`)\n' "$r" >&2
|
|
425
|
+
else
|
|
426
|
+
printf ' %s (trunk — also `wt %s/main`)\n' "$r" "$r" >&2
|
|
427
|
+
fi
|
|
428
|
+
done
|
|
429
|
+
fi
|
|
430
|
+
for idx in "${!search_dirs[@]}"; do
|
|
431
|
+
repo="${search_repos[$idx]}"; dir="${search_dirs[$idx]}"
|
|
432
|
+
base="$WORKBENCH_ROOT"; [[ -n "$dir" ]] && base="$WORKBENCH_ROOT/$dir"
|
|
433
|
+
[[ -d "$base" ]] || continue
|
|
434
|
+
for entry in "$base"/*; do
|
|
435
|
+
[[ -d "$entry" ]] || continue
|
|
436
|
+
name="$(basename "$entry")"
|
|
437
|
+
[[ -z "$dir" ]] && _wt_is_reserved_name "$name" && continue
|
|
438
|
+
if [[ -n "$repo" ]]; then printf ' %s/%s\n' "$repo" "$name" >&2; else printf ' %s\n' "$name" >&2; fi
|
|
439
|
+
done
|
|
440
|
+
done
|
|
441
|
+
return 1
|
|
442
|
+
fi
|
|
443
|
+
|
|
444
|
+
if [[ ${#candidate_paths[@]} -gt 1 ]]; then
|
|
445
|
+
echo "Error: multiple targets match slug '$slug':" >&2
|
|
446
|
+
local i
|
|
447
|
+
for i in "${!candidate_paths[@]}"; do
|
|
448
|
+
if [[ -n "${candidate_repos[$i]}" ]]; then
|
|
449
|
+
printf ' %s/%s\n' "${candidate_repos[$i]}" "$(basename "${candidate_paths[$i]}")" >&2
|
|
450
|
+
else
|
|
451
|
+
printf ' %s\n' "$(basename "${candidate_paths[$i]}")" >&2
|
|
452
|
+
fi
|
|
453
|
+
done
|
|
454
|
+
echo "Name the repo to disambiguate, e.g. \`wt <repo>/$slug\`." >&2
|
|
455
|
+
return 1
|
|
456
|
+
fi
|
|
457
|
+
|
|
458
|
+
echo "${candidate_paths[0]}"
|
|
459
|
+
}
|
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
2
|
# wt-pm2.sh — start one or more long-running dev processes for worktrees
|
|
3
|
-
# under pm2. Resolution
|
|
3
|
+
# under pm2. Resolution IS wt.sh's: both call _wt_resolve_target in
|
|
4
|
+
# lib/workbench-helpers.sh, so trunks (`main`, `<repo>/main`, `<repo>`),
|
|
5
|
+
# declared worktrees directories, and `<repo>/<slug>` disambiguation all
|
|
6
|
+
# work here too. This script carried its own root-only copy once, whose
|
|
7
|
+
# header claimed "resolution matches wt.sh" while declared layouts had
|
|
8
|
+
# already made that false.
|
|
4
9
|
#
|
|
5
10
|
# Usage:
|
|
6
|
-
# pnpm wt:pm2 <
|
|
11
|
+
# pnpm wt:pm2 <target>[:<app>] <command> [<target>[:<app>] <command> ...]
|
|
7
12
|
#
|
|
8
13
|
# Examples:
|
|
9
14
|
# # one process:
|
|
@@ -12,7 +17,8 @@
|
|
|
12
17
|
# # full local-dev stack for one worktree:
|
|
13
18
|
# pnpm wt:pm2 cancel-polish:web dev cancel-polish:web inngest cancel-polish:dashboard dev
|
|
14
19
|
#
|
|
15
|
-
# pm2 process naming: <
|
|
20
|
+
# pm2 process naming: <target>-<app>-<command> (or <target>-<command> when no
|
|
21
|
+
# :<app>); a `/` in a qualified target becomes `-`.
|
|
16
22
|
#
|
|
17
23
|
# Manage with `pnpm exec pm2 list / logs / stop / delete`.
|
|
18
24
|
|
|
@@ -24,10 +30,13 @@ source "$SCRIPT_DIR/lib/workbench-helpers.sh"
|
|
|
24
30
|
|
|
25
31
|
usage() {
|
|
26
32
|
cat <<'EOF'
|
|
27
|
-
Usage: pnpm wt:pm2 <
|
|
33
|
+
Usage: pnpm wt:pm2 <target>[:<app>] <command> [<target>[:<app>] <command> ...]
|
|
28
34
|
|
|
29
35
|
Args come in pairs. Each pair starts one pm2 process named
|
|
30
|
-
<
|
|
36
|
+
<target>-<app>-<command> (or <target>-<command> without :<app>).
|
|
37
|
+
|
|
38
|
+
Targets resolve exactly as `pnpm wt` targets do: `main` / `<repo>/main` /
|
|
39
|
+
`<repo>` for trunks, `<slug>` / `<repo>/<slug>` for worktrees.
|
|
31
40
|
|
|
32
41
|
Examples:
|
|
33
42
|
pnpm wt:pm2 cancel-polish:web dev
|
|
@@ -55,16 +64,9 @@ fi
|
|
|
55
64
|
|
|
56
65
|
WORKBENCH_ROOT="$(_resolve_workbench_root)"
|
|
57
66
|
|
|
58
|
-
# Reserved/non-checkout names at workbench root.
|
|
59
|
-
_is_reserved_name() {
|
|
60
|
-
case "$1" in
|
|
61
|
-
.indusk | .claude | .vscode | .cursor | node_modules | dist | build | .git | .next | scripts | env) return 0 ;;
|
|
62
|
-
*) return 1 ;;
|
|
63
|
-
esac
|
|
64
|
-
}
|
|
65
|
-
|
|
66
67
|
# resolve_target <target> → echoes "<base-name> <cwd>"
|
|
67
|
-
# base-name format: <
|
|
68
|
+
# base-name format: <target> or <target>-<app> (commands tack on -<command>);
|
|
69
|
+
# a `/` in a qualified target becomes `-` so pm2 names stay flat.
|
|
68
70
|
resolve_target() {
|
|
69
71
|
local target="$1"
|
|
70
72
|
|
|
@@ -76,46 +78,19 @@ resolve_target() {
|
|
|
76
78
|
local slug="${BASH_REMATCH[1]}"
|
|
77
79
|
local app="${BASH_REMATCH[3]:-}"
|
|
78
80
|
|
|
79
|
-
local
|
|
80
|
-
|
|
81
|
-
[[ -d "$entry" ]] || continue
|
|
82
|
-
local name
|
|
83
|
-
name="$(basename "$entry")"
|
|
84
|
-
_is_reserved_name "$name" && continue
|
|
85
|
-
if [[ "$name" == "$slug" ]]; then
|
|
86
|
-
exact_paths+=("$entry")
|
|
87
|
-
elif [[ "$name" == *"-$slug" ]]; then
|
|
88
|
-
suffix_paths+=("$entry")
|
|
89
|
-
fi
|
|
90
|
-
done
|
|
91
|
-
|
|
92
|
-
local candidate_paths=()
|
|
93
|
-
if [[ ${#exact_paths[@]} -gt 0 ]]; then
|
|
94
|
-
candidate_paths=("${exact_paths[@]}")
|
|
95
|
-
elif [[ ${#suffix_paths[@]} -gt 0 ]]; then
|
|
96
|
-
candidate_paths=("${suffix_paths[@]}")
|
|
97
|
-
fi
|
|
98
|
-
|
|
99
|
-
if [[ ${#candidate_paths[@]} -eq 0 ]]; then
|
|
100
|
-
echo "Error: no worktree or trunk matching slug '$slug' at $WORKBENCH_ROOT" >&2
|
|
101
|
-
return 1
|
|
102
|
-
fi
|
|
103
|
-
if [[ ${#candidate_paths[@]} -gt 1 ]]; then
|
|
104
|
-
echo "Error: multiple targets match slug '$slug': ${candidate_paths[*]}" >&2
|
|
105
|
-
return 1
|
|
106
|
-
fi
|
|
107
|
-
|
|
108
|
-
local worktree_path="${candidate_paths[0]}"
|
|
81
|
+
local worktree_path
|
|
82
|
+
worktree_path="$(_wt_resolve_target "$slug")" || return 1
|
|
109
83
|
|
|
84
|
+
local base="${slug//\//-}"
|
|
110
85
|
if [[ -n "$app" ]]; then
|
|
111
86
|
local app_path="$worktree_path/apps/$app"
|
|
112
87
|
if [[ ! -d "$app_path" ]]; then
|
|
113
88
|
echo "Error: app not found at $app_path" >&2
|
|
114
89
|
return 1
|
|
115
90
|
fi
|
|
116
|
-
echo "$
|
|
91
|
+
echo "$base-$app $app_path"
|
|
117
92
|
else
|
|
118
|
-
echo "$
|
|
93
|
+
echo "$base $worktree_path"
|
|
119
94
|
fi
|
|
120
95
|
}
|
|
121
96
|
|
|
@@ -1,15 +1,31 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
|
-
# wt.sh — run a command inside a worktree or
|
|
3
|
-
# single-repo workbench.
|
|
2
|
+
# wt.sh — run a command inside a worktree or a trunk of a workbench.
|
|
4
3
|
#
|
|
5
4
|
# Usage:
|
|
6
|
-
# pnpm wt <
|
|
7
|
-
# pnpm wt <
|
|
5
|
+
# pnpm wt <target>[:<app>] <command> [args...]
|
|
6
|
+
# pnpm wt <target>[:<app>] -- <binary> [args...]
|
|
7
|
+
#
|
|
8
|
+
# Targets (resolved by _wt_resolve_target in lib/workbench-helpers.sh — the
|
|
9
|
+
# ONE resolution surface, shared with wt-pm2.sh):
|
|
10
|
+
# main the trunk, when one repo is declared
|
|
11
|
+
# <repo>/main the trunk of <repo>, when several are
|
|
12
|
+
# <repo> same trunk, addressed by its declared name
|
|
13
|
+
# <slug> a worktree, found at the workbench root or in any
|
|
14
|
+
# DECLARED worktrees directory; exact match wins,
|
|
15
|
+
# `-<slug>` suffix as fallback
|
|
16
|
+
# <repo>/<slug> a worktree, disambiguated by owning repo
|
|
17
|
+
#
|
|
18
|
+
# Trunks resolve from CONFIG (`worktree.repos[]` / `repos_root` /
|
|
19
|
+
# `wrapped_repo`+`sibling_parent`), never by scanning: the declared
|
|
20
|
+
# workbench-side path when it exists (trunk symlink or nested checkout),
|
|
21
|
+
# else `<repos_root>/<name>`. A workbench whose trunk link was never made
|
|
22
|
+
# still routes correctly.
|
|
8
23
|
#
|
|
9
24
|
# Examples:
|
|
25
|
+
# pnpm wt main dev # cd the trunk, run `pnpm dev`
|
|
10
26
|
# pnpm wt cancel-polish dev # cd <workbench>/cancel-polish/, run `pnpm dev`
|
|
11
27
|
# pnpm wt cancel-polish:web build # cd <workbench>/cancel-polish/apps/web/, run `pnpm build`
|
|
12
|
-
# pnpm wt numero lint # cd
|
|
28
|
+
# pnpm wt numero lint # cd numero's trunk, run `pnpm lint`
|
|
13
29
|
# pnpm wt cancel-polish ce dc:up local
|
|
14
30
|
# # cd cancel-polish/, run `pnpm ce dc:up local`
|
|
15
31
|
# # composable.env picks up the worktree's env
|
|
@@ -19,14 +35,6 @@
|
|
|
19
35
|
# # pnpm when args would otherwise be consumed by
|
|
20
36
|
# # pnpm's own flag parsing (e.g., --env-file).
|
|
21
37
|
#
|
|
22
|
-
# Resolution (single-pass, flat workbench shape):
|
|
23
|
-
# - Look at subdirs/symlinks at workbench root
|
|
24
|
-
# - Exact match: <slug> matches a subdir name exactly
|
|
25
|
-
# - Suffix match (fallback): <slug> matches a subdir ending with -<slug>
|
|
26
|
-
# - Reserved names skipped: `.indusk`, `node_modules`, `dist`, `.git`
|
|
27
|
-
# - Multiple matches → error with the candidates listed
|
|
28
|
-
# - Zero matches → error with the available subdirs listed
|
|
29
|
-
#
|
|
30
38
|
# pnpm-prefix vs raw exec:
|
|
31
39
|
# - Default: prepends `pnpm` to the command (works for package.json scripts
|
|
32
40
|
# and pnpm-aware tools like `pnpm ce`).
|
|
@@ -49,13 +57,17 @@ COMMAND=("$@")
|
|
|
49
57
|
usage() {
|
|
50
58
|
cat <<'EOF'
|
|
51
59
|
Usage:
|
|
52
|
-
pnpm wt <
|
|
53
|
-
pnpm wt <
|
|
60
|
+
pnpm wt <target>[:<app>] <command> [args...]
|
|
61
|
+
pnpm wt <target>[:<app>] -- <binary> [args...]
|
|
62
|
+
|
|
63
|
+
Targets:
|
|
64
|
+
main | <repo>/main | <repo> a trunk, resolved from .indusk/config.json
|
|
65
|
+
<slug> | <repo>/<slug> a worktree
|
|
54
66
|
|
|
55
67
|
Examples:
|
|
68
|
+
pnpm wt main dev
|
|
56
69
|
pnpm wt cancel-polish dev
|
|
57
70
|
pnpm wt cancel-polish:web build
|
|
58
|
-
pnpm wt <wrapped-repo> lint # the trunk
|
|
59
71
|
pnpm wt cancel-polish ce dc:up local # ce composition (pnpm-aware)
|
|
60
72
|
pnpm wt cancel-polish -- docker compose --env-file .env.local up -d
|
|
61
73
|
# raw exec, no pnpm prefix.
|
|
@@ -81,110 +93,7 @@ APP="${BASH_REMATCH[3]:-}"
|
|
|
81
93
|
|
|
82
94
|
WORKBENCH_ROOT="$(_resolve_workbench_root)"
|
|
83
95
|
|
|
84
|
-
|
|
85
|
-
_is_reserved_name() {
|
|
86
|
-
case "$1" in
|
|
87
|
-
.indusk | .claude | .vscode | .cursor | node_modules | dist | build | .git | .next | scripts | env) return 0 ;;
|
|
88
|
-
*) return 1 ;;
|
|
89
|
-
esac
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
# Slug resolution across the workbench root AND every declared worktrees
|
|
93
|
-
# directory. Scanning the root alone made a declared layout invisible: the
|
|
94
|
-
# worktrees were one level down, so `wt <slug>` reported "no worktree matching"
|
|
95
|
-
# for a worktree that plainly existed.
|
|
96
|
-
#
|
|
97
|
-
# A slug may be qualified as `<repo>/<slug>` to disambiguate. Repo-qualified,
|
|
98
|
-
# not directory-qualified: the repo name and the slug are what a person knows,
|
|
99
|
-
# while the directory is a config detail that changes when the layout does.
|
|
100
|
-
QUALIFIER=""
|
|
101
|
-
if [[ "$SLUG" == */* ]]; then
|
|
102
|
-
QUALIFIER="${SLUG%%/*}"
|
|
103
|
-
SLUG="${SLUG#*/}"
|
|
104
|
-
fi
|
|
105
|
-
|
|
106
|
-
# "<repo>\t<dir>" per declared repo; dir empty means the workbench root.
|
|
107
|
-
declare -a search_repos=() search_dirs=()
|
|
108
|
-
while IFS=$'\t' read -r _name _dir; do
|
|
109
|
-
[[ -n "$_name" ]] || continue
|
|
110
|
-
# Only DECLARED directories get their own pass. A repo that declares none
|
|
111
|
-
# keeps its worktrees at the root, which the root pass below already
|
|
112
|
-
# covers — searching the root twice found every entry twice and turned
|
|
113
|
-
# every flat-layout slug into a false "multiple targets match".
|
|
114
|
-
[[ -n "$_dir" ]] || continue
|
|
115
|
-
search_repos+=("$_name")
|
|
116
|
-
search_dirs+=("$_dir")
|
|
117
|
-
done < <(_read_workbench_worktree_dirs)
|
|
118
|
-
|
|
119
|
-
# The root is always searched too — trunks live there, and so do the worktrees
|
|
120
|
-
# of any repo that declares no location (the flat layout).
|
|
121
|
-
search_repos+=("")
|
|
122
|
-
search_dirs+=("")
|
|
123
|
-
|
|
124
|
-
exact_paths=(); exact_repos=()
|
|
125
|
-
suffix_paths=(); suffix_repos=()
|
|
126
|
-
for idx in "${!search_dirs[@]}"; do
|
|
127
|
-
repo="${search_repos[$idx]}"
|
|
128
|
-
dir="${search_dirs[$idx]}"
|
|
129
|
-
# A qualifier narrows the search to that repo, so `alpha/x` cannot match
|
|
130
|
-
# beta's `x`. The unqualified root pass is kept for trunks.
|
|
131
|
-
if [[ -n "$QUALIFIER" && -n "$repo" && "$repo" != "$QUALIFIER" ]]; then continue; fi
|
|
132
|
-
if [[ -n "$QUALIFIER" && -z "$repo" ]]; then continue; fi
|
|
133
|
-
base="$WORKBENCH_ROOT"
|
|
134
|
-
[[ -n "$dir" ]] && base="$WORKBENCH_ROOT/$dir"
|
|
135
|
-
[[ -d "$base" ]] || continue
|
|
136
|
-
for entry in "$base"/*; do
|
|
137
|
-
[[ -e "$entry" ]] || continue
|
|
138
|
-
[[ -d "$entry" ]] || continue
|
|
139
|
-
name="$(basename "$entry")"
|
|
140
|
-
[[ -z "$dir" ]] && _is_reserved_name "$name" && continue
|
|
141
|
-
if [[ "$name" == "$SLUG" ]]; then
|
|
142
|
-
exact_paths+=("$entry"); exact_repos+=("$repo")
|
|
143
|
-
elif [[ "$name" == *"-$SLUG" ]]; then
|
|
144
|
-
suffix_paths+=("$entry"); suffix_repos+=("$repo")
|
|
145
|
-
fi
|
|
146
|
-
done
|
|
147
|
-
done
|
|
148
|
-
|
|
149
|
-
# Exact match wins; suffix only if no exact.
|
|
150
|
-
candidate_paths=(); candidate_repos=()
|
|
151
|
-
if [[ ${#exact_paths[@]} -gt 0 ]]; then
|
|
152
|
-
candidate_paths=("${exact_paths[@]}"); candidate_repos=("${exact_repos[@]}")
|
|
153
|
-
elif [[ ${#suffix_paths[@]} -gt 0 ]]; then
|
|
154
|
-
candidate_paths=("${suffix_paths[@]}"); candidate_repos=("${suffix_repos[@]}")
|
|
155
|
-
fi
|
|
156
|
-
|
|
157
|
-
if [[ ${#candidate_paths[@]} -eq 0 ]]; then
|
|
158
|
-
echo "Error: no worktree or trunk matching slug '$SLUG' at $WORKBENCH_ROOT" >&2
|
|
159
|
-
echo "Available targets:" >&2
|
|
160
|
-
for idx in "${!search_dirs[@]}"; do
|
|
161
|
-
repo="${search_repos[$idx]}"; dir="${search_dirs[$idx]}"
|
|
162
|
-
base="$WORKBENCH_ROOT"; [[ -n "$dir" ]] && base="$WORKBENCH_ROOT/$dir"
|
|
163
|
-
[[ -d "$base" ]] || continue
|
|
164
|
-
for entry in "$base"/*; do
|
|
165
|
-
[[ -d "$entry" ]] || continue
|
|
166
|
-
name="$(basename "$entry")"
|
|
167
|
-
[[ -z "$dir" ]] && _is_reserved_name "$name" && continue
|
|
168
|
-
if [[ -n "$repo" ]]; then printf ' %s/%s\n' "$repo" "$name" >&2; else printf ' %s\n' "$name" >&2; fi
|
|
169
|
-
done
|
|
170
|
-
done
|
|
171
|
-
exit 1
|
|
172
|
-
fi
|
|
173
|
-
|
|
174
|
-
if [[ ${#candidate_paths[@]} -gt 1 ]]; then
|
|
175
|
-
echo "Error: multiple targets match slug '$SLUG':" >&2
|
|
176
|
-
for i in "${!candidate_paths[@]}"; do
|
|
177
|
-
if [[ -n "${candidate_repos[$i]}" ]]; then
|
|
178
|
-
printf ' %s/%s\n' "${candidate_repos[$i]}" "$(basename "${candidate_paths[$i]}")" >&2
|
|
179
|
-
else
|
|
180
|
-
printf ' %s\n' "$(basename "${candidate_paths[$i]}")" >&2
|
|
181
|
-
fi
|
|
182
|
-
done
|
|
183
|
-
echo "Name the repo to disambiguate, e.g. \`wt <repo>/$SLUG\`." >&2
|
|
184
|
-
exit 1
|
|
185
|
-
fi
|
|
186
|
-
|
|
187
|
-
WORKTREE_PATH="${candidate_paths[0]}"
|
|
96
|
+
WORKTREE_PATH="$(_wt_resolve_target "$SLUG")"
|
|
188
97
|
WORKTREE_NAME="$(basename "$WORKTREE_PATH")"
|
|
189
98
|
|
|
190
99
|
# Raw-exec mode: if the first command token is `--`, run the rest directly
|
|
@@ -85,7 +85,7 @@ Out of scope: `remove`, `prune`, orphan-worktree detection. These are manual ope
|
|
|
85
85
|
|
|
86
86
|
The user-facing run-anything surface is `pnpm wt <slug>[:<app>] <command> [args...]`. This matches the shape `dawn-fde-toolkit` ships today, simplified for single-repo.
|
|
87
87
|
|
|
88
|
-
Resolution is a
|
|
88
|
+
Resolution is one function shared with `wt:pm2` (`_wt_resolve_target`). Trunks come first, from config: `main`, `<repo>/main`, or a declared repo name resolve to the declared workbench-side path, else `<repos_root>/<name>`. Worktree slugs then scan the workbench root and every declared `worktrees` directory. Exact match wins; suffix-match fallback; ambiguous match errors with the qualified `<repo>/<slug>` candidates listed; zero match errors with the available targets.
|
|
89
89
|
|
|
90
90
|
`:<app>` suffix changes the resolved dir from `<resolved>` to `<resolved>/apps/<app>`.
|
|
91
91
|
|
|
@@ -93,9 +93,10 @@ Examples (workbench is wrapping `numero`):
|
|
|
93
93
|
- `pnpm wt cancel-polish dev` — cd to `<workbench>/cancel-polish/`, run `pnpm dev`
|
|
94
94
|
- `pnpm wt cancel-polish:web build` — cd to `<workbench>/cancel-polish/apps/web/`, run `pnpm build`
|
|
95
95
|
- `pnpm wt numero lint` — cd to `<workbench>/numero/` (the trunk symlink), run `pnpm lint`
|
|
96
|
+
- `pnpm wt main lint` — the same trunk, without naming it (single-repo workbench)
|
|
96
97
|
- `pnpm wt cancel-polish ce dc:up local` — cd to `<workbench>/cancel-polish/`, run `pnpm ce dc:up local` (ce reads the worktree's env)
|
|
97
98
|
|
|
98
|
-
Each trunk is addressable by its repo name (`pnpm wt numero ...`)
|
|
99
|
+
Each trunk is addressable by its repo name (`pnpm wt numero ...`) or as `main` (`pnpm wt main ...`; `<repo>/main` when several repos are declared). Trunks resolve from `worktree.repos[]` + `repos_root`, never by scanning — a workbench whose trunk symlink was never made still routes.
|
|
99
100
|
|
|
100
101
|
### Composing with composable.env (legacy — deprecated in favor of doppler)
|
|
101
102
|
|
package/package.json
CHANGED
package/templates/AGENTS.md
CHANGED
|
@@ -11,6 +11,14 @@ These directives apply to every agent operating in this project — working agen
|
|
|
11
11
|
- If you don't know, say so. Don't fabricate names, dates, citations, or APIs.
|
|
12
12
|
- Questions are questions, not instructions. "Why did you do X?" means explain — not "I'll change it." Wait for an explicit instruction before modifying anything.
|
|
13
13
|
|
|
14
|
+
## Citing plan artifacts
|
|
15
|
+
|
|
16
|
+
Plan documents identify things by short labels: trajectory rows (`T3`, `A2`), phases (`Phase 2`, `Test Phase 1`), ADR decisions, gate names, checklist items. The reader does not speak that vocabulary. Every time you cite one:
|
|
17
|
+
|
|
18
|
+
- Say what kind of thing it is and what it asserts, in the same sentence, before drawing any conclusion from it.
|
|
19
|
+
- Never "A2 makes it clear we should X." Instead: "A2 is a trajectory test row asserting that a malformed ledger line throws; it goes red under X, so we should Y."
|
|
20
|
+
- Do this on first mention in every message, not once per session. Messages are read out of order and out of context.
|
|
21
|
+
|
|
14
22
|
## Brevity
|
|
15
23
|
|
|
16
24
|
Default to the shortest answer that does the job. The user reads every line; length is a cost you impose on them.
|
/package/admin/.next/static/{WxUGu7NCQs8pb0nSvDzv6 → yPSZ27nvfv9JVMxGc9U6T}/_buildManifest.js
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|