gsd-pi 2.78.1-dev.0fdacd524 → 2.78.1-dev.82bcf6b71

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/dist/resources/.managed-resources-content-hash +1 -1
  2. package/dist/resources/extensions/gsd/auto-worktree.js +15 -0
  3. package/dist/resources/extensions/gsd/worktree-resolver.js +24 -0
  4. package/dist/tsconfig.extensions.tsbuildinfo +1 -1
  5. package/dist/web/standalone/.next/BUILD_ID +1 -1
  6. package/dist/web/standalone/.next/app-path-routes-manifest.json +15 -15
  7. package/dist/web/standalone/.next/build-manifest.json +2 -2
  8. package/dist/web/standalone/.next/prerender-manifest.json +3 -3
  9. package/dist/web/standalone/.next/server/app/_global-error.html +1 -1
  10. package/dist/web/standalone/.next/server/app/_global-error.rsc +1 -1
  11. package/dist/web/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  12. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  13. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  14. package/dist/web/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  15. package/dist/web/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  16. package/dist/web/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  17. package/dist/web/standalone/.next/server/app/_not-found.html +1 -1
  18. package/dist/web/standalone/.next/server/app/_not-found.rsc +1 -1
  19. package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  20. package/dist/web/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  21. package/dist/web/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  22. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  23. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  24. package/dist/web/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  25. package/dist/web/standalone/.next/server/app/index.html +1 -1
  26. package/dist/web/standalone/.next/server/app/index.rsc +1 -1
  27. package/dist/web/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  28. package/dist/web/standalone/.next/server/app/index.segments/_full.segment.rsc +1 -1
  29. package/dist/web/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  30. package/dist/web/standalone/.next/server/app/index.segments/_index.segment.rsc +1 -1
  31. package/dist/web/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  32. package/dist/web/standalone/.next/server/app-paths-manifest.json +15 -15
  33. package/dist/web/standalone/.next/server/middleware-build-manifest.js +1 -1
  34. package/dist/web/standalone/.next/server/middleware-manifest.json +5 -5
  35. package/dist/web/standalone/.next/server/pages/404.html +1 -1
  36. package/dist/web/standalone/.next/server/pages/500.html +1 -1
  37. package/dist/web/standalone/.next/server/server-reference-manifest.json +1 -1
  38. package/package.json +1 -1
  39. package/src/resources/extensions/gsd/auto-worktree.ts +15 -0
  40. package/src/resources/extensions/gsd/tests/stash-pop-gsd-conflict.test.ts +8 -2
  41. package/src/resources/extensions/gsd/tests/stash-queued-context-files.test.ts +12 -6
  42. package/src/resources/extensions/gsd/tests/worktree-resolver.test.ts +85 -0
  43. package/src/resources/extensions/gsd/worktree-resolver.ts +24 -0
  44. /package/dist/web/standalone/.next/static/{4iu6IYeYfxOq8OidlDqp6 → hcvW7f3yv1JHzlWe7tIc6}/_buildManifest.js +0 -0
  45. /package/dist/web/standalone/.next/static/{4iu6IYeYfxOq8OidlDqp6 → hcvW7f3yv1JHzlWe7tIc6}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- 4ec0444c08b7f2ca
1
+ 38cf2a787658e575
@@ -2076,5 +2076,20 @@ export function mergeMilestoneToMain(originalBasePath_, milestoneId, roadmapCont
2076
2076
  // 14. Clear module state
2077
2077
  originalBase = null;
2078
2078
  nudgeGitBranchCache(previousCwd);
2079
+ // 15. Anchor cwd at the project root on success-return. Step 12 removed
2080
+ // the worktree dir; if cwd was inside it, every subsequent process.cwd()
2081
+ // would throw ENOENT and trip auto/run-unit.ts:50's session-failed cancel
2082
+ // path (the de73fb43d regression that closes headless gsd auto). Step 3
2083
+ // already chdir'd here, but defending the success-return contract makes
2084
+ // future maintainers safe against intervening chdir's between step 3 and
2085
+ // here.
2086
+ try {
2087
+ // process.cwd() can throw ENOENT when cwd was removed, so attempt
2088
+ // recovery directly.
2089
+ process.chdir(originalBasePath_);
2090
+ }
2091
+ catch (err) {
2092
+ logWarning("worktree", `chdir to project root after merge failed: ${err instanceof Error ? err.message : String(err)}`);
2093
+ }
2079
2094
  return { commitMessage, pushed, prCreated, codeFilesChanged };
2080
2095
  }
@@ -297,6 +297,30 @@ export class WorktreeResolver {
297
297
  */
298
298
  mergeAndExit(milestoneId, ctx) {
299
299
  this.validateMilestoneId(milestoneId);
300
+ // Anchor cwd at the project root before any merge work. Some merge code
301
+ // paths (mergeMilestoneToMain, slice-cadence) chdir explicitly; others
302
+ // (branch-mode, isolation-degraded skip, missing-original-base skip)
303
+ // do not. If the worktree dir is later torn down while cwd still points
304
+ // into it, every subsequent process.cwd() throws ENOENT — and after
305
+ // de73fb43d that surfaces as a session-failed cancel and (in headless
306
+ // mode) terminates the whole gsd process. Best-effort: silent on
307
+ // failure so existing test fixtures that use synthetic paths still pass.
308
+ if (this.s.originalBasePath) {
309
+ try {
310
+ // process.cwd() can throw ENOENT when cwd was removed, so attempt
311
+ // recovery directly.
312
+ process.chdir(this.s.originalBasePath);
313
+ }
314
+ catch (err) {
315
+ debugLog("WorktreeResolver", {
316
+ action: "mergeAndExit",
317
+ phase: "pre-merge-chdir-failed",
318
+ milestoneId,
319
+ originalBasePath: this.s.originalBasePath,
320
+ error: err instanceof Error ? err.message : String(err),
321
+ });
322
+ }
323
+ }
300
324
  // #4764 — telemetry: record start timestamp so we can emit merge duration.
301
325
  const mergeStartedAt = new Date().toISOString();
302
326
  const mergeStartMs = Date.now();