gsd-pi 2.67.0-dev.4fb8afe → 2.67.0-dev.5399650

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 (133) hide show
  1. package/dist/resources/extensions/gsd/auto/session.js +6 -0
  2. package/dist/resources/extensions/gsd/auto.js +27 -0
  3. package/dist/resources/extensions/gsd/commands/handlers/core.js +38 -24
  4. package/dist/resources/extensions/gsd/commands/index.js +8 -1
  5. package/dist/resources/extensions/gsd/init-wizard.js +34 -0
  6. package/dist/resources/extensions/gsd/workflow-logger.js +18 -3
  7. package/dist/resources/extensions/gsd/workflow-mcp.js +38 -7
  8. package/dist/web/standalone/.next/BUILD_ID +1 -1
  9. package/dist/web/standalone/.next/app-path-routes-manifest.json +16 -16
  10. package/dist/web/standalone/.next/build-manifest.json +2 -2
  11. package/dist/web/standalone/.next/prerender-manifest.json +3 -3
  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 +16 -16
  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/package.json +4 -2
  41. package/packages/mcp-server/dist/cli.d.ts +9 -0
  42. package/packages/mcp-server/dist/cli.d.ts.map +1 -0
  43. package/packages/mcp-server/dist/cli.js +58 -0
  44. package/packages/mcp-server/dist/cli.js.map +1 -0
  45. package/packages/mcp-server/dist/index.d.ts +20 -0
  46. package/packages/mcp-server/dist/index.d.ts.map +1 -0
  47. package/packages/mcp-server/dist/index.js +14 -0
  48. package/packages/mcp-server/dist/index.js.map +1 -0
  49. package/packages/mcp-server/dist/readers/captures.d.ts +25 -0
  50. package/packages/mcp-server/dist/readers/captures.d.ts.map +1 -0
  51. package/packages/mcp-server/dist/readers/captures.js +67 -0
  52. package/packages/mcp-server/dist/readers/captures.js.map +1 -0
  53. package/packages/mcp-server/dist/readers/doctor-lite.d.ts +20 -0
  54. package/packages/mcp-server/dist/readers/doctor-lite.d.ts.map +1 -0
  55. package/packages/mcp-server/dist/readers/doctor-lite.js +173 -0
  56. package/packages/mcp-server/dist/readers/doctor-lite.js.map +1 -0
  57. package/packages/mcp-server/dist/readers/index.d.ts +14 -0
  58. package/packages/mcp-server/dist/readers/index.d.ts.map +1 -0
  59. package/packages/mcp-server/dist/readers/index.js +10 -0
  60. package/packages/mcp-server/dist/readers/index.js.map +1 -0
  61. package/packages/mcp-server/dist/readers/knowledge.d.ts +18 -0
  62. package/packages/mcp-server/dist/readers/knowledge.d.ts.map +1 -0
  63. package/packages/mcp-server/dist/readers/knowledge.js +82 -0
  64. package/packages/mcp-server/dist/readers/knowledge.js.map +1 -0
  65. package/packages/mcp-server/dist/readers/metrics.d.ts +32 -0
  66. package/packages/mcp-server/dist/readers/metrics.d.ts.map +1 -0
  67. package/packages/mcp-server/dist/readers/metrics.js +74 -0
  68. package/packages/mcp-server/dist/readers/metrics.js.map +1 -0
  69. package/packages/mcp-server/dist/readers/paths.d.ts +42 -0
  70. package/packages/mcp-server/dist/readers/paths.d.ts.map +1 -0
  71. package/packages/mcp-server/dist/readers/paths.js +199 -0
  72. package/packages/mcp-server/dist/readers/paths.js.map +1 -0
  73. package/packages/mcp-server/dist/readers/roadmap.d.ts +26 -0
  74. package/packages/mcp-server/dist/readers/roadmap.d.ts.map +1 -0
  75. package/packages/mcp-server/dist/readers/roadmap.js +194 -0
  76. package/packages/mcp-server/dist/readers/roadmap.js.map +1 -0
  77. package/packages/mcp-server/dist/readers/state.d.ts +43 -0
  78. package/packages/mcp-server/dist/readers/state.d.ts.map +1 -0
  79. package/packages/mcp-server/dist/readers/state.js +184 -0
  80. package/packages/mcp-server/dist/readers/state.js.map +1 -0
  81. package/packages/mcp-server/dist/server.d.ts +28 -0
  82. package/packages/mcp-server/dist/server.d.ts.map +1 -0
  83. package/packages/mcp-server/dist/server.js +319 -0
  84. package/packages/mcp-server/dist/server.js.map +1 -0
  85. package/packages/mcp-server/dist/session-manager.d.ts +54 -0
  86. package/packages/mcp-server/dist/session-manager.d.ts.map +1 -0
  87. package/packages/mcp-server/dist/session-manager.js +284 -0
  88. package/packages/mcp-server/dist/session-manager.js.map +1 -0
  89. package/packages/mcp-server/dist/types.d.ts +61 -0
  90. package/packages/mcp-server/dist/types.d.ts.map +1 -0
  91. package/packages/mcp-server/dist/types.js +11 -0
  92. package/packages/mcp-server/dist/types.js.map +1 -0
  93. package/packages/mcp-server/dist/workflow-tools.d.ts +9 -0
  94. package/packages/mcp-server/dist/workflow-tools.d.ts.map +1 -0
  95. package/packages/mcp-server/dist/workflow-tools.js +526 -0
  96. package/packages/mcp-server/dist/workflow-tools.js.map +1 -0
  97. package/packages/mcp-server/tsconfig.json +1 -1
  98. package/packages/rpc-client/dist/index.d.ts +10 -0
  99. package/packages/rpc-client/dist/index.d.ts.map +1 -0
  100. package/packages/rpc-client/dist/index.js +9 -0
  101. package/packages/rpc-client/dist/index.js.map +1 -0
  102. package/packages/rpc-client/dist/jsonl.d.ts +17 -0
  103. package/packages/rpc-client/dist/jsonl.d.ts.map +1 -0
  104. package/packages/rpc-client/dist/jsonl.js +54 -0
  105. package/packages/rpc-client/dist/jsonl.js.map +1 -0
  106. package/packages/rpc-client/dist/rpc-client.d.ts +259 -0
  107. package/packages/rpc-client/dist/rpc-client.d.ts.map +1 -0
  108. package/packages/rpc-client/dist/rpc-client.js +541 -0
  109. package/packages/rpc-client/dist/rpc-client.js.map +1 -0
  110. package/packages/rpc-client/dist/rpc-client.test.d.ts +2 -0
  111. package/packages/rpc-client/dist/rpc-client.test.d.ts.map +1 -0
  112. package/packages/rpc-client/dist/rpc-client.test.js +477 -0
  113. package/packages/rpc-client/dist/rpc-client.test.js.map +1 -0
  114. package/packages/rpc-client/dist/rpc-types.d.ts +566 -0
  115. package/packages/rpc-client/dist/rpc-types.d.ts.map +1 -0
  116. package/packages/rpc-client/dist/rpc-types.js +12 -0
  117. package/packages/rpc-client/dist/rpc-types.js.map +1 -0
  118. package/scripts/ensure-workspace-builds.cjs +2 -0
  119. package/scripts/link-workspace-packages.cjs +21 -14
  120. package/src/resources/extensions/gsd/auto/session.ts +6 -0
  121. package/src/resources/extensions/gsd/auto.ts +29 -1
  122. package/src/resources/extensions/gsd/commands/handlers/core.ts +52 -25
  123. package/src/resources/extensions/gsd/commands/index.ts +7 -1
  124. package/src/resources/extensions/gsd/init-wizard.ts +34 -0
  125. package/src/resources/extensions/gsd/tests/auto-project-root-env.test.ts +29 -0
  126. package/src/resources/extensions/gsd/tests/core-overlay-fallback.test.ts +101 -0
  127. package/src/resources/extensions/gsd/tests/init-bootstrap-completeness.test.ts +121 -0
  128. package/src/resources/extensions/gsd/tests/workflow-logger.test.ts +16 -0
  129. package/src/resources/extensions/gsd/tests/workflow-mcp.test.ts +39 -1
  130. package/src/resources/extensions/gsd/workflow-logger.ts +19 -3
  131. package/src/resources/extensions/gsd/workflow-mcp.ts +41 -7
  132. /package/dist/web/standalone/.next/static/{IBTC_HlEpTBAa4HXMoV_A → 6_QPFhgX0DQnDhhquheRc}/_buildManifest.js +0 -0
  133. /package/dist/web/standalone/.next/static/{IBTC_HlEpTBAa4HXMoV_A → 6_QPFhgX0DQnDhhquheRc}/_ssgManifest.js +0 -0
