@opengsd/gsd-pi 1.3.0-dev.738160b9 → 1.3.0-dev.cca9c184

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 (53) hide show
  1. package/dist/resources/.managed-resources-content-hash +1 -1
  2. package/dist/resources/extensions/gsd/bootstrap/write-gate.js +15 -4
  3. package/dist/tsconfig.extensions.tsbuildinfo +1 -1
  4. package/dist/web/standalone/.next/BUILD_ID +1 -1
  5. package/dist/web/standalone/.next/app-path-routes-manifest.json +13 -13
  6. package/dist/web/standalone/.next/build-manifest.json +2 -2
  7. package/dist/web/standalone/.next/prerender-manifest.json +3 -3
  8. package/dist/web/standalone/.next/server/app/_global-error.html +1 -1
  9. package/dist/web/standalone/.next/server/app/_global-error.rsc +1 -1
  10. package/dist/web/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  11. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  12. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  13. package/dist/web/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  14. package/dist/web/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  15. package/dist/web/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  16. package/dist/web/standalone/.next/server/app/_not-found.html +1 -1
  17. package/dist/web/standalone/.next/server/app/_not-found.rsc +1 -1
  18. package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  19. package/dist/web/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  20. package/dist/web/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  21. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  22. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  23. package/dist/web/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  24. package/dist/web/standalone/.next/server/app/index.html +1 -1
  25. package/dist/web/standalone/.next/server/app/index.rsc +1 -1
  26. package/dist/web/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  27. package/dist/web/standalone/.next/server/app/index.segments/_full.segment.rsc +1 -1
  28. package/dist/web/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  29. package/dist/web/standalone/.next/server/app/index.segments/_index.segment.rsc +1 -1
  30. package/dist/web/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  31. package/dist/web/standalone/.next/server/app-paths-manifest.json +13 -13
  32. package/dist/web/standalone/.next/server/middleware-build-manifest.js +1 -1
  33. package/dist/web/standalone/.next/server/pages/404.html +1 -1
  34. package/dist/web/standalone/.next/server/pages/500.html +1 -1
  35. package/dist/web/standalone/.next/server/server-reference-manifest.json +1 -1
  36. package/package.json +1 -1
  37. package/packages/cloud-mcp-gateway/package.json +2 -2
  38. package/packages/contracts/package.json +1 -1
  39. package/packages/daemon/package.json +4 -4
  40. package/packages/gsd-agent-core/package.json +5 -5
  41. package/packages/gsd-agent-modes/package.json +7 -7
  42. package/packages/mcp-server/package.json +4 -4
  43. package/packages/native/package.json +1 -1
  44. package/packages/pi-agent-core/package.json +1 -1
  45. package/packages/pi-ai/package.json +1 -1
  46. package/packages/pi-coding-agent/package.json +7 -7
  47. package/packages/pi-tui/package.json +2 -2
  48. package/packages/rpc-client/package.json +2 -2
  49. package/pkg/package.json +1 -1
  50. package/src/resources/extensions/gsd/bootstrap/tests/write-gate-basepath.test.ts +49 -1
  51. package/src/resources/extensions/gsd/bootstrap/write-gate.ts +16 -4
  52. /package/dist/web/standalone/.next/static/{2A_WqqCS-EoYZxN9_v3d2 → Eud_8lddsyi_13HIlB2i7}/_buildManifest.js +0 -0
  53. /package/dist/web/standalone/.next/static/{2A_WqqCS-EoYZxN9_v3d2 → Eud_8lddsyi_13HIlB2i7}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- bd26f10d1f8c134c
1
+ 6cd0d33f2832351c
@@ -81,8 +81,18 @@ function createEmptyWriteGateState() {
81
81
  };
82
82
  }
83
83
  const writeGateStatesByBasePath = new Map();
84
+ /**
85
+ * Write-gate snapshots are project-scoped, not worktree-scoped. When auto-mode
86
+ * routes MCP tool writes to `.gsd-worktrees/<MID>/`, depth verification still
87
+ * lands in the authoritative project `.gsd/runtime/` tree (or external-state
88
+ * symlink target). Without this canonicalization, `loadWriteGateSnapshot(worktree)`
89
+ * sees an empty snapshot and CONTEXT saves loop forever (#M020 gate loop).
90
+ */
91
+ function resolveWriteGateSnapshotRoot(basePath) {
92
+ return resolve(resolveWorktreeProjectRoot(basePath));
93
+ }
84
94
  function writeGateStateKey(basePath) {
85
- return resolve(basePath);
95
+ return resolveWriteGateSnapshotRoot(basePath);
86
96
  }
87
97
  function getWriteGateState(basePath = process.cwd()) {
88
98
  const key = writeGateStateKey(basePath);
@@ -123,16 +133,17 @@ function shouldPersistWriteGateSnapshot(env = process.env) {
123
133
  return v !== "0" && v !== "false";
124
134
  }
125
135
  function writeGateSnapshotPath(basePath) {
126
- return join(basePath, ".gsd", "runtime", "write-gate-state.json");
136
+ return join(resolveWriteGateSnapshotRoot(basePath), ".gsd", "runtime", "write-gate-state.json");
127
137
  }
128
138
  function ensureWriteGateSnapshotDirectory(basePath) {
129
- const gsdPath = join(basePath, ".gsd");
139
+ const snapshotRoot = resolveWriteGateSnapshotRoot(basePath);
140
+ const gsdPath = join(snapshotRoot, ".gsd");
130
141
  if (!existsSync(gsdPath)) {
131
142
  try {
132
143
  const stat = lstatSync(gsdPath);
133
144
  if (stat.isSymbolicLink()) {
134
145
  const target = readlinkSync(gsdPath);
135
- mkdirSync(isAbsolute(target) ? target : resolve(basePath, target), { recursive: true });
146
+ mkdirSync(isAbsolute(target) ? target : resolve(snapshotRoot, target), { recursive: true });
136
147
  }
137
148
  }
138
149
  catch {