gsd-pi 2.78.1-dev.eccf86e27 → 2.79.0-dev.487011134
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/README.md +94 -47
- package/dist/resources/.managed-resources-content-hash +1 -1
- package/dist/resources/extensions/gsd/auto/phases.js +6 -1
- package/dist/resources/extensions/gsd/auto-dispatch.js +2 -0
- package/dist/resources/extensions/gsd/auto-prompts.js +52 -29
- package/dist/resources/extensions/gsd/auto-recovery.js +18 -3
- package/dist/resources/extensions/gsd/auto-start.js +3 -2
- package/dist/resources/extensions/gsd/bootstrap/exec-tools.js +2 -2
- package/dist/resources/extensions/gsd/bootstrap/register-hooks.js +33 -37
- package/dist/resources/extensions/gsd/commands/context.js +1 -1
- package/dist/resources/extensions/gsd/preferences-types.js +20 -2
- package/dist/resources/extensions/gsd/preferences-validation.js +3 -3
- package/dist/resources/extensions/gsd/tools/workflow-tool-executors.js +41 -2
- package/dist/resources/extensions/gsd/unit-context-composer.js +32 -0
- package/dist/resources/extensions/gsd/unit-context-manifest.js +21 -0
- package/dist/resources/extensions/gsd/uok/audit.js +23 -9
- package/dist/resources/extensions/gsd/uok/contracts.js +69 -1
- package/dist/resources/extensions/gsd/uok/dispatch-envelope.js +3 -0
- package/dist/resources/extensions/gsd/uok/loop-adapter.js +48 -33
- package/dist/resources/extensions/gsd/uok/timeline.js +125 -0
- package/dist/resources/extensions/shared/gsd-phase-state.js +45 -3
- 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 +12 -12
- 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 +12 -12
- 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/dist/web/standalone/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/index.js +1 -0
- package/dist/web/standalone/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/libvips-cpp.so.8.17.3 +0 -0
- package/dist/web/standalone/node_modules/@img/sharp-libvips-linuxmusl-x64/package.json +42 -0
- package/dist/web/standalone/node_modules/@img/sharp-libvips-linuxmusl-x64/versions.json +30 -0
- package/dist/web/standalone/node_modules/@img/sharp-linuxmusl-x64/LICENSE +191 -0
- package/dist/web/standalone/node_modules/@img/sharp-linuxmusl-x64/lib/sharp-linuxmusl-x64.node +0 -0
- package/dist/web/standalone/node_modules/@img/sharp-linuxmusl-x64/package.json +46 -0
- package/package.json +1 -1
- package/packages/daemon/package.json +2 -2
- package/packages/mcp-server/dist/workflow-tools.d.ts +1 -1
- package/packages/mcp-server/dist/workflow-tools.d.ts.map +1 -1
- package/packages/mcp-server/dist/workflow-tools.js +53 -0
- package/packages/mcp-server/dist/workflow-tools.js.map +1 -1
- package/packages/mcp-server/package.json +2 -2
- package/packages/mcp-server/src/workflow-tools.test.ts +116 -0
- package/packages/mcp-server/src/workflow-tools.ts +81 -0
- package/packages/mcp-server/tsconfig.tsbuildinfo +1 -1
- package/packages/native/package.json +1 -1
- package/packages/pi-agent-core/package.json +1 -1
- package/packages/pi-ai/package.json +1 -1
- package/packages/pi-coding-agent/package.json +1 -1
- package/packages/pi-tui/package.json +1 -1
- package/packages/rpc-client/package.json +1 -1
- package/pkg/package.json +1 -1
- package/src/resources/extensions/gsd/auto/phases.ts +6 -1
- package/src/resources/extensions/gsd/auto-dispatch.ts +1 -0
- package/src/resources/extensions/gsd/auto-prompts.ts +106 -28
- package/src/resources/extensions/gsd/auto-recovery.ts +17 -3
- package/src/resources/extensions/gsd/auto-start.ts +3 -2
- package/src/resources/extensions/gsd/bootstrap/exec-tools.ts +2 -2
- package/src/resources/extensions/gsd/bootstrap/register-hooks.ts +38 -38
- package/src/resources/extensions/gsd/commands/context.ts +1 -1
- package/src/resources/extensions/gsd/preferences-types.ts +23 -4
- package/src/resources/extensions/gsd/preferences-validation.ts +3 -3
- package/src/resources/extensions/gsd/tests/auto-recovery.test.ts +68 -1
- package/src/resources/extensions/gsd/tests/bootstrap-derive-state-db-open.test.ts +2 -2
- package/src/resources/extensions/gsd/tests/current-directory-root-homedir-fallback.test.ts +63 -0
- package/src/resources/extensions/gsd/tests/deep-planning-mode-dispatch.test.ts +42 -0
- package/src/resources/extensions/gsd/tests/deep-project-auto-loop.test.ts +63 -2
- package/src/resources/extensions/gsd/tests/guided-flow-prompt-consolidation.test.ts +14 -0
- package/src/resources/extensions/gsd/tests/parallel-skill-prompt-integration.test.ts +8 -0
- package/src/resources/extensions/gsd/tests/pre-exec-gate-loop.test.ts +3 -0
- package/src/resources/extensions/gsd/tests/register-hooks-compaction-checkpoint.test.ts +85 -0
- package/src/resources/extensions/gsd/tests/run-uat-composer.test.ts +2 -0
- package/src/resources/extensions/gsd/tests/subagent-model-dispatch.test.ts +59 -0
- package/src/resources/extensions/gsd/tests/unit-context-composer.test.ts +38 -0
- package/src/resources/extensions/gsd/tests/unit-context-manifest.test.ts +32 -0
- package/src/resources/extensions/gsd/tests/uok-contracts.test.ts +109 -1
- package/src/resources/extensions/gsd/tests/uok-loop-adapter-writer.test.ts +98 -0
- package/src/resources/extensions/gsd/tests/workflow-tool-executors.test.ts +100 -0
- package/src/resources/extensions/gsd/tests/worktree-path-injection.test.ts +3 -0
- package/src/resources/extensions/gsd/tools/workflow-tool-executors.ts +41 -1
- package/src/resources/extensions/gsd/unit-context-composer.ts +49 -0
- package/src/resources/extensions/gsd/unit-context-manifest.ts +34 -0
- package/src/resources/extensions/gsd/uok/audit.ts +25 -9
- package/src/resources/extensions/gsd/uok/contracts.ts +105 -0
- package/src/resources/extensions/gsd/uok/dispatch-envelope.ts +4 -0
- package/src/resources/extensions/gsd/uok/loop-adapter.ts +60 -45
- package/src/resources/extensions/gsd/uok/timeline.ts +158 -0
- package/src/resources/extensions/shared/gsd-phase-state.ts +56 -3
- package/src/resources/extensions/shared/tests/gsd-phase-state.test.ts +43 -1
- /package/dist/web/standalone/.next/static/{Y5UeGFkXTYM9WIQOWHkot → SVXdEZJVE2uo2osZ3EE21}/_buildManifest.js +0 -0
- /package/dist/web/standalone/.next/static/{Y5UeGFkXTYM9WIQOWHkot → SVXdEZJVE2uo2osZ3EE21}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@img/sharp-linuxmusl-x64",
|
|
3
|
+
"version": "0.34.5",
|
|
4
|
+
"description": "Prebuilt sharp for use with Linux (musl) x64",
|
|
5
|
+
"author": "Lovell Fuller <npm@lovell.info>",
|
|
6
|
+
"homepage": "https://sharp.pixelplumbing.com",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "git+https://github.com/lovell/sharp.git",
|
|
10
|
+
"directory": "npm/linuxmusl-x64"
|
|
11
|
+
},
|
|
12
|
+
"license": "Apache-2.0",
|
|
13
|
+
"funding": {
|
|
14
|
+
"url": "https://opencollective.com/libvips"
|
|
15
|
+
},
|
|
16
|
+
"preferUnplugged": true,
|
|
17
|
+
"optionalDependencies": {
|
|
18
|
+
"@img/sharp-libvips-linuxmusl-x64": "1.2.4"
|
|
19
|
+
},
|
|
20
|
+
"files": [
|
|
21
|
+
"lib"
|
|
22
|
+
],
|
|
23
|
+
"publishConfig": {
|
|
24
|
+
"access": "public"
|
|
25
|
+
},
|
|
26
|
+
"type": "commonjs",
|
|
27
|
+
"exports": {
|
|
28
|
+
"./sharp.node": "./lib/sharp-linuxmusl-x64.node",
|
|
29
|
+
"./package": "./package.json"
|
|
30
|
+
},
|
|
31
|
+
"engines": {
|
|
32
|
+
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
|
|
33
|
+
},
|
|
34
|
+
"config": {
|
|
35
|
+
"musl": ">=1.2.2"
|
|
36
|
+
},
|
|
37
|
+
"os": [
|
|
38
|
+
"linux"
|
|
39
|
+
],
|
|
40
|
+
"libc": [
|
|
41
|
+
"musl"
|
|
42
|
+
],
|
|
43
|
+
"cpu": [
|
|
44
|
+
"x64"
|
|
45
|
+
]
|
|
46
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gsd-build/daemon",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.79.0",
|
|
4
4
|
"description": "GSD daemon — background process for project monitoring and Discord integration",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
31
|
"@anthropic-ai/sdk": "^0.52.0",
|
|
32
|
-
"@gsd-build/rpc-client": "^2.
|
|
32
|
+
"@gsd-build/rpc-client": "^2.79.0",
|
|
33
33
|
"discord.js": "^14.25.1",
|
|
34
34
|
"yaml": "^2.8.0",
|
|
35
35
|
"zod": "^3.24.0"
|
|
@@ -13,7 +13,7 @@ export declare function _buildImportCandidates(relativePath: string): string[];
|
|
|
13
13
|
interface McpToolServer {
|
|
14
14
|
tool(name: string, description: string, params: Record<string, unknown>, handler: (args: Record<string, unknown>) => Promise<unknown>): unknown;
|
|
15
15
|
}
|
|
16
|
-
export declare const WORKFLOW_TOOL_NAMES: readonly ["gsd_decision_save", "gsd_save_decision", "gsd_requirement_update", "gsd_update_requirement", "gsd_requirement_save", "gsd_save_requirement", "gsd_milestone_generate_id", "gsd_generate_milestone_id", "gsd_plan_milestone", "gsd_plan_slice", "gsd_plan_task", "gsd_task_plan", "gsd_replan_slice", "gsd_slice_replan", "gsd_slice_complete", "gsd_complete_slice", "gsd_skip_slice", "gsd_complete_milestone", "gsd_milestone_complete", "gsd_validate_milestone", "gsd_milestone_validate", "gsd_reassess_roadmap", "gsd_roadmap_reassess", "gsd_save_gate_result", "gsd_summary_save", "gsd_task_complete", "gsd_complete_task", "gsd_milestone_status", "gsd_journal_query", "gsd_capture_thought", "gsd_memory_query", "gsd_memory_graph"];
|
|
16
|
+
export declare const WORKFLOW_TOOL_NAMES: readonly ["gsd_decision_save", "gsd_save_decision", "gsd_requirement_update", "gsd_update_requirement", "gsd_requirement_save", "gsd_save_requirement", "gsd_milestone_generate_id", "gsd_generate_milestone_id", "gsd_plan_milestone", "gsd_plan_slice", "gsd_plan_task", "gsd_task_plan", "gsd_replan_slice", "gsd_slice_replan", "gsd_slice_complete", "gsd_complete_slice", "gsd_skip_slice", "gsd_complete_milestone", "gsd_milestone_complete", "gsd_validate_milestone", "gsd_milestone_validate", "gsd_reassess_roadmap", "gsd_roadmap_reassess", "gsd_save_gate_result", "gsd_summary_save", "gsd_task_complete", "gsd_complete_task", "gsd_milestone_status", "gsd_journal_query", "gsd_exec", "gsd_exec_search", "gsd_resume", "gsd_capture_thought", "gsd_memory_query", "gsd_memory_graph"];
|
|
17
17
|
export declare function registerWorkflowTools(realServer: McpToolServer): void;
|
|
18
18
|
export {};
|
|
19
19
|
//# sourceMappingURL=workflow-tools.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-tools.d.ts","sourceRoot":"","sources":["../src/workflow-tools.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA6RxB,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;AAkID,4CAA4C;AAC5C,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,CAKrE;AAgGD,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,
|
|
1
|
+
{"version":3,"file":"workflow-tools.d.ts","sourceRoot":"","sources":["../src/workflow-tools.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA6RxB,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;AAkID,4CAA4C;AAC5C,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,CAKrE;AAgGD,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,0wBAuCtB,CAAC;AA+wBX,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,aAAa,GAAG,IAAI,CA2lBrE"}
|
|
@@ -380,6 +380,9 @@ export const WORKFLOW_TOOL_NAMES = [
|
|
|
380
380
|
"gsd_complete_task",
|
|
381
381
|
"gsd_milestone_status",
|
|
382
382
|
"gsd_journal_query",
|
|
383
|
+
"gsd_exec",
|
|
384
|
+
"gsd_exec_search",
|
|
385
|
+
"gsd_resume",
|
|
383
386
|
// ADR-013 step 3: memory-store tools exposed to external MCP clients.
|
|
384
387
|
// gsd_memory_graph is namespaced to avoid collision with the existing
|
|
385
388
|
// gsd_graph tool (project knowledge graph from .gsd/ artifacts).
|
|
@@ -1006,6 +1009,27 @@ const journalQueryParams = {
|
|
|
1006
1009
|
limit: z.number().optional().describe("Maximum entries to return"),
|
|
1007
1010
|
};
|
|
1008
1011
|
const journalQuerySchema = z.object(journalQueryParams);
|
|
1012
|
+
const execRuntimeSchema = z.enum(["bash", "node", "python"]);
|
|
1013
|
+
const execParams = {
|
|
1014
|
+
projectDir: projectDirParam,
|
|
1015
|
+
runtime: execRuntimeSchema.describe("Interpreter: bash (-c), node (-e), or python3 (-c)."),
|
|
1016
|
+
script: nonEmptyString("script").describe("Script body. Keep output small; full stdout/stderr are persisted under .gsd/exec."),
|
|
1017
|
+
purpose: z.string().optional().describe("Short label recorded in meta.json for later review."),
|
|
1018
|
+
timeout_ms: z.number().int().min(1_000).max(600_000).optional().describe("Per-invocation timeout in milliseconds."),
|
|
1019
|
+
};
|
|
1020
|
+
const execSchema = z.object(execParams);
|
|
1021
|
+
const execSearchParams = {
|
|
1022
|
+
projectDir: projectDirParam,
|
|
1023
|
+
query: z.string().optional().describe("Substring matched against id and purpose, case-insensitive."),
|
|
1024
|
+
runtime: execRuntimeSchema.optional().describe("Restrict to one runtime."),
|
|
1025
|
+
failing_only: z.boolean().optional().describe("Only non-zero exit codes and timeouts."),
|
|
1026
|
+
limit: z.number().int().min(1).max(200).optional().describe("Max results (default 20, cap 200)."),
|
|
1027
|
+
};
|
|
1028
|
+
const execSearchSchema = z.object(execSearchParams);
|
|
1029
|
+
const resumeParams = {
|
|
1030
|
+
projectDir: projectDirParam,
|
|
1031
|
+
};
|
|
1032
|
+
const resumeSchema = z.object(resumeParams);
|
|
1009
1033
|
/**
|
|
1010
1034
|
* Wrap a real McpToolServer so every handler we register catches thrown
|
|
1011
1035
|
* errors and returns a structured `{isError: true, content: [...]}` MCP
|
|
@@ -1272,6 +1296,35 @@ export function registerWorkflowTools(realServer) {
|
|
|
1272
1296
|
}
|
|
1273
1297
|
return { content: [{ type: "text", text: JSON.stringify(entries, null, 2) }] };
|
|
1274
1298
|
});
|
|
1299
|
+
server.tool("gsd_exec", "Run a short bash/node/python script in the project directory. Full stdout/stderr persist under .gsd/exec; only a digest returns to MCP.", execParams, async (args) => {
|
|
1300
|
+
const { projectDir, ...params } = parseWorkflowArgs(execSchema, args);
|
|
1301
|
+
await enforceWorkflowWriteGate("gsd_exec", projectDir);
|
|
1302
|
+
const [{ executeGsdExec }, { loadEffectiveGSDPreferences }] = await Promise.all([
|
|
1303
|
+
importLocalModule("../../../src/resources/extensions/gsd/tools/exec-tool.js"),
|
|
1304
|
+
importLocalModule("../../../src/resources/extensions/gsd/preferences.js"),
|
|
1305
|
+
]);
|
|
1306
|
+
let prefs = null;
|
|
1307
|
+
try {
|
|
1308
|
+
prefs = loadEffectiveGSDPreferences(projectDir);
|
|
1309
|
+
}
|
|
1310
|
+
catch {
|
|
1311
|
+
prefs = null;
|
|
1312
|
+
}
|
|
1313
|
+
return adaptExecutorResult(await runSerializedWorkflowOperation(() => executeGsdExec(params, {
|
|
1314
|
+
baseDir: projectDir,
|
|
1315
|
+
preferences: (prefs?.preferences ?? null),
|
|
1316
|
+
})));
|
|
1317
|
+
});
|
|
1318
|
+
server.tool("gsd_exec_search", "Search prior gsd_exec runs from .gsd/exec/*.meta.json without re-running them.", execSearchParams, async (args) => {
|
|
1319
|
+
const { projectDir, ...params } = parseWorkflowArgs(execSearchSchema, args);
|
|
1320
|
+
const { executeExecSearch } = await importLocalModule("../../../src/resources/extensions/gsd/tools/exec-search-tool.js");
|
|
1321
|
+
return adaptExecutorResult(executeExecSearch(params, { baseDir: projectDir }));
|
|
1322
|
+
});
|
|
1323
|
+
server.tool("gsd_resume", "Read .gsd/last-snapshot.md so agents can re-orient after compaction or session resume.", resumeParams, async (args) => {
|
|
1324
|
+
const { projectDir, ...params } = parseWorkflowArgs(resumeSchema, args);
|
|
1325
|
+
const { executeResume } = await importLocalModule("../../../src/resources/extensions/gsd/tools/resume-tool.js");
|
|
1326
|
+
return adaptExecutorResult(executeResume(params, { baseDir: projectDir }));
|
|
1327
|
+
});
|
|
1275
1328
|
// ─── ADR-013 step 3 — memory-store tools for external MCP clients ────────
|
|
1276
1329
|
//
|
|
1277
1330
|
// The same three tools the LLM sees in-process as `capture_thought`,
|