gsd-pi 2.70.1-dev.3591dcf → 2.70.1-dev.3a83e16

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 (145) hide show
  1. package/dist/resources/extensions/claude-code-cli/stream-adapter.js +129 -30
  2. package/dist/resources/extensions/get-secrets-from-user.js +17 -1
  3. package/dist/resources/extensions/gsd/auto-start.js +3 -11
  4. package/dist/resources/extensions/gsd/bootstrap/register-hooks.js +4 -0
  5. package/dist/resources/extensions/gsd/custom-workflow-engine.js +16 -12
  6. package/dist/resources/extensions/gsd/file-lock.js +60 -0
  7. package/dist/resources/extensions/gsd/guided-flow.js +12 -10
  8. package/dist/resources/extensions/gsd/init-wizard.js +3 -11
  9. package/dist/resources/extensions/gsd/prompts/discuss.md +31 -13
  10. package/dist/resources/extensions/gsd/state.js +234 -332
  11. package/dist/resources/extensions/gsd/tools/workflow-tool-executors.js +34 -0
  12. package/dist/resources/extensions/gsd/workflow-events.js +25 -13
  13. package/dist/resources/extensions/gsd/workflow-mcp-auto-prep.js +56 -0
  14. package/dist/resources/extensions/gsd/workflow-mcp.js +1 -1
  15. package/dist/web/standalone/.next/BUILD_ID +1 -1
  16. package/dist/web/standalone/.next/app-path-routes-manifest.json +11 -11
  17. package/dist/web/standalone/.next/build-manifest.json +3 -3
  18. package/dist/web/standalone/.next/prerender-manifest.json +3 -3
  19. package/dist/web/standalone/.next/react-loadable-manifest.json +1 -1
  20. package/dist/web/standalone/.next/server/app/_global-error.html +1 -1
  21. package/dist/web/standalone/.next/server/app/_global-error.rsc +1 -1
  22. package/dist/web/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  23. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  24. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  25. package/dist/web/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  26. package/dist/web/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  27. package/dist/web/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  28. package/dist/web/standalone/.next/server/app/_not-found.html +1 -1
  29. package/dist/web/standalone/.next/server/app/_not-found.rsc +1 -1
  30. package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  31. package/dist/web/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  32. package/dist/web/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  33. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  34. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  35. package/dist/web/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  36. package/dist/web/standalone/.next/server/app/index.html +1 -1
  37. package/dist/web/standalone/.next/server/app/index.rsc +1 -1
  38. package/dist/web/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  39. package/dist/web/standalone/.next/server/app/index.segments/_full.segment.rsc +1 -1
  40. package/dist/web/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  41. package/dist/web/standalone/.next/server/app/index.segments/_index.segment.rsc +1 -1
  42. package/dist/web/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  43. package/dist/web/standalone/.next/server/app-paths-manifest.json +11 -11
  44. package/dist/web/standalone/.next/server/middleware-build-manifest.js +1 -1
  45. package/dist/web/standalone/.next/server/middleware-react-loadable-manifest.js +1 -1
  46. package/dist/web/standalone/.next/server/pages/404.html +1 -1
  47. package/dist/web/standalone/.next/server/pages/500.html +1 -1
  48. package/dist/web/standalone/.next/server/server-reference-manifest.json +1 -1
  49. package/dist/web/standalone/.next/static/chunks/2826.dd3dc8bbd3025fa5.js +9 -0
  50. package/dist/web/standalone/.next/static/chunks/{webpack-6e4d7e9a4f57bed4.js → webpack-b868033a5834586d.js} +1 -1
  51. package/package.json +1 -1
  52. package/packages/mcp-server/dist/env-writer.d.ts +39 -0
  53. package/packages/mcp-server/dist/env-writer.d.ts.map +1 -0
  54. package/packages/mcp-server/dist/env-writer.js +158 -0
  55. package/packages/mcp-server/dist/env-writer.js.map +1 -0
  56. package/packages/mcp-server/dist/server.d.ts +11 -2
  57. package/packages/mcp-server/dist/server.d.ts.map +1 -1
  58. package/packages/mcp-server/dist/server.js +102 -2
  59. package/packages/mcp-server/dist/server.js.map +1 -1
  60. package/packages/mcp-server/src/env-writer.test.ts +280 -0
  61. package/packages/mcp-server/src/env-writer.ts +183 -0
  62. package/packages/mcp-server/src/secure-env-collect.test.ts +265 -0
  63. package/packages/mcp-server/src/server.ts +137 -3
  64. package/packages/pi-coding-agent/dist/core/chat-controller-ordering.test.d.ts +2 -0
  65. package/packages/pi-coding-agent/dist/core/chat-controller-ordering.test.d.ts.map +1 -0
  66. package/packages/pi-coding-agent/dist/core/chat-controller-ordering.test.js +310 -0
  67. package/packages/pi-coding-agent/dist/core/chat-controller-ordering.test.js.map +1 -0
  68. package/packages/pi-coding-agent/dist/core/extensions/types.d.ts +2 -0
  69. package/packages/pi-coding-agent/dist/core/extensions/types.d.ts.map +1 -1
  70. package/packages/pi-coding-agent/dist/core/extensions/types.js.map +1 -1
  71. package/packages/pi-coding-agent/dist/modes/interactive/components/dynamic-border.d.ts +19 -2
  72. package/packages/pi-coding-agent/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -1
  73. package/packages/pi-coding-agent/dist/modes/interactive/components/dynamic-border.js +50 -1
  74. package/packages/pi-coding-agent/dist/modes/interactive/components/dynamic-border.js.map +1 -1
  75. package/packages/pi-coding-agent/dist/modes/interactive/components/extension-input.d.ts +1 -0
  76. package/packages/pi-coding-agent/dist/modes/interactive/components/extension-input.d.ts.map +1 -1
  77. package/packages/pi-coding-agent/dist/modes/interactive/components/extension-input.js +1 -0
  78. package/packages/pi-coding-agent/dist/modes/interactive/components/extension-input.js.map +1 -1
  79. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.d.ts.map +1 -1
  80. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.js +158 -23
  81. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.js.map +1 -1
  82. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode-state.d.ts +1 -0
  83. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode-state.d.ts.map +1 -1
  84. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode-state.js.map +1 -1
  85. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts +6 -0
  86. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  87. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js +58 -2
  88. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js.map +1 -1
  89. package/packages/pi-coding-agent/dist/modes/rpc/rpc-mode.js +1 -1
  90. package/packages/pi-coding-agent/dist/modes/rpc/rpc-mode.js.map +1 -1
  91. package/packages/pi-coding-agent/dist/modes/rpc/rpc-types.d.ts +1 -0
  92. package/packages/pi-coding-agent/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  93. package/packages/pi-coding-agent/dist/modes/rpc/rpc-types.js.map +1 -1
  94. package/packages/pi-coding-agent/src/core/chat-controller-ordering.test.ts +370 -0
  95. package/packages/pi-coding-agent/src/core/extensions/types.ts +2 -0
  96. package/packages/pi-coding-agent/src/modes/interactive/components/dynamic-border.ts +58 -2
  97. package/packages/pi-coding-agent/src/modes/interactive/components/extension-input.ts +2 -0
  98. package/packages/pi-coding-agent/src/modes/interactive/controllers/chat-controller.ts +189 -29
  99. package/packages/pi-coding-agent/src/modes/interactive/interactive-mode-state.ts +1 -0
  100. package/packages/pi-coding-agent/src/modes/interactive/interactive-mode.ts +66 -2
  101. package/packages/pi-coding-agent/src/modes/rpc/rpc-mode.ts +1 -1
  102. package/packages/pi-coding-agent/src/modes/rpc/rpc-types.ts +1 -0
  103. package/packages/pi-tui/dist/components/__tests__/input.test.js +9 -0
  104. package/packages/pi-tui/dist/components/__tests__/input.test.js.map +1 -1
  105. package/packages/pi-tui/dist/components/__tests__/markdown-maxlines.test.d.ts +2 -0
  106. package/packages/pi-tui/dist/components/__tests__/markdown-maxlines.test.d.ts.map +1 -0
  107. package/packages/pi-tui/dist/components/__tests__/markdown-maxlines.test.js +66 -0
  108. package/packages/pi-tui/dist/components/__tests__/markdown-maxlines.test.js.map +1 -0
  109. package/packages/pi-tui/dist/components/input.d.ts +2 -0
  110. package/packages/pi-tui/dist/components/input.d.ts.map +1 -1
  111. package/packages/pi-tui/dist/components/input.js +7 -4
  112. package/packages/pi-tui/dist/components/input.js.map +1 -1
  113. package/packages/pi-tui/dist/components/markdown.d.ts +3 -0
  114. package/packages/pi-tui/dist/components/markdown.d.ts.map +1 -1
  115. package/packages/pi-tui/dist/components/markdown.js +17 -1
  116. package/packages/pi-tui/dist/components/markdown.js.map +1 -1
  117. package/packages/pi-tui/src/components/__tests__/input.test.ts +11 -0
  118. package/packages/pi-tui/src/components/__tests__/markdown-maxlines.test.ts +75 -0
  119. package/packages/pi-tui/src/components/input.ts +7 -4
  120. package/packages/pi-tui/src/components/markdown.ts +22 -1
  121. package/src/resources/extensions/claude-code-cli/stream-adapter.ts +166 -31
  122. package/src/resources/extensions/claude-code-cli/tests/stream-adapter.test.ts +145 -0
  123. package/src/resources/extensions/get-secrets-from-user.ts +24 -1
  124. package/src/resources/extensions/gsd/auto-start.ts +3 -13
  125. package/src/resources/extensions/gsd/bootstrap/register-hooks.ts +4 -0
  126. package/src/resources/extensions/gsd/custom-workflow-engine.ts +19 -14
  127. package/src/resources/extensions/gsd/file-lock.ts +59 -0
  128. package/src/resources/extensions/gsd/guided-flow.ts +12 -9
  129. package/src/resources/extensions/gsd/init-wizard.ts +3 -13
  130. package/src/resources/extensions/gsd/prompts/discuss.md +31 -13
  131. package/src/resources/extensions/gsd/state.ts +274 -344
  132. package/src/resources/extensions/gsd/tests/derive-state-helpers.test.ts +436 -0
  133. package/src/resources/extensions/gsd/tests/discuss-incremental-persistence.test.ts +9 -0
  134. package/src/resources/extensions/gsd/tests/file-lock.test.ts +103 -0
  135. package/src/resources/extensions/gsd/tests/secure-env-collect.test.ts +45 -0
  136. package/src/resources/extensions/gsd/tests/workflow-mcp-auto-prep.test.ts +76 -0
  137. package/src/resources/extensions/gsd/tests/workflow-mcp.test.ts +155 -1
  138. package/src/resources/extensions/gsd/tests/workflow-tool-executors.test.ts +22 -0
  139. package/src/resources/extensions/gsd/tools/workflow-tool-executors.ts +60 -25
  140. package/src/resources/extensions/gsd/workflow-events.ts +34 -25
  141. package/src/resources/extensions/gsd/workflow-mcp-auto-prep.ts +76 -0
  142. package/src/resources/extensions/gsd/workflow-mcp.ts +1 -1
  143. package/dist/web/standalone/.next/static/chunks/2826.821e01b07d92e948.js +0 -9
  144. /package/dist/web/standalone/.next/static/{KdlODhIktLmeRKpLpHdKb → h7XsQBaK7XWBBC0Nu5f5P}/_buildManifest.js +0 -0
  145. /package/dist/web/standalone/.next/static/{KdlODhIktLmeRKpLpHdKb → h7XsQBaK7XWBBC0Nu5f5P}/_ssgManifest.js +0 -0
