gsd-pi 2.46.1 → 2.47.0

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 (93) hide show
  1. package/README.md +46 -29
  2. package/dist/resources/extensions/claude-code-cli/index.js +25 -0
  3. package/dist/resources/extensions/claude-code-cli/models.js +40 -0
  4. package/dist/resources/extensions/claude-code-cli/package.json +11 -0
  5. package/dist/resources/extensions/claude-code-cli/partial-builder.js +223 -0
  6. package/dist/resources/extensions/claude-code-cli/readiness.js +26 -0
  7. package/dist/resources/extensions/claude-code-cli/sdk-types.js +8 -0
  8. package/dist/resources/extensions/claude-code-cli/stream-adapter.js +309 -0
  9. package/dist/resources/extensions/gsd/auto-start.js +9 -8
  10. package/dist/resources/extensions/gsd/prompts/complete-slice.md +1 -1
  11. package/dist/resources/extensions/gsd/prompts/guided-plan-milestone.md +2 -2
  12. package/dist/resources/extensions/gsd/prompts/plan-milestone.md +2 -2
  13. package/dist/resources/extensions/gsd/prompts/plan-slice.md +1 -1
  14. package/dist/resources/extensions/gsd/prompts/research-milestone.md +2 -2
  15. package/dist/resources/extensions/gsd/prompts/run-uat.md +2 -2
  16. package/dist/resources/extensions/gsd/repo-identity.js +5 -2
  17. package/dist/resources/extensions/gsd/state.js +29 -2
  18. package/dist/resources/extensions/gsd/workflow-events.js +1 -1
  19. package/dist/web/standalone/.next/BUILD_ID +1 -1
  20. package/dist/web/standalone/.next/app-path-routes-manifest.json +9 -9
  21. package/dist/web/standalone/.next/build-manifest.json +2 -2
  22. package/dist/web/standalone/.next/prerender-manifest.json +3 -3
  23. package/dist/web/standalone/.next/server/app/_global-error.html +2 -2
  24. package/dist/web/standalone/.next/server/app/_global-error.rsc +1 -1
  25. package/dist/web/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  26. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  27. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  28. package/dist/web/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  29. package/dist/web/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  30. package/dist/web/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  31. package/dist/web/standalone/.next/server/app/_not-found.html +1 -1
  32. package/dist/web/standalone/.next/server/app/_not-found.rsc +1 -1
  33. package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  34. package/dist/web/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  35. package/dist/web/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  36. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  37. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  38. package/dist/web/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  39. package/dist/web/standalone/.next/server/app/index.html +1 -1
  40. package/dist/web/standalone/.next/server/app/index.rsc +1 -1
  41. package/dist/web/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  42. package/dist/web/standalone/.next/server/app/index.segments/_full.segment.rsc +1 -1
  43. package/dist/web/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  44. package/dist/web/standalone/.next/server/app/index.segments/_index.segment.rsc +1 -1
  45. package/dist/web/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  46. package/dist/web/standalone/.next/server/app-paths-manifest.json +9 -9
  47. package/dist/web/standalone/.next/server/pages/404.html +1 -1
  48. package/dist/web/standalone/.next/server/pages/500.html +2 -2
  49. package/dist/web/standalone/.next/server/server-reference-manifest.json +1 -1
  50. package/package.json +3 -1
  51. package/packages/pi-agent-core/dist/agent-loop.js +26 -1
  52. package/packages/pi-agent-core/dist/agent-loop.js.map +1 -1
  53. package/packages/pi-agent-core/dist/agent.d.ts +7 -0
  54. package/packages/pi-agent-core/dist/agent.d.ts.map +1 -1
  55. package/packages/pi-agent-core/dist/agent.js +2 -0
  56. package/packages/pi-agent-core/dist/agent.js.map +1 -1
  57. package/packages/pi-agent-core/dist/types.d.ts +9 -0
  58. package/packages/pi-agent-core/dist/types.d.ts.map +1 -1
  59. package/packages/pi-agent-core/dist/types.js.map +1 -1
  60. package/packages/pi-agent-core/src/agent-loop.ts +25 -1
  61. package/packages/pi-agent-core/src/agent.ts +10 -0
  62. package/packages/pi-agent-core/src/types.ts +10 -0
  63. package/packages/pi-coding-agent/dist/core/auth-storage.test.js +27 -2
  64. package/packages/pi-coding-agent/dist/core/auth-storage.test.js.map +1 -1
  65. package/packages/pi-coding-agent/dist/core/sdk.d.ts.map +1 -1
  66. package/packages/pi-coding-agent/dist/core/sdk.js +1 -0
  67. package/packages/pi-coding-agent/dist/core/sdk.js.map +1 -1
  68. package/packages/pi-coding-agent/package.json +1 -1
  69. package/packages/pi-coding-agent/src/core/auth-storage.test.ts +27 -2
  70. package/packages/pi-coding-agent/src/core/sdk.ts +1 -0
  71. package/pkg/package.json +1 -1
  72. package/src/resources/extensions/claude-code-cli/index.ts +28 -0
  73. package/src/resources/extensions/claude-code-cli/models.ts +42 -0
  74. package/src/resources/extensions/claude-code-cli/package.json +11 -0
  75. package/src/resources/extensions/claude-code-cli/partial-builder.ts +258 -0
  76. package/src/resources/extensions/claude-code-cli/readiness.ts +30 -0
  77. package/src/resources/extensions/claude-code-cli/sdk-types.ts +149 -0
  78. package/src/resources/extensions/claude-code-cli/stream-adapter.ts +370 -0
  79. package/src/resources/extensions/gsd/auto-start.ts +8 -7
  80. package/src/resources/extensions/gsd/prompts/complete-slice.md +1 -1
  81. package/src/resources/extensions/gsd/prompts/guided-plan-milestone.md +2 -2
  82. package/src/resources/extensions/gsd/prompts/plan-milestone.md +2 -2
  83. package/src/resources/extensions/gsd/prompts/plan-slice.md +1 -1
  84. package/src/resources/extensions/gsd/prompts/research-milestone.md +2 -2
  85. package/src/resources/extensions/gsd/prompts/run-uat.md +2 -2
  86. package/src/resources/extensions/gsd/repo-identity.ts +5 -2
  87. package/src/resources/extensions/gsd/state.ts +33 -1
  88. package/src/resources/extensions/gsd/tests/inherited-repo-home-dir.test.ts +70 -0
  89. package/src/resources/extensions/gsd/tests/plan-slice-prompt.test.ts +40 -0
  90. package/src/resources/extensions/gsd/tests/run-uat.test.ts +25 -0
  91. package/src/resources/extensions/gsd/workflow-events.ts +1 -1
  92. /package/dist/web/standalone/.next/static/{P4nF4UcdATjrbNMBH_Ulh → VPcLnRF4BL8VoJEilBwlB}/_buildManifest.js +0 -0
  93. /package/dist/web/standalone/.next/static/{P4nF4UcdATjrbNMBH_Ulh → VPcLnRF4BL8VoJEilBwlB}/_ssgManifest.js +0 -0
