gsd-pi 2.82.0-dev.3709f22a5 → 2.82.0-dev.3a3c6509d

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 (152) hide show
  1. package/README.md +1 -1
  2. package/dist/resources/.managed-resources-content-hash +1 -1
  3. package/dist/resources/extensions/claude-code-cli/stream-adapter.js +1 -1
  4. package/dist/resources/extensions/gsd/auto/phases.js +53 -29
  5. package/dist/resources/extensions/gsd/auto-direct-dispatch.js +1 -0
  6. package/dist/resources/extensions/gsd/auto-dispatch.js +12 -18
  7. package/dist/resources/extensions/gsd/auto-post-unit.js +1 -1
  8. package/dist/resources/extensions/gsd/auto-recovery.js +40 -13
  9. package/dist/resources/extensions/gsd/auto-start.js +3 -3
  10. package/dist/resources/extensions/gsd/auto-verification.js +17 -4
  11. package/dist/resources/extensions/gsd/auto-worktree.js +65 -9
  12. package/dist/resources/extensions/gsd/auto.js +0 -1
  13. package/dist/resources/extensions/gsd/bootstrap/agent-end-recovery.js +6 -1
  14. package/dist/resources/extensions/gsd/bootstrap/db-tools.js +1 -1
  15. package/dist/resources/extensions/gsd/bootstrap/write-gate.js +1 -1
  16. package/dist/resources/extensions/gsd/commands-prefs-wizard.js +7 -2
  17. package/dist/resources/extensions/gsd/crash-recovery.js +16 -4
  18. package/dist/resources/extensions/gsd/db/milestone-leases.js +24 -0
  19. package/dist/resources/extensions/gsd/forensics.js +3 -3
  20. package/dist/resources/extensions/gsd/git-service.js +6 -2
  21. package/dist/resources/extensions/gsd/gsd-db.js +20 -6
  22. package/dist/resources/extensions/gsd/guided-flow-queue.js +4 -3
  23. package/dist/resources/extensions/gsd/guided-flow.js +8 -5
  24. package/dist/resources/extensions/gsd/queue-reorder-ui.js +30 -13
  25. package/dist/resources/extensions/gsd/state.js +1 -1
  26. package/dist/resources/extensions/gsd/status-guards.js +7 -0
  27. package/dist/resources/extensions/gsd/workflow-mcp.js +17 -1
  28. package/dist/resources/extensions/gsd/worktree-manager.js +1 -1
  29. package/dist/tsconfig.extensions.tsbuildinfo +1 -1
  30. package/dist/web/standalone/.next/BUILD_ID +1 -1
  31. package/dist/web/standalone/.next/app-path-routes-manifest.json +9 -9
  32. package/dist/web/standalone/.next/build-manifest.json +2 -2
  33. package/dist/web/standalone/.next/prerender-manifest.json +3 -3
  34. package/dist/web/standalone/.next/server/app/_global-error.html +1 -1
  35. package/dist/web/standalone/.next/server/app/_global-error.rsc +1 -1
  36. package/dist/web/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  37. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  38. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  39. package/dist/web/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  40. package/dist/web/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  41. package/dist/web/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  42. package/dist/web/standalone/.next/server/app/_not-found.html +1 -1
  43. package/dist/web/standalone/.next/server/app/_not-found.rsc +1 -1
  44. package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  45. package/dist/web/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  46. package/dist/web/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  47. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  48. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  49. package/dist/web/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  50. package/dist/web/standalone/.next/server/app/api/browse-directories/route.js +1 -1
  51. package/dist/web/standalone/.next/server/app/index.html +1 -1
  52. package/dist/web/standalone/.next/server/app/index.rsc +1 -1
  53. package/dist/web/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  54. package/dist/web/standalone/.next/server/app/index.segments/_full.segment.rsc +1 -1
  55. package/dist/web/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  56. package/dist/web/standalone/.next/server/app/index.segments/_index.segment.rsc +1 -1
  57. package/dist/web/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  58. package/dist/web/standalone/.next/server/app-paths-manifest.json +9 -9
  59. package/dist/web/standalone/.next/server/middleware-build-manifest.js +1 -1
  60. package/dist/web/standalone/.next/server/pages/404.html +1 -1
  61. package/dist/web/standalone/.next/server/pages/500.html +1 -1
  62. package/dist/web/standalone/.next/server/server-reference-manifest.json +1 -1
  63. package/package.json +1 -1
  64. package/packages/pi-ai/dist/providers/google-gemini-cli.d.ts.map +1 -1
  65. package/packages/pi-ai/dist/providers/google-gemini-cli.js +5 -0
  66. package/packages/pi-ai/dist/providers/google-gemini-cli.js.map +1 -1
  67. package/packages/pi-ai/dist/providers/google-gemini-cli.test.d.ts +2 -0
  68. package/packages/pi-ai/dist/providers/google-gemini-cli.test.d.ts.map +1 -0
  69. package/packages/pi-ai/dist/providers/google-gemini-cli.test.js +41 -0
  70. package/packages/pi-ai/dist/providers/google-gemini-cli.test.js.map +1 -0
  71. package/packages/pi-ai/src/providers/google-gemini-cli.test.ts +49 -0
  72. package/packages/pi-ai/src/providers/google-gemini-cli.ts +7 -0
  73. package/packages/pi-ai/tsconfig.tsbuildinfo +1 -1
  74. package/packages/pi-coding-agent/dist/core/chat-controller-ordering.test.js +44 -3
  75. package/packages/pi-coding-agent/dist/core/chat-controller-ordering.test.js.map +1 -1
  76. package/packages/pi-coding-agent/dist/core/sdk.js +1 -1
  77. package/packages/pi-coding-agent/dist/core/sdk.js.map +1 -1
  78. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.d.ts.map +1 -1
  79. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.js +71 -97
  80. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.js.map +1 -1
  81. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode-ordering.test.js +12 -0
  82. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode-ordering.test.js.map +1 -1
  83. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  84. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js +19 -8
  85. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js.map +1 -1
  86. package/packages/pi-coding-agent/src/core/chat-controller-ordering.test.ts +53 -3
  87. package/packages/pi-coding-agent/src/core/sdk.ts +1 -1
  88. package/packages/pi-coding-agent/src/modes/interactive/controllers/chat-controller.ts +75 -102
  89. package/packages/pi-coding-agent/src/modes/interactive/interactive-mode-ordering.test.ts +14 -0
  90. package/packages/pi-coding-agent/src/modes/interactive/interactive-mode.ts +23 -8
  91. package/packages/pi-coding-agent/tsconfig.tsbuildinfo +1 -1
  92. package/packages/pi-tui/dist/__tests__/terminal.test.d.ts +2 -0
  93. package/packages/pi-tui/dist/__tests__/terminal.test.d.ts.map +1 -0
  94. package/packages/pi-tui/dist/__tests__/terminal.test.js +103 -0
  95. package/packages/pi-tui/dist/__tests__/terminal.test.js.map +1 -0
  96. package/packages/pi-tui/dist/terminal.d.ts +2 -0
  97. package/packages/pi-tui/dist/terminal.d.ts.map +1 -1
  98. package/packages/pi-tui/dist/terminal.js +12 -0
  99. package/packages/pi-tui/dist/terminal.js.map +1 -1
  100. package/packages/pi-tui/src/__tests__/terminal.test.ts +121 -0
  101. package/packages/pi-tui/src/terminal.ts +11 -0
  102. package/packages/pi-tui/tsconfig.tsbuildinfo +1 -1
  103. package/src/resources/extensions/claude-code-cli/stream-adapter.ts +1 -1
  104. package/src/resources/extensions/claude-code-cli/tests/stream-adapter.test.ts +9 -0
  105. package/src/resources/extensions/gsd/auto/phases.ts +60 -36
  106. package/src/resources/extensions/gsd/auto-direct-dispatch.ts +1 -0
  107. package/src/resources/extensions/gsd/auto-dispatch.ts +12 -18
  108. package/src/resources/extensions/gsd/auto-post-unit.ts +1 -1
  109. package/src/resources/extensions/gsd/auto-recovery.ts +45 -11
  110. package/src/resources/extensions/gsd/auto-start.ts +2 -3
  111. package/src/resources/extensions/gsd/auto-verification.ts +22 -2
  112. package/src/resources/extensions/gsd/auto-worktree.ts +74 -9
  113. package/src/resources/extensions/gsd/auto.ts +0 -1
  114. package/src/resources/extensions/gsd/bootstrap/agent-end-recovery.ts +9 -1
  115. package/src/resources/extensions/gsd/bootstrap/db-tools.ts +1 -1
  116. package/src/resources/extensions/gsd/bootstrap/write-gate.ts +1 -1
  117. package/src/resources/extensions/gsd/commands-prefs-wizard.ts +8 -3
  118. package/src/resources/extensions/gsd/crash-recovery.ts +16 -2
  119. package/src/resources/extensions/gsd/db/milestone-leases.ts +26 -0
  120. package/src/resources/extensions/gsd/forensics.ts +3 -3
  121. package/src/resources/extensions/gsd/git-service.ts +6 -3
  122. package/src/resources/extensions/gsd/gsd-db.ts +18 -6
  123. package/src/resources/extensions/gsd/guided-flow-queue.ts +4 -3
  124. package/src/resources/extensions/gsd/guided-flow.ts +8 -5
  125. package/src/resources/extensions/gsd/queue-reorder-ui.ts +31 -13
  126. package/src/resources/extensions/gsd/state.ts +1 -1
  127. package/src/resources/extensions/gsd/status-guards.ts +8 -0
  128. package/src/resources/extensions/gsd/tests/auto-loop.test.ts +2 -0
  129. package/src/resources/extensions/gsd/tests/auto-paused-ui-cleanup.test.ts +29 -1
  130. package/src/resources/extensions/gsd/tests/auto-recovery.test.ts +76 -5
  131. package/src/resources/extensions/gsd/tests/checkout-branch-stash-guard.test.ts +87 -0
  132. package/src/resources/extensions/gsd/tests/crash-recovery-via-db.test.ts +43 -0
  133. package/src/resources/extensions/gsd/tests/custom-engine-loop-integration.test.ts +2 -0
  134. package/src/resources/extensions/gsd/tests/dispatch-complete-milestone-guard.test.ts +27 -0
  135. package/src/resources/extensions/gsd/tests/gsd-db.test.ts +11 -0
  136. package/src/resources/extensions/gsd/tests/integration/git-service.test.ts +9 -0
  137. package/src/resources/extensions/gsd/tests/journal-integration.test.ts +46 -0
  138. package/src/resources/extensions/gsd/tests/merge-db-cycle.test.ts +179 -0
  139. package/src/resources/extensions/gsd/tests/pipeline-variant-dispatch.test.ts +2 -1
  140. package/src/resources/extensions/gsd/tests/prefs-wizard-coverage.test.ts +59 -0
  141. package/src/resources/extensions/gsd/tests/provider-errors.test.ts +18 -1
  142. package/src/resources/extensions/gsd/tests/queue-reorder-ui.test.ts +54 -0
  143. package/src/resources/extensions/gsd/tests/remediation-completion-guard.test.ts +43 -0
  144. package/src/resources/extensions/gsd/tests/run-uat-replay-cap.test.ts +2 -3
  145. package/src/resources/extensions/gsd/tests/status-guards.test.ts +13 -1
  146. package/src/resources/extensions/gsd/tests/unit-context-manifest.test.ts +17 -0
  147. package/src/resources/extensions/gsd/tests/validate-milestone-stuck-guard.test.ts +29 -2
  148. package/src/resources/extensions/gsd/tests/workflow-mcp.test.ts +18 -0
  149. package/src/resources/extensions/gsd/workflow-mcp.ts +18 -1
  150. package/src/resources/extensions/gsd/worktree-manager.ts +1 -1
  151. /package/dist/web/standalone/.next/static/{kkGf3_VaPFkiDNV_D7Dtl → O6femb9LLl3nlgsDaYwS-}/_buildManifest.js +0 -0
  152. /package/dist/web/standalone/.next/static/{kkGf3_VaPFkiDNV_D7Dtl → O6femb9LLl3nlgsDaYwS-}/_ssgManifest.js +0 -0