@@ -0,0 +1,76 @@
1
+ import type { ExtensionContext } from "@gsd/pi-coding-agent";
2
+
3
+ import {
4
+ type EnsureProjectWorkflowMcpConfigResult,
5
+ ensureProjectWorkflowMcpConfig,
6
+ } from "./mcp-project-config.js";
7
+ import { usesWorkflowMcpTransport } from "./workflow-mcp.js";
8
+
9
+ interface WorkflowMcpAutoPrepContext {
10
+ model?: { provider?: string; baseUrl?: string };
11
+ modelRegistry?: {
12
+ getProviderAuthMode?: (provider: string) => string;
13
+ isProviderRequestReady?: (provider: string) => boolean;
14
+ };
15
+ ui?: Pick<ExtensionContext["ui"], "notify">;
16
+ }
17
+
18
+ function getAuthModeSafe(
19
+ ctx: WorkflowMcpAutoPrepContext,
20
+ provider: string | undefined,
21
+ ): string | undefined {
22
+ if (!provider) return undefined;
23
+ const getAuthMode = ctx.modelRegistry?.getProviderAuthMode;
24
+ if (typeof getAuthMode !== "function") return undefined;
25
+ try {
26
+ return getAuthMode(provider);
27
+ } catch {
28
+ return undefined;
29
+ }
30
+ }
31
+
32
+ function hasClaudeCodeProvider(ctx: WorkflowMcpAutoPrepContext): boolean {
33
+ return getAuthModeSafe(ctx, "claude-code") === "externalCli";
34
+ }
35
+
36
+ function isClaudeCodeProviderReady(ctx: WorkflowMcpAutoPrepContext): boolean {
37
+ const readyCheck = ctx.modelRegistry?.isProviderRequestReady;
38
+ if (typeof readyCheck !== "function") return false;
39
+ try {
40
+ return readyCheck("claude-code");
41
+ } catch {
42
+ return false;
43
+ }
44
+ }
45
+
46
+ export function shouldAutoPrepareWorkflowMcp(ctx: WorkflowMcpAutoPrepContext): boolean {
47
+ const provider = ctx.model?.provider;
48
+ const baseUrl = ctx.model?.baseUrl;
49
+ const authMode = getAuthModeSafe(ctx, provider);
50
+
51
+ if (usesWorkflowMcpTransport(authMode as any, baseUrl)) return true;
52
+ if (provider === "claude-code") return true;
53
+ if (hasClaudeCodeProvider(ctx)) return true;
54
+ return isClaudeCodeProviderReady(ctx);
55
+ }
56
+
57
+ export function prepareWorkflowMcpForProject(
58
+ ctx: WorkflowMcpAutoPrepContext,
59
+ projectRoot: string,
60
+ ): EnsureProjectWorkflowMcpConfigResult | null {
61
+ if (!shouldAutoPrepareWorkflowMcp(ctx)) return null;
62
+
63
+ try {
64
+ const result = ensureProjectWorkflowMcpConfig(projectRoot);
65
+ if (result.status !== "unchanged") {
66
+ ctx.ui?.notify?.(`Claude Code MCP prepared at ${result.configPath}`, "info");
67
+ }
68
+ return result;
69
+ } catch (err) {
70
+ ctx.ui?.notify?.(
71
+ `Claude Code MCP prep failed: ${err instanceof Error ? err.message : String(err)}. Detected Claude Code model but no workflow MCP. Please run /gsd mcp init . from your project root.`,
72
+ "warning",
73
+ );
74
+ return null;
75
+ }
76
+ }
@@ -379,7 +379,7 @@ export function getWorkflowTransportSupportError(
379
379
  const providerLabel = `"${provider}"`;
380
380
 
381
381
  if (!launch) {
382
- return `Provider ${providerLabel} cannot run ${surface}${unitLabel}: the GSD workflow MCP server is not configured or discoverable. Configure GSD_WORKFLOW_MCP_COMMAND, build packages/mcp-server/dist/cli.js, or install gsd-mcp-server on PATH.`;
382
+ return `Provider ${providerLabel} cannot run ${surface}${unitLabel}: the GSD workflow MCP server is not configured or discoverable. Detected Claude Code model but no workflow MCP. Please run /gsd mcp init . from your project root. You can also configure GSD_WORKFLOW_MCP_COMMAND, build packages/mcp-server/dist/cli.js, or install gsd-mcp-server on PATH.`;
383
383
  }
384
384
 
385
385
  const missing = [...new Set(requiredTools)].filter((tool) => !MCP_WORKFLOW_TOOL_SURFACE.has(tool));