gsd-pi 2.62.0 → 2.62.1-dev.1ae2b74
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/dist/resources/extensions/ask-user-questions.js +47 -3
- package/dist/resources/extensions/gsd/auto/loop.js +8 -1
- package/dist/resources/extensions/gsd/auto/phases.js +10 -3
- package/dist/resources/extensions/gsd/auto-post-unit.js +6 -4
- package/dist/resources/extensions/gsd/auto-start.js +11 -6
- package/dist/resources/extensions/gsd/auto-timers.js +8 -2
- package/dist/resources/extensions/gsd/auto-verification.js +14 -3
- package/dist/resources/extensions/gsd/auto-worktree.js +19 -0
- package/dist/resources/extensions/gsd/auto.js +24 -0
- package/dist/resources/extensions/gsd/bootstrap/register-hooks.js +4 -0
- package/dist/resources/extensions/gsd/bootstrap/tool-call-loop-guard.js +11 -1
- package/dist/resources/extensions/gsd/commands-handlers.js +18 -7
- package/dist/resources/extensions/gsd/db-writer.js +64 -28
- package/dist/resources/extensions/gsd/preferences-models.js +74 -0
- package/dist/resources/extensions/gsd/preferences-skills.js +6 -1
- package/dist/resources/extensions/gsd/prompts/guided-discuss-milestone.md +1 -1
- package/dist/resources/extensions/gsd/prompts/guided-discuss-slice.md +1 -1
- package/dist/resources/extensions/gsd/skill-catalog.js +6 -4
- package/dist/resources/extensions/gsd/skill-discovery.js +24 -6
- package/dist/resources/extensions/gsd/skill-health.js +7 -3
- package/dist/resources/extensions/gsd/skill-telemetry.js +5 -2
- package/dist/resources/extensions/gsd/state.js +1 -0
- package/dist/resources/extensions/gsd/tools/complete-slice.js +3 -3
- package/dist/resources/extensions/gsd/workflow-logger.js +13 -8
- package/dist/resources/extensions/gsd/workflow-reconcile.js +3 -1
- package/dist/web/standalone/.next/BUILD_ID +1 -1
- package/dist/web/standalone/.next/app-path-routes-manifest.json +17 -17
- package/dist/web/standalone/.next/build-manifest.json +3 -3
- package/dist/web/standalone/.next/prerender-manifest.json +3 -3
- package/dist/web/standalone/.next/required-server-files.json +3 -3
- package/dist/web/standalone/.next/server/app/_global-error/page.js +3 -3
- package/dist/web/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.html +2 -2
- package/dist/web/standalone/.next/server/app/_global-error.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found/page.js +2 -2
- package/dist/web/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.html +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.rsc +3 -3
- package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
- package/dist/web/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +3 -3
- package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/api/boot/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/boot/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route.js +2 -2
- package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/browse-directories/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/browse-directories/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/captures/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/captures/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/cleanup/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/cleanup/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/dev-mode/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/dev-mode/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/doctor/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/doctor/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/experimental/route.js +2 -2
- package/dist/web/standalone/.next/server/app/api/experimental/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/export-data/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/export-data/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/files/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/files/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/forensics/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/forensics/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/git/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/history/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/history/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/hooks/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/hooks/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/inspect/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/inspect/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/knowledge/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/knowledge/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/live-state/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/live-state/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/onboarding/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/onboarding/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/preferences/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/preferences/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/projects/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/projects/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/recovery/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/recovery/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/remote-questions/route.js +2 -2
- package/dist/web/standalone/.next/server/app/api/remote-questions/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/session/browser/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/session/browser/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/session/command/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/session/command/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/session/events/route.js +2 -2
- package/dist/web/standalone/.next/server/app/api/session/events/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/session/manage/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/session/manage/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/settings-data/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/settings-data/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/shutdown/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/shutdown/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/skill-health/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/skill-health/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/steer/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/steer/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/switch-root/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/switch-root/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/terminal/input/route.js +2 -2
- package/dist/web/standalone/.next/server/app/api/terminal/input/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/terminal/resize/route.js +2 -2
- package/dist/web/standalone/.next/server/app/api/terminal/resize/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/terminal/sessions/route.js +2 -2
- package/dist/web/standalone/.next/server/app/api/terminal/sessions/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/terminal/stream/route.js +4 -4
- package/dist/web/standalone/.next/server/app/api/terminal/stream/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/terminal/upload/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/terminal/upload/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/undo/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/undo/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/update/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/visualizer/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/visualizer/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/index.html +1 -1
- package/dist/web/standalone/.next/server/app/index.rsc +4 -4
- package/dist/web/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/dist/web/standalone/.next/server/app/index.segments/_full.segment.rsc +4 -4
- package/dist/web/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/_index.segment.rsc +3 -3
- package/dist/web/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/page.js +2 -2
- package/dist/web/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app-paths-manifest.json +17 -17
- package/dist/web/standalone/.next/server/chunks/2229.js +1 -1
- package/dist/web/standalone/.next/server/chunks/7471.js +3 -3
- package/dist/web/standalone/.next/server/middleware-build-manifest.js +1 -1
- package/dist/web/standalone/.next/server/middleware.js +2 -2
- package/dist/web/standalone/.next/server/next-font-manifest.js +1 -1
- package/dist/web/standalone/.next/server/next-font-manifest.json +1 -1
- package/dist/web/standalone/.next/server/pages/404.html +1 -1
- package/dist/web/standalone/.next/server/pages/500.html +2 -2
- package/dist/web/standalone/.next/server/server-reference-manifest.json +1 -1
- package/dist/web/standalone/.next/static/chunks/app/_not-found/{page-2f24283c162b6ab3.js → page-f2a7482d42a5614b.js} +1 -1
- package/dist/web/standalone/.next/static/chunks/app/{layout-9ecfd95f343793f0.js → layout-a16c7a7ecdf0c2cf.js} +1 -1
- package/dist/web/standalone/.next/static/chunks/app/page-0c485498795110d6.js +1 -0
- package/dist/web/standalone/.next/static/chunks/main-app-fdab67f7802d7832.js +1 -0
- package/dist/web/standalone/.next/static/chunks/next/dist/client/components/builtin/global-error-459824ffb8c323dd.js +1 -0
- package/dist/web/standalone/node_modules/node-pty/build/Makefile +2 -2
- package/dist/web/standalone/node_modules/node-pty/build/Release/pty.node +0 -0
- package/dist/web/standalone/node_modules/node-pty/build/pty.target.mk +14 -14
- package/dist/web/standalone/node_modules/node-pty/node-addon-api/node_addon_api.target.mk +14 -14
- package/dist/web/standalone/node_modules/node-pty/node-addon-api/node_addon_api_except.target.mk +14 -14
- package/dist/web/standalone/node_modules/node-pty/node-addon-api/node_addon_api_maybe.target.mk +14 -14
- package/dist/web/standalone/server.js +1 -1
- package/package.json +1 -1
- package/packages/mcp-server/src/cli.ts +1 -1
- package/packages/mcp-server/src/index.ts +15 -1
- package/packages/mcp-server/src/readers/captures.ts +119 -0
- package/packages/mcp-server/src/readers/doctor-lite.ts +225 -0
- package/packages/mcp-server/src/readers/index.ts +16 -0
- package/packages/mcp-server/src/readers/knowledge.ts +111 -0
- package/packages/mcp-server/src/readers/metrics.ts +118 -0
- package/packages/mcp-server/src/readers/paths.ts +217 -0
- package/packages/mcp-server/src/readers/readers.test.ts +509 -0
- package/packages/mcp-server/src/readers/roadmap.ts +263 -0
- package/packages/mcp-server/src/readers/state.ts +223 -0
- package/packages/mcp-server/src/server.ts +134 -3
- package/packages/pi-ai/dist/utils/repair-tool-json.d.ts +26 -6
- package/packages/pi-ai/dist/utils/repair-tool-json.d.ts.map +1 -1
- package/packages/pi-ai/dist/utils/repair-tool-json.js +67 -9
- package/packages/pi-ai/dist/utils/repair-tool-json.js.map +1 -1
- package/packages/pi-ai/dist/utils/tests/repair-tool-json.test.js +73 -1
- package/packages/pi-ai/dist/utils/tests/repair-tool-json.test.js.map +1 -1
- package/packages/pi-ai/src/utils/repair-tool-json.ts +74 -10
- package/packages/pi-ai/src/utils/tests/repair-tool-json.test.ts +94 -1
- package/packages/pi-coding-agent/dist/core/agent-session-model-switch.test.d.ts +2 -0
- package/packages/pi-coding-agent/dist/core/agent-session-model-switch.test.d.ts.map +1 -0
- package/packages/pi-coding-agent/dist/core/agent-session-model-switch.test.js +16 -0
- package/packages/pi-coding-agent/dist/core/agent-session-model-switch.test.js.map +1 -0
- package/packages/pi-coding-agent/dist/core/agent-session.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/agent-session.js +4 -0
- package/packages/pi-coding-agent/dist/core/agent-session.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/retry-handler.d.ts +3 -0
- package/packages/pi-coding-agent/dist/core/retry-handler.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/retry-handler.js +48 -16
- package/packages/pi-coding-agent/dist/core/retry-handler.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/retry-handler.test.js +20 -3
- package/packages/pi-coding-agent/dist/core/retry-handler.test.js.map +1 -1
- package/packages/pi-coding-agent/package.json +1 -1
- package/packages/pi-coding-agent/src/core/agent-session-model-switch.test.ts +21 -0
- package/packages/pi-coding-agent/src/core/agent-session.ts +4 -0
- package/packages/pi-coding-agent/src/core/retry-handler.test.ts +30 -3
- package/packages/pi-coding-agent/src/core/retry-handler.ts +49 -16
- package/pkg/package.json +1 -1
- package/src/resources/extensions/ask-user-questions.ts +60 -4
- package/src/resources/extensions/gsd/auto/loop.ts +8 -1
- package/src/resources/extensions/gsd/auto/phases.ts +8 -6
- package/src/resources/extensions/gsd/auto-post-unit.ts +6 -3
- package/src/resources/extensions/gsd/auto-start.ts +11 -6
- package/src/resources/extensions/gsd/auto-timers.ts +8 -2
- package/src/resources/extensions/gsd/auto-verification.ts +14 -3
- package/src/resources/extensions/gsd/auto-worktree.ts +18 -0
- package/src/resources/extensions/gsd/auto.ts +25 -0
- package/src/resources/extensions/gsd/bootstrap/register-hooks.ts +4 -0
- package/src/resources/extensions/gsd/bootstrap/tool-call-loop-guard.ts +13 -1
- package/src/resources/extensions/gsd/commands-handlers.ts +20 -7
- package/src/resources/extensions/gsd/db-writer.ts +67 -30
- package/src/resources/extensions/gsd/preferences-models.ts +78 -0
- package/src/resources/extensions/gsd/preferences-skills.ts +6 -1
- package/src/resources/extensions/gsd/prompts/guided-discuss-milestone.md +1 -1
- package/src/resources/extensions/gsd/prompts/guided-discuss-slice.md +1 -1
- package/src/resources/extensions/gsd/skill-catalog.ts +6 -3
- package/src/resources/extensions/gsd/skill-discovery.ts +23 -6
- package/src/resources/extensions/gsd/skill-health.ts +7 -3
- package/src/resources/extensions/gsd/skill-telemetry.ts +5 -2
- package/src/resources/extensions/gsd/state.ts +1 -0
- package/src/resources/extensions/gsd/tests/ask-user-questions-dedup.test.ts +120 -0
- package/src/resources/extensions/gsd/tests/auto-start-model-capture.test.ts +22 -2
- package/src/resources/extensions/gsd/tests/auto-wrapup-inflight-guard.test.ts +107 -0
- package/src/resources/extensions/gsd/tests/claude-skill-dirs.test.ts +51 -0
- package/src/resources/extensions/gsd/tests/db-writer.test.ts +41 -0
- package/src/resources/extensions/gsd/tests/model-isolation.test.ts +75 -1
- package/src/resources/extensions/gsd/tests/steer-worktree-path.test.ts +108 -0
- package/src/resources/extensions/gsd/tests/tool-call-loop-guard.test.ts +17 -4
- package/src/resources/extensions/gsd/tests/workflow-logger.test.ts +17 -41
- package/src/resources/extensions/gsd/tests/worktree-db-respawn-truncation.test.ts +81 -2
- package/src/resources/extensions/gsd/tools/complete-slice.ts +3 -5
- package/src/resources/extensions/gsd/workflow-logger.ts +13 -8
- package/src/resources/extensions/gsd/workflow-reconcile.ts +3 -1
- package/src/resources/extensions/shared/tests/ask-user-freetext.test.ts +6 -1
- package/dist/web/standalone/.next/static/chunks/app/page-62be3b5fa91e4c8f.js +0 -1
- package/dist/web/standalone/.next/static/chunks/main-app-d3d4c336195465f9.js +0 -1
- package/dist/web/standalone/.next/static/chunks/next/dist/client/components/builtin/global-error-ab5a8926e07ec673.js +0 -1
- /package/dist/web/standalone/.next/static/{F4rzqt_3m83A68ZRiU12r → erQZ_8_1lkclnPJLJnCxG}/_buildManifest.js +0 -0
- /package/dist/web/standalone/.next/static/{F4rzqt_3m83A68ZRiU12r → erQZ_8_1lkclnPJLJnCxG}/_ssgManifest.js +0 -0
|
@@ -87,6 +87,80 @@ export function resolveModelWithFallbacksForUnit(unitType) {
|
|
|
87
87
|
fallbacks: phaseConfig.fallbacks ?? [],
|
|
88
88
|
};
|
|
89
89
|
}
|
|
90
|
+
/**
|
|
91
|
+
* Resolve the default session model from GSD preferences.
|
|
92
|
+
*
|
|
93
|
+
* Used at auto-mode bootstrap to override the session model that was
|
|
94
|
+
* determined by settings.json (defaultProvider/defaultModel). When
|
|
95
|
+
* PREFERENCES.md (or project preferences) configures an `execution` model
|
|
96
|
+
* we treat that as the session default. Falls back through execution →
|
|
97
|
+
* planning → first configured model.
|
|
98
|
+
*
|
|
99
|
+
* Accepts an optional `sessionProvider` for bare model IDs that don't
|
|
100
|
+
* include an explicit provider prefix (e.g. `gpt-5.4` instead of
|
|
101
|
+
* `openai-codex/gpt-5.4`). When a bare ID is found and sessionProvider
|
|
102
|
+
* is available, the session provider is used. Without sessionProvider,
|
|
103
|
+
* bare IDs are still returned with provider set to the bare ID itself
|
|
104
|
+
* so downstream resolution (resolveModelId) can match it.
|
|
105
|
+
*
|
|
106
|
+
* Returns `{ provider, id }` or `undefined` if no model preference is
|
|
107
|
+
* configured.
|
|
108
|
+
*/
|
|
109
|
+
export function resolveDefaultSessionModel(sessionProvider) {
|
|
110
|
+
const prefs = loadEffectiveGSDPreferences();
|
|
111
|
+
if (!prefs?.preferences.models)
|
|
112
|
+
return undefined;
|
|
113
|
+
const m = prefs.preferences.models;
|
|
114
|
+
// Priority: execution → planning → first configured value
|
|
115
|
+
const candidates = [
|
|
116
|
+
m.execution,
|
|
117
|
+
m.planning,
|
|
118
|
+
m.research,
|
|
119
|
+
m.discuss,
|
|
120
|
+
m.completion,
|
|
121
|
+
m.validation,
|
|
122
|
+
m.subagent,
|
|
123
|
+
];
|
|
124
|
+
for (const cfg of candidates) {
|
|
125
|
+
if (!cfg)
|
|
126
|
+
continue;
|
|
127
|
+
// Normalize to provider + id from the various config shapes
|
|
128
|
+
let provider;
|
|
129
|
+
let id;
|
|
130
|
+
if (typeof cfg === "string") {
|
|
131
|
+
const slashIdx = cfg.indexOf("/");
|
|
132
|
+
if (slashIdx !== -1) {
|
|
133
|
+
provider = cfg.slice(0, slashIdx);
|
|
134
|
+
id = cfg.slice(slashIdx + 1);
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
// Bare model ID (e.g. "gpt-5.4") — use session provider as context
|
|
138
|
+
provider = sessionProvider;
|
|
139
|
+
id = cfg;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
// Object config: { model, provider?, fallbacks? }
|
|
144
|
+
if (cfg.provider) {
|
|
145
|
+
provider = cfg.provider;
|
|
146
|
+
}
|
|
147
|
+
else if (cfg.model.includes("/")) {
|
|
148
|
+
const slashIdx = cfg.model.indexOf("/");
|
|
149
|
+
provider = cfg.model.slice(0, slashIdx);
|
|
150
|
+
id = cfg.model.slice(slashIdx + 1);
|
|
151
|
+
return { provider, id };
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
provider = sessionProvider;
|
|
155
|
+
}
|
|
156
|
+
id = cfg.model;
|
|
157
|
+
}
|
|
158
|
+
if (provider && id) {
|
|
159
|
+
return { provider, id };
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
return undefined;
|
|
163
|
+
}
|
|
90
164
|
/**
|
|
91
165
|
* Determines the next fallback model to try when the current model fails.
|
|
92
166
|
* If the current model is not in the configured list, returns the primary model.
|
|
@@ -12,13 +12,18 @@ import { validatePreferences } from "./preferences-validation.js";
|
|
|
12
12
|
import { loadEffectiveGSDPreferences } from "./preferences.js";
|
|
13
13
|
/**
|
|
14
14
|
* Known skill directories, in priority order.
|
|
15
|
-
*
|
|
15
|
+
* Searches both the skills.sh ecosystem directory (~/.agents/skills/) and
|
|
16
|
+
* Claude Code's official directory (~/.claude/skills/). Project-level
|
|
17
|
+
* directories for both conventions are included as well.
|
|
16
18
|
* Legacy ~/.gsd/agent/skills/ is included as a fallback for pre-migration installs.
|
|
17
19
|
*/
|
|
18
20
|
export function getSkillSearchDirs(cwd) {
|
|
19
21
|
const dirs = [
|
|
20
22
|
{ dir: join(homedir(), ".agents", "skills"), method: "user-skill" },
|
|
21
23
|
{ dir: join(cwd, ".agents", "skills"), method: "project-skill" },
|
|
24
|
+
// Claude Code official skill directories
|
|
25
|
+
{ dir: join(homedir(), ".claude", "skills"), method: "user-skill" },
|
|
26
|
+
{ dir: join(cwd, ".claude", "skills"), method: "project-skill" },
|
|
22
27
|
];
|
|
23
28
|
// Legacy fallback — read skills from old GSD directory only if migration hasn't completed
|
|
24
29
|
const legacyDir = join(homedir(), ".gsd", "agent", "skills");
|
|
@@ -30,7 +30,7 @@ Ask **1–3 questions per round**. Keep each question focused on one of:
|
|
|
30
30
|
- **The biggest technical unknowns / risks** — what could fail, what hasn't been proven
|
|
31
31
|
- **What external systems/services this touches** — APIs, databases, third-party services
|
|
32
32
|
|
|
33
|
-
**If `{{structuredQuestionsAvailable}}` is `true`:** use `ask_user_questions` for each round. 1–3 questions per call, each as a separate question object. Keep option labels short (3–5 words). Always include a freeform "Other / let me explain" option. When the user picks that option or writes a long freeform answer, switch to plain text follow-up for that thread before resuming structured questions.
|
|
33
|
+
**If `{{structuredQuestionsAvailable}}` is `true`:** use `ask_user_questions` for each round. 1–3 questions per call, each as a separate question object. Keep option labels short (3–5 words). Always include a freeform "Other / let me explain" option. When the user picks that option or writes a long freeform answer, switch to plain text follow-up for that thread before resuming structured questions. **IMPORTANT: Call `ask_user_questions` exactly once per turn. Never make multiple calls with the same or overlapping questions — wait for the user's response before asking the next round.**
|
|
34
34
|
|
|
35
35
|
**If `{{structuredQuestionsAvailable}}` is `false`:** ask questions in plain text. Keep each round to 1–3 focused questions. Wait for answers before asking the next round.
|
|
36
36
|
|
|
@@ -22,7 +22,7 @@ Do **not** go deep — just enough that your questions reflect what's actually t
|
|
|
22
22
|
|
|
23
23
|
### Question rounds
|
|
24
24
|
|
|
25
|
-
Ask **1–3 questions per round** using `ask_user_questions`. Keep each question focused on one of:
|
|
25
|
+
Ask **1–3 questions per round** using `ask_user_questions`. **Call `ask_user_questions` exactly once per turn — never make multiple calls with the same or overlapping questions. Wait for the user's response before asking the next round.** Keep each question focused on one of:
|
|
26
26
|
- **UX and user-facing behaviour** — what does the user see, click, trigger, or experience?
|
|
27
27
|
- **Edge cases and failure states** — what happens when things go wrong or are in unusual states?
|
|
28
28
|
- **Scope boundaries** — what is explicitly in vs out for this slice? What deferred to later?
|
|
@@ -887,12 +887,14 @@ export async function installPacksBatched(packs, onProgress) {
|
|
|
887
887
|
}
|
|
888
888
|
/**
|
|
889
889
|
* Check if any skills from a pack are already installed.
|
|
890
|
+
* Searches both the skills.sh ecosystem directory and Claude Code's official directory.
|
|
890
891
|
*/
|
|
891
892
|
export function isPackInstalled(pack) {
|
|
892
|
-
const
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
893
|
+
const skillsDirs = [
|
|
894
|
+
join(homedir(), ".agents", "skills"),
|
|
895
|
+
join(homedir(), ".claude", "skills"),
|
|
896
|
+
];
|
|
897
|
+
return pack.skills.every((name) => skillsDirs.some((dir) => existsSync(join(dir, name, "SKILL.md"))));
|
|
896
898
|
}
|
|
897
899
|
// ─── Init Wizard Integration ──────────────────────────────────────────────────
|
|
898
900
|
/**
|
|
@@ -10,8 +10,9 @@
|
|
|
10
10
|
import { existsSync, readdirSync, readFileSync } from "node:fs";
|
|
11
11
|
import { join } from "node:path";
|
|
12
12
|
import { homedir } from "node:os";
|
|
13
|
-
/**
|
|
13
|
+
/** Skills directories — skills.sh ecosystem + Claude Code official */
|
|
14
14
|
const SKILLS_DIR = join(homedir(), ".agents", "skills");
|
|
15
|
+
const CLAUDE_SKILLS_DIR = join(homedir(), ".claude", "skills");
|
|
15
16
|
/** Snapshot of skill names at auto-mode start */
|
|
16
17
|
let baselineSkills = null;
|
|
17
18
|
/**
|
|
@@ -44,8 +45,9 @@ export function detectNewSkills() {
|
|
|
44
45
|
for (const dir of current) {
|
|
45
46
|
if (baselineSkills.has(dir))
|
|
46
47
|
continue;
|
|
47
|
-
|
|
48
|
-
|
|
48
|
+
// Check both skill directories for the SKILL.md file
|
|
49
|
+
const skillMdPath = resolveSkillMdPath(dir);
|
|
50
|
+
if (!skillMdPath)
|
|
49
51
|
continue;
|
|
50
52
|
const meta = parseSkillFrontmatter(skillMdPath);
|
|
51
53
|
if (meta) {
|
|
@@ -78,11 +80,11 @@ ${entries}
|
|
|
78
80
|
</newly_discovered_skills>`;
|
|
79
81
|
}
|
|
80
82
|
// ─── Internals ────────────────────────────────────────────────────────────────
|
|
81
|
-
function
|
|
82
|
-
if (!existsSync(
|
|
83
|
+
function listSkillDirsFrom(dir) {
|
|
84
|
+
if (!existsSync(dir))
|
|
83
85
|
return [];
|
|
84
86
|
try {
|
|
85
|
-
return readdirSync(
|
|
87
|
+
return readdirSync(dir, { withFileTypes: true })
|
|
86
88
|
.filter(d => d.isDirectory())
|
|
87
89
|
.map(d => d.name);
|
|
88
90
|
}
|
|
@@ -90,6 +92,14 @@ function listSkillDirs() {
|
|
|
90
92
|
return [];
|
|
91
93
|
}
|
|
92
94
|
}
|
|
95
|
+
function listSkillDirs() {
|
|
96
|
+
const names = new Set();
|
|
97
|
+
for (const name of listSkillDirsFrom(SKILLS_DIR))
|
|
98
|
+
names.add(name);
|
|
99
|
+
for (const name of listSkillDirsFrom(CLAUDE_SKILLS_DIR))
|
|
100
|
+
names.add(name);
|
|
101
|
+
return [...names];
|
|
102
|
+
}
|
|
93
103
|
function parseSkillFrontmatter(path) {
|
|
94
104
|
try {
|
|
95
105
|
const content = readFileSync(path, "utf-8");
|
|
@@ -113,6 +123,14 @@ function parseSkillFrontmatter(path) {
|
|
|
113
123
|
return null;
|
|
114
124
|
}
|
|
115
125
|
}
|
|
126
|
+
function resolveSkillMdPath(skillName) {
|
|
127
|
+
for (const dir of [SKILLS_DIR, CLAUDE_SKILLS_DIR]) {
|
|
128
|
+
const candidate = join(dir, skillName, "SKILL.md");
|
|
129
|
+
if (existsSync(candidate))
|
|
130
|
+
return candidate;
|
|
131
|
+
}
|
|
132
|
+
return null;
|
|
133
|
+
}
|
|
116
134
|
function escapeXml(text) {
|
|
117
135
|
return text
|
|
118
136
|
.replace(/&/g, "&")
|
|
@@ -140,9 +140,13 @@ export function formatSkillDetail(basePath, skillName) {
|
|
|
140
140
|
const date = new Date(u.finishedAt).toISOString().slice(0, 10);
|
|
141
141
|
lines.push(` ${date} ${u.id.padEnd(20)} ${formatTokenCount(u.tokens.total).padStart(8)} tokens ${formatCost(u.cost)}`);
|
|
142
142
|
}
|
|
143
|
-
// Check for SKILL.md existence
|
|
144
|
-
const
|
|
145
|
-
|
|
143
|
+
// Check for SKILL.md existence — search both ecosystem and Claude Code directories
|
|
144
|
+
const candidatePaths = [
|
|
145
|
+
join(homedir(), ".agents", "skills", skillName, "SKILL.md"),
|
|
146
|
+
join(homedir(), ".claude", "skills", skillName, "SKILL.md"),
|
|
147
|
+
];
|
|
148
|
+
const skillPath = candidatePaths.find(p => existsSync(p));
|
|
149
|
+
if (skillPath) {
|
|
146
150
|
const stat = statSync(skillPath);
|
|
147
151
|
lines.push("");
|
|
148
152
|
lines.push(`SKILL.md: ${skillPath}`);
|
|
@@ -25,12 +25,14 @@ const activelyLoadedSkills = new Set();
|
|
|
25
25
|
*/
|
|
26
26
|
export function captureAvailableSkills() {
|
|
27
27
|
const skillsDir = join(homedir(), ".agents", "skills");
|
|
28
|
+
const claudeSkillsDir = join(homedir(), ".claude", "skills");
|
|
28
29
|
const legacyDir = join(homedir(), ".gsd", "agent", "skills");
|
|
29
30
|
const names = listSkillNames(skillsDir);
|
|
31
|
+
const claudeNames = listSkillNames(claudeSkillsDir);
|
|
30
32
|
// Include skills still in the legacy directory only if migration hasn't completed
|
|
31
33
|
const legacyMigrated = existsSync(join(legacyDir, ".migrated-to-agents"));
|
|
32
34
|
const legacyNames = legacyMigrated ? [] : listSkillNames(legacyDir);
|
|
33
|
-
const all = new Set([...names, ...legacyNames]);
|
|
35
|
+
const all = new Set([...names, ...claudeNames, ...legacyNames]);
|
|
34
36
|
availableSkills = [...all];
|
|
35
37
|
activelyLoadedSkills.clear();
|
|
36
38
|
}
|
|
@@ -92,10 +94,11 @@ export function detectStaleSkills(units, thresholdDays) {
|
|
|
92
94
|
const stale = [];
|
|
93
95
|
// Check all installed skills, not just those with usage data
|
|
94
96
|
const skillsDir = join(homedir(), ".agents", "skills");
|
|
97
|
+
const claudeSkillsDir = join(homedir(), ".claude", "skills");
|
|
95
98
|
const legacyDir = join(homedir(), ".gsd", "agent", "skills");
|
|
96
99
|
const legacyMigrated = existsSync(join(legacyDir, ".migrated-to-agents"));
|
|
97
100
|
const legacyNames = legacyMigrated ? [] : listSkillNames(legacyDir);
|
|
98
|
-
const installedSet = new Set([...listSkillNames(skillsDir), ...legacyNames]);
|
|
101
|
+
const installedSet = new Set([...listSkillNames(skillsDir), ...listSkillNames(claudeSkillsDir), ...legacyNames]);
|
|
99
102
|
const installed = [...installedSet];
|
|
100
103
|
for (const skill of installed) {
|
|
101
104
|
const lastTs = lastUsed.get(skill);
|
|
@@ -190,6 +190,7 @@ export async function deriveState(basePath) {
|
|
|
190
190
|
}
|
|
191
191
|
}
|
|
192
192
|
else {
|
|
193
|
+
logWarning("state", "DB unavailable — using filesystem state derivation (degraded mode)");
|
|
193
194
|
result = await _deriveStateImpl(basePath);
|
|
194
195
|
_telemetry.markdownDeriveCount++;
|
|
195
196
|
}
|
|
@@ -236,12 +236,12 @@ export async function handleCompleteSlice(params, basePath) {
|
|
|
236
236
|
// Toggle roadmap checkbox via renderer module
|
|
237
237
|
const roadmapToggled = await renderRoadmapCheckboxes(basePath, params.milestoneId);
|
|
238
238
|
if (!roadmapToggled) {
|
|
239
|
-
|
|
239
|
+
logWarning("tool", `complete_slice — could not find roadmap for ${params.milestoneId}, skipping checkbox toggle`);
|
|
240
240
|
}
|
|
241
241
|
}
|
|
242
242
|
catch (renderErr) {
|
|
243
243
|
// Disk render failed — roll back DB status so state stays consistent
|
|
244
|
-
logWarning("tool", `complete_slice — disk render failed, rolling back DB status:
|
|
244
|
+
logWarning("tool", `complete_slice — disk render failed for ${params.milestoneId}/${params.sliceId}, rolling back DB status`, { error: renderErr.message });
|
|
245
245
|
updateSliceStatus(params.milestoneId, params.sliceId, 'pending');
|
|
246
246
|
invalidateStateCache();
|
|
247
247
|
return { error: `disk render failed: ${renderErr.message}` };
|
|
@@ -266,7 +266,7 @@ export async function handleCompleteSlice(params, basePath) {
|
|
|
266
266
|
});
|
|
267
267
|
}
|
|
268
268
|
catch (hookErr) {
|
|
269
|
-
logWarning("tool", `complete-slice post-mutation hook
|
|
269
|
+
logWarning("tool", `complete-slice post-mutation hook failed for ${params.milestoneId}/${params.sliceId}`, { error: hookErr.message });
|
|
270
270
|
}
|
|
271
271
|
return {
|
|
272
272
|
sliceId: params.sliceId,
|
|
@@ -111,18 +111,23 @@ export function summarizeLogs() {
|
|
|
111
111
|
}
|
|
112
112
|
/**
|
|
113
113
|
* Format entries for display (used by auto-loop post-unit notification).
|
|
114
|
-
*
|
|
114
|
+
* Includes key context fields (file paths, commands) when present.
|
|
115
115
|
*/
|
|
116
116
|
export function formatForNotification(entries) {
|
|
117
117
|
if (entries.length === 0)
|
|
118
118
|
return "";
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
119
|
+
return entries.map((e) => {
|
|
120
|
+
let line = `[${e.component}] ${e.message}`;
|
|
121
|
+
if (e.context) {
|
|
122
|
+
const ctxParts = Object.entries(e.context)
|
|
123
|
+
.filter(([k]) => k !== "error") // error is redundant with message
|
|
124
|
+
.map(([k, v]) => v.includes(",") ? `${k}: "${v}"` : `${k}: ${v}`);
|
|
125
|
+
if (ctxParts.length > 0) {
|
|
126
|
+
line += ` (${ctxParts.join(", ")})`;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
return line;
|
|
130
|
+
}).join("\n");
|
|
126
131
|
}
|
|
127
132
|
/**
|
|
128
133
|
* Read all entries from the persistent audit log.
|
|
@@ -281,7 +281,9 @@ function _reconcileWorktreeLogsInner(mainBasePath, worktreeBasePath) {
|
|
|
281
281
|
if (conflicts.length > 0) {
|
|
282
282
|
// D-04: atomic all-or-nothing — block entire merge
|
|
283
283
|
writeConflictsFile(mainBasePath, conflicts, worktreeBasePath);
|
|
284
|
-
|
|
284
|
+
const conflictSummary = conflicts.slice(0, 3).map(c => `${c.entityType}:${c.entityId}`).join(", ");
|
|
285
|
+
const truncated = conflicts.length > 3 ? `... and ${conflicts.length - 3} more` : "";
|
|
286
|
+
logError("reconcile", `${conflicts.length} conflict(s) detected on ${conflictSummary}${truncated}. Details: .gsd/CONFLICTS.md`, { count: String(conflicts.length), path: join(mainBasePath, ".gsd", "CONFLICTS.md") });
|
|
285
287
|
return { autoMerged: 0, conflicts };
|
|
286
288
|
}
|
|
287
289
|
// Step 6: Clean merge — stable sort by timestamp (index-based tiebreaker)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
erQZ_8_1lkclnPJLJnCxG
|
|
@@ -4,43 +4,43 @@
|
|
|
4
4
|
"/api/bridge-terminal/input/route": "/api/bridge-terminal/input",
|
|
5
5
|
"/api/boot/route": "/api/boot",
|
|
6
6
|
"/api/bridge-terminal/resize/route": "/api/bridge-terminal/resize",
|
|
7
|
-
"/api/
|
|
8
|
-
"/api/dev-mode/route": "/api/dev-mode",
|
|
7
|
+
"/api/cleanup/route": "/api/cleanup",
|
|
9
8
|
"/api/captures/route": "/api/captures",
|
|
10
9
|
"/api/doctor/route": "/api/doctor",
|
|
10
|
+
"/api/dev-mode/route": "/api/dev-mode",
|
|
11
11
|
"/api/browse-directories/route": "/api/browse-directories",
|
|
12
|
-
"/api/
|
|
12
|
+
"/api/export-data/route": "/api/export-data",
|
|
13
13
|
"/api/forensics/route": "/api/forensics",
|
|
14
|
+
"/api/bridge-terminal/stream/route": "/api/bridge-terminal/stream",
|
|
14
15
|
"/api/git/route": "/api/git",
|
|
15
|
-
"/api/
|
|
16
|
+
"/api/hooks/route": "/api/hooks",
|
|
16
17
|
"/api/history/route": "/api/history",
|
|
17
18
|
"/api/inspect/route": "/api/inspect",
|
|
18
|
-
"/api/knowledge/route": "/api/knowledge",
|
|
19
|
-
"/api/hooks/route": "/api/hooks",
|
|
20
19
|
"/api/experimental/route": "/api/experimental",
|
|
20
|
+
"/api/knowledge/route": "/api/knowledge",
|
|
21
21
|
"/api/live-state/route": "/api/live-state",
|
|
22
|
-
"/api/preferences/route": "/api/preferences",
|
|
23
|
-
"/api/recovery/route": "/api/recovery",
|
|
24
|
-
"/api/session/browser/route": "/api/session/browser",
|
|
25
22
|
"/api/projects/route": "/api/projects",
|
|
26
|
-
"/api/session/command/route": "/api/session/command",
|
|
27
23
|
"/api/onboarding/route": "/api/onboarding",
|
|
24
|
+
"/api/recovery/route": "/api/recovery",
|
|
25
|
+
"/api/preferences/route": "/api/preferences",
|
|
26
|
+
"/api/session/browser/route": "/api/session/browser",
|
|
27
|
+
"/api/session/manage/route": "/api/session/manage",
|
|
28
28
|
"/api/session/events/route": "/api/session/events",
|
|
29
29
|
"/api/settings-data/route": "/api/settings-data",
|
|
30
30
|
"/api/shutdown/route": "/api/shutdown",
|
|
31
|
+
"/api/files/route": "/api/files",
|
|
32
|
+
"/api/session/command/route": "/api/session/command",
|
|
31
33
|
"/api/skill-health/route": "/api/skill-health",
|
|
32
|
-
"/api/session/manage/route": "/api/session/manage",
|
|
33
|
-
"/api/steer/route": "/api/steer",
|
|
34
34
|
"/api/terminal/input/route": "/api/terminal/input",
|
|
35
|
+
"/api/steer/route": "/api/steer",
|
|
35
36
|
"/api/terminal/resize/route": "/api/terminal/resize",
|
|
36
|
-
"/api/switch-root/route": "/api/switch-root",
|
|
37
|
-
"/api/files/route": "/api/files",
|
|
38
37
|
"/api/terminal/sessions/route": "/api/terminal/sessions",
|
|
38
|
+
"/api/switch-root/route": "/api/switch-root",
|
|
39
|
+
"/api/terminal/upload/route": "/api/terminal/upload",
|
|
39
40
|
"/api/terminal/stream/route": "/api/terminal/stream",
|
|
40
|
-
"/api/
|
|
41
|
+
"/api/remote-questions/route": "/api/remote-questions",
|
|
41
42
|
"/api/visualizer/route": "/api/visualizer",
|
|
42
|
-
"/api/terminal/upload/route": "/api/terminal/upload",
|
|
43
43
|
"/api/update/route": "/api/update",
|
|
44
|
-
"/api/
|
|
44
|
+
"/api/undo/route": "/api/undo",
|
|
45
45
|
"/page": "/"
|
|
46
46
|
}
|
|
@@ -4,14 +4,14 @@
|
|
|
4
4
|
],
|
|
5
5
|
"devFiles": [],
|
|
6
6
|
"lowPriorityFiles": [
|
|
7
|
-
"static/
|
|
8
|
-
"static/
|
|
7
|
+
"static/erQZ_8_1lkclnPJLJnCxG/_buildManifest.js",
|
|
8
|
+
"static/erQZ_8_1lkclnPJLJnCxG/_ssgManifest.js"
|
|
9
9
|
],
|
|
10
10
|
"rootMainFiles": [
|
|
11
11
|
"static/chunks/webpack-a1c1e452c6b32d04.js",
|
|
12
12
|
"static/chunks/4bd1b696-e5d7c65570c947b7.js",
|
|
13
13
|
"static/chunks/3794-337d1ca25ad99a89.js",
|
|
14
|
-
"static/chunks/main-app-
|
|
14
|
+
"static/chunks/main-app-fdab67f7802d7832.js"
|
|
15
15
|
],
|
|
16
16
|
"rootMainFilesTree": {},
|
|
17
17
|
"pages": {
|
|
@@ -78,8 +78,8 @@
|
|
|
78
78
|
"dynamicRoutes": {},
|
|
79
79
|
"notFoundRoutes": [],
|
|
80
80
|
"preview": {
|
|
81
|
-
"previewModeId": "
|
|
82
|
-
"previewModeSigningKey": "
|
|
83
|
-
"previewModeEncryptionKey": "
|
|
81
|
+
"previewModeId": "a1e059cda3af117becdf5686492e7825",
|
|
82
|
+
"previewModeSigningKey": "4fea5dd011f3cb2528bd4a9454fb199a9cb083eee6f1c4b35379121565edd131",
|
|
83
|
+
"previewModeEncryptionKey": "674622b9b55cff55d6d9b04514d7880401c4cd965eaeb00b97061ddf7b722912"
|
|
84
84
|
}
|
|
85
85
|
}
|
|
@@ -100,7 +100,7 @@
|
|
|
100
100
|
"transform": "lodash/{{member}}"
|
|
101
101
|
}
|
|
102
102
|
},
|
|
103
|
-
"outputFileTracingRoot": "/
|
|
103
|
+
"outputFileTracingRoot": "/__w/gsd-2/gsd-2",
|
|
104
104
|
"cacheComponents": false,
|
|
105
105
|
"cacheLife": {
|
|
106
106
|
"default": {
|
|
@@ -297,11 +297,11 @@
|
|
|
297
297
|
"node-pty"
|
|
298
298
|
],
|
|
299
299
|
"turbopack": {
|
|
300
|
-
"root": "/
|
|
300
|
+
"root": "/__w/gsd-2/gsd-2"
|
|
301
301
|
},
|
|
302
302
|
"distDirRoot": ".next"
|
|
303
303
|
},
|
|
304
|
-
"appDir": "/
|
|
304
|
+
"appDir": "/__w/gsd-2/gsd-2/web",
|
|
305
305
|
"relativeAppDir": "web",
|
|
306
306
|
"files": [
|
|
307
307
|
".next/routes-manifest.json",
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
(()=>{var a={};a.id=4896,a.ids=[4896],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
(()=>{var a={};a.id=4896,a.ids=[4896],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},334:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,81921,23))},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},19121:a=>{"use strict";a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},26713:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/is-bot")},28354:a=>{"use strict";a.exports=require("util")},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},33873:a=>{"use strict";a.exports=require("path")},39654:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,95547,23))},41025:a=>{"use strict";a.exports=require("next/dist/server/app-render/dynamic-access-async-storage.external.js")},43954:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/interception-routes")},52628:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,81921,23)),Promise.resolve().then(c.t.bind(c,60440,23)),Promise.resolve().then(c.t.bind(c,84342,23)),Promise.resolve().then(c.t.bind(c,82265,23)),Promise.resolve().then(c.t.bind(c,35421,23)),Promise.resolve().then(c.t.bind(c,61335,23)),Promise.resolve().then(c.t.bind(c,70664,23)),Promise.resolve().then(c.bind(c,74661))},62605:(a,b,c)=>{"use strict";function d(a){return a&&a.__esModule?a:{default:a}}c.r(b),c.d(b,{_:()=>d})},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},70722:a=>{"use strict";a.exports=require("next/dist/shared/lib/invariant-error")},71311:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"default",{enumerable:!0,get:function(){return k}}),c(62605);let d=c(5735);c(91986);let e={fontFamily:'system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"',height:"100vh",textAlign:"center",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center"},f={lineHeight:"48px"},g={display:"inline-block",margin:"0 20px 0 0",paddingRight:23,fontSize:24,fontWeight:500,verticalAlign:"top"},h={fontSize:14,fontWeight:400,lineHeight:"28px"},i={display:"inline-block"},j=`body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}
|
|
2
|
+
@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}`,k=function(){let a="Internal Server Error.",b=`500: ${a}`;return(0,d.jsxs)("html",{id:"__next_error__",children:[(0,d.jsx)("head",{children:(0,d.jsx)("title",{children:b})}),(0,d.jsx)("body",{children:(0,d.jsx)("div",{style:e,children:(0,d.jsxs)("div",{style:f,children:[(0,d.jsx)("style",{dangerouslySetInnerHTML:{__html:j}}),(0,d.jsx)("h1",{className:"next-error-h1",style:g,children:"500"}),(0,d.jsx)("div",{style:i,children:(0,d.jsx)("h2",{style:h,children:a})})]})})})]})};("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},76596:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,95547,23)),Promise.resolve().then(c.t.bind(c,15098,23)),Promise.resolve().then(c.t.bind(c,47644,23)),Promise.resolve().then(c.t.bind(c,33859,23)),Promise.resolve().then(c.t.bind(c,98099,23)),Promise.resolve().then(c.t.bind(c,16237,23)),Promise.resolve().then(c.t.bind(c,98562,23)),Promise.resolve().then(c.t.bind(c,36675,23))},77068:a=>{"use strict";a.exports=require("next/dist/shared/lib/size-limit")},78335:()=>{},86439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},96487:()=>{},99734:(a,b,c)=>{"use strict";c.r(b),c.d(b,{GlobalError:()=>D.a,__next_app__:()=>L,handler:()=>N,routeModule:()=>M});var d=c(7553),e=c(84006),f=c(67798),g=c(34775),h=c(99373),i=c(73461),j=c(1020),k=c(26349),l=c(54365),m=c(16023),n=c(63747),o=c(24235),p=c(23938),q=c(261),r=c(66758),s=c(77243),t=c(26713),u=c(37527),v=c(22820),w=c(88216),x=c(47929),y=c(79551),z=c(89125),A=c(86439),B=c(77068),C=c(95547),D=c.n(C),E=c(61287),F=c(81494),G=c(70722),H=c(70753),I=c(43954),J={};for(let a in E)0>["default","GlobalError","__next_app__","routeModule","handler"].indexOf(a)&&(J[a]=()=>E[a]);c.d(b,J);let K={children:["",{children:["_global-error",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(c.t.bind(c,71311,23)),"next/dist/client/components/builtin/app-error.js"]}]},{}]},{"global-error":[()=>Promise.resolve().then(c.t.bind(c,95547,23)),"next/dist/client/components/builtin/global-error.js"],forbidden:[()=>Promise.resolve().then(c.t.bind(c,45270,23)),"next/dist/client/components/builtin/forbidden.js"],unauthorized:[()=>Promise.resolve().then(c.t.bind(c,28193,23)),"next/dist/client/components/builtin/unauthorized.js"]}]}.children,L={require:c,loadChunk:()=>Promise.resolve()},M=new d.AppPageRouteModule({definition:{kind:e.RouteKind.APP_PAGE,page:"/_global-error/page",pathname:"/_global-error",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:K},distDir:".next",relativeProjectDir:""});async function N(a,b,d){var C;M.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let J=!!(0,h.getRequestMeta)(a,"minimalMode"),O="/_global-error/page";"/index"===O&&(O="/");let P=await M.prepare(a,b,{srcPage:O,multiZoneDraftMode:!1});if(!P)return b.statusCode=400,b.end("Bad Request"),null==d.waitUntil||d.waitUntil.call(d,Promise.resolve()),null;let{buildId:Q,query:R,params:S,pageIsDynamic:T,buildManifest:U,nextFontManifest:V,reactLoadableManifest:W,serverActionsManifest:X,clientReferenceManifest:Y,subresourceIntegrityManifest:Z,prerenderManifest:$,isDraftMode:_,resolvedPathname:aa,revalidateOnlyGenerated:ab,routerServerContext:ac,nextConfig:ad,parsedUrl:ae,interceptionRoutePatterns:af,deploymentId:ag}=P,ah=(0,q.normalizeAppPath)(O),{isOnDemandRevalidate:ai}=P,aj=ad.experimental.ppr&&!ad.cacheComponents&&(0,I.isInterceptionRouteAppPath)(aa)?null:M.match(aa,$),ak=!!$.routes[aa],al=a.headers["user-agent"]||"",am=(0,t.getBotType)(al),an=(0,p.isHtmlBotRequest)(a),ao=(0,h.getRequestMeta)(a,"isPrefetchRSCRequest")??"1"===a.headers[s.NEXT_ROUTER_PREFETCH_HEADER],ap=(0,h.getRequestMeta)(a,"isRSCRequest")??!!a.headers[s.RSC_HEADER],aq=(0,r.getIsPossibleServerAction)(a),ar=(0,m.checkIsAppPPREnabled)(ad.experimental.ppr);if(!(0,h.getRequestMeta)(a,"postponed")&&ar&&"1"===a.headers[x.NEXT_RESUME_HEADER]&&"POST"===a.method){let b=[];for await(let c of a)b.push(c);let c=Buffer.concat(b).toString("utf8");(0,h.addRequestMeta)(a,"postponed",c)}let as=ar&&(null==(C=$.routes[ah]??$.dynamicRoutes[ah])?void 0:C.renderingMode)==="PARTIALLY_STATIC",at=!1,au=!1,av=as?(0,h.getRequestMeta)(a,"postponed"):void 0,aw=as&&ap&&!ao;J&&(aw=aw&&!!av);let ax=(0,h.getRequestMeta)(a,"segmentPrefetchRSCRequest"),ay=(!an||!as)&&(!al||(0,p.shouldServeStreamingMetadata)(al,ad.htmlLimitedBots)),az=!!((aj||ak||$.routes[ah])&&!(an&&as)),aA=as&&!0===ad.cacheComponents,aB=!0===M.isDev||!az||"string"==typeof av||(aA&&(0,h.getRequestMeta)(a,"onCacheEntryV2")?aw&&!J:aw),aC=an&&as,aD=null;_||!az||aB||aq||av||aw||(aD=aa);let aE=aD;!aE&&M.isDev&&(aE=aa),M.isDev||_||!az||!ap||aw||(0,k.d)(a.headers);let aF={...E,tree:K,GlobalError:D(),handler:N,routeModule:M,__next_app__:L};X&&Y&&(0,o.setManifestsSingleton)({page:O,clientReferenceManifest:Y,serverActionsManifest:X});let aG=a.method||"GET",aH=(0,g.getTracer)(),aI=aH.getActiveScopeSpan(),aJ=async()=>((null==ac?void 0:ac.render404)?await ac.render404(a,b,ae,!1):b.end("This page could not be found"),null);try{let f=M.getVaryHeader(aa,af);b.setHeader("Vary",f);let k=async(c,d)=>{let e=new l.NodeNextRequest(a),f=new l.NodeNextResponse(b);return M.render(e,f,d).finally(()=>{if(!c)return;c.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let a=aH.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==i.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let d=a.get("next.route");if(d){let a=`${aG} ${d}`;c.setAttributes({"next.route":d,"http.route":d,"next.span_name":a}),c.updateName(a)}else c.updateName(`${aG} ${O}`)})},m=(0,h.getRequestMeta)(a,"incrementalCache"),o=async({span:e,postponed:f,fallbackRouteParams:g,forceStaticRender:i})=>{let l={query:R,params:S,page:ah,sharedContext:{buildId:Q},serverComponentsHmrCache:(0,h.getRequestMeta)(a,"serverComponentsHmrCache"),fallbackRouteParams:g,renderOpts:{App:()=>null,Document:()=>null,pageConfig:{},ComponentMod:aF,Component:(0,j.T)(aF),params:S,routeModule:M,page:O,postponed:f,shouldWaitOnAllReady:aC,serveStreamingMetadata:ay,supportsDynamicResponse:"string"==typeof f||aB,buildManifest:U,nextFontManifest:V,reactLoadableManifest:W,subresourceIntegrityManifest:Z,setCacheStatus:null==ac?void 0:ac.setCacheStatus,setIsrStatus:null==ac?void 0:ac.setIsrStatus,setReactDebugChannel:null==ac?void 0:ac.setReactDebugChannel,sendErrorsToBrowser:null==ac?void 0:ac.sendErrorsToBrowser,dir:c(33873).join(process.cwd(),M.relativeProjectDir),isDraftMode:_,botType:am,isOnDemandRevalidate:ai,isPossibleServerAction:aq,assetPrefix:ad.assetPrefix,nextConfigOutput:ad.output,crossOrigin:ad.crossOrigin,trailingSlash:ad.trailingSlash,images:ad.images,previewProps:$.preview,deploymentId:ag,enableTainting:ad.experimental.taint,htmlLimitedBots:ad.htmlLimitedBots,reactMaxHeadersLength:ad.reactMaxHeadersLength,multiZoneDraftMode:!1,incrementalCache:m,cacheLifeProfiles:ad.cacheLife,basePath:ad.basePath,serverActions:ad.experimental.serverActions,...at||au?{nextExport:!0,supportsDynamicResponse:!1,isStaticGeneration:!0,isDebugDynamicAccesses:at}:{},cacheComponents:!!ad.cacheComponents,experimental:{isRoutePPREnabled:as,expireTime:ad.expireTime,staleTimes:ad.experimental.staleTimes,dynamicOnHover:!!ad.experimental.dynamicOnHover,inlineCss:!!ad.experimental.inlineCss,authInterrupts:!!ad.experimental.authInterrupts,clientTraceMetadata:ad.experimental.clientTraceMetadata||[],clientParamParsingOrigins:ad.experimental.clientParamParsingOrigins,maxPostponedStateSizeBytes:(0,B.parseMaxPostponedStateSize)(ad.experimental.maxPostponedStateSize)},waitUntil:d.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:()=>{},onInstrumentationRequestError:(b,c,d,e)=>M.onRequestError(a,b,d,e,ac),err:(0,h.getRequestMeta)(a,"invokeError"),dev:M.isDev}};at&&(l.renderOpts.nextExport=!0,l.renderOpts.supportsDynamicResponse=!1,l.renderOpts.isDebugDynamicAccesses=at),i&&(l.renderOpts.supportsDynamicResponse=!1);let n=await k(e,l),{metadata:o}=n,{cacheControl:p,headers:q={},fetchTags:r,fetchMetrics:s}=o;if(r&&(q[x.NEXT_CACHE_TAGS_HEADER]=r),a.fetchMetrics=s,az&&(null==p?void 0:p.revalidate)===0&&!M.isDev&&!as){let a=o.staticBailoutInfo,b=Object.defineProperty(Error(`Page changed from static to dynamic at runtime ${aa}${(null==a?void 0:a.description)?`, reason: ${a.description}`:""}
|
|
3
|
+
see more here https://nextjs.org/docs/messages/app-static-to-dynamic-error`),"__NEXT_ERROR_CODE",{value:"E132",enumerable:!1,configurable:!0});if(null==a?void 0:a.stack){let c=a.stack;b.stack=b.message+c.substring(c.indexOf("\n"))}throw b}return{value:{kind:u.CachedRouteKind.APP_PAGE,html:n,headers:q,rscData:o.flightData,postponed:o.postponed,status:o.statusCode,segmentData:o.segmentData},cacheControl:p}},p=async({hasResolved:c,previousCacheEntry:f,isRevalidating:g,span:i,forceStaticRender:j=!1})=>{let k,l=!1===M.isDev,q=c||b.writableEnded;if(ai&&ab&&!f&&!J)return(null==ac?void 0:ac.render404)?await ac.render404(a,b):(b.statusCode=404,b.end("This page could not be found")),null;if(aj&&(k=(0,v.parseFallbackField)(aj.fallback)),k===v.FallbackMode.PRERENDER&&(0,t.isBot)(al)&&(!as||an)&&(k=v.FallbackMode.BLOCKING_STATIC_RENDER),(null==f?void 0:f.isStale)===-1&&(ai=!0),ai&&(k!==v.FallbackMode.NOT_FOUND||f)&&(k=v.FallbackMode.BLOCKING_STATIC_RENDER),!J&&k!==v.FallbackMode.BLOCKING_STATIC_RENDER&&aE&&!q&&!_&&T&&(l||!ak)){if((l||aj)&&k===v.FallbackMode.NOT_FOUND){if(ad.experimental.adapterPath)return await aJ();throw new A.NoFallbackError}if(as&&(ad.cacheComponents?!aw:!ap)){let b=l&&"string"==typeof(null==aj?void 0:aj.fallback)?aj.fallback:ah,c=l&&(null==aj?void 0:aj.fallbackRouteParams)?(0,n.createOpaqueFallbackRouteParams)(aj.fallbackRouteParams):au?(0,n.getFallbackRouteParams)(ah,M):null,f=await M.handleResponse({cacheKey:b,req:a,nextConfig:ad,routeKind:e.RouteKind.APP_PAGE,isFallback:!0,prerenderManifest:$,isRoutePPREnabled:as,responseGenerator:async()=>o({span:i,postponed:void 0,fallbackRouteParams:c,forceStaticRender:!1}),waitUntil:d.waitUntil,isMinimalMode:J});if(null===f)return null;if(f)return delete f.cacheControl,f}}let r=ai||g||!av?void 0:av;if(aA&&!J&&m&&aw&&!j){let b=await m.get(aa,{kind:u.IncrementalCacheKind.APP_PAGE,isRoutePPREnabled:!0,isFallback:!1});b&&b.value&&b.value.kind===u.CachedRouteKind.APP_PAGE&&(r=b.value.postponed,b&&(-1===b.isStale||!0===b.isStale)&&(0,H.scheduleOnNextTick)(async()=>{let b=M.getResponseCache(a);try{await b.revalidate(aa,m,as,!1,a=>p({...a,forceStaticRender:!0}),null,c,d.waitUntil)}catch(a){console.error("Error revalidating the page in the background",a)}}))}if(at&&void 0!==r)return{cacheControl:{revalidate:1,expire:void 0},value:{kind:u.CachedRouteKind.PAGES,html:w.default.EMPTY,pageData:{},headers:void 0,status:void 0}};let s=l&&(null==aj?void 0:aj.fallbackRouteParams)&&(0,h.getRequestMeta)(a,"renderFallbackShell")?(0,n.createOpaqueFallbackRouteParams)(aj.fallbackRouteParams):au?(0,n.getFallbackRouteParams)(ah,M):null;return o({span:i,postponed:r,fallbackRouteParams:s,forceStaticRender:j})},q=async c=>{var f,g,i,j,k;let l,m=await M.handleResponse({cacheKey:aD,responseGenerator:a=>p({span:c,...a}),routeKind:e.RouteKind.APP_PAGE,isOnDemandRevalidate:ai,isRoutePPREnabled:as,req:a,nextConfig:ad,prerenderManifest:$,waitUntil:d.waitUntil,isMinimalMode:J});if(_&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate"),M.isDev&&b.setHeader("Cache-Control","no-store, must-revalidate"),!m){if(aD)throw Object.defineProperty(Error("invariant: cache entry required but not generated"),"__NEXT_ERROR_CODE",{value:"E62",enumerable:!1,configurable:!0});return null}if((null==(f=m.value)?void 0:f.kind)!==u.CachedRouteKind.APP_PAGE)throw Object.defineProperty(Error(`Invariant app-page handler received invalid cache entry ${null==(i=m.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E707",enumerable:!1,configurable:!0});let n="string"==typeof m.value.postponed;az&&!aw&&(!n||ao)&&(J||b.setHeader("x-nextjs-cache",ai?"REVALIDATED":m.isMiss?"MISS":m.isStale?"STALE":"HIT"),b.setHeader(s.NEXT_IS_PRERENDER_HEADER,"1"));let{value:q}=m;if(av)l={revalidate:0,expire:void 0};else if(aw)l={revalidate:0,expire:void 0};else if(!M.isDev)if(_)l={revalidate:0,expire:void 0};else if(az){if(m.cacheControl)if("number"==typeof m.cacheControl.revalidate){if(m.cacheControl.revalidate<1)throw Object.defineProperty(Error(`Invalid revalidate configuration provided: ${m.cacheControl.revalidate} < 1`),"__NEXT_ERROR_CODE",{value:"E22",enumerable:!1,configurable:!0});l={revalidate:m.cacheControl.revalidate,expire:(null==(j=m.cacheControl)?void 0:j.expire)??ad.expireTime}}else l={revalidate:x.CACHE_ONE_YEAR,expire:void 0}}else b.getHeader("Cache-Control")||(l={revalidate:0,expire:void 0});if(m.cacheControl=l,"string"==typeof ax&&(null==q?void 0:q.kind)===u.CachedRouteKind.APP_PAGE&&q.segmentData){b.setHeader(s.NEXT_DID_POSTPONE_HEADER,"2");let c=null==(k=q.headers)?void 0:k[x.NEXT_CACHE_TAGS_HEADER];J&&az&&c&&"string"==typeof c&&b.setHeader(x.NEXT_CACHE_TAGS_HEADER,c);let d=q.segmentData.get(ax);return void 0!==d?(0,z.sendRenderResult)({req:a,res:b,generateEtags:ad.generateEtags,poweredByHeader:ad.poweredByHeader,result:w.default.fromStatic(d,s.RSC_CONTENT_TYPE_HEADER),cacheControl:m.cacheControl}):(b.statusCode=204,(0,z.sendRenderResult)({req:a,res:b,generateEtags:ad.generateEtags,poweredByHeader:ad.poweredByHeader,result:w.default.EMPTY,cacheControl:m.cacheControl}))}let r=aA?(0,h.getRequestMeta)(a,"onCacheEntryV2")??(0,h.getRequestMeta)(a,"onCacheEntry"):(0,h.getRequestMeta)(a,"onCacheEntry");if(r&&await r(m,{url:(0,h.getRequestMeta)(a,"initURL")??a.url}))return null;if(q.headers){let a={...q.headers};for(let[c,d]of(J&&az||delete a[x.NEXT_CACHE_TAGS_HEADER],Object.entries(a)))if(void 0!==d)if(Array.isArray(d))for(let a of d)b.appendHeader(c,a);else"number"==typeof d&&(d=d.toString()),b.appendHeader(c,d)}let t=null==(g=q.headers)?void 0:g[x.NEXT_CACHE_TAGS_HEADER];if(J&&az&&t&&"string"==typeof t&&b.setHeader(x.NEXT_CACHE_TAGS_HEADER,t),!q.status||ap&&as||(b.statusCode=q.status),!J&&q.status&&F.RedirectStatusCode[q.status]&&ap&&(b.statusCode=200),n&&!aw&&b.setHeader(s.NEXT_DID_POSTPONE_HEADER,"1"),ap&&!_){if(void 0===q.rscData){if(q.html.contentType!==s.RSC_CONTENT_TYPE_HEADER)if(ad.cacheComponents)return b.statusCode=404,(0,z.sendRenderResult)({req:a,res:b,generateEtags:ad.generateEtags,poweredByHeader:ad.poweredByHeader,result:w.default.EMPTY,cacheControl:m.cacheControl});else throw Object.defineProperty(new G.InvariantError(`Expected RSC response, got ${q.html.contentType}`),"__NEXT_ERROR_CODE",{value:"E789",enumerable:!1,configurable:!0});return(0,z.sendRenderResult)({req:a,res:b,generateEtags:ad.generateEtags,poweredByHeader:ad.poweredByHeader,result:q.html,cacheControl:m.cacheControl})}return(0,z.sendRenderResult)({req:a,res:b,generateEtags:ad.generateEtags,poweredByHeader:ad.poweredByHeader,result:w.default.fromStatic(q.rscData,s.RSC_CONTENT_TYPE_HEADER),cacheControl:m.cacheControl})}let v=q.html;if(!n||J||ap)return(0,z.sendRenderResult)({req:a,res:b,generateEtags:ad.generateEtags,poweredByHeader:ad.poweredByHeader,result:v,cacheControl:m.cacheControl});if(at)return v.push(new ReadableStream({start(a){a.enqueue(y.ENCODED_TAGS.CLOSED.BODY_AND_HTML),a.close()}})),(0,z.sendRenderResult)({req:a,res:b,generateEtags:ad.generateEtags,poweredByHeader:ad.poweredByHeader,result:v,cacheControl:{revalidate:0,expire:void 0}});let A=new TransformStream;return v.push(A.readable),o({span:c,postponed:q.postponed,fallbackRouteParams:null,forceStaticRender:!1}).then(async a=>{var b,c;if(!a)throw Object.defineProperty(Error("Invariant: expected a result to be returned"),"__NEXT_ERROR_CODE",{value:"E463",enumerable:!1,configurable:!0});if((null==(b=a.value)?void 0:b.kind)!==u.CachedRouteKind.APP_PAGE)throw Object.defineProperty(Error(`Invariant: expected a page response, got ${null==(c=a.value)?void 0:c.kind}`),"__NEXT_ERROR_CODE",{value:"E305",enumerable:!1,configurable:!0});await a.value.html.pipeTo(A.writable)}).catch(a=>{A.writable.abort(a).catch(a=>{console.error("couldn't abort transformer",a)})}),(0,z.sendRenderResult)({req:a,res:b,generateEtags:ad.generateEtags,poweredByHeader:ad.poweredByHeader,result:v,cacheControl:{revalidate:0,expire:void 0}})};if(!aI)return await aH.withPropagatedContext(a.headers,()=>aH.trace(i.BaseServerSpan.handleRequest,{spanName:`${aG} ${O}`,kind:g.SpanKind.SERVER,attributes:{"http.method":aG,"http.target":a.url}},q));await q(aI)}catch(b){throw b instanceof A.NoFallbackError||await M.onRequestError(a,b,{routerKind:"App Router",routePath:O,routeType:"render",revalidateReason:(0,f.c)({isStaticGeneration:az,isOnDemandRevalidate:ai})},!1,ac),b}}}};var b=require("../../webpack-runtime.js");b.C(a);var c=b.X(0,[4741,7471],()=>b(b.s=99734));module.exports=c})();
|