@@ -1,3 +1,5 @@
1
+ // Project/App: GSD-2
2
+ // File Purpose: Regression tests for streamed interactive chat ordering.
1
3
  import assert from "node:assert/strict";
2
4
  import { test } from "node:test";
3
5
  import { handleAgentEvent } from "../modes/interactive/controllers/chat-controller.js";
@@ -91,9 +93,7 @@ function createHost() {
91
93
  };
92
94
  return host;
93
95
  }
94
- test("chat-controller renders content blocks in content[] index order (tool-first stream)", async () => {
95
- // ToolExecutionComponent uses the global theme singleton.
96
- // Install a minimal no-op theme implementation for this unit test.
96
+ function installTheme() {
97
97
  globalThis[Symbol.for("@gsd/pi-coding-agent:theme")] = {
98
98
  fg: (_key, text) => text,
99
99
  bg: (_key, text) => text,
@@ -101,6 +101,11 @@ test("chat-controller renders content blocks in content[] index order (tool-firs
101
101
  italic: (text) => text,
102
102
  truncate: (text) => text,
103
103
  };
104
+ }
105
+ test("chat-controller renders content blocks in content[] index order (tool-first stream)", async () => {
106
+ // ToolExecutionComponent uses the global theme singleton.
107
+ // Install a minimal no-op theme implementation for this unit test.
108
+ installTheme();
104
109
  const host = createHost();
105
110
  const toolId = "mcp-tool-1";
106
111
  const toolCall = {
@@ -147,6 +152,42 @@ test("chat-controller renders content blocks in content[] index order (tool-firs
147
152
  assert.equal(host.chatContainer.children[0]?.constructor?.name, "ToolExecutionComponent");
148
153
  assert.equal(host.chatContainer.children[1]?.constructor?.name, "AssistantMessageComponent");
149
154
  });
155
+ test("chat-controller skips empty GPT reasoning blocks before tool-only turns", async () => {
156
+ installTheme();
157
+ const host = createHost();
158
+ host.getMarkdownThemeWithSettings = () => ({});
159
+ const toolId = "gpt-tool-1";
160
+ const toolCall = {
161
+ type: "toolCall",
162
+ id: toolId,
163
+ name: "read",
164
+ arguments: { filePath: "todo.js" },
165
+ };
166
+ const content = [
167
+ { type: "thinking", thinking: "", thinkingSignature: "encrypted" },
168
+ toolCall,
169
+ ];
170
+ await handleAgentEvent(host, { type: "message_start", message: makeAssistant([]) });
171
+ await handleAgentEvent(host, {
172
+ type: "message_update",
173
+ message: makeAssistant(content),
174
+ assistantMessageEvent: {
175
+ type: "toolcall_end",
176
+ contentIndex: 1,
177
+ toolCall: {
178
+ ...toolCall,
179
+ externalResult: {
180
+ content: [{ type: "text", text: "todo contents" }],
181
+ details: {},
182
+ isError: false,
183
+ },
184
+ },
185
+ partial: makeAssistant(content),
186
+ },
187
+ });
188
+ assert.equal(host.chatContainer.children.length, 1, "empty reasoning should not create a blank assistant block");
189
+ assert.equal(host.chatContainer.children[0]?.constructor?.name, "ToolExecutionComponent");
190
+ });
150
191
  test("chat-controller renders serverToolUse before trailing text matching content[] index order", async () => {
151
192
  globalThis[Symbol.for("@gsd/pi-coding-agent:theme")] = {
152
193
  fg: (_key, text) => text,