gsd-pi 2.82.0-dev.725028083 → 2.82.0-dev.c22380fc3
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/dist/resources/.managed-resources-content-hash +1 -1
- package/dist/resources/extensions/gsd/auto/orchestrator.js +113 -6
- package/dist/resources/extensions/gsd/auto.js +128 -52
- package/dist/resources/extensions/gsd/md-importer.js +1 -1
- package/dist/resources/extensions/gsd/migrate/command.js +5 -0
- package/dist/resources/extensions/gsd/migrate/preview.js +9 -0
- package/dist/resources/extensions/gsd/migrate/transformer.js +51 -4
- package/dist/resources/extensions/gsd/migrate/writer.js +11 -1
- package/dist/resources/extensions/gsd/tools/workflow-tool-executors.js +119 -0
- package/dist/resources/extensions/gsd/worktree-lifecycle.js +21 -2
- package/dist/tsconfig.extensions.tsbuildinfo +1 -1
- package/dist/web/standalone/.next/BUILD_ID +1 -1
- package/dist/web/standalone/.next/app-path-routes-manifest.json +14 -14
- package/dist/web/standalone/.next/build-manifest.json +2 -2
- package/dist/web/standalone/.next/prerender-manifest.json +3 -3
- package/dist/web/standalone/.next/server/app/_global-error.html +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- 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 +1 -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 +1 -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.html +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
- 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 +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.html +1 -1
- package/dist/web/standalone/.next/server/app/index.rsc +1 -1
- 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 +1 -1
- 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-paths-manifest.json +14 -14
- package/dist/web/standalone/.next/server/middleware-build-manifest.js +1 -1
- package/dist/web/standalone/.next/server/pages/404.html +1 -1
- package/dist/web/standalone/.next/server/pages/500.html +1 -1
- package/dist/web/standalone/.next/server/server-reference-manifest.json +1 -1
- package/package.json +1 -1
- package/packages/contracts/dist/rpc.test.js +7 -0
- package/packages/contracts/dist/rpc.test.js.map +1 -1
- package/packages/contracts/dist/workflow.d.ts +21 -0
- package/packages/contracts/dist/workflow.d.ts.map +1 -1
- package/packages/contracts/dist/workflow.js +24 -0
- package/packages/contracts/dist/workflow.js.map +1 -1
- package/packages/contracts/src/rpc.test.ts +8 -0
- package/packages/contracts/src/workflow.ts +24 -0
- package/packages/mcp-server/README.md +13 -4
- package/packages/mcp-server/dist/workflow-tools.d.ts +0 -3
- package/packages/mcp-server/dist/workflow-tools.d.ts.map +1 -1
- package/packages/mcp-server/dist/workflow-tools.js +80 -0
- package/packages/mcp-server/dist/workflow-tools.js.map +1 -1
- package/packages/mcp-server/src/workflow-tools.test.ts +22 -0
- package/packages/mcp-server/src/workflow-tools.ts +168 -0
- package/packages/mcp-server/tsconfig.tsbuildinfo +1 -1
- package/packages/pi-coding-agent/tsconfig.tsbuildinfo +1 -1
- package/packages/pi-tui/dist/tui.d.ts.map +1 -1
- package/packages/pi-tui/dist/tui.js +5 -0
- package/packages/pi-tui/dist/tui.js.map +1 -1
- package/packages/pi-tui/src/tui.ts +6 -0
- package/packages/pi-tui/tsconfig.tsbuildinfo +1 -1
- package/packages/rpc-client/tsconfig.tsbuildinfo +1 -1
- package/src/resources/extensions/gsd/auto/contracts.ts +46 -11
- package/src/resources/extensions/gsd/auto/orchestrator.ts +118 -6
- package/src/resources/extensions/gsd/auto.ts +136 -51
- package/src/resources/extensions/gsd/md-importer.ts +1 -1
- package/src/resources/extensions/gsd/migrate/command.ts +5 -0
- package/src/resources/extensions/gsd/migrate/preview.ts +10 -0
- package/src/resources/extensions/gsd/migrate/transformer.ts +58 -4
- package/src/resources/extensions/gsd/migrate/writer.ts +14 -1
- package/src/resources/extensions/gsd/tests/auto-orchestrator.test.ts +408 -4
- package/src/resources/extensions/gsd/tests/auto-paused-ui-cleanup.test.ts +6 -5
- package/src/resources/extensions/gsd/tests/auto-runtime-state.test.ts +4 -4
- package/src/resources/extensions/gsd/tests/integration/migrate-command.test.ts +48 -3
- package/src/resources/extensions/gsd/tests/migrate-transformer.test.ts +5 -1
- package/src/resources/extensions/gsd/tests/migrate-writer-integration.test.ts +6 -1
- package/src/resources/extensions/gsd/tests/state-corruption-2945.test.ts +6 -0
- package/src/resources/extensions/gsd/tests/worktree-lifecycle.test.ts +25 -0
- package/src/resources/extensions/gsd/tools/workflow-tool-executors.ts +135 -0
- package/src/resources/extensions/gsd/worktree-lifecycle.ts +20 -2
- /package/dist/web/standalone/.next/static/{KDRTXR-22LPCsa80X9dey → Wop3A7KRGyR06H3rla_1-}/_buildManifest.js +0 -0
- /package/dist/web/standalone/.next/static/{KDRTXR-22LPCsa80X9dey → Wop3A7KRGyR06H3rla_1-}/_ssgManifest.js +0 -0
|
@@ -87,18 +87,27 @@ The workflow MCP surface includes:
|
|
|
87
87
|
- `gsd_plan_slice`
|
|
88
88
|
- `gsd_plan_task`
|
|
89
89
|
- `gsd_replan_slice`
|
|
90
|
-
- `gsd_task_complete`
|
|
91
90
|
- `gsd_slice_complete`
|
|
92
91
|
- `gsd_skip_slice`
|
|
93
|
-
- `gsd_validate_milestone`
|
|
94
92
|
- `gsd_complete_milestone`
|
|
93
|
+
- `gsd_validate_milestone`
|
|
95
94
|
- `gsd_reassess_roadmap`
|
|
96
95
|
- `gsd_save_gate_result`
|
|
97
96
|
- `gsd_summary_save`
|
|
97
|
+
- `gsd_task_complete`
|
|
98
|
+
- `gsd_task_reopen`
|
|
99
|
+
- `gsd_slice_reopen`
|
|
100
|
+
- `gsd_milestone_reopen`
|
|
98
101
|
- `gsd_milestone_status`
|
|
99
102
|
- `gsd_journal_query`
|
|
100
|
-
|
|
101
|
-
|
|
103
|
+
- `gsd_exec`
|
|
104
|
+
- `gsd_exec_search`
|
|
105
|
+
- `gsd_resume`
|
|
106
|
+
- `gsd_capture_thought`
|
|
107
|
+
- `gsd_memory_query`
|
|
108
|
+
- `gsd_memory_graph`
|
|
109
|
+
|
|
110
|
+
**Aliases (kept for backwards compatibility — prefer the canonical name above):** `gsd_save_decision`, `gsd_update_requirement`, `gsd_save_requirement`, `gsd_generate_milestone_id`, `gsd_task_plan`, `gsd_slice_replan`, `gsd_complete_task`, `gsd_complete_slice`, `gsd_milestone_validate`, `gsd_milestone_complete`, `gsd_roadmap_reassess`, `gsd_reopen_task`, `gsd_reopen_slice`, `gsd_reopen_milestone`.
|
|
102
111
|
|
|
103
112
|
These tools use the same GSD workflow handlers as the native in-process tool path wherever a shared handler exists.
|
|
104
113
|
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Workflow MCP tools — exposes the core GSD mutation/read handlers over MCP.
|
|
3
|
-
*/
|
|
4
1
|
import { z } from "zod";
|
|
5
2
|
export declare function validateProjectDir(projectDir: string, env?: NodeJS.ProcessEnv): string;
|
|
6
3
|
export declare function _parseWorkflowArgsForTest<T extends {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-tools.d.ts","sourceRoot":"","sources":["../src/workflow-tools.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"workflow-tools.d.ts","sourceRoot":"","sources":["../src/workflow-tools.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA4TxB,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CA+BnG;AA8FD,wBAAgB,yBAAyB,CAAC,CAAC,SAAS;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,EACzE,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EACpB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,CAAC,GAAG;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,CAE5B;AAqID,4CAA4C;AAC5C,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,CAKrE;AA2GD,UAAU,aAAa;IACrB,IAAI,CACF,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,GAC3D,OAAO,CAAC;CACZ;AAED,eAAO,MAAM,mBAAmB,mBAA+B,CAAC;AA80BhE,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,aAAa,GAAG,IAAI,CAmqBrE"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
// Project/App: GSD-2
|
|
2
|
+
// File Purpose: Registers packaged workflow tools exposed by the GSD MCP server.
|
|
1
3
|
/**
|
|
2
4
|
* Workflow MCP tools — exposes the core GSD mutation/read handlers over MCP.
|
|
3
5
|
*/
|
|
@@ -204,6 +206,9 @@ function isWorkflowToolExecutors(value) {
|
|
|
204
206
|
"executeSaveGateResult",
|
|
205
207
|
"executeSummarySave",
|
|
206
208
|
"executeTaskComplete",
|
|
209
|
+
"executeTaskReopen",
|
|
210
|
+
"executeSliceReopen",
|
|
211
|
+
"executeMilestoneReopen",
|
|
207
212
|
];
|
|
208
213
|
return Array.isArray(record.SUPPORTED_SUMMARY_ARTIFACT_TYPES) &&
|
|
209
214
|
functionExports.every((key) => typeof record[key] === "function");
|
|
@@ -495,6 +500,21 @@ async function handleTaskComplete(projectDir, args) {
|
|
|
495
500
|
// handleReplanSlice) eliminates the recurrence risk by construction.
|
|
496
501
|
return adaptExecutorResult(await runSerializedWorkflowOperation(() => executeTaskComplete(args, projectDir)));
|
|
497
502
|
}
|
|
503
|
+
async function handleTaskReopen(projectDir, args) {
|
|
504
|
+
await enforceWorkflowWriteGate("gsd_task_reopen", projectDir, args.milestoneId);
|
|
505
|
+
const { executeTaskReopen } = await getWorkflowToolExecutors();
|
|
506
|
+
return adaptExecutorResult(await runSerializedWorkflowOperation(() => executeTaskReopen(args, projectDir)));
|
|
507
|
+
}
|
|
508
|
+
async function handleSliceReopen(projectDir, args) {
|
|
509
|
+
await enforceWorkflowWriteGate("gsd_slice_reopen", projectDir, args.milestoneId);
|
|
510
|
+
const { executeSliceReopen } = await getWorkflowToolExecutors();
|
|
511
|
+
return adaptExecutorResult(await runSerializedWorkflowOperation(() => executeSliceReopen(args, projectDir)));
|
|
512
|
+
}
|
|
513
|
+
async function handleMilestoneReopen(projectDir, args) {
|
|
514
|
+
await enforceWorkflowWriteGate("gsd_milestone_reopen", projectDir, args.milestoneId);
|
|
515
|
+
const { executeMilestoneReopen } = await getWorkflowToolExecutors();
|
|
516
|
+
return adaptExecutorResult(await runSerializedWorkflowOperation(() => executeMilestoneReopen(args, projectDir)));
|
|
517
|
+
}
|
|
498
518
|
async function handleSliceComplete(projectDir, args) {
|
|
499
519
|
await enforceWorkflowWriteGate("gsd_slice_complete", projectDir, args.milestoneId);
|
|
500
520
|
const { executeSliceComplete } = await getWorkflowToolExecutors();
|
|
@@ -964,6 +984,33 @@ const taskCompleteParams = {
|
|
|
964
984
|
])).optional().describe("Verification evidence entries"),
|
|
965
985
|
};
|
|
966
986
|
const taskCompleteSchema = z.object(taskCompleteParams);
|
|
987
|
+
const taskReopenParams = {
|
|
988
|
+
projectDir: projectDirParam,
|
|
989
|
+
taskId: nonEmptyString("taskId").describe("Task ID (e.g. T01)"),
|
|
990
|
+
sliceId: nonEmptyString("sliceId").describe("Slice ID (e.g. S01)"),
|
|
991
|
+
milestoneId: nonEmptyString("milestoneId").describe("Milestone ID (e.g. M001)"),
|
|
992
|
+
reason: z.string().optional().describe("Why the task is being reopened"),
|
|
993
|
+
actorName: z.string().optional().describe("Caller-provided actor identity for audit trail"),
|
|
994
|
+
triggerReason: z.string().optional().describe("Caller-provided reason this action was triggered"),
|
|
995
|
+
};
|
|
996
|
+
const taskReopenSchema = z.object(taskReopenParams);
|
|
997
|
+
const sliceReopenParams = {
|
|
998
|
+
projectDir: projectDirParam,
|
|
999
|
+
sliceId: nonEmptyString("sliceId").describe("Slice ID (e.g. S01)"),
|
|
1000
|
+
milestoneId: nonEmptyString("milestoneId").describe("Milestone ID (e.g. M001)"),
|
|
1001
|
+
reason: z.string().optional().describe("Why the slice is being reopened"),
|
|
1002
|
+
actorName: z.string().optional().describe("Caller-provided actor identity for audit trail"),
|
|
1003
|
+
triggerReason: z.string().optional().describe("Caller-provided reason this action was triggered"),
|
|
1004
|
+
};
|
|
1005
|
+
const sliceReopenSchema = z.object(sliceReopenParams);
|
|
1006
|
+
const milestoneReopenParams = {
|
|
1007
|
+
projectDir: projectDirParam,
|
|
1008
|
+
milestoneId: nonEmptyString("milestoneId").describe("Milestone ID (e.g. M001)"),
|
|
1009
|
+
reason: z.string().optional().describe("Why the milestone is being reopened"),
|
|
1010
|
+
actorName: z.string().optional().describe("Caller-provided actor identity for audit trail"),
|
|
1011
|
+
triggerReason: z.string().optional().describe("Caller-provided reason this action was triggered"),
|
|
1012
|
+
};
|
|
1013
|
+
const milestoneReopenSchema = z.object(milestoneReopenParams);
|
|
967
1014
|
const milestoneStatusParams = {
|
|
968
1015
|
projectDir: projectDirParam,
|
|
969
1016
|
milestoneId: z.string().describe("Milestone ID to query (e.g. M001)"),
|
|
@@ -1250,6 +1297,39 @@ export function registerWorkflowTools(realServer) {
|
|
|
1250
1297
|
const { projectDir, ...taskArgs } = parsed;
|
|
1251
1298
|
return handleTaskComplete(projectDir, taskArgs);
|
|
1252
1299
|
});
|
|
1300
|
+
server.tool("gsd_task_reopen", "Reset a completed task back to pending so it can be re-done.", taskReopenParams, async (args) => {
|
|
1301
|
+
const parsed = parseWorkflowArgs(taskReopenSchema, args);
|
|
1302
|
+
const { projectDir, ...taskArgs } = parsed;
|
|
1303
|
+
return handleTaskReopen(projectDir, taskArgs);
|
|
1304
|
+
});
|
|
1305
|
+
server.tool("gsd_reopen_task", "Alias for gsd_task_reopen. Reset a completed task back to pending so it can be re-done.", taskReopenParams, async (args) => {
|
|
1306
|
+
logAliasUsage("gsd_reopen_task", "gsd_task_reopen");
|
|
1307
|
+
const parsed = parseWorkflowArgs(taskReopenSchema, args);
|
|
1308
|
+
const { projectDir, ...taskArgs } = parsed;
|
|
1309
|
+
return handleTaskReopen(projectDir, taskArgs);
|
|
1310
|
+
});
|
|
1311
|
+
server.tool("gsd_slice_reopen", "Reset a completed slice back to in_progress and reset its tasks to pending.", sliceReopenParams, async (args) => {
|
|
1312
|
+
const parsed = parseWorkflowArgs(sliceReopenSchema, args);
|
|
1313
|
+
const { projectDir, ...sliceArgs } = parsed;
|
|
1314
|
+
return handleSliceReopen(projectDir, sliceArgs);
|
|
1315
|
+
});
|
|
1316
|
+
server.tool("gsd_reopen_slice", "Alias for gsd_slice_reopen. Reset a completed slice back to in_progress and reset its tasks to pending.", sliceReopenParams, async (args) => {
|
|
1317
|
+
logAliasUsage("gsd_reopen_slice", "gsd_slice_reopen");
|
|
1318
|
+
const parsed = parseWorkflowArgs(sliceReopenSchema, args);
|
|
1319
|
+
const { projectDir, ...sliceArgs } = parsed;
|
|
1320
|
+
return handleSliceReopen(projectDir, sliceArgs);
|
|
1321
|
+
});
|
|
1322
|
+
server.tool("gsd_milestone_reopen", "Reset a closed milestone back to active and reset its slices/tasks for rework.", milestoneReopenParams, async (args) => {
|
|
1323
|
+
const parsed = parseWorkflowArgs(milestoneReopenSchema, args);
|
|
1324
|
+
const { projectDir, ...milestoneArgs } = parsed;
|
|
1325
|
+
return handleMilestoneReopen(projectDir, milestoneArgs);
|
|
1326
|
+
});
|
|
1327
|
+
server.tool("gsd_reopen_milestone", "Alias for gsd_milestone_reopen. Reset a closed milestone back to active and reset its slices/tasks for rework.", milestoneReopenParams, async (args) => {
|
|
1328
|
+
logAliasUsage("gsd_reopen_milestone", "gsd_milestone_reopen");
|
|
1329
|
+
const parsed = parseWorkflowArgs(milestoneReopenSchema, args);
|
|
1330
|
+
const { projectDir, ...milestoneArgs } = parsed;
|
|
1331
|
+
return handleMilestoneReopen(projectDir, milestoneArgs);
|
|
1332
|
+
});
|
|
1253
1333
|
server.tool("gsd_milestone_status", "Read the current status of a milestone and all its slices from the GSD database.", milestoneStatusParams, async (args) => {
|
|
1254
1334
|
// gsd_milestone_status is a read-only query. In-process (query-tools.ts)
|
|
1255
1335
|
// does not apply the write-gate; MCP must match to avoid blocking reads
|