@@ -67,6 +67,7 @@ export interface LogEntry {
67
67
  const MAX_BUFFER = 100;
68
68
  let _buffer: LogEntry[] = [];
69
69
  let _auditBasePath: string | null = null;
70
+ let _stderrEnabled = true;
70
71
 
71
72
  /**
72
73
  * Set the base path for persistent audit log writes.
@@ -77,6 +78,16 @@ export function setLogBasePath(basePath: string): void {
77
78
  _auditBasePath = basePath;
78
79
  }
79
80
 
81
+ /**
82
+ * Enable or disable immediate stderr writes for workflow logs.
83
+ * Returns the previous setting so callers can restore it.
84
+ */
85
+ export function setStderrLoggingEnabled(enabled: boolean): boolean {
86
+ const previous = _stderrEnabled;
87
+ _stderrEnabled = enabled;
88
+ return previous;
89
+ }
90
+
80
91
  // ─── Public API ─────────────────────────────────────────────────────────
81
92
 
82
93
  /**
@@ -245,7 +256,7 @@ function _push(
245
256
  // Always forward to stderr so terminal watchers see it (see module header for policy)
246
257
  const prefix = severity === "error" ? "ERROR" : "WARN";
247
258
  const ctxStr = context ? ` ${JSON.stringify(context)}` : "";
248
- process.stderr.write(`[gsd:${component}] ${prefix}: ${message}${ctxStr}\n`);
259
+ _writeStderr(`[gsd:${component}] ${prefix}: ${message}${ctxStr}\n`);
249
260
 
250
261
  // Persist to notification store (both warnings and errors)
251
262
  try {
@@ -255,7 +266,7 @@ function _push(
255
266
  "workflow-logger",
256
267
  );
257
268
  } catch (notifErr) {
258
- process.stderr.write(`[gsd:workflow-logger] notification-store append failed: ${(notifErr as Error).message}\n`);
269
+ _writeStderr(`[gsd:workflow-logger] notification-store append failed: ${(notifErr as Error).message}\n`);
259
270
  }
260
271
 
261
272
  // Buffer for auto-loop to drain
@@ -275,11 +286,16 @@ function _push(
275
286
  appendFileSync(join(auditDir, "audit-log.jsonl"), JSON.stringify(sanitized) + "\n", "utf-8");
276
287
  } catch (auditErr) {
277
288
  // Best-effort — never let audit write failures bubble up
278
- process.stderr.write(`[gsd:audit] failed to persist log entry: ${(auditErr as Error).message}\n`);
289
+ _writeStderr(`[gsd:audit] failed to persist log entry: ${(auditErr as Error).message}\n`);
279
290
  }
280
291
  }
281
292
  }
282
293
 
294
+ function _writeStderr(message: string): void {
295
+ if (!_stderrEnabled) return;
296
+ process.stderr.write(message);
297
+ }
298
+
283
299
  /**
284
300
  * Sanitize a log entry before persisting to the audit JSONL file.
285
301
  * Strips potentially sensitive context (raw paths, cwd, full error text)
@@ -1,6 +1,7 @@
1
1
  import { execSync } from "node:child_process";
2
2
  import { existsSync } from "node:fs";
3
3
  import { resolve } from "node:path";
4
+ import { fileURLToPath } from "node:url";
4
5
 
5
6
  export interface WorkflowMcpLaunchConfig {
6
7
  name: string;
@@ -66,6 +67,21 @@ function lookupCommand(command: string, platform: NodeJS.Platform = process.plat
66
67
  }
67
68
  }
68
69
 
70
+ function getBundledWorkflowMcpCliPath(env: NodeJS.ProcessEnv): string | null {
71
+ if (!env.GSD_BIN_PATH?.trim() && !env.GSD_CLI_PATH?.trim()) return null;
72
+
73
+ const candidates = [
74
+ resolve(fileURLToPath(new URL("../../../../packages/mcp-server/dist/cli.js", import.meta.url))),
75
+ resolve(fileURLToPath(new URL("../../../../../packages/mcp-server/dist/cli.js", import.meta.url))),
76
+ ];
77
+
78
+ for (const bundledCli of candidates) {
79
+ if (existsSync(bundledCli)) return bundledCli;
80
+ }
81
+
82
+ return null;
83
+ }
84
+
69
85
  export function detectWorkflowMcpLaunchConfig(
70
86
  projectRoot = process.cwd(),
71
87
  env: NodeJS.ProcessEnv = process.env,
@@ -75,16 +91,19 @@ export function detectWorkflowMcpLaunchConfig(
75
91
  const explicitArgs = parseJsonEnv<unknown>(env, "GSD_WORKFLOW_MCP_ARGS");
76
92
  const explicitEnv = parseJsonEnv<Record<string, string>>(env, "GSD_WORKFLOW_MCP_ENV");
77
93
  const explicitCwd = env.GSD_WORKFLOW_MCP_CWD?.trim();
94
+ const gsdCliPath = env.GSD_CLI_PATH?.trim() || env.GSD_BIN_PATH?.trim();
78
95
  const workflowProjectRoot =
79
96
  explicitEnv?.GSD_WORKFLOW_PROJECT_ROOT?.trim() ||
80
97
  env.GSD_WORKFLOW_PROJECT_ROOT?.trim() ||
98
+ env.GSD_PROJECT_ROOT?.trim() ||
81
99
  explicitCwd ||
82
100
  projectRoot;
101
+ const resolvedWorkflowProjectRoot = resolve(workflowProjectRoot);
83
102
 
84
103
  if (explicitCommand) {
85
104
  const launchEnv = {
86
105
  ...(explicitEnv ?? {}),
87
- ...(env.GSD_CLI_PATH ? { GSD_CLI_PATH: env.GSD_CLI_PATH } : {}),
106
+ ...(gsdCliPath ? { GSD_CLI_PATH: gsdCliPath } : {}),
88
107
  GSD_PERSIST_WRITE_GATE_STATE: "1",
89
108
  GSD_WORKFLOW_PROJECT_ROOT: resolve(workflowProjectRoot),
90
109
  };
@@ -97,17 +116,32 @@ export function detectWorkflowMcpLaunchConfig(
97
116
  };
98
117
  }
99
118
 
100
- const distCli = resolve(projectRoot, "packages", "mcp-server", "dist", "cli.js");
119
+ const distCli = resolve(resolvedWorkflowProjectRoot, "packages", "mcp-server", "dist", "cli.js");
101
120
  if (existsSync(distCli)) {
102
121
  return {
103
122
  name,
104
123
  command: process.execPath,
105
124
  args: [distCli],
106
- cwd: projectRoot,
125
+ cwd: resolvedWorkflowProjectRoot,
126
+ env: {
127
+ ...(gsdCliPath ? { GSD_CLI_PATH: gsdCliPath } : {}),
128
+ GSD_PERSIST_WRITE_GATE_STATE: "1",
129
+ GSD_WORKFLOW_PROJECT_ROOT: resolvedWorkflowProjectRoot,
130
+ },
131
+ };
132
+ }
133
+
134
+ const bundledCli = getBundledWorkflowMcpCliPath(env);
135
+ if (bundledCli) {
136
+ return {
137
+ name,
138
+ command: process.execPath,
139
+ args: [bundledCli],
140
+ cwd: resolvedWorkflowProjectRoot,
107
141
  env: {
108
- ...(env.GSD_CLI_PATH ? { GSD_CLI_PATH: env.GSD_CLI_PATH } : {}),
142
+ ...(gsdCliPath ? { GSD_CLI_PATH: gsdCliPath } : {}),
109
143
  GSD_PERSIST_WRITE_GATE_STATE: "1",
110
- GSD_WORKFLOW_PROJECT_ROOT: resolve(projectRoot),
144
+ GSD_WORKFLOW_PROJECT_ROOT: resolvedWorkflowProjectRoot,
111
145
  },
112
146
  };
113
147
  }
@@ -118,9 +152,9 @@ export function detectWorkflowMcpLaunchConfig(
118
152
  name,
119
153
  command: binPath,
120
154
  env: {
121
- ...(env.GSD_CLI_PATH ? { GSD_CLI_PATH: env.GSD_CLI_PATH } : {}),
155
+ ...(gsdCliPath ? { GSD_CLI_PATH: gsdCliPath } : {}),
122
156
  GSD_PERSIST_WRITE_GATE_STATE: "1",
123
- GSD_WORKFLOW_PROJECT_ROOT: resolve(projectRoot),
157
+ GSD_WORKFLOW_PROJECT_ROOT: resolvedWorkflowProjectRoot,
124
158
  },
125
159
  };
126
160
  }