gsd-pi 2.67.0-dev.43b0159 → 2.67.0-dev.4fb8afe
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/README.md +42 -32
- package/dist/resource-loader.d.ts +1 -1
- package/dist/resource-loader.js +20 -5
- package/dist/resources/GSD-WORKFLOW.md +3 -1
- package/dist/resources/extensions/claude-code-cli/stream-adapter.js +73 -42
- package/dist/resources/extensions/get-secrets-from-user.js +18 -2
- package/dist/resources/extensions/gsd/auto/phases.js +17 -0
- package/dist/resources/extensions/gsd/auto-direct-dispatch.js +12 -0
- package/dist/resources/extensions/gsd/auto-post-unit.js +26 -0
- package/dist/resources/extensions/gsd/bootstrap/db-tools.js +11 -435
- package/dist/resources/extensions/gsd/bootstrap/dynamic-tools.js +1 -4
- package/dist/resources/extensions/gsd/bootstrap/query-tools.js +7 -64
- package/dist/resources/extensions/gsd/bootstrap/system-context.js +18 -3
- package/dist/resources/extensions/gsd/bootstrap/write-gate.js +88 -8
- package/dist/resources/extensions/gsd/codebase-generator.js +173 -12
- package/dist/resources/extensions/gsd/commands/catalog.js +2 -2
- package/dist/resources/extensions/gsd/commands/handlers/core.js +1 -0
- package/dist/resources/extensions/gsd/commands-bootstrap.js +9 -0
- package/dist/resources/extensions/gsd/commands-codebase.js +4 -3
- package/dist/resources/extensions/gsd/doctor-git-checks.js +4 -4
- package/dist/resources/extensions/gsd/doctor-proactive.js +3 -3
- package/dist/resources/extensions/gsd/guided-flow.js +16 -0
- package/dist/resources/extensions/gsd/prompts/system.md +3 -0
- package/dist/resources/extensions/gsd/tools/workflow-tool-executors.js +508 -0
- package/dist/resources/extensions/gsd/workflow-mcp.js +190 -0
- package/dist/resources/extensions/gsd/workflow-reconcile.js +0 -4
- package/dist/resources/extensions/gsd/worktree-manager.js +6 -2
- package/dist/web/standalone/.next/BUILD_ID +1 -1
- package/dist/web/standalone/.next/app-path-routes-manifest.json +19 -19
- package/dist/web/standalone/.next/build-manifest.json +5 -5
- package/dist/web/standalone/.next/prerender-manifest.json +13 -13
- package/dist/web/standalone/.next/react-loadable-manifest.json +6 -6
- package/dist/web/standalone/.next/required-server-files.json +18 -6
- package/dist/web/standalone/.next/routes-manifest.json +1 -0
- package/dist/web/standalone/.next/server/app/_global-error/page.js +32 -3
- package/dist/web/standalone/.next/server/app/_global-error/page.js.nft.json +1 -1
- 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 +1 -2
- package/dist/web/standalone/.next/server/app/_global-error.rsc +8 -6
- package/dist/web/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +8 -6
- 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 +2 -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 +2 -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.js.nft.json +1 -1
- 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 +9 -7
- package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +9 -7
- 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 +1 -1
- 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 +2 -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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +1 -1
- 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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +1 -1
- 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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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/notifications/route.js +2 -2
- package/dist/web/standalone/.next/server/app/api/notifications/route.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/api/notifications/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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +1 -1
- 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.js.nft.json +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.js.nft.json +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.js.nft.json +1 -1
- 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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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 +1 -1
- package/dist/web/standalone/.next/server/app/api/terminal/input/route.js.nft.json +1 -1
- 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.js.nft.json +1 -1
- 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.js.nft.json +1 -1
- 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.js.nft.json +1 -1
- 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.js.nft.json +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.js.nft.json +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.js.nft.json +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.js.nft.json +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 +2 -2
- package/dist/web/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/_full.segment.rsc +2 -2
- 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 +1 -1
- 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.js.nft.json +1 -1
- package/dist/web/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app-paths-manifest.json +19 -19
- package/dist/web/standalone/.next/server/chunks/2331.js +7 -7
- package/dist/web/standalone/.next/server/chunks/4741.js +5 -9
- package/dist/web/standalone/.next/server/chunks/63.js +45 -0
- package/dist/web/standalone/.next/server/chunks/6897.js +1 -1
- package/dist/web/standalone/.next/server/middleware-build-manifest.js +1 -1
- package/dist/web/standalone/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/dist/web/standalone/.next/server/middleware.js +11 -8
- package/dist/web/standalone/.next/server/pages/404.html +1 -1
- package/dist/web/standalone/.next/server/pages/500.html +1 -2
- package/dist/web/standalone/.next/server/prefetch-hints.json +1 -0
- package/dist/web/standalone/.next/server/server-reference-manifest.json +1 -1
- package/dist/web/standalone/.next/static/IBTC_HlEpTBAa4HXMoV_A/_buildManifest.js +1 -0
- package/dist/web/standalone/.next/static/chunks/2008.71ee9230ad78df21.js +20 -0
- package/dist/web/standalone/.next/static/chunks/{363642f4.f9053a63f1b97508.js → 363642f4.cf8b455e0d94b478.js} +1 -1
- package/dist/web/standalone/.next/static/chunks/3794-42fdce068d44fa4f.js +32 -0
- package/dist/web/standalone/.next/static/chunks/{4447.f86b52aea068b189.js → 4447.5bad7871be61ca73.js} +1 -1
- package/dist/web/standalone/.next/static/chunks/4bd1b696-e356ca5ba0218e27.js +1 -0
- package/dist/web/standalone/.next/static/chunks/{e868780c.f7831045ac345aaa.js → e868780c.abc48b70a10fc2d6.js} +3 -3
- package/dist/web/standalone/.next/static/chunks/framework-711ef29bc66f648c.js +1 -0
- package/dist/web/standalone/.next/static/chunks/main-6919d9dd919bd15f.js +5 -0
- package/dist/web/standalone/.next/static/chunks/{webpack-65f0501b197d1c49.js → webpack-b49b09f97429b5d0.js} +1 -1
- package/dist/web/standalone/node_modules/@next/env/package.json +1 -1
- package/dist/web/standalone/node_modules/next/dist/build/adapter/setup-node-env.external.js +15 -0
- package/dist/web/standalone/node_modules/next/dist/build/analysis/extract-const-value.js +78 -63
- package/dist/web/standalone/node_modules/next/dist/build/analysis/get-page-static-info.js +64 -40
- package/dist/web/standalone/node_modules/next/dist/build/create-compiler-aliases.js +2 -0
- package/dist/web/standalone/node_modules/next/dist/build/define-env.js +29 -11
- package/dist/web/standalone/node_modules/next/dist/build/duration-to-string.js +1 -1
- package/dist/web/standalone/node_modules/next/dist/build/entries.js +55 -295
- package/dist/web/standalone/node_modules/next/dist/build/file-classifier.js +76 -0
- package/dist/web/standalone/node_modules/next/dist/build/get-supported-browsers.js +38 -0
- package/dist/web/standalone/node_modules/next/dist/build/load-jsconfig.js +7 -7
- package/dist/web/standalone/node_modules/next/dist/build/lockfile.js +90 -9
- package/dist/web/standalone/node_modules/next/dist/build/next-config-ts/transpile-config.js +128 -49
- package/dist/web/standalone/node_modules/next/dist/build/print-build-errors.js +72 -0
- package/dist/web/standalone/node_modules/next/dist/build/route-discovery.js +353 -0
- package/dist/web/standalone/node_modules/next/dist/build/segment-config/app/app-segment-config.js +34 -17
- package/dist/web/standalone/node_modules/next/dist/build/static-paths/app.js +68 -15
- package/dist/web/standalone/node_modules/next/dist/build/static-paths/pages.js +3 -3
- package/dist/web/standalone/node_modules/next/dist/build/swc/index.js +125 -48
- package/dist/web/standalone/node_modules/next/dist/build/swc/loaderWorkerPool.js +40 -0
- package/dist/web/standalone/node_modules/next/dist/build/swc/options.js +23 -6
- package/dist/web/standalone/node_modules/next/dist/build/utils.js +48 -94
- package/dist/web/standalone/node_modules/next/dist/build/webpack/config/blocks/css/index.js +14 -3
- package/dist/web/standalone/node_modules/next/dist/build/webpack/config/blocks/css/loaders/global.js +4 -2
- package/dist/web/standalone/node_modules/next/dist/build/webpack/config/blocks/css/loaders/modules.js +4 -2
- package/dist/web/standalone/node_modules/next/dist/build/webpack/config/blocks/css/loaders/next-font.js +1 -0
- package/dist/web/standalone/node_modules/next/dist/build/webpack/config/blocks/css/plugins.js +5 -5
- package/dist/web/standalone/node_modules/next/dist/build/webpack/config/index.js +3 -2
- package/dist/web/standalone/node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js +2 -1
- package/dist/web/standalone/node_modules/next/dist/build/webpack/loaders/css-loader/src/plugins/postcss-url-parser.js +8 -1
- package/dist/web/standalone/node_modules/next/dist/build/webpack/loaders/lightningcss-loader/src/loader.js +13 -4
- package/dist/web/standalone/node_modules/next/dist/build/webpack/loaders/next-middleware-loader.js +3 -1
- package/dist/web/standalone/node_modules/next/dist/build/webpack/plugins/build-manifest-plugin-utils.js +2 -16
- package/dist/web/standalone/node_modules/next/dist/build/webpack/plugins/build-manifest-plugin.js +2 -2
- package/dist/web/standalone/node_modules/next/dist/build/webpack/plugins/deferred-entries-plugin.js +106 -0
- package/dist/web/standalone/node_modules/next/dist/build/webpack/plugins/flight-client-entry-plugin.js +16 -8
- package/dist/web/standalone/node_modules/next/dist/build/webpack/plugins/flight-manifest-plugin.js +24 -11
- package/dist/web/standalone/node_modules/next/dist/build/webpack/plugins/middleware-plugin.js +21 -2
- package/dist/web/standalone/node_modules/next/dist/build/webpack/plugins/next-types-plugin/index.js +6 -5
- package/dist/web/standalone/node_modules/next/dist/build/webpack/plugins/nextjs-require-cache-hot-reloader.js +10 -14
- package/dist/web/standalone/node_modules/next/dist/build/webpack/plugins/wellknown-errors-plugin/parseNotFoundError.js +18 -4
- package/dist/web/standalone/node_modules/next/dist/build/webpack/plugins/wellknown-errors-plugin/parseScss.js +5 -4
- package/dist/web/standalone/node_modules/next/dist/build/webpack-config.js +18 -8
- package/dist/web/standalone/node_modules/next/dist/cli/next-test.js +4 -3
- package/dist/web/standalone/node_modules/next/dist/client/app-find-source-map-url.js +2 -1
- package/dist/web/standalone/node_modules/next/dist/client/components/app-router-headers.js +10 -0
- package/dist/web/standalone/node_modules/next/dist/client/components/app-router-instance.js +82 -4
- package/dist/web/standalone/node_modules/next/dist/client/components/app-router.js +39 -20
- package/dist/web/standalone/node_modules/next/dist/client/components/builtin/app-error.js +29 -65
- package/dist/web/standalone/node_modules/next/dist/client/components/builtin/error-styles.js +165 -0
- package/dist/web/standalone/node_modules/next/dist/client/components/builtin/global-error.js +56 -38
- package/dist/web/standalone/node_modules/next/dist/client/components/error-boundary.js +16 -6
- package/dist/web/standalone/node_modules/next/dist/client/components/forbidden.js +1 -1
- package/dist/web/standalone/node_modules/next/dist/client/components/handle-isr-error.js +3 -4
- package/dist/web/standalone/node_modules/next/dist/client/components/links.js +7 -0
- package/dist/web/standalone/node_modules/next/dist/client/components/navigation-untracked.js +2 -0
- package/dist/web/standalone/node_modules/next/dist/client/components/navigation.js +27 -0
- package/dist/web/standalone/node_modules/next/dist/client/components/navigation.react-server.js +5 -2
- package/dist/web/standalone/node_modules/next/dist/client/components/not-found.js +1 -1
- package/dist/web/standalone/node_modules/next/dist/client/components/redirect-boundary.js +1 -1
- package/dist/web/standalone/node_modules/next/dist/client/components/redirect-error.js +0 -9
- package/dist/web/standalone/node_modules/next/dist/client/components/redirect.js +2 -2
- package/dist/web/standalone/node_modules/next/dist/client/components/router-reducer/compute-changed-path.js +73 -0
- package/dist/web/standalone/node_modules/next/dist/client/components/router-reducer/create-initial-router-state.js +102 -8
- package/dist/web/standalone/node_modules/next/dist/client/components/router-reducer/fetch-server-response.js +165 -48
- package/dist/web/standalone/node_modules/next/dist/client/components/router-reducer/is-navigating-to-new-root-layout.js +19 -11
- package/dist/web/standalone/node_modules/next/dist/client/components/router-reducer/ppr-navigations.js +669 -457
- package/dist/web/standalone/node_modules/next/dist/client/components/router-reducer/reducers/committed-state.js +49 -0
- package/dist/web/standalone/node_modules/next/dist/client/components/router-reducer/reducers/find-head-in-cache.js +19 -20
- package/dist/web/standalone/node_modules/next/dist/client/components/router-reducer/reducers/navigate-reducer.js +5 -117
- package/dist/web/standalone/node_modules/next/dist/client/components/router-reducer/reducers/refresh-reducer.js +34 -19
- package/dist/web/standalone/node_modules/next/dist/client/components/router-reducer/reducers/restore-reducer.js +16 -32
- package/dist/web/standalone/node_modules/next/dist/client/components/router-reducer/reducers/server-action-reducer.js +85 -57
- package/dist/web/standalone/node_modules/next/dist/client/components/router-reducer/reducers/server-patch-reducer.js +12 -10
- package/dist/web/standalone/node_modules/next/dist/client/components/router-reducer/router-reducer-types.js +10 -1
- package/dist/web/standalone/node_modules/next/dist/client/components/router-reducer/router-reducer.js +1 -1
- package/dist/web/standalone/node_modules/next/dist/client/components/segment-cache/bfcache.js +128 -0
- package/dist/web/standalone/node_modules/next/dist/client/components/segment-cache/cache.js +732 -231
- package/dist/web/standalone/node_modules/next/dist/client/components/segment-cache/lru.js +13 -6
- package/dist/web/standalone/node_modules/next/dist/client/components/segment-cache/navigation-testing-lock.js +194 -0
- package/dist/web/standalone/node_modules/next/dist/client/components/segment-cache/navigation.js +388 -250
- package/dist/web/standalone/node_modules/next/dist/client/components/segment-cache/optimistic-routes.js +543 -0
- package/dist/web/standalone/node_modules/next/dist/client/components/segment-cache/scheduler.js +154 -55
- package/dist/web/standalone/node_modules/next/dist/client/components/segment-cache/vary-path.js +63 -1
- package/dist/web/standalone/node_modules/next/dist/client/components/unauthorized.js +1 -1
- package/dist/web/standalone/node_modules/next/dist/client/components/use-action-queue.js +49 -3
- package/dist/web/standalone/node_modules/next/dist/client/dev/hot-reloader/app/hot-reloader-app.js +9 -1
- package/dist/web/standalone/node_modules/next/dist/client/flight-data-helpers.js +42 -29
- package/dist/web/standalone/node_modules/next/dist/client/lib/javascript-url.js +32 -0
- package/dist/web/standalone/node_modules/next/dist/client/lib/promise.js +53 -0
- package/dist/web/standalone/node_modules/next/dist/client/{app-build-id.js → navigation-build-id.js} +17 -13
- package/dist/web/standalone/node_modules/next/dist/client/react-client-callbacks/on-recoverable-error.js +14 -0
- package/dist/web/standalone/node_modules/next/dist/client/route-loader.js +9 -46
- package/dist/web/standalone/node_modules/next/dist/client/router.js +1 -1
- package/dist/web/standalone/node_modules/next/dist/compiled/@next/font/dist/google/font-data.json +74 -3
- package/dist/web/standalone/node_modules/next/dist/compiled/babel/bundle.js +1 -1
- package/dist/web/standalone/node_modules/next/dist/compiled/babel-packages/packages-bundle.js +5 -5
- package/dist/web/standalone/node_modules/next/dist/compiled/browserslist/index.js +1 -1
- package/dist/web/standalone/node_modules/next/dist/compiled/http-proxy/index.js +5 -5
- package/dist/web/standalone/node_modules/next/dist/compiled/jsonwebtoken/index.js +2 -2
- package/dist/web/standalone/node_modules/next/dist/compiled/next-devtools/index.js +2209 -23
- package/dist/web/standalone/node_modules/next/dist/compiled/next-server/app-page-experimental.runtime.prod.js +42 -12
- package/dist/web/standalone/node_modules/next/dist/compiled/next-server/app-page-turbo-experimental.runtime.prod.js +42 -12
- package/dist/web/standalone/node_modules/next/dist/compiled/next-server/app-page-turbo.runtime.prod.js +42 -12
- package/dist/web/standalone/node_modules/next/dist/compiled/next-server/app-page.runtime.prod.js +42 -12
- package/dist/web/standalone/node_modules/next/dist/compiled/next-server/app-route.runtime.prod.js +2 -2
- package/dist/web/standalone/node_modules/next/dist/compiled/next-server/pages-turbo.runtime.prod.js +10 -10
- package/dist/web/standalone/node_modules/next/dist/compiled/next-server/pages.runtime.prod.js +10 -10
- package/dist/web/standalone/node_modules/next/dist/compiled/react-is/package.json +1 -1
- package/dist/web/standalone/node_modules/next/dist/compiled/tar/index.min.js +1 -0
- package/dist/web/standalone/node_modules/next/dist/compiled/tar/package.json +1 -1
- package/dist/web/standalone/node_modules/next/dist/compiled/unistore/unistore.js +1 -1
- package/dist/web/standalone/node_modules/next/dist/lib/bundler.js +97 -0
- package/dist/web/standalone/node_modules/next/dist/lib/constants.js +19 -4
- package/dist/web/standalone/node_modules/next/dist/lib/download-swc.js +2 -2
- package/dist/web/standalone/node_modules/next/dist/lib/find-root.js +11 -7
- package/dist/web/standalone/node_modules/next/dist/lib/format-server-error.js +1 -0
- package/dist/web/standalone/node_modules/next/dist/lib/generate-interception-routes-rewrites.js +3 -20
- package/dist/web/standalone/node_modules/next/dist/lib/interop-default.js +1 -0
- package/dist/web/standalone/node_modules/next/dist/lib/is-interception-route-rewrite.js +18 -0
- package/dist/web/standalone/node_modules/next/dist/lib/load-custom-routes.js +49 -5
- package/dist/web/standalone/node_modules/next/dist/lib/memory/trace.js +109 -0
- package/dist/web/standalone/node_modules/next/dist/lib/metadata/get-metadata-route.js +11 -2
- package/dist/web/standalone/node_modules/next/dist/lib/needs-experimental-react.js +2 -2
- package/dist/web/standalone/node_modules/next/dist/lib/patch-incorrect-lockfile.js +5 -5
- package/dist/web/standalone/node_modules/next/dist/lib/try-to-parse-path.js +1 -2
- package/dist/web/standalone/node_modules/next/dist/lib/turbopack-warning.js +0 -1
- package/dist/web/standalone/node_modules/next/dist/lib/typescript/diagnosticFormatter.js +6 -3
- package/dist/web/standalone/node_modules/next/dist/lib/typescript/getTypeScriptConfiguration.js +81 -1
- package/dist/web/standalone/node_modules/next/dist/lib/typescript/missingDependencyError.js +1 -1
- package/dist/web/standalone/node_modules/next/dist/lib/typescript/runTypeCheck.js +6 -8
- package/dist/web/standalone/node_modules/next/dist/lib/typescript/type-paths.js +7 -12
- package/dist/web/standalone/node_modules/next/dist/lib/typescript/writeAppTypeDeclarations.js +17 -7
- package/dist/web/standalone/node_modules/next/dist/lib/typescript/writeConfigurationDefaults.js +33 -32
- package/dist/web/standalone/node_modules/next/dist/lib/verify-typescript-setup.js +66 -16
- package/dist/web/standalone/node_modules/next/dist/next-devtools/server/shared.js +6 -10
- package/dist/web/standalone/node_modules/next/dist/next-devtools/shared/webpack-module-path.js +4 -4
- package/dist/web/standalone/node_modules/next/dist/next-devtools/userspace/app/app-dev-overlay-error-boundary.js +22 -4
- package/dist/web/standalone/node_modules/next/dist/next-devtools/userspace/app/errors/stitched-error.js +7 -1
- package/dist/web/standalone/node_modules/next/dist/next-devtools/userspace/app/forward-logs.js +18 -13
- package/dist/web/standalone/node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js +7 -4
- package/dist/web/standalone/node_modules/next/dist/server/app-render/action-handler.js +83 -15
- package/dist/web/standalone/node_modules/next/dist/server/app-render/app-render-prerender-utils.js +0 -82
- package/dist/web/standalone/node_modules/next/dist/server/app-render/app-render-render-utils.js +45 -81
- package/dist/web/standalone/node_modules/next/dist/server/app-render/app-render.js +1746 -803
- package/dist/web/standalone/node_modules/next/dist/server/app-render/create-component-tree.js +136 -50
- package/dist/web/standalone/node_modules/next/dist/server/app-render/create-error-handler.js +6 -4
- package/dist/web/standalone/node_modules/next/dist/server/app-render/create-flight-router-state-from-loader-tree.js +52 -26
- package/dist/web/standalone/node_modules/next/dist/server/app-render/csrf-protection.js +14 -3
- package/dist/web/standalone/node_modules/next/dist/server/app-render/debug-channel-server.js +30 -0
- package/dist/web/standalone/node_modules/next/dist/server/app-render/debug-channel-server.web.js +71 -0
- package/dist/web/standalone/node_modules/next/dist/server/app-render/dynamic-rendering.js +353 -37
- package/dist/web/standalone/node_modules/next/dist/server/app-render/get-asset-query-string.js +2 -2
- package/dist/web/standalone/node_modules/next/dist/server/app-render/get-layer-assets.js +1 -1
- package/dist/web/standalone/node_modules/next/dist/server/app-render/instant-validation/boundary-constants.js +13 -0
- package/dist/web/standalone/node_modules/next/dist/server/app-render/instant-validation/boundary-tracking.js +18 -0
- package/dist/web/standalone/node_modules/next/dist/server/app-render/instant-validation/instant-config.js +181 -0
- package/dist/web/standalone/node_modules/next/dist/server/app-render/instant-validation/instant-samples-client.js +128 -0
- package/dist/web/standalone/node_modules/next/dist/server/app-render/instant-validation/instant-samples.js +432 -0
- package/dist/web/standalone/node_modules/next/dist/server/app-render/instant-validation/instant-validation-error.js +33 -0
- package/dist/web/standalone/node_modules/next/dist/server/app-render/instant-validation/stream-utils.js +96 -0
- package/dist/web/standalone/node_modules/next/dist/server/app-render/manifests-singleton.js +8 -1
- package/dist/web/standalone/node_modules/next/dist/server/app-render/postponed-state.js +2 -1
- package/dist/web/standalone/node_modules/next/dist/server/app-render/prospective-render-utils.js +1 -0
- package/dist/web/standalone/node_modules/next/dist/server/app-render/segment-explorer-path.js +35 -10
- package/dist/web/standalone/node_modules/next/dist/server/app-render/staged-rendering.js +142 -72
- package/dist/web/standalone/node_modules/next/dist/server/app-render/stale-time.js +111 -0
- package/dist/web/standalone/node_modules/next/dist/server/app-render/stream-ops.js +106 -0
- package/dist/web/standalone/node_modules/next/dist/server/app-render/stream-ops.web.js +163 -0
- package/dist/web/standalone/node_modules/next/dist/server/app-render/types.js +10 -4
- package/dist/web/standalone/node_modules/next/dist/server/app-render/use-flight-response.js +3 -1
- package/dist/web/standalone/node_modules/next/dist/server/app-render/vary-params.js +336 -0
- package/dist/web/standalone/node_modules/next/dist/server/app-render/walk-tree-with-flight-router-state.js +59 -12
- package/dist/web/standalone/node_modules/next/dist/server/app-render/work-unit-async-storage.external.js +54 -26
- package/dist/web/standalone/node_modules/next/dist/server/async-storage/request-store.js +4 -4
- package/dist/web/standalone/node_modules/next/dist/server/async-storage/work-store.js +2 -5
- package/dist/web/standalone/node_modules/next/dist/server/base-server.js +65 -53
- package/dist/web/standalone/node_modules/next/dist/server/config-schema.js +94 -8
- package/dist/web/standalone/node_modules/next/dist/server/config-shared.js +57 -7
- package/dist/web/standalone/node_modules/next/dist/server/config.js +96 -25
- package/dist/web/standalone/node_modules/next/dist/server/dev/browser-logs/file-logger.js +9 -6
- package/dist/web/standalone/node_modules/next/dist/server/dev/browser-logs/receive-logs.js +46 -0
- package/dist/web/standalone/node_modules/next/dist/server/dev/browser-logs/source-map.js +1 -4
- package/dist/web/standalone/node_modules/next/dist/server/dev/hot-reloader-turbopack.js +266 -33
- package/dist/web/standalone/node_modules/next/dist/server/dev/hot-reloader-webpack.js +8 -4
- package/dist/web/standalone/node_modules/next/dist/server/dev/log-requests.js +10 -2
- package/dist/web/standalone/node_modules/next/dist/server/dev/middleware-turbopack.js +20 -10
- package/dist/web/standalone/node_modules/next/dist/server/dev/middleware-webpack.js +13 -3
- package/dist/web/standalone/node_modules/next/dist/server/dev/next-dev-server.js +19 -6
- package/dist/web/standalone/node_modules/next/dist/server/dev/on-demand-entry-handler.js +69 -0
- package/dist/web/standalone/node_modules/next/dist/server/dev/require-cache.js +51 -21
- package/dist/web/standalone/node_modules/next/dist/server/dev/server-action-logger.js +37 -0
- package/dist/web/standalone/node_modules/next/dist/server/dev/static-paths-worker.js +1 -0
- package/dist/web/standalone/node_modules/next/dist/server/dev/turbopack-utils.js +6 -15
- package/dist/web/standalone/node_modules/next/dist/server/dynamic-rendering-utils.js +22 -0
- package/dist/web/standalone/node_modules/next/dist/server/image-optimizer.js +157 -27
- package/dist/web/standalone/node_modules/next/dist/server/lib/app-info-log.js +16 -38
- package/dist/web/standalone/node_modules/next/dist/server/lib/cache-control.js +1 -1
- package/dist/web/standalone/node_modules/next/dist/server/lib/clone-response.js +16 -16
- package/dist/web/standalone/node_modules/next/dist/server/lib/cpu-profile.js +47 -16
- package/dist/web/standalone/node_modules/next/dist/server/lib/dev-bundler-service.js +2 -2
- package/dist/web/standalone/node_modules/next/dist/server/lib/disk-lru-cache.external.js +57 -0
- package/dist/web/standalone/node_modules/next/dist/server/lib/find-page-file.js +27 -7
- package/dist/web/standalone/node_modules/next/dist/server/lib/implicit-tags.js +3 -3
- package/dist/web/standalone/node_modules/next/dist/server/lib/incremental-cache/file-system-cache.js +5 -3
- package/dist/web/standalone/node_modules/next/dist/server/lib/incremental-cache/index.js +32 -10
- package/dist/web/standalone/node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js +18 -1
- package/dist/web/standalone/node_modules/next/dist/server/lib/install-code-frame.js +22 -0
- package/dist/web/standalone/node_modules/next/dist/server/lib/lru-cache.js +9 -1
- package/dist/web/standalone/node_modules/next/dist/server/lib/patch-fetch.js +40 -7
- package/dist/web/standalone/node_modules/next/dist/server/lib/postponed-request-body.js +64 -0
- package/dist/web/standalone/node_modules/next/dist/server/lib/render-server.js +4 -1
- package/dist/web/standalone/node_modules/next/dist/server/lib/router-server.js +37 -13
- package/dist/web/standalone/node_modules/next/dist/server/lib/router-utils/block-cross-site-dev.js +110 -0
- package/dist/web/standalone/node_modules/next/dist/server/lib/router-utils/filesystem.js +16 -15
- package/dist/web/standalone/node_modules/next/dist/server/lib/router-utils/resolve-routes.js +32 -11
- package/dist/web/standalone/node_modules/next/dist/server/lib/router-utils/route-types-utils.js +3 -3
- package/dist/web/standalone/node_modules/next/dist/server/lib/router-utils/setup-dev-bundler.js +71 -71
- package/dist/web/standalone/node_modules/next/dist/server/lib/router-utils/typegen.js +247 -2
- package/dist/web/standalone/node_modules/next/dist/server/lib/server-ipc/utils.js +2 -1
- package/dist/web/standalone/node_modules/next/dist/server/lib/start-server.js +73 -39
- package/dist/web/standalone/node_modules/next/dist/server/lib/trace/tracer.js +11 -1
- package/dist/web/standalone/node_modules/next/dist/server/lib/utils.js +40 -11
- package/dist/web/standalone/node_modules/next/dist/server/load-components.js +2 -0
- package/dist/web/standalone/node_modules/next/dist/server/load-manifest.external.js +37 -17
- package/dist/web/standalone/node_modules/next/dist/server/mcp/tools/get-errors.js +11 -4
- package/dist/web/standalone/node_modules/next/dist/server/mcp/tools/get-logs.js +9 -3
- package/dist/web/standalone/node_modules/next/dist/server/mcp/tools/get-page-metadata.js +52 -44
- package/dist/web/standalone/node_modules/next/dist/server/mcp/tools/get-project-metadata.js +6 -2
- package/dist/web/standalone/node_modules/next/dist/server/mcp/tools/get-routes.js +44 -79
- package/dist/web/standalone/node_modules/next/dist/server/mcp/tools/get-server-action-by-id.js +12 -4
- package/dist/web/standalone/node_modules/next/dist/server/mcp/tools/utils/format-errors.js +62 -72
- package/dist/web/standalone/node_modules/next/dist/server/next-server.js +69 -99
- package/dist/web/standalone/node_modules/next/dist/server/next.js +3 -0
- package/dist/web/standalone/node_modules/next/dist/server/node-environment-extensions/console-dim.external.js +61 -6
- package/dist/web/standalone/node_modules/next/dist/server/node-environment-extensions/date.js +4 -4
- package/dist/web/standalone/node_modules/next/dist/server/node-environment-extensions/fast-set-immediate.external.js +13 -6
- package/dist/web/standalone/node_modules/next/dist/server/node-environment-extensions/{utils.js → io-utils.js} +14 -5
- package/dist/web/standalone/node_modules/next/dist/server/node-environment-extensions/node-crypto.js +8 -8
- package/dist/web/standalone/node_modules/next/dist/server/node-environment-extensions/process-error-handlers.js +91 -0
- package/dist/web/standalone/node_modules/next/dist/server/node-environment-extensions/random.js +2 -2
- package/dist/web/standalone/node_modules/next/dist/server/node-environment-extensions/{unhandled-rejection.js → unhandled-rejection.external.js} +23 -4
- package/dist/web/standalone/node_modules/next/dist/server/node-environment-extensions/web-crypto.js +3 -3
- package/dist/web/standalone/node_modules/next/dist/server/node-environment.js +1 -1
- package/dist/web/standalone/node_modules/next/dist/server/normalizers/request/segment-prefix-rsc.js +2 -1
- package/dist/web/standalone/node_modules/next/dist/server/patch-error-inspect.js +37 -20
- package/dist/web/standalone/node_modules/next/dist/server/render-result.js +9 -0
- package/dist/web/standalone/node_modules/next/dist/server/render.js +47 -44
- package/dist/web/standalone/node_modules/next/dist/server/require-hook.js +19 -8
- package/dist/web/standalone/node_modules/next/dist/server/response-cache/utils.js +1 -0
- package/dist/web/standalone/node_modules/next/dist/server/resume-data-cache/cache-store.js +35 -23
- package/dist/web/standalone/node_modules/next/dist/server/resume-data-cache/resume-data-cache.js +16 -7
- package/dist/web/standalone/node_modules/next/dist/server/revalidation-utils.js +12 -7
- package/dist/web/standalone/node_modules/next/dist/server/route-matcher-providers/dev/dev-app-page-route-matcher-provider.js +2 -1
- package/dist/web/standalone/node_modules/next/dist/server/route-modules/app-page/helpers/prerender-manifest-matcher.js +4 -1
- package/dist/web/standalone/node_modules/next/dist/server/route-modules/app-page/module.js +31 -1
- package/dist/web/standalone/node_modules/next/dist/server/route-modules/app-page/normalize-request-url.js +25 -0
- package/dist/web/standalone/node_modules/next/dist/server/route-modules/pages/pages-handler.js +31 -8
- package/dist/web/standalone/node_modules/next/dist/server/route-modules/route-module.js +71 -18
- package/dist/web/standalone/node_modules/next/dist/server/stream-utils/encoded-tags.js +8 -0
- package/dist/web/standalone/node_modules/next/dist/server/stream-utils/node-web-streams-helper.js +239 -58
- package/dist/web/standalone/node_modules/next/dist/server/stream-utils/uint8array-helpers.js +7 -2
- package/dist/web/standalone/node_modules/next/dist/server/typescript/constant.js +1 -0
- package/dist/web/standalone/node_modules/next/dist/server/typescript/rules/config.js +14 -3
- package/dist/web/standalone/node_modules/next/dist/server/web/adapter.js +7 -3
- package/dist/web/standalone/node_modules/next/dist/server/web/next-url.js +6 -2
- package/dist/web/standalone/node_modules/next/dist/server/web/sandbox/sandbox.js +3 -0
- package/dist/web/standalone/node_modules/next/dist/shared/lib/app-router-types.js +30 -11
- package/dist/web/standalone/node_modules/next/dist/shared/lib/constants.js +7 -7
- package/dist/web/standalone/node_modules/next/dist/shared/lib/deployment-id.js +37 -10
- package/dist/web/standalone/node_modules/next/dist/shared/lib/errors/canary-only-config-error.js +1 -1
- package/dist/web/standalone/node_modules/next/dist/shared/lib/errors/code-frame.js +20 -0
- package/dist/web/standalone/node_modules/next/dist/shared/lib/format-webpack-messages.js +22 -2
- package/dist/web/standalone/node_modules/next/dist/shared/lib/image-config.js +3 -1
- package/dist/web/standalone/node_modules/next/dist/shared/lib/is-internal.js +2 -0
- package/dist/web/standalone/node_modules/next/dist/shared/lib/magic-identifier.js +6 -6
- package/dist/web/standalone/node_modules/next/dist/shared/lib/router/router.js +32 -0
- package/dist/web/standalone/node_modules/next/dist/shared/lib/router/utils/app-paths.js +11 -0
- package/dist/web/standalone/node_modules/next/dist/shared/lib/router/utils/get-dynamic-param.js +11 -4
- package/dist/web/standalone/node_modules/next/dist/shared/lib/router/utils/parse-loader-tree.js +3 -2
- package/dist/web/standalone/node_modules/next/dist/shared/lib/router/utils/parse-relative-url.js +9 -2
- package/dist/web/standalone/node_modules/next/dist/shared/lib/router/utils/parse-url.js +8 -2
- package/dist/web/standalone/node_modules/next/dist/shared/lib/segment-cache/vary-params-decoding.js +32 -0
- package/dist/web/standalone/node_modules/next/dist/shared/lib/server-reference-info.js +4 -0
- package/dist/web/standalone/node_modules/next/dist/shared/lib/size-limit.js +6 -1
- package/dist/web/standalone/node_modules/next/dist/shared/lib/turbopack/compilation-events.js +47 -10
- package/dist/web/standalone/node_modules/next/dist/shared/lib/turbopack/manifest-loader.js +90 -116
- package/dist/web/standalone/node_modules/next/dist/shared/lib/turbopack/utils.js +14 -26
- package/dist/web/standalone/node_modules/next/dist/shared/lib/utils/reflect-utils.js +69 -0
- package/dist/web/standalone/node_modules/next/dist/shared/lib/utils.js +2 -2
- package/dist/web/standalone/node_modules/next/dist/telemetry/anonymous-meta.js +1 -1
- package/dist/web/standalone/node_modules/next/dist/telemetry/events/swc-load-failure.js +1 -1
- package/dist/web/standalone/node_modules/next/dist/telemetry/events/version.js +2 -2
- package/dist/web/standalone/node_modules/next/dist/trace/index.js +4 -0
- package/dist/web/standalone/node_modules/next/dist/trace/report/to-json-build.js +11 -108
- package/dist/web/standalone/node_modules/next/dist/trace/report/to-json.js +52 -38
- package/dist/web/standalone/node_modules/next/dist/trace/trace.js +15 -1
- package/dist/web/standalone/node_modules/next/package.json +21 -23
- package/dist/web/standalone/node_modules/react/cjs/react.development.js +1284 -0
- package/dist/web/standalone/package.json +2 -2
- package/dist/web/standalone/server.js +1 -1
- package/package.json +1 -1
- package/packages/mcp-server/README.md +38 -0
- package/packages/mcp-server/src/server.ts +6 -2
- package/packages/mcp-server/src/workflow-tools.test.ts +976 -0
- package/packages/mcp-server/src/workflow-tools.ts +986 -0
- package/packages/pi-ai/dist/utils/event-stream.d.ts +2 -0
- package/packages/pi-ai/dist/utils/event-stream.d.ts.map +1 -1
- package/packages/pi-ai/dist/utils/event-stream.js +4 -0
- package/packages/pi-ai/dist/utils/event-stream.js.map +1 -1
- package/packages/pi-ai/src/utils/event-stream.ts +5 -0
- package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js +12 -2
- package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/provider-auth-setup.d.ts +13 -0
- package/packages/pi-coding-agent/dist/modes/interactive/provider-auth-setup.d.ts.map +1 -0
- package/packages/pi-coding-agent/dist/modes/interactive/provider-auth-setup.js +27 -0
- package/packages/pi-coding-agent/dist/modes/interactive/provider-auth-setup.js.map +1 -0
- package/packages/pi-coding-agent/src/modes/interactive/interactive-mode.ts +15 -2
- package/packages/pi-coding-agent/src/modes/interactive/provider-auth-setup.ts +40 -0
- package/src/resources/GSD-WORKFLOW.md +3 -1
- package/src/resources/extensions/claude-code-cli/stream-adapter.ts +96 -44
- package/src/resources/extensions/claude-code-cli/tests/stream-adapter.test.ts +211 -2
- package/src/resources/extensions/get-secrets-from-user.ts +20 -2
- package/src/resources/extensions/gsd/auto/phases.ts +25 -0
- package/src/resources/extensions/gsd/auto-direct-dispatch.ts +20 -0
- package/src/resources/extensions/gsd/auto-post-unit.ts +30 -1
- package/src/resources/extensions/gsd/bootstrap/db-tools.ts +22 -435
- package/src/resources/extensions/gsd/bootstrap/dynamic-tools.ts +1 -5
- package/src/resources/extensions/gsd/bootstrap/query-tools.ts +7 -72
- package/src/resources/extensions/gsd/bootstrap/system-context.ts +18 -4
- package/src/resources/extensions/gsd/bootstrap/write-gate.ts +122 -6
- package/src/resources/extensions/gsd/codebase-generator.ts +261 -16
- package/src/resources/extensions/gsd/commands/catalog.ts +2 -2
- package/src/resources/extensions/gsd/commands/handlers/core.ts +1 -0
- package/src/resources/extensions/gsd/commands-bootstrap.ts +10 -0
- package/src/resources/extensions/gsd/commands-codebase.ts +4 -3
- package/src/resources/extensions/gsd/doctor-git-checks.ts +4 -4
- package/src/resources/extensions/gsd/doctor-proactive.ts +3 -3
- package/src/resources/extensions/gsd/guided-flow.ts +24 -0
- package/src/resources/extensions/gsd/prompts/system.md +3 -0
- package/src/resources/extensions/gsd/tests/codebase-generator.test.ts +68 -0
- package/src/resources/extensions/gsd/tests/ensure-db-open.test.ts +66 -0
- package/src/resources/extensions/gsd/tests/integration/doctor-git.test.ts +9 -2
- package/src/resources/extensions/gsd/tests/integration/doctor-proactive.test.ts +33 -0
- package/src/resources/extensions/gsd/tests/prompt-contracts.test.ts +7 -0
- package/src/resources/extensions/gsd/tests/update-command.test.ts +19 -0
- package/src/resources/extensions/gsd/tests/workflow-mcp.test.ts +301 -0
- package/src/resources/extensions/gsd/tests/workflow-tool-executors.test.ts +625 -0
- package/src/resources/extensions/gsd/tools/workflow-tool-executors.ts +629 -0
- package/src/resources/extensions/gsd/workflow-mcp.ts +233 -0
- package/src/resources/extensions/gsd/workflow-reconcile.ts +0 -5
- package/src/resources/extensions/gsd/worktree-manager.ts +6 -2
- package/dist/web/standalone/.next/server/chunks/7471.js +0 -13
- package/dist/web/standalone/.next/static/CrKrzIIxk55witDF1eS0L/_buildManifest.js +0 -1
- package/dist/web/standalone/.next/static/chunks/2008.817d0885545aaea9.js +0 -20
- package/dist/web/standalone/.next/static/chunks/3794-337d1ca25ad99a89.js +0 -2
- package/dist/web/standalone/.next/static/chunks/4bd1b696-e5d7c65570c947b7.js +0 -1
- package/dist/web/standalone/.next/static/chunks/framework-0675a4b5b92df616.js +0 -1
- package/dist/web/standalone/.next/static/chunks/main-cb72b7c5b8014fa5.js +0 -5
- package/dist/web/standalone/node_modules/next/dist/client/components/router-reducer/handle-mutable.js +0 -66
- package/dist/web/standalone/node_modules/next/dist/compiled/babel/code-frame.js +0 -1
- package/dist/web/standalone/node_modules/next/dist/compiled/babel-code-frame/index.js +0 -1
- package/dist/web/standalone/node_modules/next/dist/compiled/babel-code-frame/package.json +0 -1
- package/dist/web/standalone/node_modules/next/dist/compiled/tar/index.js +0 -1
- package/dist/web/standalone/node_modules/next/dist/server/app-render/staged-validation.js +0 -32
- package/dist/web/standalone/node_modules/next/dist/server/lib/router-utils/block-cross-site.js +0 -76
- package/dist/web/standalone/node_modules/next/dist/shared/lib/segment-cache/output-export-prefetch-encoding.js +0 -52
- package/dist/web/standalone/node_modules/typescript/lib/typescript.js +0 -198668
- package/dist/web/standalone/node_modules/typescript/package.json +0 -120
- /package/dist/web/standalone/.next/static/{CrKrzIIxk55witDF1eS0L → IBTC_HlEpTBAa4HXMoV_A}/_ssgManifest.js +0 -0
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
* Maintenance: agent updates descriptions as it works; incremental update preserves them.
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
+
import { createHash } from "node:crypto";
|
|
11
12
|
import { existsSync, readFileSync, writeFileSync, mkdirSync } from "node:fs";
|
|
12
13
|
import { join, dirname, extname } from "node:path";
|
|
13
14
|
|
|
@@ -22,6 +23,28 @@ export interface CodebaseMapOptions {
|
|
|
22
23
|
collapseThreshold?: number;
|
|
23
24
|
}
|
|
24
25
|
|
|
26
|
+
export interface CodebaseMapMetadata {
|
|
27
|
+
generatedAt: string;
|
|
28
|
+
fingerprint: string;
|
|
29
|
+
fileCount: number;
|
|
30
|
+
truncated: boolean;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export interface EnsureCodebaseMapOptions {
|
|
34
|
+
ttlMs?: number;
|
|
35
|
+
maxAgeMs?: number;
|
|
36
|
+
force?: boolean;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export interface EnsureCodebaseMapResult {
|
|
40
|
+
status: "generated" | "updated" | "fresh" | "empty";
|
|
41
|
+
fileCount: number;
|
|
42
|
+
truncated: boolean;
|
|
43
|
+
generatedAt: string | null;
|
|
44
|
+
fingerprint: string | null;
|
|
45
|
+
reason?: string;
|
|
46
|
+
}
|
|
47
|
+
|
|
25
48
|
interface FileEntry {
|
|
26
49
|
path: string;
|
|
27
50
|
description: string;
|
|
@@ -33,6 +56,18 @@ interface DirectoryGroup {
|
|
|
33
56
|
collapsed: boolean;
|
|
34
57
|
}
|
|
35
58
|
|
|
59
|
+
interface ResolvedCodebaseMapOptions {
|
|
60
|
+
excludes: string[];
|
|
61
|
+
maxFiles: number;
|
|
62
|
+
collapseThreshold: number;
|
|
63
|
+
optionSignature: string;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
interface EnumeratedFiles {
|
|
67
|
+
files: string[];
|
|
68
|
+
truncated: boolean;
|
|
69
|
+
}
|
|
70
|
+
|
|
36
71
|
// ─── Defaults ────────────────────────────────────────────────────────────────
|
|
37
72
|
|
|
38
73
|
const DEFAULT_EXCLUDES = [
|
|
@@ -55,6 +90,11 @@ const DEFAULT_EXCLUDES = [
|
|
|
55
90
|
|
|
56
91
|
const DEFAULT_MAX_FILES = 500;
|
|
57
92
|
const DEFAULT_COLLAPSE_THRESHOLD = 20;
|
|
93
|
+
const DEFAULT_REFRESH_TTL_MS = 30_000;
|
|
94
|
+
const DEFAULT_MAX_AGE_MS = 15 * 60_000;
|
|
95
|
+
const CODEBASE_METADATA_PREFIX = "<!-- gsd:codebase-meta ";
|
|
96
|
+
|
|
97
|
+
const freshnessCache = new Map<string, { checkedAt: number; result: EnsureCodebaseMapResult }>();
|
|
58
98
|
|
|
59
99
|
// ─── Parsing ─────────────────────────────────────────────────────────────────
|
|
60
100
|
|
|
@@ -96,6 +136,33 @@ export function parseCodebaseMap(content: string): Map<string, string> {
|
|
|
96
136
|
return descriptions;
|
|
97
137
|
}
|
|
98
138
|
|
|
139
|
+
export function parseCodebaseMapMetadata(content: string): CodebaseMapMetadata | null {
|
|
140
|
+
const metaLine = content
|
|
141
|
+
.split("\n")
|
|
142
|
+
.find((line) => line.trimStart().startsWith(CODEBASE_METADATA_PREFIX));
|
|
143
|
+
if (!metaLine) return null;
|
|
144
|
+
|
|
145
|
+
const trimmed = metaLine.trim();
|
|
146
|
+
const jsonStart = CODEBASE_METADATA_PREFIX.length;
|
|
147
|
+
const jsonEnd = trimmed.lastIndexOf(" -->");
|
|
148
|
+
if (jsonEnd <= jsonStart) return null;
|
|
149
|
+
|
|
150
|
+
try {
|
|
151
|
+
const parsed = JSON.parse(trimmed.slice(jsonStart, jsonEnd));
|
|
152
|
+
if (
|
|
153
|
+
typeof parsed?.generatedAt === "string"
|
|
154
|
+
&& typeof parsed?.fingerprint === "string"
|
|
155
|
+
&& typeof parsed?.fileCount === "number"
|
|
156
|
+
&& typeof parsed?.truncated === "boolean"
|
|
157
|
+
) {
|
|
158
|
+
return parsed as CodebaseMapMetadata;
|
|
159
|
+
}
|
|
160
|
+
} catch {
|
|
161
|
+
// Ignore malformed metadata and treat the map as stale.
|
|
162
|
+
}
|
|
163
|
+
return null;
|
|
164
|
+
}
|
|
165
|
+
|
|
99
166
|
// ─── File Enumeration ────────────────────────────────────────────────────────
|
|
100
167
|
|
|
101
168
|
function shouldExclude(filePath: string, excludes: string[]): boolean {
|
|
@@ -134,6 +201,36 @@ function enumerateFiles(basePath: string, excludes: string[], maxFiles: number):
|
|
|
134
201
|
return { files: truncated ? filtered.slice(0, maxFiles) : filtered, truncated };
|
|
135
202
|
}
|
|
136
203
|
|
|
204
|
+
function resolveGeneratorOptions(options?: CodebaseMapOptions): ResolvedCodebaseMapOptions {
|
|
205
|
+
const excludes = [...DEFAULT_EXCLUDES, ...(options?.excludePatterns ?? [])];
|
|
206
|
+
const maxFiles = options?.maxFiles ?? DEFAULT_MAX_FILES;
|
|
207
|
+
const collapseThreshold = options?.collapseThreshold ?? DEFAULT_COLLAPSE_THRESHOLD;
|
|
208
|
+
return {
|
|
209
|
+
excludes,
|
|
210
|
+
maxFiles,
|
|
211
|
+
collapseThreshold,
|
|
212
|
+
optionSignature: JSON.stringify({
|
|
213
|
+
excludes,
|
|
214
|
+
maxFiles,
|
|
215
|
+
collapseThreshold,
|
|
216
|
+
}),
|
|
217
|
+
};
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
function computeCodebaseFingerprint(
|
|
221
|
+
files: string[],
|
|
222
|
+
resolved: ResolvedCodebaseMapOptions,
|
|
223
|
+
truncated: boolean,
|
|
224
|
+
): string {
|
|
225
|
+
return createHash("sha1")
|
|
226
|
+
.update(JSON.stringify({
|
|
227
|
+
files,
|
|
228
|
+
truncated,
|
|
229
|
+
optionSignature: resolved.optionSignature,
|
|
230
|
+
}))
|
|
231
|
+
.digest("hex");
|
|
232
|
+
}
|
|
233
|
+
|
|
137
234
|
// ─── Grouping ────────────────────────────────────────────────────────────────
|
|
138
235
|
|
|
139
236
|
function groupByDirectory(
|
|
@@ -174,14 +271,19 @@ function groupByDirectory(
|
|
|
174
271
|
|
|
175
272
|
// ─── Rendering ───────────────────────────────────────────────────────────────
|
|
176
273
|
|
|
177
|
-
function renderCodebaseMap(
|
|
274
|
+
function renderCodebaseMap(
|
|
275
|
+
groups: DirectoryGroup[],
|
|
276
|
+
totalFiles: number,
|
|
277
|
+
truncated: boolean,
|
|
278
|
+
metadata: CodebaseMapMetadata,
|
|
279
|
+
): string {
|
|
178
280
|
const lines: string[] = [];
|
|
179
|
-
const now = new Date().toISOString().split(".")[0] + "Z";
|
|
180
281
|
const described = groups.reduce((sum, g) => sum + g.files.filter((f) => f.description).length, 0);
|
|
181
282
|
|
|
182
283
|
lines.push("# Codebase Map");
|
|
183
284
|
lines.push("");
|
|
184
|
-
lines.push(`Generated: ${
|
|
285
|
+
lines.push(`Generated: ${metadata.generatedAt} | Files: ${totalFiles} | Described: ${described}/${totalFiles}`);
|
|
286
|
+
lines.push(`${CODEBASE_METADATA_PREFIX}${JSON.stringify(metadata)} -->`);
|
|
185
287
|
if (truncated) {
|
|
186
288
|
lines.push(`Note: Truncated to first ${totalFiles} files. Run with higher --max-files to include all.`);
|
|
187
289
|
}
|
|
@@ -229,6 +331,41 @@ function renderCodebaseMap(groups: DirectoryGroup[], totalFiles: number, truncat
|
|
|
229
331
|
return lines.join("\n");
|
|
230
332
|
}
|
|
231
333
|
|
|
334
|
+
function buildCodebaseMap(
|
|
335
|
+
basePath: string,
|
|
336
|
+
resolved: ResolvedCodebaseMapOptions,
|
|
337
|
+
existingDescriptions?: Map<string, string>,
|
|
338
|
+
enumerated?: EnumeratedFiles,
|
|
339
|
+
): {
|
|
340
|
+
content: string;
|
|
341
|
+
fileCount: number;
|
|
342
|
+
truncated: boolean;
|
|
343
|
+
files: string[];
|
|
344
|
+
fingerprint: string;
|
|
345
|
+
generatedAt: string;
|
|
346
|
+
} {
|
|
347
|
+
const listed = enumerated ?? enumerateFiles(basePath, resolved.excludes, resolved.maxFiles);
|
|
348
|
+
const descriptions = existingDescriptions ?? new Map<string, string>();
|
|
349
|
+
const groups = groupByDirectory(listed.files, descriptions, resolved.collapseThreshold);
|
|
350
|
+
const generatedAt = new Date().toISOString().split(".")[0] + "Z";
|
|
351
|
+
const metadata: CodebaseMapMetadata = {
|
|
352
|
+
generatedAt,
|
|
353
|
+
fingerprint: computeCodebaseFingerprint(listed.files, resolved, listed.truncated),
|
|
354
|
+
fileCount: listed.files.length,
|
|
355
|
+
truncated: listed.truncated,
|
|
356
|
+
};
|
|
357
|
+
const content = renderCodebaseMap(groups, listed.files.length, listed.truncated, metadata);
|
|
358
|
+
|
|
359
|
+
return {
|
|
360
|
+
content,
|
|
361
|
+
fileCount: listed.files.length,
|
|
362
|
+
truncated: listed.truncated,
|
|
363
|
+
files: listed.files,
|
|
364
|
+
fingerprint: metadata.fingerprint,
|
|
365
|
+
generatedAt,
|
|
366
|
+
};
|
|
367
|
+
}
|
|
368
|
+
|
|
232
369
|
// ─── Public API ──────────────────────────────────────────────────────────────
|
|
233
370
|
|
|
234
371
|
/**
|
|
@@ -239,17 +376,9 @@ export function generateCodebaseMap(
|
|
|
239
376
|
basePath: string,
|
|
240
377
|
options?: CodebaseMapOptions,
|
|
241
378
|
existingDescriptions?: Map<string, string>,
|
|
242
|
-
): { content: string; fileCount: number; truncated: boolean; files: string[] } {
|
|
243
|
-
const
|
|
244
|
-
|
|
245
|
-
const collapseThreshold = options?.collapseThreshold ?? DEFAULT_COLLAPSE_THRESHOLD;
|
|
246
|
-
|
|
247
|
-
const { files, truncated } = enumerateFiles(basePath, excludes, maxFiles);
|
|
248
|
-
const descriptions = existingDescriptions ?? new Map<string, string>();
|
|
249
|
-
const groups = groupByDirectory(files, descriptions, collapseThreshold);
|
|
250
|
-
const content = renderCodebaseMap(groups, files.length, truncated);
|
|
251
|
-
|
|
252
|
-
return { content, fileCount: files.length, truncated, files };
|
|
379
|
+
): { content: string; fileCount: number; truncated: boolean; files: string[]; fingerprint: string; generatedAt: string } {
|
|
380
|
+
const resolved = resolveGeneratorOptions(options);
|
|
381
|
+
return buildCodebaseMap(basePath, resolved, existingDescriptions);
|
|
253
382
|
}
|
|
254
383
|
|
|
255
384
|
/**
|
|
@@ -259,8 +388,18 @@ export function generateCodebaseMap(
|
|
|
259
388
|
export function updateCodebaseMap(
|
|
260
389
|
basePath: string,
|
|
261
390
|
options?: CodebaseMapOptions,
|
|
262
|
-
): {
|
|
391
|
+
): {
|
|
392
|
+
content: string;
|
|
393
|
+
added: number;
|
|
394
|
+
removed: number;
|
|
395
|
+
unchanged: number;
|
|
396
|
+
fileCount: number;
|
|
397
|
+
truncated: boolean;
|
|
398
|
+
fingerprint: string;
|
|
399
|
+
generatedAt: string;
|
|
400
|
+
} {
|
|
263
401
|
const codebasePath = join(gsdRoot(basePath), "CODEBASE.md");
|
|
402
|
+
const resolved = resolveGeneratorOptions(options);
|
|
264
403
|
|
|
265
404
|
// Load existing descriptions
|
|
266
405
|
let existingDescriptions = new Map<string, string>();
|
|
@@ -273,7 +412,7 @@ export function updateCodebaseMap(
|
|
|
273
412
|
|
|
274
413
|
// Generate new map preserving descriptions — reuse the returned file list
|
|
275
414
|
// to avoid a second enumeration (prevents race between content and stats).
|
|
276
|
-
const result =
|
|
415
|
+
const result = buildCodebaseMap(basePath, resolved, existingDescriptions);
|
|
277
416
|
const currentSet = new Set(result.files);
|
|
278
417
|
|
|
279
418
|
// Count changes
|
|
@@ -294,9 +433,114 @@ export function updateCodebaseMap(
|
|
|
294
433
|
unchanged: result.files.length - added,
|
|
295
434
|
fileCount: result.fileCount,
|
|
296
435
|
truncated: result.truncated,
|
|
436
|
+
fingerprint: result.fingerprint,
|
|
437
|
+
generatedAt: result.generatedAt,
|
|
297
438
|
};
|
|
298
439
|
}
|
|
299
440
|
|
|
441
|
+
function clearFreshnessCache(basePath: string): void {
|
|
442
|
+
for (const key of freshnessCache.keys()) {
|
|
443
|
+
if (key === basePath || key.startsWith(`${basePath}::`)) {
|
|
444
|
+
freshnessCache.delete(key);
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
export function ensureCodebaseMapFresh(
|
|
450
|
+
basePath: string,
|
|
451
|
+
options?: CodebaseMapOptions,
|
|
452
|
+
ensureOptions?: EnsureCodebaseMapOptions,
|
|
453
|
+
): EnsureCodebaseMapResult {
|
|
454
|
+
const resolved = resolveGeneratorOptions(options);
|
|
455
|
+
const cacheKey = `${basePath}::${resolved.optionSignature}`;
|
|
456
|
+
const ttlMs = ensureOptions?.ttlMs ?? DEFAULT_REFRESH_TTL_MS;
|
|
457
|
+
const maxAgeMs = ensureOptions?.maxAgeMs ?? DEFAULT_MAX_AGE_MS;
|
|
458
|
+
const force = ensureOptions?.force === true;
|
|
459
|
+
const now = Date.now();
|
|
460
|
+
|
|
461
|
+
if (!force && ttlMs > 0) {
|
|
462
|
+
const cached = freshnessCache.get(cacheKey);
|
|
463
|
+
if (cached && now - cached.checkedAt < ttlMs) {
|
|
464
|
+
return cached.result;
|
|
465
|
+
}
|
|
466
|
+
}
|
|
467
|
+
|
|
468
|
+
const existing = readCodebaseMap(basePath);
|
|
469
|
+
const listed = enumerateFiles(basePath, resolved.excludes, resolved.maxFiles);
|
|
470
|
+
const fingerprint = computeCodebaseFingerprint(listed.files, resolved, listed.truncated);
|
|
471
|
+
|
|
472
|
+
const cacheAndReturn = (result: EnsureCodebaseMapResult): EnsureCodebaseMapResult => {
|
|
473
|
+
freshnessCache.set(cacheKey, { checkedAt: now, result });
|
|
474
|
+
return result;
|
|
475
|
+
};
|
|
476
|
+
|
|
477
|
+
if (!existing) {
|
|
478
|
+
const generated = buildCodebaseMap(basePath, resolved, undefined, listed);
|
|
479
|
+
if (generated.fileCount > 0) {
|
|
480
|
+
writeCodebaseMap(basePath, generated.content);
|
|
481
|
+
return cacheAndReturn({
|
|
482
|
+
status: "generated",
|
|
483
|
+
fileCount: generated.fileCount,
|
|
484
|
+
truncated: generated.truncated,
|
|
485
|
+
generatedAt: generated.generatedAt,
|
|
486
|
+
fingerprint: generated.fingerprint,
|
|
487
|
+
reason: "missing",
|
|
488
|
+
});
|
|
489
|
+
}
|
|
490
|
+
return cacheAndReturn({
|
|
491
|
+
status: "empty",
|
|
492
|
+
fileCount: 0,
|
|
493
|
+
truncated: false,
|
|
494
|
+
generatedAt: null,
|
|
495
|
+
fingerprint,
|
|
496
|
+
reason: "no-tracked-files",
|
|
497
|
+
});
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
const metadata = parseCodebaseMapMetadata(existing);
|
|
501
|
+
const existingDescriptions = parseCodebaseMap(existing);
|
|
502
|
+
const ageMs = metadata ? now - Date.parse(metadata.generatedAt) : Number.POSITIVE_INFINITY;
|
|
503
|
+
const staleReason =
|
|
504
|
+
!metadata ? "missing-metadata"
|
|
505
|
+
: metadata.fingerprint !== fingerprint ? "files-changed"
|
|
506
|
+
: metadata.fileCount !== listed.files.length ? "file-count-changed"
|
|
507
|
+
: metadata.truncated !== listed.truncated ? "truncation-changed"
|
|
508
|
+
: maxAgeMs > 0 && Number.isFinite(ageMs) && ageMs > maxAgeMs ? "expired"
|
|
509
|
+
: undefined;
|
|
510
|
+
|
|
511
|
+
if (!staleReason) {
|
|
512
|
+
return cacheAndReturn({
|
|
513
|
+
status: "fresh",
|
|
514
|
+
fileCount: metadata?.fileCount ?? listed.files.length,
|
|
515
|
+
truncated: metadata?.truncated ?? listed.truncated,
|
|
516
|
+
generatedAt: metadata?.generatedAt ?? null,
|
|
517
|
+
fingerprint: metadata?.fingerprint ?? fingerprint,
|
|
518
|
+
});
|
|
519
|
+
}
|
|
520
|
+
|
|
521
|
+
const updated = buildCodebaseMap(basePath, resolved, existingDescriptions, listed);
|
|
522
|
+
if (updated.fileCount > 0) {
|
|
523
|
+
writeCodebaseMap(basePath, updated.content);
|
|
524
|
+
return cacheAndReturn({
|
|
525
|
+
status: "updated",
|
|
526
|
+
fileCount: updated.fileCount,
|
|
527
|
+
truncated: updated.truncated,
|
|
528
|
+
generatedAt: updated.generatedAt,
|
|
529
|
+
fingerprint: updated.fingerprint,
|
|
530
|
+
reason: staleReason,
|
|
531
|
+
});
|
|
532
|
+
}
|
|
533
|
+
|
|
534
|
+
return cacheAndReturn({
|
|
535
|
+
status: "empty",
|
|
536
|
+
fileCount: 0,
|
|
537
|
+
truncated: false,
|
|
538
|
+
generatedAt: null,
|
|
539
|
+
fingerprint,
|
|
540
|
+
reason: staleReason,
|
|
541
|
+
});
|
|
542
|
+
}
|
|
543
|
+
|
|
300
544
|
/**
|
|
301
545
|
* Write CODEBASE.md to .gsd/ directory.
|
|
302
546
|
*/
|
|
@@ -305,6 +549,7 @@ export function writeCodebaseMap(basePath: string, content: string): string {
|
|
|
305
549
|
mkdirSync(root, { recursive: true });
|
|
306
550
|
const outPath = join(root, "CODEBASE.md");
|
|
307
551
|
writeFileSync(outPath, content, "utf-8");
|
|
552
|
+
clearFreshnessCache(basePath);
|
|
308
553
|
return outPath;
|
|
309
554
|
}
|
|
310
555
|
|
|
@@ -73,7 +73,7 @@ export const TOP_LEVEL_SUBCOMMANDS: readonly GsdCommandDefinition[] = [
|
|
|
73
73
|
{ cmd: "mcp", desc: "MCP server status and connectivity check (status, check <server>)" },
|
|
74
74
|
{ cmd: "rethink", desc: "Conversational project reorganization — reorder, park, discard, add milestones" },
|
|
75
75
|
{ cmd: "workflow", desc: "Custom workflow lifecycle (new, run, list, validate, pause, resume)" },
|
|
76
|
-
{ cmd: "codebase", desc: "Generate and
|
|
76
|
+
{ cmd: "codebase", desc: "Generate, refresh, and inspect the codebase map cache (.gsd/CODEBASE.md)" },
|
|
77
77
|
];
|
|
78
78
|
|
|
79
79
|
const NESTED_COMPLETIONS: CompletionMap = {
|
|
@@ -237,7 +237,7 @@ const NESTED_COMPLETIONS: CompletionMap = {
|
|
|
237
237
|
{ cmd: "generate", desc: "Generate or regenerate CODEBASE.md" },
|
|
238
238
|
{ cmd: "generate --max-files", desc: "Generate with custom file limit (default: 500)" },
|
|
239
239
|
{ cmd: "generate --collapse-threshold", desc: "Generate with custom collapse threshold (default: 20)" },
|
|
240
|
-
{ cmd: "update", desc: "
|
|
240
|
+
{ cmd: "update", desc: "Refresh the CODEBASE.md cache immediately (preserves descriptions)" },
|
|
241
241
|
{ cmd: "update --max-files", desc: "Update with custom file limit" },
|
|
242
242
|
{ cmd: "update --collapse-threshold", desc: "Update with custom collapse threshold" },
|
|
243
243
|
{ cmd: "stats", desc: "Show file count, description coverage, and generation time" },
|
|
@@ -45,6 +45,7 @@ export function showHelp(ctx: ExtensionCommandContext): void {
|
|
|
45
45
|
"",
|
|
46
46
|
"PROJECT KNOWLEDGE",
|
|
47
47
|
" /gsd knowledge <type> <text> Add rule, pattern, or lesson to KNOWLEDGE.md",
|
|
48
|
+
" /gsd codebase [generate|update|stats] Manage the CODEBASE.md cache used in prompt context",
|
|
48
49
|
"",
|
|
49
50
|
"SETUP & CONFIGURATION",
|
|
50
51
|
" /gsd init Project init wizard — detect, configure, bootstrap .gsd/",
|
|
@@ -45,6 +45,7 @@ const TOP_LEVEL_SUBCOMMANDS = [
|
|
|
45
45
|
{ cmd: "start", desc: "Start a workflow template" },
|
|
46
46
|
{ cmd: "templates", desc: "List available workflow templates" },
|
|
47
47
|
{ cmd: "extensions", desc: "Manage extensions" },
|
|
48
|
+
{ cmd: "codebase", desc: "Generate, refresh, and inspect the codebase map cache" },
|
|
48
49
|
] as const;
|
|
49
50
|
|
|
50
51
|
function filterStartsWith(
|
|
@@ -218,6 +219,15 @@ function getGsdArgumentCompletions(prefix: string) {
|
|
|
218
219
|
], "extensions");
|
|
219
220
|
}
|
|
220
221
|
|
|
222
|
+
if (parts[0] === "codebase" && parts.length <= 2) {
|
|
223
|
+
return filterStartsWith(partial, [
|
|
224
|
+
{ cmd: "generate", desc: "Generate or regenerate CODEBASE.md" },
|
|
225
|
+
{ cmd: "update", desc: "Refresh the CODEBASE.md cache immediately" },
|
|
226
|
+
{ cmd: "stats", desc: "Show codebase-map coverage and generation time" },
|
|
227
|
+
{ cmd: "help", desc: "Show usage and subcommands" },
|
|
228
|
+
], "codebase");
|
|
229
|
+
}
|
|
230
|
+
|
|
221
231
|
if (parts[0] === "doctor" && parts.length <= 2) {
|
|
222
232
|
return filterStartsWith(partial, [
|
|
223
233
|
{ cmd: "fix", desc: "Auto-fix detected issues" },
|
|
@@ -20,10 +20,11 @@ import type { CodebaseMapOptions } from "./codebase-generator.js";
|
|
|
20
20
|
const USAGE =
|
|
21
21
|
"Usage: /gsd codebase [generate|update|stats]\n\n" +
|
|
22
22
|
" generate [--max-files N] [--collapse-threshold N] — Generate or regenerate CODEBASE.md\n" +
|
|
23
|
-
" update [--max-files N] [--collapse-threshold N] —
|
|
23
|
+
" update [--max-files N] [--collapse-threshold N] — Refresh the CODEBASE.md cache immediately\n" +
|
|
24
24
|
" stats — Show file count, coverage, and generation time\n" +
|
|
25
25
|
" help — Show this help\n\n" +
|
|
26
|
-
"With no subcommand, shows stats if a map exists or help if not.\n
|
|
26
|
+
"With no subcommand, shows stats if a map exists or help if not.\n" +
|
|
27
|
+
"GSD also refreshes CODEBASE.md automatically before prompt injection and after completed units when tracked files change.\n\n" +
|
|
27
28
|
"Configure defaults via preferences.md:\n" +
|
|
28
29
|
" codebase:\n" +
|
|
29
30
|
" exclude_patterns: [\"docs/\", \"fixtures/\"]\n" +
|
|
@@ -141,7 +142,7 @@ function showStats(basePath: string, ctx: ExtensionCommandContext): void {
|
|
|
141
142
|
` Undescribed: ${stats.undescribedCount}\n` +
|
|
142
143
|
` Generated: ${stats.generatedAt ?? "unknown"}\n\n` +
|
|
143
144
|
(stats.undescribedCount > 0
|
|
144
|
-
? `Tip:
|
|
145
|
+
? `Tip: Auto-refresh keeps the cache current, but /gsd codebase update forces an immediate refresh.`
|
|
145
146
|
: `Coverage is complete.`),
|
|
146
147
|
"info",
|
|
147
148
|
);
|
|
@@ -10,7 +10,7 @@ import { deriveState, isMilestoneComplete } from "./state.js";
|
|
|
10
10
|
import { listWorktrees, resolveGitDir, worktreesDir } from "./worktree-manager.js";
|
|
11
11
|
import { abortAndReset } from "./git-self-heal.js";
|
|
12
12
|
import { RUNTIME_EXCLUSION_PATHS, resolveMilestoneIntegrationBranch, writeIntegrationBranch } from "./git-service.js";
|
|
13
|
-
import { nativeIsRepo, nativeWorktreeList, nativeWorktreeRemove, nativeBranchList, nativeBranchDelete, nativeLsFiles, nativeRmCached, nativeHasChanges, nativeLastCommitEpoch, nativeGetCurrentBranch,
|
|
13
|
+
import { nativeIsRepo, nativeWorktreeList, nativeWorktreeRemove, nativeBranchList, nativeBranchDelete, nativeLsFiles, nativeRmCached, nativeHasChanges, nativeLastCommitEpoch, nativeGetCurrentBranch, nativeAddAllWithExclusions, nativeCommit } from "./native-git-bridge.js";
|
|
14
14
|
import { getAllWorktreeHealth } from "./worktree-health.js";
|
|
15
15
|
import { loadEffectiveGSDPreferences } from "./preferences.js";
|
|
16
16
|
|
|
@@ -386,19 +386,19 @@ export async function checkGitHealth(
|
|
|
386
386
|
code: "stale_uncommitted_changes",
|
|
387
387
|
scope: "project",
|
|
388
388
|
unitId: "project",
|
|
389
|
-
message: `Uncommitted changes detected with no commit in ${mins} minute${mins === 1 ? "" : "s"} (threshold: ${thresholdMinutes}m). Snapshotting
|
|
389
|
+
message: `Uncommitted changes detected with no commit in ${mins} minute${mins === 1 ? "" : "s"} (threshold: ${thresholdMinutes}m). Snapshotting uncommitted changes.`,
|
|
390
390
|
fixable: true,
|
|
391
391
|
});
|
|
392
392
|
|
|
393
393
|
if (shouldFix("stale_uncommitted_changes")) {
|
|
394
394
|
try {
|
|
395
|
-
|
|
395
|
+
nativeAddAllWithExclusions(basePath, RUNTIME_EXCLUSION_PATHS);
|
|
396
396
|
const commitMsg = `gsd snapshot: uncommitted changes after ${mins}m inactivity`;
|
|
397
397
|
const result = nativeCommit(basePath, commitMsg);
|
|
398
398
|
if (result) {
|
|
399
399
|
fixesApplied.push(`created gsd snapshot after ${mins}m of uncommitted changes`);
|
|
400
400
|
} else {
|
|
401
|
-
fixesApplied.push("gsd snapshot skipped — nothing to commit after staging
|
|
401
|
+
fixesApplied.push("gsd snapshot skipped — nothing to commit after staging changes");
|
|
402
402
|
}
|
|
403
403
|
} catch {
|
|
404
404
|
fixesApplied.push("failed to create gsd snapshot commit");
|
|
@@ -21,8 +21,8 @@ import { readCrashLock, isLockProcessAlive, clearLock } from "./crash-recovery.j
|
|
|
21
21
|
import { abortAndReset } from "./git-self-heal.js";
|
|
22
22
|
import { rebuildState } from "./doctor.js";
|
|
23
23
|
import { deriveState } from "./state.js";
|
|
24
|
-
import { resolveMilestoneIntegrationBranch } from "./git-service.js";
|
|
25
|
-
import { nativeIsRepo, nativeHasChanges, nativeLastCommitEpoch, nativeGetCurrentBranch,
|
|
24
|
+
import { RUNTIME_EXCLUSION_PATHS, resolveMilestoneIntegrationBranch } from "./git-service.js";
|
|
25
|
+
import { nativeIsRepo, nativeHasChanges, nativeLastCommitEpoch, nativeGetCurrentBranch, nativeAddAllWithExclusions, nativeCommit } from "./native-git-bridge.js";
|
|
26
26
|
import { loadEffectiveGSDPreferences } from "./preferences.js";
|
|
27
27
|
import { runEnvironmentChecks } from "./doctor-environment.js";
|
|
28
28
|
|
|
@@ -312,7 +312,7 @@ export async function preDispatchHealthGate(basePath: string): Promise<PreDispat
|
|
|
312
312
|
if (minutesSinceCommit >= thresholdMinutes) {
|
|
313
313
|
const mins = Math.floor(minutesSinceCommit);
|
|
314
314
|
try {
|
|
315
|
-
|
|
315
|
+
nativeAddAllWithExclusions(basePath, RUNTIME_EXCLUSION_PATHS);
|
|
316
316
|
const commitMsg = `gsd snapshot: pre-dispatch, uncommitted changes after ${mins}m inactivity`;
|
|
317
317
|
const result = nativeCommit(basePath, commitMsg);
|
|
318
318
|
if (result) {
|
|
@@ -40,6 +40,10 @@ import { findMilestoneIds, nextMilestoneId, reserveMilestoneId, getReservedMiles
|
|
|
40
40
|
import { parkMilestone, discardMilestone } from "./milestone-actions.js";
|
|
41
41
|
import { selectAndApplyModel } from "./auto-model-selection.js";
|
|
42
42
|
import { DISCUSS_TOOLS_ALLOWLIST } from "./constants.js";
|
|
43
|
+
import {
|
|
44
|
+
getWorkflowTransportSupportError,
|
|
45
|
+
getRequiredWorkflowToolsForGuidedUnit,
|
|
46
|
+
} from "./workflow-mcp.js";
|
|
43
47
|
import {
|
|
44
48
|
runPreparation,
|
|
45
49
|
formatCodebaseBrief,
|
|
@@ -318,6 +322,26 @@ async function dispatchWorkflow(
|
|
|
318
322
|
routing: result.routing,
|
|
319
323
|
});
|
|
320
324
|
}
|
|
325
|
+
|
|
326
|
+
const compatibilityError = getWorkflowTransportSupportError(
|
|
327
|
+
result.appliedModel?.provider ?? ctx.model?.provider,
|
|
328
|
+
getRequiredWorkflowToolsForGuidedUnit(unitType),
|
|
329
|
+
{
|
|
330
|
+
projectRoot: process.cwd(),
|
|
331
|
+
surface: "guided flow",
|
|
332
|
+
unitType,
|
|
333
|
+
authMode: result.appliedModel?.provider
|
|
334
|
+
? ctx.modelRegistry.getProviderAuthMode(result.appliedModel.provider)
|
|
335
|
+
: ctx.model?.provider
|
|
336
|
+
? ctx.modelRegistry.getProviderAuthMode(ctx.model.provider)
|
|
337
|
+
: undefined,
|
|
338
|
+
baseUrl: result.appliedModel?.baseUrl ?? ctx.model?.baseUrl,
|
|
339
|
+
},
|
|
340
|
+
);
|
|
341
|
+
if (compatibilityError) {
|
|
342
|
+
ctx.ui.notify(compatibilityError, "error");
|
|
343
|
+
return;
|
|
344
|
+
}
|
|
321
345
|
}
|
|
322
346
|
|
|
323
347
|
// Scope tools for discuss flows (#2949).
|
|
@@ -62,6 +62,7 @@ Titles live inside file content (headings, frontmatter), not in file or director
|
|
|
62
62
|
REQUIREMENTS.md (requirement contract - tracks active/validated/deferred/out-of-scope)
|
|
63
63
|
DECISIONS.md (append-only register of architectural and pattern decisions)
|
|
64
64
|
KNOWLEDGE.md (append-only register of project-specific rules, patterns, and lessons learned)
|
|
65
|
+
CODEBASE.md (generated codebase map cache — auto-refreshed when tracked files change)
|
|
65
66
|
OVERRIDES.md (user-issued overrides that supersede plan content via /gsd steer)
|
|
66
67
|
QUEUE.md (append-only log of queued milestones via /gsd queue)
|
|
67
68
|
STATE.md
|
|
@@ -104,6 +105,7 @@ In all modes, slices commit sequentially on the active branch; there are no per-
|
|
|
104
105
|
- **REQUIREMENTS.md** tracks the requirement contract — requirements move between Active, Validated, Deferred, Blocked, and Out of Scope as slices prove or invalidate them. Update at slice completion when evidence supports a status change.
|
|
105
106
|
- **DECISIONS.md** is an append-only register of architectural and pattern decisions - read it during planning/research, append to it during execution when a meaningful decision is made
|
|
106
107
|
- **KNOWLEDGE.md** is an append-only register of project-specific rules, patterns, and lessons learned. Read it at the start of every unit. Append to it when you discover a recurring issue, a non-obvious pattern, or a rule that future agents should follow.
|
|
108
|
+
- **CODEBASE.md** is a generated structural cache of the tracked repository. GSD auto-refreshes it when tracked files change and injects it into system context when available. Use `/gsd codebase update` only when you need to force an immediate refresh.
|
|
107
109
|
- **CONTEXT.md** files (milestone or slice level) capture the brief — scope, goals, constraints, and key decisions from discussion. When present, they are the authoritative source for what a milestone or slice is trying to achieve. Read them before planning or executing.
|
|
108
110
|
- **Milestones** are major project phases (M001, M002, ...)
|
|
109
111
|
- **Slices** are demoable vertical increments (S01, S02, ...) ordered by risk. After each slice completes, the roadmap is reassessed before the next slice begins.
|
|
@@ -131,6 +133,7 @@ Templates showing the expected format for each artifact type are in:
|
|
|
131
133
|
- `/gsd status` - progress dashboard overlay
|
|
132
134
|
- `/gsd queue` - queue future milestones (safe while auto-mode is running)
|
|
133
135
|
- `/gsd quick <task>` - quick task with GSD guarantees (atomic commits, state tracking) but no milestone ceremony
|
|
136
|
+
- `/gsd codebase [generate|update|stats]` - manage the `.gsd/CODEBASE.md` cache used for prompt context
|
|
134
137
|
- `{{shortcutDashboard}}` - toggle dashboard overlay
|
|
135
138
|
- `{{shortcutShell}}` - show shell processes
|
|
136
139
|
|
|
@@ -8,11 +8,13 @@ import { execSync } from "node:child_process";
|
|
|
8
8
|
|
|
9
9
|
import {
|
|
10
10
|
parseCodebaseMap,
|
|
11
|
+
parseCodebaseMapMetadata,
|
|
11
12
|
generateCodebaseMap,
|
|
12
13
|
updateCodebaseMap,
|
|
13
14
|
writeCodebaseMap,
|
|
14
15
|
readCodebaseMap,
|
|
15
16
|
getCodebaseMapStats,
|
|
17
|
+
ensureCodebaseMapFresh,
|
|
16
18
|
} from "../codebase-generator.ts";
|
|
17
19
|
|
|
18
20
|
// ─── Helpers ──────────────────────────────────────────────────────────────
|
|
@@ -212,6 +214,24 @@ test("generateCodebaseMap: preserves existing descriptions", () => {
|
|
|
212
214
|
}
|
|
213
215
|
});
|
|
214
216
|
|
|
217
|
+
test("generateCodebaseMap: writes freshness metadata comment", () => {
|
|
218
|
+
const base = makeTmpRepo();
|
|
219
|
+
try {
|
|
220
|
+
addFile(base, "src/main.ts");
|
|
221
|
+
|
|
222
|
+
const result = generateCodebaseMap(base);
|
|
223
|
+
const metadata = parseCodebaseMapMetadata(result.content);
|
|
224
|
+
|
|
225
|
+
assert.ok(metadata, "metadata comment should be present");
|
|
226
|
+
assert.equal(metadata?.fileCount, 1);
|
|
227
|
+
assert.equal(metadata?.truncated, false);
|
|
228
|
+
assert.equal(typeof metadata?.fingerprint, "string");
|
|
229
|
+
assert.ok(metadata?.generatedAt?.endsWith("Z"));
|
|
230
|
+
} finally {
|
|
231
|
+
cleanup(base);
|
|
232
|
+
}
|
|
233
|
+
});
|
|
234
|
+
|
|
215
235
|
test("generateCodebaseMap: collapses large directories", () => {
|
|
216
236
|
const base = makeTmpRepo();
|
|
217
237
|
try {
|
|
@@ -571,3 +591,51 @@ test("updateCodebaseMap: respects excludePatterns option", () => {
|
|
|
571
591
|
cleanup(base);
|
|
572
592
|
}
|
|
573
593
|
});
|
|
594
|
+
|
|
595
|
+
test("ensureCodebaseMapFresh: generates CODEBASE.md when missing", () => {
|
|
596
|
+
const base = makeTmpRepo();
|
|
597
|
+
try {
|
|
598
|
+
addFile(base, "src/main.ts");
|
|
599
|
+
|
|
600
|
+
const result = ensureCodebaseMapFresh(base, undefined, { ttlMs: 0, force: true });
|
|
601
|
+
const written = readCodebaseMap(base);
|
|
602
|
+
|
|
603
|
+
assert.equal(result.status, "generated");
|
|
604
|
+
assert.ok(written?.includes("`src/main.ts`"));
|
|
605
|
+
} finally {
|
|
606
|
+
cleanup(base);
|
|
607
|
+
}
|
|
608
|
+
});
|
|
609
|
+
|
|
610
|
+
test("ensureCodebaseMapFresh: updates CODEBASE.md when tracked files change", () => {
|
|
611
|
+
const base = makeTmpRepo();
|
|
612
|
+
try {
|
|
613
|
+
addFile(base, "src/main.ts");
|
|
614
|
+
const initial = ensureCodebaseMapFresh(base, undefined, { ttlMs: 0, force: true });
|
|
615
|
+
assert.equal(initial.status, "generated");
|
|
616
|
+
|
|
617
|
+
addFile(base, "src/new.ts");
|
|
618
|
+
const refreshed = ensureCodebaseMapFresh(base, undefined, { ttlMs: 0, force: true });
|
|
619
|
+
const written = readCodebaseMap(base);
|
|
620
|
+
|
|
621
|
+
assert.equal(refreshed.status, "updated");
|
|
622
|
+
assert.equal(refreshed.reason, "files-changed");
|
|
623
|
+
assert.ok(written?.includes("`src/new.ts`"));
|
|
624
|
+
} finally {
|
|
625
|
+
cleanup(base);
|
|
626
|
+
}
|
|
627
|
+
});
|
|
628
|
+
|
|
629
|
+
test("ensureCodebaseMapFresh: returns fresh when metadata matches repository state", () => {
|
|
630
|
+
const base = makeTmpRepo();
|
|
631
|
+
try {
|
|
632
|
+
addFile(base, "src/main.ts");
|
|
633
|
+
ensureCodebaseMapFresh(base, undefined, { ttlMs: 0, force: true });
|
|
634
|
+
|
|
635
|
+
const refreshed = ensureCodebaseMapFresh(base, undefined, { ttlMs: 0, force: true });
|
|
636
|
+
assert.equal(refreshed.status, "fresh");
|
|
637
|
+
assert.equal(refreshed.fileCount, 1);
|
|
638
|
+
} finally {
|
|
639
|
+
cleanup(base);
|
|
640
|
+
}
|
|
641
|
+
});
|