gsd-pi 2.79.0-dev.bbb2f88ce → 2.79.0-dev.ece5fd8ba

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/register-hooks.js +8 -8
  3. package/dist/resources/extensions/gsd/bootstrap/write-gate.js +8 -8
  4. package/dist/resources/extensions/gsd/guided-flow.js +40 -0
  5. package/dist/resources/extensions/gsd/tools/workflow-tool-executors.js +45 -4
  6. package/dist/tsconfig.extensions.tsbuildinfo +1 -1
  7. package/dist/web/standalone/.next/BUILD_ID +1 -1
  8. package/dist/web/standalone/.next/app-path-routes-manifest.json +15 -15
  9. package/dist/web/standalone/.next/build-manifest.json +2 -2
  10. package/dist/web/standalone/.next/prerender-manifest.json +3 -3
  11. package/dist/web/standalone/.next/required-server-files.json +1 -1
  12. package/dist/web/standalone/.next/server/app/_global-error.html +1 -1
  13. package/dist/web/standalone/.next/server/app/_global-error.rsc +1 -1
  14. package/dist/web/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  15. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  16. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  17. package/dist/web/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  18. package/dist/web/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  19. package/dist/web/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  20. package/dist/web/standalone/.next/server/app/_not-found.html +1 -1
  21. package/dist/web/standalone/.next/server/app/_not-found.rsc +1 -1
  22. package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  23. package/dist/web/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  24. package/dist/web/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  25. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  26. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  27. package/dist/web/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  28. package/dist/web/standalone/.next/server/app/index.html +1 -1
  29. package/dist/web/standalone/.next/server/app/index.rsc +1 -1
  30. package/dist/web/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  31. package/dist/web/standalone/.next/server/app/index.segments/_full.segment.rsc +1 -1
  32. package/dist/web/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  33. package/dist/web/standalone/.next/server/app/index.segments/_index.segment.rsc +1 -1
  34. package/dist/web/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  35. package/dist/web/standalone/.next/server/app-paths-manifest.json +15 -15
  36. package/dist/web/standalone/.next/server/middleware-build-manifest.js +1 -1
  37. package/dist/web/standalone/.next/server/pages/404.html +1 -1
  38. package/dist/web/standalone/.next/server/pages/500.html +1 -1
  39. package/dist/web/standalone/.next/server/server-reference-manifest.json +1 -1
  40. package/dist/web/standalone/server.js +1 -1
  41. package/package.json +1 -1
  42. package/packages/mcp-server/src/workflow-tools.test.ts +13 -2
  43. package/src/resources/extensions/gsd/bootstrap/register-hooks.ts +11 -8
  44. package/src/resources/extensions/gsd/bootstrap/tests/write-gate-shouldblock-basepath.test.ts +97 -0
  45. package/src/resources/extensions/gsd/bootstrap/write-gate.ts +8 -4
  46. package/src/resources/extensions/gsd/guided-flow.ts +47 -0
  47. package/src/resources/extensions/gsd/tests/check-auto-start-pending-gate.test.ts +203 -0
  48. package/src/resources/extensions/gsd/tests/check-auto-start-ready-guard.test.ts +148 -0
  49. package/src/resources/extensions/gsd/tests/execute-summary-save-empty-project.test.ts +109 -0
  50. package/src/resources/extensions/gsd/tests/workflow-tool-executors.test.ts +36 -7
  51. package/src/resources/extensions/gsd/tools/workflow-tool-executors.ts +47 -4
  52. /package/dist/web/standalone/.next/static/{3HYkAopiKls15zp5a8I9n → TzEVJ1Lh8vbez4n4Q9TqQ}/_buildManifest.js +0 -0
  53. /package/dist/web/standalone/.next/static/{3HYkAopiKls15zp5a8I9n → TzEVJ1Lh8vbez4n4Q9TqQ}/_ssgManifest.js +0 -0
@@ -190,19 +190,63 @@ export async function executeSummarySave(
190
190
  );
191
191
 
192
192
  let registeredMilestones: string[] = [];
193
- let registrationWarning: string | undefined;
194
193
  if (params.artifact_type === "PROJECT") {
195
194
  try {
196
195
  registeredMilestones = registerProjectMilestoneSequence(contentToSave);
197
196
  if (registeredMilestones.length > 0) invalidateStateCache();
198
197
  } catch (err) {
199
198
  const msg = err instanceof Error ? err.message : String(err);
200
- registrationWarning = `PROJECT artifact saved, but milestone registration failed: ${msg}`;
201
- logWarning("tool", registrationWarning, {
199
+ logError("tool", `gsd_summary_save: PROJECT artifact persisted but milestone registration threw: ${msg}`, {
202
200
  tool: "gsd_summary_save",
203
201
  error: String(err),
204
202
  stack: err instanceof Error ? err.stack ?? "" : "",
205
203
  });
204
+ // PROJECT.md was persisted by saveArtifactToDb above; the artifacts row
205
+ // changed even though no milestones registered. Invalidate so subsequent
206
+ // /gsd reads see the persisted artifact instead of the pre-save cache.
207
+ invalidateStateCache();
208
+ return {
209
+ content: [{
210
+ type: "text",
211
+ text:
212
+ `Error: PROJECT.md was saved to ${relativePath} but milestone registration failed: ${msg}. ` +
213
+ `The DB has no milestone rows for this project, so /gsd will report "No Active Milestone". ` +
214
+ `Re-call gsd_summary_save(PROJECT) once the underlying error is resolved — INSERT OR IGNORE makes registration idempotent.`,
215
+ }],
216
+ details: {
217
+ operation: "save_summary",
218
+ path: relativePath,
219
+ artifact_type: params.artifact_type,
220
+ error: "milestone_registration_threw",
221
+ registration_error: msg,
222
+ },
223
+ isError: true,
224
+ };
225
+ }
226
+ if (registeredMilestones.length === 0) {
227
+ logError("tool", `gsd_summary_save: PROJECT.md saved to ${relativePath} but parsed zero milestones — registration produced no DB rows`, {
228
+ tool: "gsd_summary_save",
229
+ });
230
+ // PROJECT.md was persisted; invalidate so subsequent reads see the new
231
+ // artifacts row even though no milestones registered.
232
+ invalidateStateCache();
233
+ return {
234
+ content: [{
235
+ type: "text",
236
+ text:
237
+ `Error: PROJECT.md was saved to ${relativePath} but contains zero parseable milestone lines, ` +
238
+ `so no milestones were registered in the DB. /gsd will report "No Active Milestone". ` +
239
+ `Rewrite PROJECT.md so the "Milestone Sequence" section uses canonical lines: ` +
240
+ `\`- [ ] M001: <Title> — <One-liner>\` (em-dash, double-dash \`--\`, or single-dash \`-\` separator), then re-call gsd_summary_save(PROJECT).`,
241
+ }],
242
+ details: {
243
+ operation: "save_summary",
244
+ path: relativePath,
245
+ artifact_type: params.artifact_type,
246
+ error: "milestone_registration_empty_parse",
247
+ },
248
+ isError: true,
249
+ };
206
250
  }
207
251
  }
208
252
 
@@ -225,7 +269,6 @@ export async function executeSummarySave(
225
269
  artifact_type: params.artifact_type,
226
270
  content_source: contentSource,
227
271
  ...(registeredMilestones.length > 0 ? { registeredMilestones } : {}),
228
- ...(registrationWarning ? { warning: registrationWarning } : {}),
229
272
  },
230
273
  };
231
274
  } catch (err) {