@@ -61,6 +61,18 @@ test("plan-slice prompt: DB-backed tool names survive template substitution", ()
61
61
  assert.ok(result.includes("canonical write path"), "canonical write path language should survive substitution");
62
62
  });
63
63
 
64
+ test("plan-slice prompt: footer references gsd_plan_slice tool, not direct write", () => {
65
+ const result = loadPrompt("plan-slice", { ...BASE_VARS, commitInstruction: "Do not commit." });
66
+ assert.ok(
67
+ result.includes("MUST call `gsd_plan_slice`"),
68
+ "footer should instruct calling gsd_plan_slice tool",
69
+ );
70
+ assert.ok(
71
+ !result.includes("MUST write the file"),
72
+ "footer should not instruct direct file write",
73
+ );
74
+ });
75
+
64
76
  test("domain-work prompts use skillActivation placeholder", () => {
65
77
  const prompts = [
66
78
  "research-milestone",
@@ -174,6 +186,34 @@ test("research-milestone prompt substitutes skillActivation", () => {
174
186
  assert.ok(!result.includes("{{skillActivation}}"));
175
187
  });
176
188
 
189
+ test("research-milestone prompt references gsd_summary_save, not direct write", () => {
190
+ const result = loadPrompt("research-milestone", {
191
+ workingDirectory: "/tmp/test-project",
192
+ milestoneId: "M001",
193
+ milestoneTitle: "Test Milestone",
194
+ milestonePath: ".gsd/milestones/M001",
195
+ contextPath: ".gsd/milestones/M001/M001-CONTEXT.md",
196
+ outputPath: "/tmp/test-project/.gsd/milestones/M001/M001-RESEARCH.md",
197
+ inlinedContext: "Context",
198
+ skillDiscoveryMode: "manual",
199
+ skillDiscoveryInstructions: " Discover skills manually.",
200
+ skillActivation: "Load research skills first.",
201
+ });
202
+
203
+ assert.ok(
204
+ result.includes("gsd_summary_save"),
205
+ "research-milestone should reference gsd_summary_save tool",
206
+ );
207
+ assert.ok(
208
+ result.includes('artifact_type: "RESEARCH"'),
209
+ "research-milestone should specify RESEARCH artifact type",
210
+ );
211
+ assert.ok(
212
+ !result.includes("MUST write the file"),
213
+ "research-milestone should not instruct direct file write",
214
+ );
215
+ });
216
+
177
217
  test("research-slice prompt substitutes skillActivation", () => {
178
218
  const result = loadPrompt("research-slice", {
179
219
  workingDirectory: "/tmp/test-project",
@@ -228,6 +228,31 @@ test('(k) run-uat prompt template', () => {
228
228
  );
229
229
  });
230
230
 
231
+ test('(k2) run-uat prompt references gsd_summary_save, not direct write', () => {
232
+ const promptResult = loadPromptFromWorktree('run-uat', {
233
+ workingDirectory: '/tmp/test-project',
234
+ milestoneId: 'M001',
235
+ sliceId: 'S01',
236
+ uatPath: '.gsd/milestones/M001/slices/S01/S01-UAT.md',
237
+ uatResultPath: '.gsd/milestones/M001/slices/S01/S01-UAT-RESULT.md',
238
+ uatType: 'artifact-driven',
239
+ inlinedContext: '<!-- no context -->',
240
+ });
241
+
242
+ assert.ok(
243
+ promptResult.includes('gsd_summary_save'),
244
+ 'run-uat prompt should reference gsd_summary_save tool',
245
+ );
246
+ assert.ok(
247
+ promptResult.includes('artifact_type: "ASSESSMENT"'),
248
+ 'run-uat prompt should specify ASSESSMENT artifact type',
249
+ );
250
+ assert.ok(
251
+ !promptResult.includes('MUST write'),
252
+ 'run-uat prompt should not instruct direct file write in footer',
253
+ );
254
+ });
255
+
231
256
  test('(l) dispatch preconditions via resolveSliceFile', () => {
232
257
  const base = createFixtureBase();
233
258
  const uatContent = makeUatContent('artifact-driven');
@@ -40,7 +40,7 @@ export function appendEvent(
40
40
  event: Omit<WorkflowEvent, "hash" | "session_id"> & { actor_name?: string; trigger_reason?: string },
41
41
  ): void {
42
42
  const hash = createHash("sha256")
43
- .update(JSON.stringify({ cmd: event.cmd, params: event.params, ts: event.ts }))
43
+ .update(JSON.stringify({ cmd: event.cmd, params: event.params }))
44
44
  .digest("hex")
45
45
  .slice(0, 16);
46
46