@opengsd/gsd-pi 1.3.0-dev.65546769 → 1.3.0-dev.72e3af2a

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 (357) hide show
  1. package/dist/resources/.managed-resources-content-hash +1 -1
  2. package/dist/resources/extensions/claude-code-cli/stream-adapter.js +11 -2
  3. package/dist/resources/extensions/google-cli/stream-adapter.js +82 -15
  4. package/dist/resources/extensions/gsd/artifact-verification.js +427 -0
  5. package/dist/resources/extensions/gsd/auto/orchestrator.js +12 -3
  6. package/dist/resources/extensions/gsd/auto/session.js +3 -0
  7. package/dist/resources/extensions/gsd/auto-artifact-paths.js +28 -1
  8. package/dist/resources/extensions/gsd/auto-dispatch.js +20 -19
  9. package/dist/resources/extensions/gsd/auto-prompts.js +26 -11
  10. package/dist/resources/extensions/gsd/auto-recovery.js +6 -507
  11. package/dist/resources/extensions/gsd/auto-runtime-state.js +4 -5
  12. package/dist/resources/extensions/gsd/auto-timeout-recovery.js +3 -3
  13. package/dist/resources/extensions/gsd/bootstrap/agent-end-recovery.js +103 -13
  14. package/dist/resources/extensions/gsd/bootstrap/core-session-tools.js +38 -0
  15. package/dist/resources/extensions/gsd/bootstrap/db-tools.js +6 -1
  16. package/dist/resources/extensions/gsd/bootstrap/exec-tools.js +2 -0
  17. package/dist/resources/extensions/gsd/bootstrap/register-hooks.js +10 -19
  18. package/dist/resources/extensions/gsd/bootstrap/system-context.js +46 -19
  19. package/dist/resources/extensions/gsd/bootstrap/tool-call-loop-guard.js +68 -10
  20. package/dist/resources/extensions/gsd/bootstrap/write-gate.js +1 -1
  21. package/dist/resources/extensions/gsd/commands-context.js +19 -1
  22. package/dist/resources/extensions/gsd/commands-prefs-wizard.js +16 -10
  23. package/dist/resources/extensions/gsd/commands-worktree.js +12 -10
  24. package/dist/resources/extensions/gsd/dashboard-overlay.js +32 -3
  25. package/dist/resources/extensions/gsd/db/queries.js +60 -0
  26. package/dist/resources/extensions/gsd/db-workspace.js +55 -3
  27. package/dist/resources/extensions/gsd/doctor-providers.js +92 -8
  28. package/dist/resources/extensions/gsd/exec-sandbox.js +45 -9
  29. package/dist/resources/extensions/gsd/forensics.js +2 -32
  30. package/dist/resources/extensions/gsd/git-service.js +4 -4
  31. package/dist/resources/extensions/gsd/guided-flow-queue.js +66 -5
  32. package/dist/resources/extensions/gsd/health-widget.js +55 -29
  33. package/dist/resources/extensions/gsd/layout-policy.js +3 -1
  34. package/dist/resources/extensions/gsd/markdown-renderer.js +8 -9
  35. package/dist/resources/extensions/gsd/memory-consolidation-scanner.js +44 -21
  36. package/dist/resources/extensions/gsd/migration-auto-check.js +22 -0
  37. package/dist/resources/extensions/gsd/milestone-ids.js +32 -2
  38. package/dist/resources/extensions/gsd/milestone-implementation-evidence.js +26 -20
  39. package/dist/resources/extensions/gsd/prompts/code-review.md +6 -4
  40. package/dist/resources/extensions/gsd/quick.js +45 -2
  41. package/dist/resources/extensions/gsd/session-forensics.js +11 -1
  42. package/dist/resources/extensions/gsd/skills/gsd-headless/references/commands.md +1 -1
  43. package/dist/resources/extensions/gsd/state/derive/cache.js +28 -0
  44. package/dist/resources/extensions/gsd/state/derive/db-open.js +39 -0
  45. package/dist/resources/extensions/gsd/state/derive/from-db.js +452 -0
  46. package/dist/resources/extensions/gsd/state/derive/index.js +75 -0
  47. package/dist/resources/extensions/gsd/state/derive/interrupted-work.js +21 -0
  48. package/dist/resources/extensions/gsd/state-reconciliation/drift/stale-render.js +45 -2
  49. package/dist/resources/extensions/gsd/state-reconciliation/index.js +48 -23
  50. package/dist/resources/extensions/gsd/state-reconciliation/registry.js +32 -28
  51. package/dist/resources/extensions/gsd/state.js +12 -611
  52. package/dist/resources/extensions/gsd/tools/complete-slice.js +2 -2
  53. package/dist/resources/extensions/gsd/tools/complete-task.js +43 -14
  54. package/dist/resources/extensions/gsd/tools/exec-tool.js +7 -2
  55. package/dist/resources/extensions/gsd/unit-context-composer.js +23 -7
  56. package/dist/resources/extensions/gsd/unit-registry.js +32 -4
  57. package/dist/resources/extensions/gsd/unmerged-milestone-guard.js +33 -3
  58. package/dist/resources/extensions/gsd/validation-block-guard.js +9 -4
  59. package/dist/resources/extensions/gsd/workflow-projections.js +19 -14
  60. package/dist/resources/extensions/gsd/workspace-git-preflight.js +30 -1
  61. package/dist/resources/extensions/gsd/worktree-manager.js +44 -2
  62. package/dist/tsconfig.extensions.tsbuildinfo +1 -1
  63. package/dist/web/standalone/.next/BUILD_ID +1 -1
  64. package/dist/web/standalone/.next/app-path-routes-manifest.json +10 -10
  65. package/dist/web/standalone/.next/build-manifest.json +3 -3
  66. package/dist/web/standalone/.next/prerender-manifest.json +3 -3
  67. package/dist/web/standalone/.next/react-loadable-manifest.json +9 -9
  68. package/dist/web/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  69. package/dist/web/standalone/.next/server/app/_global-error.html +1 -1
  70. package/dist/web/standalone/.next/server/app/_global-error.rsc +1 -1
  71. package/dist/web/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  72. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  73. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  74. package/dist/web/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  75. package/dist/web/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  76. package/dist/web/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  77. package/dist/web/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  78. package/dist/web/standalone/.next/server/app/_not-found.html +1 -1
  79. package/dist/web/standalone/.next/server/app/_not-found.rsc +1 -1
  80. package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  81. package/dist/web/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  82. package/dist/web/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  83. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  84. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  85. package/dist/web/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  86. package/dist/web/standalone/.next/server/app/api/visualizer/route.js +1 -1
  87. package/dist/web/standalone/.next/server/app/index.html +1 -1
  88. package/dist/web/standalone/.next/server/app/index.rsc +2 -2
  89. package/dist/web/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  90. package/dist/web/standalone/.next/server/app/index.segments/_full.segment.rsc +2 -2
  91. package/dist/web/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  92. package/dist/web/standalone/.next/server/app/index.segments/_index.segment.rsc +1 -1
  93. package/dist/web/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  94. package/dist/web/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  95. package/dist/web/standalone/.next/server/app-paths-manifest.json +10 -10
  96. package/dist/web/standalone/.next/server/middleware-build-manifest.js +1 -1
  97. package/dist/web/standalone/.next/server/middleware-react-loadable-manifest.js +1 -1
  98. package/dist/web/standalone/.next/server/pages/404.html +1 -1
  99. package/dist/web/standalone/.next/server/pages/500.html +1 -1
  100. package/dist/web/standalone/.next/server/server-reference-manifest.json +1 -1
  101. package/dist/web/standalone/.next/static/chunks/{2659.b7b129ee6a769448.js → 2659.58e950899a9bb82f.js} +1 -1
  102. package/dist/web/standalone/.next/static/chunks/2772.a7c1fcc69a4685ef.js +1 -0
  103. package/dist/web/standalone/.next/static/chunks/{3616.3c60753b8ffcbd2e.js → 3616.61a2af74bb8833c8.js} +1 -1
  104. package/dist/web/standalone/.next/static/chunks/{4283.8e446784528ed9dc.js → 4283.d0d9e0a955e441cb.js} +1 -1
  105. package/dist/web/standalone/.next/static/chunks/{5826.a46ecdd1cfe8dabc.js → 5826.5421d66c72b9f34e.js} +1 -1
  106. package/dist/web/standalone/.next/static/chunks/{8785.481aa5869991b760.js → 8785.e29b3134cab1d153.js} +1 -1
  107. package/dist/web/standalone/.next/static/chunks/8937.640dc9c2aaa1dfad.js +10 -0
  108. package/dist/web/standalone/.next/static/chunks/app/{page-6644fc6ee8ca1247.js → page-72a856634ad14c10.js} +1 -1
  109. package/dist/web/standalone/.next/static/chunks/webpack-9c401904f87ded16.js +1 -0
  110. package/dist/web/standalone/node_modules/node-pty/build/Makefile +1 -1
  111. package/package.json +1 -1
  112. package/packages/cloud-mcp-gateway/package.json +2 -2
  113. package/packages/contracts/dist/workflow.d.ts +1 -0
  114. package/packages/contracts/dist/workflow.d.ts.map +1 -1
  115. package/packages/contracts/dist/workflow.js +2 -0
  116. package/packages/contracts/dist/workflow.js.map +1 -1
  117. package/packages/contracts/package.json +1 -1
  118. package/packages/daemon/package.json +4 -4
  119. package/packages/gsd-agent-core/dist/agent-session.d.ts +1 -0
  120. package/packages/gsd-agent-core/dist/agent-session.d.ts.map +1 -1
  121. package/packages/gsd-agent-core/dist/agent-session.js +3 -0
  122. package/packages/gsd-agent-core/dist/agent-session.js.map +1 -1
  123. package/packages/gsd-agent-core/dist/extension-ui-snapshot.d.ts +41 -0
  124. package/packages/gsd-agent-core/dist/extension-ui-snapshot.d.ts.map +1 -0
  125. package/packages/gsd-agent-core/dist/extension-ui-snapshot.js +62 -0
  126. package/packages/gsd-agent-core/dist/extension-ui-snapshot.js.map +1 -0
  127. package/packages/gsd-agent-core/dist/index.d.ts +2 -0
  128. package/packages/gsd-agent-core/dist/index.d.ts.map +1 -1
  129. package/packages/gsd-agent-core/dist/index.js +2 -0
  130. package/packages/gsd-agent-core/dist/index.js.map +1 -1
  131. package/packages/gsd-agent-core/dist/session/agent-session-events.js +1 -1
  132. package/packages/gsd-agent-core/dist/session/agent-session-events.js.map +1 -1
  133. package/packages/gsd-agent-core/dist/session/agent-session-host.d.ts +1 -0
  134. package/packages/gsd-agent-core/dist/session/agent-session-host.d.ts.map +1 -1
  135. package/packages/gsd-agent-core/dist/session/agent-session-host.js.map +1 -1
  136. package/packages/gsd-agent-core/dist/session/agent-session-prompt.d.ts +5 -0
  137. package/packages/gsd-agent-core/dist/session/agent-session-prompt.d.ts.map +1 -1
  138. package/packages/gsd-agent-core/dist/session/agent-session-prompt.js +60 -3
  139. package/packages/gsd-agent-core/dist/session/agent-session-prompt.js.map +1 -1
  140. package/packages/gsd-agent-core/dist/transcript-store.d.ts +58 -0
  141. package/packages/gsd-agent-core/dist/transcript-store.d.ts.map +1 -0
  142. package/packages/gsd-agent-core/dist/transcript-store.js +132 -0
  143. package/packages/gsd-agent-core/dist/transcript-store.js.map +1 -0
  144. package/packages/gsd-agent-core/package.json +5 -5
  145. package/packages/gsd-agent-modes/dist/modes/interactive/components/tool-execution.d.ts +2 -0
  146. package/packages/gsd-agent-modes/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  147. package/packages/gsd-agent-modes/dist/modes/interactive/components/tool-execution.js +25 -11
  148. package/packages/gsd-agent-modes/dist/modes/interactive/components/tool-execution.js.map +1 -1
  149. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller-latency.d.ts +4 -0
  150. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller-latency.d.ts.map +1 -0
  151. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller-latency.js +7 -0
  152. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller-latency.js.map +1 -0
  153. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller.d.ts +3 -24
  154. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller.d.ts.map +1 -1
  155. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller.js +26 -829
  156. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-controller.js.map +1 -1
  157. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-handoff-filter.d.ts +58 -0
  158. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-handoff-filter.d.ts.map +1 -0
  159. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-handoff-filter.js +312 -0
  160. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-handoff-filter.js.map +1 -0
  161. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-pinned-zone.d.ts +31 -0
  162. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-pinned-zone.d.ts.map +1 -0
  163. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-pinned-zone.js +130 -0
  164. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-pinned-zone.js.map +1 -0
  165. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-segment-walker.d.ts +15 -0
  166. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-segment-walker.d.ts.map +1 -0
  167. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-segment-walker.js +258 -0
  168. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-segment-walker.js.map +1 -0
  169. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-tool-rollup.d.ts +13 -0
  170. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-tool-rollup.d.ts.map +1 -0
  171. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-tool-rollup.js +118 -0
  172. package/packages/gsd-agent-modes/dist/modes/interactive/controllers/chat-tool-rollup.js.map +1 -0
  173. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-state.d.ts +9 -0
  174. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-state.d.ts.map +1 -1
  175. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-state.js +1 -1
  176. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-state.js.map +1 -1
  177. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-ui-state.d.ts +54 -0
  178. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-ui-state.d.ts.map +1 -0
  179. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-ui-state.js +20 -0
  180. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode-ui-state.js.map +1 -0
  181. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode.d.ts +4 -1
  182. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  183. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode.js +9 -0
  184. package/packages/gsd-agent-modes/dist/modes/interactive/interactive-mode.js.map +1 -1
  185. package/packages/gsd-agent-modes/dist/modes/interactive/streaming-render-state.d.ts +56 -0
  186. package/packages/gsd-agent-modes/dist/modes/interactive/streaming-render-state.d.ts.map +1 -0
  187. package/packages/gsd-agent-modes/dist/modes/interactive/streaming-render-state.js +44 -0
  188. package/packages/gsd-agent-modes/dist/modes/interactive/streaming-render-state.js.map +1 -0
  189. package/packages/gsd-agent-modes/dist/modes/interactive/tui-transcript-tracker.d.ts +5 -0
  190. package/packages/gsd-agent-modes/dist/modes/interactive/tui-transcript-tracker.d.ts.map +1 -0
  191. package/packages/gsd-agent-modes/dist/modes/interactive/tui-transcript-tracker.js +77 -0
  192. package/packages/gsd-agent-modes/dist/modes/interactive/tui-transcript-tracker.js.map +1 -0
  193. package/packages/gsd-agent-modes/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  194. package/packages/gsd-agent-modes/dist/modes/rpc/rpc-mode.js +18 -0
  195. package/packages/gsd-agent-modes/dist/modes/rpc/rpc-mode.js.map +1 -1
  196. package/packages/gsd-agent-modes/package.json +7 -7
  197. package/packages/mcp-server/README.md +1 -1
  198. package/packages/mcp-server/dist/server.d.ts +1 -1
  199. package/packages/mcp-server/dist/server.d.ts.map +1 -1
  200. package/packages/mcp-server/dist/server.js +3 -3
  201. package/packages/mcp-server/dist/server.js.map +1 -1
  202. package/packages/mcp-server/dist/workflow-tools.d.ts +13 -1
  203. package/packages/mcp-server/dist/workflow-tools.d.ts.map +1 -1
  204. package/packages/mcp-server/dist/workflow-tools.js +34 -20
  205. package/packages/mcp-server/dist/workflow-tools.js.map +1 -1
  206. package/packages/mcp-server/package.json +4 -4
  207. package/packages/native/package.json +1 -1
  208. package/packages/pi-agent-core/package.json +1 -1
  209. package/packages/pi-ai/package.json +1 -1
  210. package/packages/pi-coding-agent/README.md +3 -2
  211. package/packages/pi-coding-agent/dist/core/session-manager-context.d.ts +9 -0
  212. package/packages/pi-coding-agent/dist/core/session-manager-context.d.ts.map +1 -0
  213. package/packages/pi-coding-agent/dist/core/session-manager-context.js +94 -0
  214. package/packages/pi-coding-agent/dist/core/session-manager-context.js.map +1 -0
  215. package/packages/pi-coding-agent/dist/core/session-manager-list.d.ts +8 -0
  216. package/packages/pi-coding-agent/dist/core/session-manager-list.d.ts.map +1 -0
  217. package/packages/pi-coding-agent/dist/core/session-manager-list.js +244 -0
  218. package/packages/pi-coding-agent/dist/core/session-manager-list.js.map +1 -0
  219. package/packages/pi-coding-agent/dist/core/session-manager-migration.d.ts +12 -0
  220. package/packages/pi-coding-agent/dist/core/session-manager-migration.d.ts.map +1 -0
  221. package/packages/pi-coding-agent/dist/core/session-manager-migration.js +84 -0
  222. package/packages/pi-coding-agent/dist/core/session-manager-migration.js.map +1 -0
  223. package/packages/pi-coding-agent/dist/core/session-manager-types.d.ts +135 -0
  224. package/packages/pi-coding-agent/dist/core/session-manager-types.d.ts.map +1 -0
  225. package/packages/pi-coding-agent/dist/core/session-manager-types.js +2 -0
  226. package/packages/pi-coding-agent/dist/core/session-manager-types.js.map +1 -0
  227. package/packages/pi-coding-agent/dist/core/session-manager.d.ts +6 -154
  228. package/packages/pi-coding-agent/dist/core/session-manager.d.ts.map +1 -1
  229. package/packages/pi-coding-agent/dist/core/session-manager.js +22 -459
  230. package/packages/pi-coding-agent/dist/core/session-manager.js.map +1 -1
  231. package/packages/pi-coding-agent/dist/theme/theme-schema.d.ts +75 -75
  232. package/packages/pi-coding-agent/dist/theme/theme-schema.d.ts.map +1 -1
  233. package/packages/pi-coding-agent/dist/theme/theme-schema.js +1 -1
  234. package/packages/pi-coding-agent/dist/theme/theme-schema.js.map +1 -1
  235. package/packages/pi-coding-agent/dist/theme/theme.d.ts.map +1 -1
  236. package/packages/pi-coding-agent/dist/theme/theme.js +11 -7
  237. package/packages/pi-coding-agent/dist/theme/theme.js.map +1 -1
  238. package/packages/pi-coding-agent/package.json +7 -7
  239. package/packages/pi-tui/package.json +2 -2
  240. package/packages/rpc-client/package.json +2 -2
  241. package/pkg/dist/theme/theme-schema.d.ts +75 -75
  242. package/pkg/dist/theme/theme-schema.d.ts.map +1 -1
  243. package/pkg/dist/theme/theme-schema.js +1 -1
  244. package/pkg/dist/theme/theme-schema.js.map +1 -1
  245. package/pkg/dist/theme/theme.d.ts.map +1 -1
  246. package/pkg/dist/theme/theme.js +11 -7
  247. package/pkg/dist/theme/theme.js.map +1 -1
  248. package/pkg/package.json +1 -1
  249. package/src/resources/extensions/claude-code-cli/stream-adapter.ts +20 -2
  250. package/src/resources/extensions/claude-code-cli/tests/stream-adapter.test.ts +80 -0
  251. package/src/resources/extensions/google-cli/stream-adapter.ts +106 -19
  252. package/src/resources/extensions/gsd/artifact-verification.ts +464 -0
  253. package/src/resources/extensions/gsd/auto/orchestrator.ts +25 -11
  254. package/src/resources/extensions/gsd/auto/session.ts +5 -0
  255. package/src/resources/extensions/gsd/auto-artifact-paths.ts +47 -1
  256. package/src/resources/extensions/gsd/auto-dispatch.ts +21 -23
  257. package/src/resources/extensions/gsd/auto-prompts.ts +38 -12
  258. package/src/resources/extensions/gsd/auto-recovery.ts +10 -508
  259. package/src/resources/extensions/gsd/auto-runtime-state.ts +4 -5
  260. package/src/resources/extensions/gsd/auto-timeout-recovery.ts +3 -2
  261. package/src/resources/extensions/gsd/bootstrap/agent-end-recovery.ts +125 -12
  262. package/src/resources/extensions/gsd/bootstrap/core-session-tools.ts +43 -0
  263. package/src/resources/extensions/gsd/bootstrap/db-tools.ts +6 -1
  264. package/src/resources/extensions/gsd/bootstrap/exec-tools.ts +2 -0
  265. package/src/resources/extensions/gsd/bootstrap/register-hooks.ts +11 -19
  266. package/src/resources/extensions/gsd/bootstrap/system-context.ts +52 -18
  267. package/src/resources/extensions/gsd/bootstrap/tool-call-loop-guard.ts +74 -10
  268. package/src/resources/extensions/gsd/bootstrap/write-gate.ts +1 -1
  269. package/src/resources/extensions/gsd/commands-context.ts +18 -1
  270. package/src/resources/extensions/gsd/commands-prefs-wizard.ts +14 -9
  271. package/src/resources/extensions/gsd/commands-worktree.ts +12 -10
  272. package/src/resources/extensions/gsd/dashboard-overlay.ts +32 -3
  273. package/src/resources/extensions/gsd/db/queries.ts +79 -0
  274. package/src/resources/extensions/gsd/db-workspace.ts +61 -3
  275. package/src/resources/extensions/gsd/doctor-providers.ts +103 -9
  276. package/src/resources/extensions/gsd/exec-sandbox.ts +49 -9
  277. package/src/resources/extensions/gsd/forensics.ts +2 -33
  278. package/src/resources/extensions/gsd/git-service.ts +5 -5
  279. package/src/resources/extensions/gsd/guided-flow-queue.ts +89 -4
  280. package/src/resources/extensions/gsd/health-widget.ts +69 -32
  281. package/src/resources/extensions/gsd/layout-policy.ts +2 -1
  282. package/src/resources/extensions/gsd/markdown-renderer.ts +8 -11
  283. package/src/resources/extensions/gsd/memory-consolidation-scanner.ts +51 -19
  284. package/src/resources/extensions/gsd/migration-auto-check.ts +23 -0
  285. package/src/resources/extensions/gsd/milestone-ids.ts +31 -2
  286. package/src/resources/extensions/gsd/milestone-implementation-evidence.ts +35 -21
  287. package/src/resources/extensions/gsd/prompts/code-review.md +6 -4
  288. package/src/resources/extensions/gsd/quick.ts +43 -2
  289. package/src/resources/extensions/gsd/session-forensics.ts +11 -1
  290. package/src/resources/extensions/gsd/skills/gsd-headless/references/commands.md +1 -1
  291. package/src/resources/extensions/gsd/state/derive/cache.ts +46 -0
  292. package/src/resources/extensions/gsd/state/derive/db-open.ts +45 -0
  293. package/src/resources/extensions/gsd/state/derive/from-db.ts +561 -0
  294. package/src/resources/extensions/gsd/state/derive/index.ts +104 -0
  295. package/src/resources/extensions/gsd/state/derive/interrupted-work.ts +31 -0
  296. package/src/resources/extensions/gsd/state-reconciliation/drift/stale-render.ts +81 -7
  297. package/src/resources/extensions/gsd/state-reconciliation/index.ts +50 -24
  298. package/src/resources/extensions/gsd/state-reconciliation/registry.ts +43 -28
  299. package/src/resources/extensions/gsd/state.ts +32 -732
  300. package/src/resources/extensions/gsd/tests/auto-artifact-paths.test.ts +98 -1
  301. package/src/resources/extensions/gsd/tests/auto-recovery.test.ts +111 -1
  302. package/src/resources/extensions/gsd/tests/commands-context.test.ts +26 -0
  303. package/src/resources/extensions/gsd/tests/commands-gsd-core.test.ts +1 -0
  304. package/src/resources/extensions/gsd/tests/commands-worktree-clean.test.ts +80 -0
  305. package/src/resources/extensions/gsd/tests/complete-slice.test.ts +11 -0
  306. package/src/resources/extensions/gsd/tests/complete-task-rollback-evidence.test.ts +48 -8
  307. package/src/resources/extensions/gsd/tests/complete-task.test.ts +75 -0
  308. package/src/resources/extensions/gsd/tests/dashboard-overlay.test.ts +55 -2
  309. package/src/resources/extensions/gsd/tests/dispatch-rule-coverage.test.ts +26 -1
  310. package/src/resources/extensions/gsd/tests/doctor-forensics-db-open-regression.test.ts +70 -2
  311. package/src/resources/extensions/gsd/tests/doctor-providers.test.ts +107 -0
  312. package/src/resources/extensions/gsd/tests/exec-graceful-kill.test.ts +38 -0
  313. package/src/resources/extensions/gsd/tests/exec-tool.test.ts +45 -1
  314. package/src/resources/extensions/gsd/tests/forensics-error-filter.test.ts +88 -0
  315. package/src/resources/extensions/gsd/tests/guided-discuss-milestone-prompt-rendering.test.ts +42 -0
  316. package/src/resources/extensions/gsd/tests/health-widget.test.ts +268 -3
  317. package/src/resources/extensions/gsd/tests/integration/git-service.test.ts +119 -1
  318. package/src/resources/extensions/gsd/tests/integration/queue-active-milestone-context-budget.test.ts +93 -0
  319. package/src/resources/extensions/gsd/tests/integration/quick-branch-lifecycle.test.ts +56 -9
  320. package/src/resources/extensions/gsd/tests/knowledge-cold-start.test.ts +14 -0
  321. package/src/resources/extensions/gsd/tests/memory-consolidation-scanner.test.ts +78 -0
  322. package/src/resources/extensions/gsd/tests/migration-auto-check.test.ts +70 -0
  323. package/src/resources/extensions/gsd/tests/orchestrator-logs.test.ts +43 -1
  324. package/src/resources/extensions/gsd/tests/parallel-research-dispatch.test.ts +26 -0
  325. package/src/resources/extensions/gsd/tests/parsers-legacy-importers.test.ts +2 -1
  326. package/src/resources/extensions/gsd/tests/pipeline-variant-dispatch.test.ts +1 -1
  327. package/src/resources/extensions/gsd/tests/prefs-wizard-coverage.test.ts +54 -1
  328. package/src/resources/extensions/gsd/tests/progressive-planning.test.ts +50 -14
  329. package/src/resources/extensions/gsd/tests/provider-errors.test.ts +195 -1
  330. package/src/resources/extensions/gsd/tests/read-uat-gate-verdict.test.ts +185 -0
  331. package/src/resources/extensions/gsd/tests/register-hooks-depth-verification.test.ts +87 -0
  332. package/src/resources/extensions/gsd/tests/runtime-invariant-modules.test.ts +7 -0
  333. package/src/resources/extensions/gsd/tests/stalled-tool-recovery.test.ts +56 -0
  334. package/src/resources/extensions/gsd/tests/state-reconciliation-drift.test.ts +191 -0
  335. package/src/resources/extensions/gsd/tests/tool-call-loop-guard.test.ts +151 -0
  336. package/src/resources/extensions/gsd/tests/tool-param-optionality.test.ts +26 -0
  337. package/src/resources/extensions/gsd/tests/unit-context-composer.test.ts +193 -14
  338. package/src/resources/extensions/gsd/tests/unmerged-milestone-guard.test.ts +25 -0
  339. package/src/resources/extensions/gsd/tests/validation-block-guard.test.ts +79 -0
  340. package/src/resources/extensions/gsd/tests/verify-artifact-tightened.test.ts +66 -0
  341. package/src/resources/extensions/gsd/tests/workspace-git-preflight.test.ts +151 -2
  342. package/src/resources/extensions/gsd/tests/worktree-manager.test.ts +39 -0
  343. package/src/resources/extensions/gsd/tools/complete-slice.ts +2 -2
  344. package/src/resources/extensions/gsd/tools/complete-task.ts +53 -15
  345. package/src/resources/extensions/gsd/tools/exec-tool.ts +7 -3
  346. package/src/resources/extensions/gsd/unit-context-composer.ts +33 -7
  347. package/src/resources/extensions/gsd/unit-registry.ts +32 -4
  348. package/src/resources/extensions/gsd/unmerged-milestone-guard.ts +41 -5
  349. package/src/resources/extensions/gsd/validation-block-guard.ts +13 -7
  350. package/src/resources/extensions/gsd/workflow-projections.ts +20 -14
  351. package/src/resources/extensions/gsd/workspace-git-preflight.ts +31 -0
  352. package/src/resources/extensions/gsd/worktree-manager.ts +41 -1
  353. package/dist/web/standalone/.next/static/chunks/2772.bfa657f49f955239.js +0 -1
  354. package/dist/web/standalone/.next/static/chunks/796.e0bdc932325d7e03.js +0 -10
  355. package/dist/web/standalone/.next/static/chunks/webpack-f46ea08200a0227e.js +0 -1
  356. /package/dist/web/standalone/.next/static/{BTKtGFF1Y-hvVJEGhBRo9 → O7xDYXO0r4zFhIzY1hrWV}/_buildManifest.js +0 -0
  357. /package/dist/web/standalone/.next/static/{BTKtGFF1Y-hvVJEGhBRo9 → O7xDYXO0r4zFhIzY1hrWV}/_ssgManifest.js +0 -0
@@ -5,7 +5,7 @@
5
5
  import type { ImageContent } from "@gsd/pi-ai";
6
6
  import type { MarkdownTheme } from "@gsd/pi-tui";
7
7
  import { type Terminal as TuiTerminal } from "@gsd/pi-tui";
8
- import { type AgentSession } from "@gsd/agent-core";
8
+ import { type AgentSession, type TranscriptState } from "@gsd/agent-core";
9
9
  export type { AssistantReplaySegment, ExtensionNotifyType, ExtensionNotifyRenderResult, CompactionQueuedMessage, } from "./interactive-notify-render.js";
10
10
  export { buildAssistantReplaySegments, getToolExpansionStartupHint, shouldRenderExtensionNotifyInChat, renderExtensionNotifyInChat, renderBlockingErrorBanner, } from "./interactive-notify-render.js";
11
11
  export interface InteractiveModeOptions {
@@ -93,6 +93,8 @@ export declare class InteractiveMode {
93
93
  private stdinErrorHandler;
94
94
  private extensionWidgetsAbove;
95
95
  private extensionWidgetsBelow;
96
+ private readonly uiState;
97
+ transcriptState: TranscriptState;
96
98
  private widgetContainerAbove;
97
99
  private widgetContainerBelow;
98
100
  private customFooter;
@@ -102,6 +104,7 @@ export declare class InteractiveMode {
102
104
  private get agent();
103
105
  private get sessionManager();
104
106
  private get settingsManager();
107
+ get streamingRenderState(): import("./streaming-render-state.js").StreamingRenderState;
105
108
  constructor(session: AgentSession, options?: InteractiveModeOptions);
106
109
  private setupAutocomplete;
107
110
  private installStdinErrorRecovery;
@@ -1 +1 @@
1
- {"version":3,"file":"interactive-mode.d.ts","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-mode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interactive-mode.d.ts","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-mode.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@
7
7
  */
8
8
  import { Container, ProcessTerminal, TUI, } from "@gsd/pi-tui";
9
9
  import { VERSION } from "@gsd/pi-coding-agent/config.js";
10
+ import { createInitialTranscriptState } from "@gsd/agent-core";
10
11
  import { FooterDataProvider } from "@gsd/pi-coding-agent/core/footer-data-provider.js";
11
12
  import { KeybindingsManager } from "@gsd/agent-core";
12
13
  import { ensureTool } from "@gsd/pi-coding-agent/utils/tools-manager.js";
@@ -17,6 +18,8 @@ import { ToolExecutionComponent } from "./components/tool-execution.js";
17
18
  import { setRailAnimationEnabled } from "./components/transcript-design.js";
18
19
  import { ContextualTips } from "@gsd/agent-core";
19
20
  import { handleAgentEvent } from "./controllers/chat-controller.js";
21
+ import { createInteractiveModeUiState } from "./interactive-mode-ui-state.js";
22
+ import { applyAgentEventToTranscript } from "./tui-transcript-tracker.js";
20
23
  import { setupEditorSubmitHandler as setupEditorSubmitHandlerController } from "./controllers/input-controller.js";
21
24
  import { getEditorTheme, initTheme, onThemeChange, setRegisteredThemes, stopThemeWatcher, } from "@gsd/pi-coding-agent/theme/theme.js";
22
25
  import * as chatRender from "./interactive-chat-render.js";
@@ -41,6 +44,9 @@ export class InteractiveMode {
41
44
  get settingsManager() {
42
45
  return this.session.settingsManager;
43
46
  }
47
+ get streamingRenderState() {
48
+ return this.uiState.streaming.streamingRenderState;
49
+ }
44
50
  constructor(session, options = {}) {
45
51
  this.options = options;
46
52
  this.gsdStatusExpanded = undefined;
@@ -78,6 +84,8 @@ export class InteractiveMode {
78
84
  this.stdinErrorHandler = undefined;
79
85
  this.extensionWidgetsAbove = new Map();
80
86
  this.extensionWidgetsBelow = new Map();
87
+ this.uiState = createInteractiveModeUiState();
88
+ this.transcriptState = createInitialTranscriptState();
81
89
  this.customFooter = undefined;
82
90
  this.builtInHeader = undefined;
83
91
  this.customHeader = undefined;
@@ -253,6 +261,7 @@ export class InteractiveMode {
253
261
  });
254
262
  }
255
263
  async handleEvent(event) {
264
+ this.transcriptState = applyAgentEventToTranscript(this.transcriptState, event);
256
265
  await handleAgentEvent(this, event);
257
266
  }
258
267
  clearEditor() {
@@ -1 +1 @@
1
- {"version":3,"file":"interactive-mode.js","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-mode.ts"],"names":[],"mappings":"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","sourcesContent":["// Project/App: gsd-pi\n// File Purpose: Interactive TUI mode and session UI rendering.\n// gsd-pi - Interactive TUI mode for coding-agent sessions.\n/**\n * Interactive mode for the coding agent.\n * Handles TUI rendering and user interaction, delegating business logic to AgentSession.\n */\n\nimport type { ImageContent } from \"@gsd/pi-ai\";\nimport type { EditorComponent, MarkdownTheme, Spacer, Text } from \"@gsd/pi-tui\";\nimport {\n\tCombinedAutocompleteProvider,\n\tContainer,\n\tLoader,\n\tProcessTerminal,\n\ttype Terminal as TuiTerminal,\n\tTUI,\n} from \"@gsd/pi-tui\";\nimport { VERSION } from \"@gsd/pi-coding-agent/config.js\";\nimport { type AgentSession, type AgentSessionEvent } from \"@gsd/agent-core\";\nimport type { ExtensionRunner } from \"@gsd/pi-coding-agent/core/extensions/index.js\";\nimport { FooterDataProvider } from \"@gsd/pi-coding-agent/core/footer-data-provider.js\";\nimport { KeybindingsManager } from \"@gsd/agent-core\";\nimport { ensureTool } from \"@gsd/pi-coding-agent/utils/tools-manager.js\";\nimport { GsdStatusWidget } from \"./components/gsd-status-widget.js\";\nimport { AssistantMessageComponent } from \"./components/assistant-message.js\";\nimport { BashExecutionComponent } from \"./components/bash-execution.js\";\nimport { CustomEditor } from \"./components/custom-editor.js\";\nimport { ExtensionEditorComponent } from \"./components/extension-editor.js\";\nimport { ExtensionInputComponent } from \"./components/extension-input.js\";\nimport { ExtensionSelectorComponent } from \"./components/extension-selector.js\";\nimport { FooterComponent } from \"./components/footer.js\";\nimport { ToolExecutionComponent } from \"./components/tool-execution.js\";\nimport { setRailAnimationEnabled } from \"./components/transcript-design.js\";\nimport { ContextualTips } from \"@gsd/agent-core\";\nimport { handleAgentEvent } from \"./controllers/chat-controller.js\";\nimport { setupEditorSubmitHandler as setupEditorSubmitHandlerController } from \"./controllers/input-controller.js\";\nimport {\n\tgetEditorTheme,\n\tinitTheme,\n\tonThemeChange,\n\tsetRegisteredThemes,\n\tstopThemeWatcher,\n} from \"@gsd/pi-coding-agent/theme/theme.js\";\nimport * as chatRender from \"./interactive-chat-render.js\";\nimport * as commandHandlers from \"./interactive-command-handlers.js\";\nimport * as extensionSystem from \"./interactive-extension-system.js\";\nimport * as inputRouter from \"./interactive-input-router.js\";\nimport * as keyHandlers from \"./interactive-key-handlers.js\";\nimport * as modeInit from \"./interactive-mode-init.js\";\nimport type { CompactionQueuedMessage } from \"./interactive-notify-render.js\";\nimport * as resourceDisplay from \"./interactive-resource-display.js\";\nimport * as selectors from \"./interactive-selectors.js\";\nimport { clearMarkdownThemeCache, getMarkdownThemeWithSettings as getMarkdownThemeWithSettingsModule } from \"./interactive-theme-cache.js\";\nimport * as uiMessaging from \"./interactive-ui-messaging.js\";\nimport { DEFAULT_TOOL_OUTPUT_EXPANDED } from \"./interactive-mode-class-constants.js\";\n\nexport type {\n\tAssistantReplaySegment,\n\tExtensionNotifyType,\n\tExtensionNotifyRenderResult,\n\tCompactionQueuedMessage,\n} from \"./interactive-notify-render.js\";\nexport {\n\tbuildAssistantReplaySegments,\n\tgetToolExpansionStartupHint,\n\tshouldRenderExtensionNotifyInChat,\n\trenderExtensionNotifyInChat,\n\trenderBlockingErrorBanner,\n} from \"./interactive-notify-render.js\";\n\nexport interface InteractiveModeOptions {\n\t/** Providers that were migrated to auth.json (shows warning) */\n\tmigratedProviders?: string[];\n\t/** Warning message if session model couldn't be restored */\n\tmodelFallbackMessage?: string;\n\t/** Initial message to send on startup (can include @file content) */\n\tinitialMessage?: string;\n\t/** Images to attach to the initial message */\n\tinitialImages?: ImageContent[];\n\t/** Additional messages to send after the initial message */\n\tinitialMessages?: string[];\n\t/** Force verbose startup (overrides quietStartup setting) */\n\tverbose?: boolean;\n\t/** Override the terminal implementation used by the TUI. */\n\tterminal?: TuiTerminal;\n\t/** When false, reuse the session's existing extension bindings instead of rebinding them for TUI mode. */\n\tbindExtensions?: boolean;\n\t/** Submit editor prompts directly to AgentSession instead of using the interactive prompt loop. */\n\tsubmitPromptsDirectly?: boolean;\n\t/** Control what happens when the user requests shutdown from the TUI. */\n\tshutdownBehavior?: \"exit_process\" | \"stop_ui\" | \"ignore\";\n}\n\nexport class InteractiveMode {\n\tprivate session: AgentSession;\n\tprivate ui: TUI;\n\tprivate chatContainer: Container;\n\tprivate pendingMessagesContainer: Container;\n\tprivate gsdStatusWidget: GsdStatusWidget;\n\tprivate gsdStatusExpanded: boolean | undefined = undefined;\n\tprivate gsdProgressState: import(\"@gsd/pi-coding-agent/core/extensions/extension-upstream-types.js\").GsdProgressState | undefined;\n\tprivate gsdProgressDispose?: () => void;\n\tprivate statusContainer: Container;\n\tprivate pinnedMessageContainer: Container;\n\tprivate blockingErrorContainer: Container;\n\tprivate defaultEditor: CustomEditor;\n\tprivate editor: EditorComponent;\n\tprivate autocompleteProvider: CombinedAutocompleteProvider | undefined;\n\tprivate editorContainer: Container;\n\tprivate footer: FooterComponent;\n\tprivate footerDataProvider: FooterDataProvider;\n\tprivate keybindings: KeybindingsManager;\n\tprivate version: string;\n\tprivate isInitialized = false;\n\tprivate onInputCallback?: (text: string) => void;\n\tprivate loadingAnimation: Loader | undefined = undefined;\n\tprivate activityLoader: Loader | undefined = undefined;\n\tprivate pendingWorkingMessage: string | null | undefined = undefined;\n\tprivate readonly defaultWorkingMessage = \"Working...\";\n\tprivate lastBlockingError: string | undefined = undefined;\n\n\tprivate lastSigintTime = 0;\n\tprivate lastEscapeTime = 0;\n\tprivate changelogMarkdown: string | undefined = undefined;\n\tprivate startupHeaderDismissed = false;\n\n\tprivate lastStatusSpacer: Spacer | undefined = undefined;\n\tprivate lastStatusText: Text | undefined = undefined;\n\n\tprivate streamingComponent: AssistantMessageComponent | undefined = undefined;\n\tprivate streamingMessage: import(\"@gsd/pi-ai\").AssistantMessage | undefined = undefined;\n\n\tprivate pendingTools = new Map<string, ToolExecutionComponent>();\n\tprivate toolOutputExpanded = DEFAULT_TOOL_OUTPUT_EXPANDED;\n\tprivate pendingImages: ImageContent[] = [];\n\tprivate hideThinkingBlock = false;\n\tprivate skillCommands = new Map<string, string>();\n\tprivate unsubscribe?: () => void;\n\tprivate _branchChangeUnsub?: () => void;\n\tprivate _themeChangeUnsub?: () => void;\n\tprivate markdownThemeCache?: MarkdownTheme;\n\tprivate markdownThemeCacheIndent?: string;\n\tprivate isBashMode = false;\n\tprivate contextualTips = new ContextualTips();\n\tprivate bashComponent: BashExecutionComponent | undefined = undefined;\n\tprivate pendingBashComponents: BashExecutionComponent[] = [];\n\tprivate autoCompactionLoader: Loader | undefined = undefined;\n\tprivate autoCompactionEscapeHandler?: () => void;\n\tprivate retryLoader: Loader | undefined = undefined;\n\tprivate retryEscapeHandler?: () => void;\n\tprivate compactionQueuedMessages: CompactionQueuedMessage[] = [];\n\tprivate shutdownRequested = false;\n\tprivate extensionSelector: ExtensionSelectorComponent | undefined = undefined;\n\tprivate extensionInput: ExtensionInputComponent | undefined = undefined;\n\tprivate extensionEditor: ExtensionEditorComponent | undefined = undefined;\n\tprivate extensionTerminalInputUnsubscribers = new Set<() => void>();\n\tprivate stdinErrorHandler: ((err: Error) => void) | undefined = undefined;\n\tprivate extensionWidgetsAbove = new Map<string, import(\"@gsd/pi-tui\").Component & { dispose?(): void }>();\n\tprivate extensionWidgetsBelow = new Map<string, import(\"@gsd/pi-tui\").Component & { dispose?(): void }>();\n\tprivate widgetContainerAbove!: Container;\n\tprivate widgetContainerBelow!: Container;\n\tprivate customFooter: (import(\"@gsd/pi-tui\").Component & { dispose?(): void }) | undefined = undefined;\n\tprivate headerContainer: Container;\n\tprivate builtInHeader: import(\"@gsd/pi-tui\").Component | undefined = undefined;\n\tprivate customHeader: (import(\"@gsd/pi-tui\").Component & { dispose?(): void }) | undefined = undefined;\n\n\tprivate get agent() {\n\t\treturn this.session.agent;\n\t}\n\tprivate get sessionManager() {\n\t\treturn this.session.sessionManager;\n\t}\n\tprivate get settingsManager() {\n\t\treturn this.session.settingsManager;\n\t}\n\n\tconstructor(\n\t\tsession: AgentSession,\n\t\tprivate options: InteractiveModeOptions = {},\n\t) {\n\t\tthis.session = session;\n\t\tthis.version = VERSION;\n\t\tthis.ui = new TUI(options.terminal ?? new ProcessTerminal(), this.settingsManager.getShowHardwareCursor());\n\t\tthis.ui.setClearOnShrink(this.settingsManager.getClearOnShrink());\n\t\tsetRailAnimationEnabled(this.settingsManager.getToolRailAnimation());\n\t\tthis.headerContainer = new Container();\n\t\tthis.chatContainer = new Container();\n\t\tthis.pendingMessagesContainer = new Container();\n\t\tthis.gsdStatusWidget = new GsdStatusWidget(() => ({\n\t\t\toverride: this.settingsManager.getAdaptiveMode(),\n\t\t\tactiveToolCount: this.pendingTools.size,\n\t\t\tgsdPhase: this.gsdProgressState?.phase ?? this.pendingWorkingMessage ?? undefined,\n\t\t\tlastError: this.lastBlockingError,\n\t\t\tsessionName: this.sessionManager.getSessionName(),\n\t\t\tcwd: this.gsdProgressState?.path ?? process.cwd(),\n\t\t\tmanuallyExpanded: this.gsdStatusExpanded,\n\t\t\tgsdProgress: this.gsdProgressState,\n\t\t\tisStreaming: this.session.isStreaming,\n\t\t}));\n\t\tthis.statusContainer = new Container();\n\t\tthis.pinnedMessageContainer = new Container();\n\t\tthis.blockingErrorContainer = new Container();\n\t\tthis.widgetContainerAbove = new Container();\n\t\tthis.widgetContainerBelow = new Container();\n\t\tthis.keybindings = KeybindingsManager.create();\n\t\tconst editorPaddingX = this.settingsManager.getEditorPaddingX();\n\t\tconst autocompleteMaxVisible = this.settingsManager.getAutocompleteMaxVisible();\n\t\tthis.defaultEditor = new CustomEditor(this.ui, getEditorTheme(), this.keybindings, {\n\t\t\tpaddingX: editorPaddingX,\n\t\t\tautocompleteMaxVisible,\n\t\t});\n\t\tthis.editor = this.defaultEditor;\n\t\tthis.editorContainer = new Container();\n\t\tthis.editorContainer.addChild(this.editor as import(\"@gsd/pi-tui\").Component);\n\t\tthis.footerDataProvider = new FooterDataProvider(process.cwd());\n\t\tthis.footer = new FooterComponent(session, this.footerDataProvider, () => ({\n\t\t\toverride: this.settingsManager.getAdaptiveMode(),\n\t\t\tactiveToolCount: this.pendingTools.size,\n\t\t\tgsdPhase: this.gsdProgressState?.phase ?? this.pendingWorkingMessage ?? undefined,\n\t\t\tlastError: this.lastBlockingError,\n\t\t\tcwd: this.gsdProgressState?.path ?? process.cwd(),\n\t\t\tmanuallyExpanded: this.gsdStatusExpanded,\n\t\t\tgsdProgress: this.gsdProgressState,\n\t\t}));\n\t\tthis.footer.setAutoCompactEnabled(session.autoCompactionEnabled);\n\t\tthis.toolOutputExpanded = this.settingsManager.getToolsExpanded();\n\t\tthis.hideThinkingBlock = this.settingsManager.getHideThinkingBlock();\n\t\tsetRegisteredThemes(this.session.resourceLoader.getThemes().themes);\n\t\tinitTheme(this.settingsManager.getTheme(), true);\n\t}\n\n\tprivate setupAutocomplete(): void {\n\t\tinputRouter.setupAutocomplete(this);\n\t}\n\n\tprivate installStdinErrorRecovery(): void {\n\t\tmodeInit.installStdinErrorRecovery(this);\n\t}\n\n\tasync init(): Promise<void> {\n\t\tif (this.isInitialized) return;\n\n\t\tthis.changelogMarkdown = modeInit.getChangelogForDisplay(this);\n\t\tawait ensureTool(\"rg\");\n\n\t\tthis.ui.addChild(this.headerContainer);\n\t\tmodeInit.mountStartupHeader(this);\n\n\t\tthis.ui.addChild(this.chatContainer);\n\t\tthis.ui.addChild(this.pendingMessagesContainer);\n\t\tthis.ui.addChild(this.statusContainer);\n\t\tthis.ui.addChild(this.pinnedMessageContainer);\n\t\tthis.ui.addChild(this.blockingErrorContainer);\n\t\tthis.renderWidgets();\n\t\tthis.ui.addChild(this.widgetContainerAbove);\n\t\tthis.ui.addChild(this.editorContainer);\n\t\tthis.ui.addChild(this.widgetContainerBelow);\n\t\tthis.ui.addChild(this.footer);\n\t\tthis.ui.setFocus(this.editor);\n\n\t\tthis.setupKeyHandlers();\n\t\tthis.setupEditorSubmitHandler();\n\t\tawait this.initExtensions();\n\t\tthis.renderInitialMessages();\n\n\t\tthis.ui.start();\n\t\tthis.ui.onOutputClosed = () => {\n\t\t\tif (this.isShuttingDown) return;\n\t\t\tvoid keyHandlers.shutdown(this);\n\t\t};\n\t\tthis.installStdinErrorRecovery();\n\t\tthis.isInitialized = true;\n\n\t\tmodeInit.updateTerminalTitle(this);\n\t\tthis.subscribeToAgent();\n\n\t\tthis._themeChangeUnsub = onThemeChange(() => {\n\t\t\tthis.clearMarkdownThemeCache();\n\t\t\tthis.ui.invalidate();\n\t\t\tthis.updateEditorBorderColor();\n\t\t\tthis.ui.requestRender();\n\t\t});\n\n\t\tthis._branchChangeUnsub = this.footerDataProvider.onBranchChange(() => {\n\t\t\tthis.ui.requestRender();\n\t\t});\n\n\t\tawait this.updateAvailableProviderCount();\n\t}\n\n\tasync run(): Promise<void> {\n\t\tawait this.init();\n\n\t\tmodeInit.checkForNewVersion(this).then((newVersion) => {\n\t\t\tif (newVersion) {\n\t\t\t\tmodeInit.showNewVersionNotification(this, newVersion);\n\t\t\t}\n\t\t});\n\n\t\tmodeInit.checkTmuxKeyboardSetup().then((warning) => {\n\t\t\tif (warning) {\n\t\t\t\tthis.showWarning(warning);\n\t\t\t}\n\t\t});\n\n\t\tconst { migratedProviders, modelFallbackMessage, initialMessage, initialImages, initialMessages } = this.options;\n\n\t\tif (migratedProviders && migratedProviders.length > 0) {\n\t\t\tthis.showWarning(`Migrated credentials to auth.json: ${migratedProviders.join(\", \")}`);\n\t\t}\n\n\t\tconst modelsJsonError = this.session.modelRegistry.getError();\n\t\tif (modelsJsonError) {\n\t\t\tthis.showError(`models.json error: ${modelsJsonError}`);\n\t\t}\n\n\t\tif (modelFallbackMessage) {\n\t\t\tthis.showWarning(modelFallbackMessage);\n\t\t}\n\n\t\tif (initialMessage) {\n\t\t\ttry {\n\t\t\t\tawait this.session.prompt(initialMessage, { images: initialImages });\n\t\t\t} catch (error: unknown) {\n\t\t\t\tconst errorMessage = error instanceof Error ? error.message : \"Unknown error occurred\";\n\t\t\t\tthis.showError(errorMessage);\n\t\t\t}\n\t\t}\n\n\t\tif (initialMessages) {\n\t\t\tfor (const message of initialMessages) {\n\t\t\t\ttry {\n\t\t\t\t\tawait this.session.prompt(message);\n\t\t\t\t} catch (error: unknown) {\n\t\t\t\t\tconst errorMessage = error instanceof Error ? error.message : \"Unknown error occurred\";\n\t\t\t\t\tthis.showError(errorMessage);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\twhile (true) {\n\t\t\tconst userInput = await this.getUserInput();\n\t\t\tconst images = this.pendingImages.length > 0 ? [...this.pendingImages] : undefined;\n\t\t\tthis.pendingImages.length = 0;\n\t\t\ttry {\n\t\t\t\tawait this.session.prompt(userInput, { images });\n\t\t\t} catch (error: unknown) {\n\t\t\t\tconst errorMessage = error instanceof Error ? error.message : \"Unknown error occurred\";\n\t\t\t\tthis.showError(errorMessage);\n\t\t\t}\n\t\t}\n\t}\n\n\tgetMarkdownThemeWithSettings(): MarkdownTheme {\n\t\treturn getMarkdownThemeWithSettingsModule(this);\n\t}\n\n\tprivate clearMarkdownThemeCache(): void {\n\t\tclearMarkdownThemeCache(this);\n\t}\n\n\tprivate setupEditorSubmitHandler(): void {\n\t\tsetupEditorSubmitHandlerController(this as any);\n\t}\n\n\tprivate subscribeToAgent(): void {\n\t\tlet eventQueue: Promise<void> = Promise.resolve();\n\t\tthis.unsubscribe = this.session.subscribe((event) => {\n\t\t\teventQueue = eventQueue.then(() => this.handleEvent(event)).catch(() => {});\n\t\t});\n\t}\n\n\tprivate async handleEvent(event: AgentSessionEvent): Promise<void> {\n\t\tawait handleAgentEvent(this as any, event);\n\t}\n\n\tclearEditor(): void {\n\t\tuiMessaging.clearEditor(this);\n\t}\n\n\tshowError(errorMessage: string): void {\n\t\tuiMessaging.showError(this, errorMessage);\n\t}\n\n\tclearBlockingError(): void {\n\t\tuiMessaging.clearBlockingError(this);\n\t}\n\n\tshowWarning(warningMessage: string): void {\n\t\tuiMessaging.showWarning(this, warningMessage);\n\t}\n\n\tshowSuccess(successMessage: string): void {\n\t\tuiMessaging.showSuccess(this, successMessage);\n\t}\n\n\tshowTip(message: string): void {\n\t\tuiMessaging.showTip(this, message);\n\t}\n\n\tgetContextPercent(): number | undefined {\n\t\treturn this.session.getContextUsage()?.percent ?? undefined;\n\t}\n\n\trenderInitialMessages(): void {\n\t\tchatRender.renderInitialMessages(this);\n\t}\n\n\tasync getUserInput(): Promise<string> {\n\t\treturn chatRender.getUserInput(this);\n\t}\n\n\tgetExtensionUIContext() {\n\t\treturn extensionSystem.createExtensionUIContext(this);\n\t}\n\n\trequestRender(force = false): void {\n\t\tif (!this.isInitialized) return;\n\t\tthis.ui.requestRender(force);\n\t}\n\n\tstop(): void {\n\t\tif (this.loadingAnimation) {\n\t\t\tthis.loadingAnimation.stop();\n\t\t\tthis.loadingAnimation = undefined;\n\t\t}\n\t\tthis.clearExtensionTerminalInputListeners();\n\t\tthis._branchChangeUnsub?.();\n\t\tthis._branchChangeUnsub = undefined;\n\t\tthis._themeChangeUnsub?.();\n\t\tthis._themeChangeUnsub = undefined;\n\t\tstopThemeWatcher();\n\n\t\tif (this.onInputCallback) {\n\t\t\tthis.onInputCallback(\"\");\n\t\t\tthis.onInputCallback = undefined;\n\t\t}\n\n\t\tthis.clearExtensionWidgets();\n\t\tif (this.customFooter?.dispose) {\n\t\t\tthis.customFooter.dispose();\n\t\t}\n\t\tthis.customFooter = undefined;\n\t\tif (this.customHeader?.dispose) {\n\t\t\tthis.customHeader.dispose();\n\t\t}\n\t\tthis.customHeader = undefined;\n\t\tthis.autocompleteProvider = undefined;\n\n\t\tthis.footer.dispose();\n\t\tthis.footerDataProvider.dispose();\n\t\tif (this.unsubscribe) {\n\t\t\tthis.unsubscribe();\n\t\t}\n\t\tif (this.stdinErrorHandler) {\n\t\t\tprocess.stdin.removeListener(\"error\", this.stdinErrorHandler);\n\t\t\tthis.stdinErrorHandler = undefined;\n\t\t}\n\t\tif (this.isInitialized) {\n\t\t\tthis.ui.stop();\n\t\t\tthis.isInitialized = false;\n\t\t}\n\t}\n\n\t// Delegates (Phase E2 extracted modules)\n\tprivate formatDisplayPath(p: string): string { return resourceDisplay.formatDisplayPath(this, p); }\n\tprivate getShortPath(fullPath: string, source: string): string { return resourceDisplay.getShortPath(this, fullPath, source); }\n\tprivate showLoadedResources(options?: Parameters<typeof resourceDisplay.showLoadedResources>[1]): void { resourceDisplay.showLoadedResources(this, options); }\n\n\tprivate async initExtensions(): Promise<void> { return extensionSystem.initExtensions(this); }\n\tprivate getRegisteredToolDefinition(toolName: string) { return extensionSystem.getRegisteredToolDefinition(this, toolName); }\n\tprivate formatWebSearchResult(content: unknown): string { return extensionSystem.formatWebSearchResult(this, content); }\n\tprivate setupExtensionShortcuts(extensionRunner: ExtensionRunner): void { extensionSystem.setupExtensionShortcuts(this, extensionRunner); }\n\tprivate setExtensionStatus(key: string, text: string | undefined): void { extensionSystem.setExtensionStatus(this, key, text); }\n\tprivate setGsdProgress(state: Parameters<typeof extensionSystem.setGsdProgress>[1], dispose?: () => void): void { extensionSystem.setGsdProgress(this, state, dispose); }\n\tprivate setExtensionWidget(key: string, content: Parameters<typeof extensionSystem.setExtensionWidget>[2], options?: Parameters<typeof extensionSystem.setExtensionWidget>[3]): void { extensionSystem.setExtensionWidget(this, key, content, options); }\n\tprivate clearExtensionWidgets(): void { extensionSystem.clearExtensionWidgets(this); }\n\tprivate resetExtensionUI(): void { extensionSystem.resetExtensionUI(this); }\n\tprivate renderWidgets(): void { extensionSystem.renderWidgets(this); }\n\tprivate setExtensionFooter(factory: Parameters<typeof extensionSystem.setExtensionFooter>[1]): void { extensionSystem.setExtensionFooter(this, factory); }\n\tprivate setExtensionHeader(factory: Parameters<typeof extensionSystem.setExtensionHeader>[1]): void { extensionSystem.setExtensionHeader(this, factory); }\n\tprivate addExtensionTerminalInputListener(handler: Parameters<typeof extensionSystem.addExtensionTerminalInputListener>[1]): () => void { return extensionSystem.addExtensionTerminalInputListener(this, handler); }\n\tprivate clearExtensionTerminalInputListeners(): void { extensionSystem.clearExtensionTerminalInputListeners(this); }\n\tprivate createExtensionUIContext() { return extensionSystem.createExtensionUIContext(this); }\n\tprivate showExtensionSelector(title: string, options: string[], opts?: import(\"@gsd/pi-coding-agent/core/extensions/index.js\").ExtensionUIDialogOptions): Promise<string | undefined> { return extensionSystem.showExtensionSelector(this, title, options, opts); }\n\tprivate hideExtensionSelector(): void { extensionSystem.hideExtensionSelector(this); }\n\tprivate showExtensionConfirm(title: string, message: string, opts?: import(\"@gsd/pi-coding-agent/core/extensions/index.js\").ExtensionUIDialogOptions): Promise<boolean> { return extensionSystem.showExtensionConfirm(this, title, message, opts); }\n\tprivate showExtensionInput(title: string, placeholder?: string, opts?: import(\"@gsd/pi-coding-agent/core/extensions/index.js\").ExtensionUIDialogOptions): Promise<string | undefined> { return extensionSystem.showExtensionInput(this, title, placeholder, opts); }\n\tprivate hideExtensionInput(): void { extensionSystem.hideExtensionInput(this); }\n\tprivate showExtensionEditor(title: string, prefill?: string): Promise<string | undefined> { return extensionSystem.showExtensionEditor(this, title, prefill); }\n\tprivate hideExtensionEditor(): void { extensionSystem.hideExtensionEditor(this); }\n\tprivate setCustomEditorComponent(factory: Parameters<typeof extensionSystem.setCustomEditorComponent>[1]): void { extensionSystem.setCustomEditorComponent(this, factory); }\n\tprivate showExtensionNotify(message: string, type?: import(\"./interactive-notify-render.js\").ExtensionNotifyType): void { extensionSystem.showExtensionNotify(this, message, type); }\n\tprivate showExtensionCustom<T>(factory: Parameters<typeof extensionSystem.showExtensionCustom<T>>[1], options?: Parameters<typeof extensionSystem.showExtensionCustom<T>>[2]): Promise<T> { return extensionSystem.showExtensionCustom(this, factory, options); }\n\tprivate showExtensionError(extensionPath: string, error: string, stack?: string): void { extensionSystem.showExtensionError(this, extensionPath, error, stack); }\n\n\tprivate setupKeyHandlers(): void { keyHandlers.setupKeyHandlers(this); }\n\tprivate handleClipboardImagePaste(): Promise<void> { return keyHandlers.handleClipboardImagePaste(this); }\n\tprivate handlePastedImagePath(filePath: string): void { keyHandlers.handlePastedImagePath(this, filePath); }\n\tprivate getSlashCommandContext() { return inputRouter.getSlashCommandContext(this); }\n\tprivate getAllQueuedMessages() { return inputRouter.getAllQueuedMessages(this); }\n\tprivate clearAllQueues() { return inputRouter.clearAllQueues(this); }\n\tprivate updatePendingMessagesDisplay(): void { inputRouter.updatePendingMessagesDisplay(this); }\n\tprivate restoreQueuedMessagesToEditor(options?: Parameters<typeof inputRouter.restoreQueuedMessagesToEditor>[1]): number { return inputRouter.restoreQueuedMessagesToEditor(this, options); }\n\tprivate queueCompactionMessage(text: string, mode: \"steer\" | \"followUp\"): void { inputRouter.queueCompactionMessage(this, text, mode); }\n\tprivate isExtensionCommand(text: string): boolean { return inputRouter.isExtensionCommand(this, text); }\n\tprivate isKnownSlashCommand(text: string): boolean { return inputRouter.isKnownSlashCommand(this, text); }\n\tprivate async flushCompactionQueue(options?: Parameters<typeof inputRouter.flushCompactionQueue>[1]): Promise<void> { return inputRouter.flushCompactionQueue(this, options); }\n\tprivate flushPendingBashComponents(): void { inputRouter.flushPendingBashComponents(this); }\n\tprivate updateTerminalTitle(): void { modeInit.updateTerminalTitle(this); }\n\n\tprivate getUserMessageText(message: import(\"@gsd/pi-ai\").Message): string { return chatRender.getUserMessageText(this, message); }\n\tprivate showStatus(message: string, options?: { append?: boolean }): void { chatRender.showStatus(this, message, options); }\n\tprivate addMessageToChat(message: import(\"@gsd/pi-agent-core\").AgentMessage, options?: { populateHistory?: boolean }): void { chatRender.addMessageToChat(this, message, options); }\n\tprivate trimChatHistory(): void { chatRender.trimChatHistory(this); }\n\tprivate renderSessionContext(sessionContext: import(\"@gsd/pi-coding-agent/core/session-manager.js\").SessionContext, options?: Parameters<typeof chatRender.renderSessionContext>[2]): void { chatRender.renderSessionContext(this, sessionContext, options); }\n\tprivate rebuildChatFromMessages(): void { chatRender.rebuildChatFromMessages(this); }\n\tprivate populatePinnedFromMessages(messages: import(\"@gsd/pi-agent-core\").AgentMessage[]): void { chatRender.populatePinnedFromMessages(this, messages); }\n\n\tprivate handleCtrlC(): void { keyHandlers.handleCtrlC(this); }\n\tprivate handleCtrlD(): void { keyHandlers.handleCtrlD(this); }\n\tprivate isShuttingDown = false;\n\tprivate async shutdown(): Promise<void> { return keyHandlers.shutdown(this); }\n\tprivate async checkShutdownRequested(): Promise<void> { return keyHandlers.checkShutdownRequested(this); }\n\tprivate handleCtrlZ(): void { keyHandlers.handleCtrlZ(this); }\n\tprivate async handleFollowUp(): Promise<void> { return keyHandlers.handleFollowUp(this); }\n\tprivate handleDequeue(): void { keyHandlers.handleDequeue(this); }\n\tprivate updateEditorBorderColor(): void { keyHandlers.updateEditorBorderColor(this); }\n\tprivate cycleThinkingLevel(): void { keyHandlers.cycleThinkingLevel(this); }\n\tprivate async cycleModel(direction: \"forward\" | \"backward\"): Promise<void> { return keyHandlers.cycleModel(this, direction); }\n\tprivate toggleToolOutputExpansion(): void { keyHandlers.toggleToolOutputExpansion(this); }\n\tprivate setToolsExpanded(expanded: boolean): void { keyHandlers.setToolsExpanded(this, expanded); }\n\ttoggleGsdStatusWidget(): void {\n\t\t// Compute the effective expansion so the toggle always visually flips:\n\t\t// undefined = use widgetMode default, otherwise use the explicit value.\n\t\tconst progress = this.gsdProgressState;\n\t\tconst defaultExpanded = progress !== undefined && progress.widgetMode !== \"min\";\n\t\tconst currentlyExpanded = this.gsdStatusExpanded !== undefined ? this.gsdStatusExpanded : defaultExpanded;\n\t\tthis.gsdStatusExpanded = !currentlyExpanded;\n\t\tthis.gsdStatusWidget.invalidate();\n\t\tthis.footer.invalidate();\n\t\tthis.ui.requestRender();\n\t}\n\tprivate setToolRailAnimation(enabled: boolean): void {\n\t\tthis.settingsManager.setToolRailAnimation(enabled);\n\t\tsetRailAnimationEnabled(enabled);\n\t\tfor (const child of this.chatContainer.children) {\n\t\t\tif (child instanceof ToolExecutionComponent) child.refreshRailAnimation();\n\t\t}\n\t\tthis.ui.requestRender();\n\t}\n\tprivate toggleThinkingBlockVisibility(): void { keyHandlers.toggleThinkingBlockVisibility(this); }\n\tprivate openExternalEditor(): void { keyHandlers.openExternalEditor(this); }\n\n\tprivate showSelector(create: Parameters<typeof selectors.showSelector>[1]): void { selectors.showSelector(this, create); }\n\tprivate showSettingsSelector(): void { selectors.showSettingsSelector(this); }\n\tprivate async handleModelCommand(searchTerm?: string): Promise<void> { return selectors.handleModelCommand(this, searchTerm); }\n\tprivate async findExactModelMatch(searchTerm: string) { return selectors.findExactModelMatch(this, searchTerm); }\n\tprivate async getModelCandidates() { return selectors.getModelCandidates(this); }\n\tprivate async updateAvailableProviderCount(): Promise<void> { return selectors.updateAvailableProviderCount(this); }\n\tprivate showModelSelector(initialSearchInput?: string): void { selectors.showModelSelector(this, initialSearchInput); }\n\tprivate async showModelsSelector(): Promise<void> { return selectors.showModelsSelector(this); }\n\tprivate showUserMessageSelector(): void { selectors.showUserMessageSelector(this); }\n\tprivate showTreeSelector(initialSelectedId?: string): void { selectors.showTreeSelector(this, initialSelectedId); }\n\tprivate showSessionSelector(): void { selectors.showSessionSelector(this); }\n\tprivate async handleResumeSession(sessionPath: string): Promise<void> { return selectors.handleResumeSession(this, sessionPath); }\n\tprivate showProviderManager(): void { selectors.showProviderManager(this); }\n\tprivate async showOAuthSelector(mode: \"login\" | \"logout\"): Promise<void> { return selectors.showOAuthSelector(this, mode); }\n\tprivate async showLoginDialog(providerId: string): Promise<void> { return selectors.showLoginDialog(this, providerId); }\n\n\tprivate async handleReloadCommand(): Promise<void> { return commandHandlers.handleReloadCommand(this); }\n\tprivate async handleClearCommand(): Promise<void> { return commandHandlers.handleClearCommand(this); }\n\tprivate handleDebugCommand(): void { commandHandlers.handleDebugCommand(this); }\n\tprivate handleDaxnuts(): void { commandHandlers.handleDaxnuts(this); }\n\tprivate checkDaxnutsEasterEgg(model: { provider: string; id: string }): void { commandHandlers.checkDaxnutsEasterEgg(this, model); }\n\tprivate async handleBashCommand(command: string, excludeFromContext?: boolean, displayCommand?: string, loginShell?: boolean): Promise<void> { return commandHandlers.handleBashCommand(this, command, excludeFromContext, displayCommand, loginShell); }\n\tprivate async executeCompaction(customInstructions?: string, isAuto?: boolean) { return commandHandlers.executeCompaction(this, customInstructions, isAuto); }\n}\n"]}
1
+ {"version":3,"file":"interactive-mode.js","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-mode.ts"],"names":[],"mappings":"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","sourcesContent":["// Project/App: gsd-pi\n// File Purpose: Interactive TUI mode and session UI rendering.\n// gsd-pi - Interactive TUI mode for coding-agent sessions.\n/**\n * Interactive mode for the coding agent.\n * Handles TUI rendering and user interaction, delegating business logic to AgentSession.\n */\n\nimport type { ImageContent } from \"@gsd/pi-ai\";\nimport type { EditorComponent, MarkdownTheme, Spacer, Text } from \"@gsd/pi-tui\";\nimport {\n\tCombinedAutocompleteProvider,\n\tContainer,\n\tLoader,\n\tProcessTerminal,\n\ttype Terminal as TuiTerminal,\n\tTUI,\n} from \"@gsd/pi-tui\";\nimport { VERSION } from \"@gsd/pi-coding-agent/config.js\";\nimport { type AgentSession, type AgentSessionEvent, createInitialTranscriptState, type TranscriptState } from \"@gsd/agent-core\";\nimport type { ExtensionRunner } from \"@gsd/pi-coding-agent/core/extensions/index.js\";\nimport { FooterDataProvider } from \"@gsd/pi-coding-agent/core/footer-data-provider.js\";\nimport { KeybindingsManager } from \"@gsd/agent-core\";\nimport { ensureTool } from \"@gsd/pi-coding-agent/utils/tools-manager.js\";\nimport { GsdStatusWidget } from \"./components/gsd-status-widget.js\";\nimport { AssistantMessageComponent } from \"./components/assistant-message.js\";\nimport { BashExecutionComponent } from \"./components/bash-execution.js\";\nimport { CustomEditor } from \"./components/custom-editor.js\";\nimport { ExtensionEditorComponent } from \"./components/extension-editor.js\";\nimport { ExtensionInputComponent } from \"./components/extension-input.js\";\nimport { ExtensionSelectorComponent } from \"./components/extension-selector.js\";\nimport { FooterComponent } from \"./components/footer.js\";\nimport { ToolExecutionComponent } from \"./components/tool-execution.js\";\nimport { setRailAnimationEnabled } from \"./components/transcript-design.js\";\nimport { ContextualTips } from \"@gsd/agent-core\";\nimport { handleAgentEvent } from \"./controllers/chat-controller.js\";\nimport { createInteractiveModeUiState } from \"./interactive-mode-ui-state.js\";\nimport { applyAgentEventToTranscript } from \"./tui-transcript-tracker.js\";\nimport { setupEditorSubmitHandler as setupEditorSubmitHandlerController } from \"./controllers/input-controller.js\";\nimport {\n\tgetEditorTheme,\n\tinitTheme,\n\tonThemeChange,\n\tsetRegisteredThemes,\n\tstopThemeWatcher,\n} from \"@gsd/pi-coding-agent/theme/theme.js\";\nimport * as chatRender from \"./interactive-chat-render.js\";\nimport * as commandHandlers from \"./interactive-command-handlers.js\";\nimport * as extensionSystem from \"./interactive-extension-system.js\";\nimport * as inputRouter from \"./interactive-input-router.js\";\nimport * as keyHandlers from \"./interactive-key-handlers.js\";\nimport * as modeInit from \"./interactive-mode-init.js\";\nimport type { CompactionQueuedMessage } from \"./interactive-notify-render.js\";\nimport * as resourceDisplay from \"./interactive-resource-display.js\";\nimport * as selectors from \"./interactive-selectors.js\";\nimport { clearMarkdownThemeCache, getMarkdownThemeWithSettings as getMarkdownThemeWithSettingsModule } from \"./interactive-theme-cache.js\";\nimport * as uiMessaging from \"./interactive-ui-messaging.js\";\nimport { DEFAULT_TOOL_OUTPUT_EXPANDED } from \"./interactive-mode-class-constants.js\";\n\nexport type {\n\tAssistantReplaySegment,\n\tExtensionNotifyType,\n\tExtensionNotifyRenderResult,\n\tCompactionQueuedMessage,\n} from \"./interactive-notify-render.js\";\nexport {\n\tbuildAssistantReplaySegments,\n\tgetToolExpansionStartupHint,\n\tshouldRenderExtensionNotifyInChat,\n\trenderExtensionNotifyInChat,\n\trenderBlockingErrorBanner,\n} from \"./interactive-notify-render.js\";\n\nexport interface InteractiveModeOptions {\n\t/** Providers that were migrated to auth.json (shows warning) */\n\tmigratedProviders?: string[];\n\t/** Warning message if session model couldn't be restored */\n\tmodelFallbackMessage?: string;\n\t/** Initial message to send on startup (can include @file content) */\n\tinitialMessage?: string;\n\t/** Images to attach to the initial message */\n\tinitialImages?: ImageContent[];\n\t/** Additional messages to send after the initial message */\n\tinitialMessages?: string[];\n\t/** Force verbose startup (overrides quietStartup setting) */\n\tverbose?: boolean;\n\t/** Override the terminal implementation used by the TUI. */\n\tterminal?: TuiTerminal;\n\t/** When false, reuse the session's existing extension bindings instead of rebinding them for TUI mode. */\n\tbindExtensions?: boolean;\n\t/** Submit editor prompts directly to AgentSession instead of using the interactive prompt loop. */\n\tsubmitPromptsDirectly?: boolean;\n\t/** Control what happens when the user requests shutdown from the TUI. */\n\tshutdownBehavior?: \"exit_process\" | \"stop_ui\" | \"ignore\";\n}\n\nexport class InteractiveMode {\n\tprivate session: AgentSession;\n\tprivate ui: TUI;\n\tprivate chatContainer: Container;\n\tprivate pendingMessagesContainer: Container;\n\tprivate gsdStatusWidget: GsdStatusWidget;\n\tprivate gsdStatusExpanded: boolean | undefined = undefined;\n\tprivate gsdProgressState: import(\"@gsd/pi-coding-agent/core/extensions/extension-upstream-types.js\").GsdProgressState | undefined;\n\tprivate gsdProgressDispose?: () => void;\n\tprivate statusContainer: Container;\n\tprivate pinnedMessageContainer: Container;\n\tprivate blockingErrorContainer: Container;\n\tprivate defaultEditor: CustomEditor;\n\tprivate editor: EditorComponent;\n\tprivate autocompleteProvider: CombinedAutocompleteProvider | undefined;\n\tprivate editorContainer: Container;\n\tprivate footer: FooterComponent;\n\tprivate footerDataProvider: FooterDataProvider;\n\tprivate keybindings: KeybindingsManager;\n\tprivate version: string;\n\tprivate isInitialized = false;\n\tprivate onInputCallback?: (text: string) => void;\n\tprivate loadingAnimation: Loader | undefined = undefined;\n\tprivate activityLoader: Loader | undefined = undefined;\n\tprivate pendingWorkingMessage: string | null | undefined = undefined;\n\tprivate readonly defaultWorkingMessage = \"Working...\";\n\tprivate lastBlockingError: string | undefined = undefined;\n\n\tprivate lastSigintTime = 0;\n\tprivate lastEscapeTime = 0;\n\tprivate changelogMarkdown: string | undefined = undefined;\n\tprivate startupHeaderDismissed = false;\n\n\tprivate lastStatusSpacer: Spacer | undefined = undefined;\n\tprivate lastStatusText: Text | undefined = undefined;\n\n\tprivate streamingComponent: AssistantMessageComponent | undefined = undefined;\n\tprivate streamingMessage: import(\"@gsd/pi-ai\").AssistantMessage | undefined = undefined;\n\n\tprivate pendingTools = new Map<string, ToolExecutionComponent>();\n\tprivate toolOutputExpanded = DEFAULT_TOOL_OUTPUT_EXPANDED;\n\tprivate pendingImages: ImageContent[] = [];\n\tprivate hideThinkingBlock = false;\n\tprivate skillCommands = new Map<string, string>();\n\tprivate unsubscribe?: () => void;\n\tprivate _branchChangeUnsub?: () => void;\n\tprivate _themeChangeUnsub?: () => void;\n\tprivate markdownThemeCache?: MarkdownTheme;\n\tprivate markdownThemeCacheIndent?: string;\n\tprivate isBashMode = false;\n\tprivate contextualTips = new ContextualTips();\n\tprivate bashComponent: BashExecutionComponent | undefined = undefined;\n\tprivate pendingBashComponents: BashExecutionComponent[] = [];\n\tprivate autoCompactionLoader: Loader | undefined = undefined;\n\tprivate autoCompactionEscapeHandler?: () => void;\n\tprivate retryLoader: Loader | undefined = undefined;\n\tprivate retryEscapeHandler?: () => void;\n\tprivate compactionQueuedMessages: CompactionQueuedMessage[] = [];\n\tprivate shutdownRequested = false;\n\tprivate extensionSelector: ExtensionSelectorComponent | undefined = undefined;\n\tprivate extensionInput: ExtensionInputComponent | undefined = undefined;\n\tprivate extensionEditor: ExtensionEditorComponent | undefined = undefined;\n\tprivate extensionTerminalInputUnsubscribers = new Set<() => void>();\n\tprivate stdinErrorHandler: ((err: Error) => void) | undefined = undefined;\n\tprivate extensionWidgetsAbove = new Map<string, import(\"@gsd/pi-tui\").Component & { dispose?(): void }>();\n\tprivate extensionWidgetsBelow = new Map<string, import(\"@gsd/pi-tui\").Component & { dispose?(): void }>();\n\tprivate readonly uiState = createInteractiveModeUiState();\n\ttranscriptState: TranscriptState = createInitialTranscriptState();\n\tprivate widgetContainerAbove!: Container;\n\tprivate widgetContainerBelow!: Container;\n\tprivate customFooter: (import(\"@gsd/pi-tui\").Component & { dispose?(): void }) | undefined = undefined;\n\tprivate headerContainer: Container;\n\tprivate builtInHeader: import(\"@gsd/pi-tui\").Component | undefined = undefined;\n\tprivate customHeader: (import(\"@gsd/pi-tui\").Component & { dispose?(): void }) | undefined = undefined;\n\n\tprivate get agent() {\n\t\treturn this.session.agent;\n\t}\n\tprivate get sessionManager() {\n\t\treturn this.session.sessionManager;\n\t}\n\tprivate get settingsManager() {\n\t\treturn this.session.settingsManager;\n\t}\n\n\tget streamingRenderState() {\n\t\treturn this.uiState.streaming.streamingRenderState;\n\t}\n\n\tconstructor(\n\t\tsession: AgentSession,\n\t\tprivate options: InteractiveModeOptions = {},\n\t) {\n\t\tthis.session = session;\n\t\tthis.version = VERSION;\n\t\tthis.ui = new TUI(options.terminal ?? new ProcessTerminal(), this.settingsManager.getShowHardwareCursor());\n\t\tthis.ui.setClearOnShrink(this.settingsManager.getClearOnShrink());\n\t\tsetRailAnimationEnabled(this.settingsManager.getToolRailAnimation());\n\t\tthis.headerContainer = new Container();\n\t\tthis.chatContainer = new Container();\n\t\tthis.pendingMessagesContainer = new Container();\n\t\tthis.gsdStatusWidget = new GsdStatusWidget(() => ({\n\t\t\toverride: this.settingsManager.getAdaptiveMode(),\n\t\t\tactiveToolCount: this.pendingTools.size,\n\t\t\tgsdPhase: this.gsdProgressState?.phase ?? this.pendingWorkingMessage ?? undefined,\n\t\t\tlastError: this.lastBlockingError,\n\t\t\tsessionName: this.sessionManager.getSessionName(),\n\t\t\tcwd: this.gsdProgressState?.path ?? process.cwd(),\n\t\t\tmanuallyExpanded: this.gsdStatusExpanded,\n\t\t\tgsdProgress: this.gsdProgressState,\n\t\t\tisStreaming: this.session.isStreaming,\n\t\t}));\n\t\tthis.statusContainer = new Container();\n\t\tthis.pinnedMessageContainer = new Container();\n\t\tthis.blockingErrorContainer = new Container();\n\t\tthis.widgetContainerAbove = new Container();\n\t\tthis.widgetContainerBelow = new Container();\n\t\tthis.keybindings = KeybindingsManager.create();\n\t\tconst editorPaddingX = this.settingsManager.getEditorPaddingX();\n\t\tconst autocompleteMaxVisible = this.settingsManager.getAutocompleteMaxVisible();\n\t\tthis.defaultEditor = new CustomEditor(this.ui, getEditorTheme(), this.keybindings, {\n\t\t\tpaddingX: editorPaddingX,\n\t\t\tautocompleteMaxVisible,\n\t\t});\n\t\tthis.editor = this.defaultEditor;\n\t\tthis.editorContainer = new Container();\n\t\tthis.editorContainer.addChild(this.editor as import(\"@gsd/pi-tui\").Component);\n\t\tthis.footerDataProvider = new FooterDataProvider(process.cwd());\n\t\tthis.footer = new FooterComponent(session, this.footerDataProvider, () => ({\n\t\t\toverride: this.settingsManager.getAdaptiveMode(),\n\t\t\tactiveToolCount: this.pendingTools.size,\n\t\t\tgsdPhase: this.gsdProgressState?.phase ?? this.pendingWorkingMessage ?? undefined,\n\t\t\tlastError: this.lastBlockingError,\n\t\t\tcwd: this.gsdProgressState?.path ?? process.cwd(),\n\t\t\tmanuallyExpanded: this.gsdStatusExpanded,\n\t\t\tgsdProgress: this.gsdProgressState,\n\t\t}));\n\t\tthis.footer.setAutoCompactEnabled(session.autoCompactionEnabled);\n\t\tthis.toolOutputExpanded = this.settingsManager.getToolsExpanded();\n\t\tthis.hideThinkingBlock = this.settingsManager.getHideThinkingBlock();\n\t\tsetRegisteredThemes(this.session.resourceLoader.getThemes().themes);\n\t\tinitTheme(this.settingsManager.getTheme(), true);\n\t}\n\n\tprivate setupAutocomplete(): void {\n\t\tinputRouter.setupAutocomplete(this);\n\t}\n\n\tprivate installStdinErrorRecovery(): void {\n\t\tmodeInit.installStdinErrorRecovery(this);\n\t}\n\n\tasync init(): Promise<void> {\n\t\tif (this.isInitialized) return;\n\n\t\tthis.changelogMarkdown = modeInit.getChangelogForDisplay(this);\n\t\tawait ensureTool(\"rg\");\n\n\t\tthis.ui.addChild(this.headerContainer);\n\t\tmodeInit.mountStartupHeader(this);\n\n\t\tthis.ui.addChild(this.chatContainer);\n\t\tthis.ui.addChild(this.pendingMessagesContainer);\n\t\tthis.ui.addChild(this.statusContainer);\n\t\tthis.ui.addChild(this.pinnedMessageContainer);\n\t\tthis.ui.addChild(this.blockingErrorContainer);\n\t\tthis.renderWidgets();\n\t\tthis.ui.addChild(this.widgetContainerAbove);\n\t\tthis.ui.addChild(this.editorContainer);\n\t\tthis.ui.addChild(this.widgetContainerBelow);\n\t\tthis.ui.addChild(this.footer);\n\t\tthis.ui.setFocus(this.editor);\n\n\t\tthis.setupKeyHandlers();\n\t\tthis.setupEditorSubmitHandler();\n\t\tawait this.initExtensions();\n\t\tthis.renderInitialMessages();\n\n\t\tthis.ui.start();\n\t\tthis.ui.onOutputClosed = () => {\n\t\t\tif (this.isShuttingDown) return;\n\t\t\tvoid keyHandlers.shutdown(this);\n\t\t};\n\t\tthis.installStdinErrorRecovery();\n\t\tthis.isInitialized = true;\n\n\t\tmodeInit.updateTerminalTitle(this);\n\t\tthis.subscribeToAgent();\n\n\t\tthis._themeChangeUnsub = onThemeChange(() => {\n\t\t\tthis.clearMarkdownThemeCache();\n\t\t\tthis.ui.invalidate();\n\t\t\tthis.updateEditorBorderColor();\n\t\t\tthis.ui.requestRender();\n\t\t});\n\n\t\tthis._branchChangeUnsub = this.footerDataProvider.onBranchChange(() => {\n\t\t\tthis.ui.requestRender();\n\t\t});\n\n\t\tawait this.updateAvailableProviderCount();\n\t}\n\n\tasync run(): Promise<void> {\n\t\tawait this.init();\n\n\t\tmodeInit.checkForNewVersion(this).then((newVersion) => {\n\t\t\tif (newVersion) {\n\t\t\t\tmodeInit.showNewVersionNotification(this, newVersion);\n\t\t\t}\n\t\t});\n\n\t\tmodeInit.checkTmuxKeyboardSetup().then((warning) => {\n\t\t\tif (warning) {\n\t\t\t\tthis.showWarning(warning);\n\t\t\t}\n\t\t});\n\n\t\tconst { migratedProviders, modelFallbackMessage, initialMessage, initialImages, initialMessages } = this.options;\n\n\t\tif (migratedProviders && migratedProviders.length > 0) {\n\t\t\tthis.showWarning(`Migrated credentials to auth.json: ${migratedProviders.join(\", \")}`);\n\t\t}\n\n\t\tconst modelsJsonError = this.session.modelRegistry.getError();\n\t\tif (modelsJsonError) {\n\t\t\tthis.showError(`models.json error: ${modelsJsonError}`);\n\t\t}\n\n\t\tif (modelFallbackMessage) {\n\t\t\tthis.showWarning(modelFallbackMessage);\n\t\t}\n\n\t\tif (initialMessage) {\n\t\t\ttry {\n\t\t\t\tawait this.session.prompt(initialMessage, { images: initialImages });\n\t\t\t} catch (error: unknown) {\n\t\t\t\tconst errorMessage = error instanceof Error ? error.message : \"Unknown error occurred\";\n\t\t\t\tthis.showError(errorMessage);\n\t\t\t}\n\t\t}\n\n\t\tif (initialMessages) {\n\t\t\tfor (const message of initialMessages) {\n\t\t\t\ttry {\n\t\t\t\t\tawait this.session.prompt(message);\n\t\t\t\t} catch (error: unknown) {\n\t\t\t\t\tconst errorMessage = error instanceof Error ? error.message : \"Unknown error occurred\";\n\t\t\t\t\tthis.showError(errorMessage);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\twhile (true) {\n\t\t\tconst userInput = await this.getUserInput();\n\t\t\tconst images = this.pendingImages.length > 0 ? [...this.pendingImages] : undefined;\n\t\t\tthis.pendingImages.length = 0;\n\t\t\ttry {\n\t\t\t\tawait this.session.prompt(userInput, { images });\n\t\t\t} catch (error: unknown) {\n\t\t\t\tconst errorMessage = error instanceof Error ? error.message : \"Unknown error occurred\";\n\t\t\t\tthis.showError(errorMessage);\n\t\t\t}\n\t\t}\n\t}\n\n\tgetMarkdownThemeWithSettings(): MarkdownTheme {\n\t\treturn getMarkdownThemeWithSettingsModule(this);\n\t}\n\n\tprivate clearMarkdownThemeCache(): void {\n\t\tclearMarkdownThemeCache(this);\n\t}\n\n\tprivate setupEditorSubmitHandler(): void {\n\t\tsetupEditorSubmitHandlerController(this as any);\n\t}\n\n\tprivate subscribeToAgent(): void {\n\t\tlet eventQueue: Promise<void> = Promise.resolve();\n\t\tthis.unsubscribe = this.session.subscribe((event) => {\n\t\t\teventQueue = eventQueue.then(() => this.handleEvent(event)).catch(() => {});\n\t\t});\n\t}\n\n\tprivate async handleEvent(event: AgentSessionEvent): Promise<void> {\n\t\tthis.transcriptState = applyAgentEventToTranscript(this.transcriptState, event);\n\t\tawait handleAgentEvent(this as any, event);\n\t}\n\n\tclearEditor(): void {\n\t\tuiMessaging.clearEditor(this);\n\t}\n\n\tshowError(errorMessage: string): void {\n\t\tuiMessaging.showError(this, errorMessage);\n\t}\n\n\tclearBlockingError(): void {\n\t\tuiMessaging.clearBlockingError(this);\n\t}\n\n\tshowWarning(warningMessage: string): void {\n\t\tuiMessaging.showWarning(this, warningMessage);\n\t}\n\n\tshowSuccess(successMessage: string): void {\n\t\tuiMessaging.showSuccess(this, successMessage);\n\t}\n\n\tshowTip(message: string): void {\n\t\tuiMessaging.showTip(this, message);\n\t}\n\n\tgetContextPercent(): number | undefined {\n\t\treturn this.session.getContextUsage()?.percent ?? undefined;\n\t}\n\n\trenderInitialMessages(): void {\n\t\tchatRender.renderInitialMessages(this);\n\t}\n\n\tasync getUserInput(): Promise<string> {\n\t\treturn chatRender.getUserInput(this);\n\t}\n\n\tgetExtensionUIContext() {\n\t\treturn extensionSystem.createExtensionUIContext(this);\n\t}\n\n\trequestRender(force = false): void {\n\t\tif (!this.isInitialized) return;\n\t\tthis.ui.requestRender(force);\n\t}\n\n\tstop(): void {\n\t\tif (this.loadingAnimation) {\n\t\t\tthis.loadingAnimation.stop();\n\t\t\tthis.loadingAnimation = undefined;\n\t\t}\n\t\tthis.clearExtensionTerminalInputListeners();\n\t\tthis._branchChangeUnsub?.();\n\t\tthis._branchChangeUnsub = undefined;\n\t\tthis._themeChangeUnsub?.();\n\t\tthis._themeChangeUnsub = undefined;\n\t\tstopThemeWatcher();\n\n\t\tif (this.onInputCallback) {\n\t\t\tthis.onInputCallback(\"\");\n\t\t\tthis.onInputCallback = undefined;\n\t\t}\n\n\t\tthis.clearExtensionWidgets();\n\t\tif (this.customFooter?.dispose) {\n\t\t\tthis.customFooter.dispose();\n\t\t}\n\t\tthis.customFooter = undefined;\n\t\tif (this.customHeader?.dispose) {\n\t\t\tthis.customHeader.dispose();\n\t\t}\n\t\tthis.customHeader = undefined;\n\t\tthis.autocompleteProvider = undefined;\n\n\t\tthis.footer.dispose();\n\t\tthis.footerDataProvider.dispose();\n\t\tif (this.unsubscribe) {\n\t\t\tthis.unsubscribe();\n\t\t}\n\t\tif (this.stdinErrorHandler) {\n\t\t\tprocess.stdin.removeListener(\"error\", this.stdinErrorHandler);\n\t\t\tthis.stdinErrorHandler = undefined;\n\t\t}\n\t\tif (this.isInitialized) {\n\t\t\tthis.ui.stop();\n\t\t\tthis.isInitialized = false;\n\t\t}\n\t}\n\n\t// Delegates (Phase E2 extracted modules)\n\tprivate formatDisplayPath(p: string): string { return resourceDisplay.formatDisplayPath(this, p); }\n\tprivate getShortPath(fullPath: string, source: string): string { return resourceDisplay.getShortPath(this, fullPath, source); }\n\tprivate showLoadedResources(options?: Parameters<typeof resourceDisplay.showLoadedResources>[1]): void { resourceDisplay.showLoadedResources(this, options); }\n\n\tprivate async initExtensions(): Promise<void> { return extensionSystem.initExtensions(this); }\n\tprivate getRegisteredToolDefinition(toolName: string) { return extensionSystem.getRegisteredToolDefinition(this, toolName); }\n\tprivate formatWebSearchResult(content: unknown): string { return extensionSystem.formatWebSearchResult(this, content); }\n\tprivate setupExtensionShortcuts(extensionRunner: ExtensionRunner): void { extensionSystem.setupExtensionShortcuts(this, extensionRunner); }\n\tprivate setExtensionStatus(key: string, text: string | undefined): void { extensionSystem.setExtensionStatus(this, key, text); }\n\tprivate setGsdProgress(state: Parameters<typeof extensionSystem.setGsdProgress>[1], dispose?: () => void): void { extensionSystem.setGsdProgress(this, state, dispose); }\n\tprivate setExtensionWidget(key: string, content: Parameters<typeof extensionSystem.setExtensionWidget>[2], options?: Parameters<typeof extensionSystem.setExtensionWidget>[3]): void { extensionSystem.setExtensionWidget(this, key, content, options); }\n\tprivate clearExtensionWidgets(): void { extensionSystem.clearExtensionWidgets(this); }\n\tprivate resetExtensionUI(): void { extensionSystem.resetExtensionUI(this); }\n\tprivate renderWidgets(): void { extensionSystem.renderWidgets(this); }\n\tprivate setExtensionFooter(factory: Parameters<typeof extensionSystem.setExtensionFooter>[1]): void { extensionSystem.setExtensionFooter(this, factory); }\n\tprivate setExtensionHeader(factory: Parameters<typeof extensionSystem.setExtensionHeader>[1]): void { extensionSystem.setExtensionHeader(this, factory); }\n\tprivate addExtensionTerminalInputListener(handler: Parameters<typeof extensionSystem.addExtensionTerminalInputListener>[1]): () => void { return extensionSystem.addExtensionTerminalInputListener(this, handler); }\n\tprivate clearExtensionTerminalInputListeners(): void { extensionSystem.clearExtensionTerminalInputListeners(this); }\n\tprivate createExtensionUIContext() { return extensionSystem.createExtensionUIContext(this); }\n\tprivate showExtensionSelector(title: string, options: string[], opts?: import(\"@gsd/pi-coding-agent/core/extensions/index.js\").ExtensionUIDialogOptions): Promise<string | undefined> { return extensionSystem.showExtensionSelector(this, title, options, opts); }\n\tprivate hideExtensionSelector(): void { extensionSystem.hideExtensionSelector(this); }\n\tprivate showExtensionConfirm(title: string, message: string, opts?: import(\"@gsd/pi-coding-agent/core/extensions/index.js\").ExtensionUIDialogOptions): Promise<boolean> { return extensionSystem.showExtensionConfirm(this, title, message, opts); }\n\tprivate showExtensionInput(title: string, placeholder?: string, opts?: import(\"@gsd/pi-coding-agent/core/extensions/index.js\").ExtensionUIDialogOptions): Promise<string | undefined> { return extensionSystem.showExtensionInput(this, title, placeholder, opts); }\n\tprivate hideExtensionInput(): void { extensionSystem.hideExtensionInput(this); }\n\tprivate showExtensionEditor(title: string, prefill?: string): Promise<string | undefined> { return extensionSystem.showExtensionEditor(this, title, prefill); }\n\tprivate hideExtensionEditor(): void { extensionSystem.hideExtensionEditor(this); }\n\tprivate setCustomEditorComponent(factory: Parameters<typeof extensionSystem.setCustomEditorComponent>[1]): void { extensionSystem.setCustomEditorComponent(this, factory); }\n\tprivate showExtensionNotify(message: string, type?: import(\"./interactive-notify-render.js\").ExtensionNotifyType): void { extensionSystem.showExtensionNotify(this, message, type); }\n\tprivate showExtensionCustom<T>(factory: Parameters<typeof extensionSystem.showExtensionCustom<T>>[1], options?: Parameters<typeof extensionSystem.showExtensionCustom<T>>[2]): Promise<T> { return extensionSystem.showExtensionCustom(this, factory, options); }\n\tprivate showExtensionError(extensionPath: string, error: string, stack?: string): void { extensionSystem.showExtensionError(this, extensionPath, error, stack); }\n\n\tprivate setupKeyHandlers(): void { keyHandlers.setupKeyHandlers(this); }\n\tprivate handleClipboardImagePaste(): Promise<void> { return keyHandlers.handleClipboardImagePaste(this); }\n\tprivate handlePastedImagePath(filePath: string): void { keyHandlers.handlePastedImagePath(this, filePath); }\n\tprivate getSlashCommandContext() { return inputRouter.getSlashCommandContext(this); }\n\tprivate getAllQueuedMessages() { return inputRouter.getAllQueuedMessages(this); }\n\tprivate clearAllQueues() { return inputRouter.clearAllQueues(this); }\n\tprivate updatePendingMessagesDisplay(): void { inputRouter.updatePendingMessagesDisplay(this); }\n\tprivate restoreQueuedMessagesToEditor(options?: Parameters<typeof inputRouter.restoreQueuedMessagesToEditor>[1]): number { return inputRouter.restoreQueuedMessagesToEditor(this, options); }\n\tprivate queueCompactionMessage(text: string, mode: \"steer\" | \"followUp\"): void { inputRouter.queueCompactionMessage(this, text, mode); }\n\tprivate isExtensionCommand(text: string): boolean { return inputRouter.isExtensionCommand(this, text); }\n\tprivate isKnownSlashCommand(text: string): boolean { return inputRouter.isKnownSlashCommand(this, text); }\n\tprivate async flushCompactionQueue(options?: Parameters<typeof inputRouter.flushCompactionQueue>[1]): Promise<void> { return inputRouter.flushCompactionQueue(this, options); }\n\tprivate flushPendingBashComponents(): void { inputRouter.flushPendingBashComponents(this); }\n\tprivate updateTerminalTitle(): void { modeInit.updateTerminalTitle(this); }\n\n\tprivate getUserMessageText(message: import(\"@gsd/pi-ai\").Message): string { return chatRender.getUserMessageText(this, message); }\n\tprivate showStatus(message: string, options?: { append?: boolean }): void { chatRender.showStatus(this, message, options); }\n\tprivate addMessageToChat(message: import(\"@gsd/pi-agent-core\").AgentMessage, options?: { populateHistory?: boolean }): void { chatRender.addMessageToChat(this, message, options); }\n\tprivate trimChatHistory(): void { chatRender.trimChatHistory(this); }\n\tprivate renderSessionContext(sessionContext: import(\"@gsd/pi-coding-agent/core/session-manager.js\").SessionContext, options?: Parameters<typeof chatRender.renderSessionContext>[2]): void { chatRender.renderSessionContext(this, sessionContext, options); }\n\tprivate rebuildChatFromMessages(): void { chatRender.rebuildChatFromMessages(this); }\n\tprivate populatePinnedFromMessages(messages: import(\"@gsd/pi-agent-core\").AgentMessage[]): void { chatRender.populatePinnedFromMessages(this, messages); }\n\n\tprivate handleCtrlC(): void { keyHandlers.handleCtrlC(this); }\n\tprivate handleCtrlD(): void { keyHandlers.handleCtrlD(this); }\n\tprivate isShuttingDown = false;\n\tprivate async shutdown(): Promise<void> { return keyHandlers.shutdown(this); }\n\tprivate async checkShutdownRequested(): Promise<void> { return keyHandlers.checkShutdownRequested(this); }\n\tprivate handleCtrlZ(): void { keyHandlers.handleCtrlZ(this); }\n\tprivate async handleFollowUp(): Promise<void> { return keyHandlers.handleFollowUp(this); }\n\tprivate handleDequeue(): void { keyHandlers.handleDequeue(this); }\n\tprivate updateEditorBorderColor(): void { keyHandlers.updateEditorBorderColor(this); }\n\tprivate cycleThinkingLevel(): void { keyHandlers.cycleThinkingLevel(this); }\n\tprivate async cycleModel(direction: \"forward\" | \"backward\"): Promise<void> { return keyHandlers.cycleModel(this, direction); }\n\tprivate toggleToolOutputExpansion(): void { keyHandlers.toggleToolOutputExpansion(this); }\n\tprivate setToolsExpanded(expanded: boolean): void { keyHandlers.setToolsExpanded(this, expanded); }\n\ttoggleGsdStatusWidget(): void {\n\t\t// Compute the effective expansion so the toggle always visually flips:\n\t\t// undefined = use widgetMode default, otherwise use the explicit value.\n\t\tconst progress = this.gsdProgressState;\n\t\tconst defaultExpanded = progress !== undefined && progress.widgetMode !== \"min\";\n\t\tconst currentlyExpanded = this.gsdStatusExpanded !== undefined ? this.gsdStatusExpanded : defaultExpanded;\n\t\tthis.gsdStatusExpanded = !currentlyExpanded;\n\t\tthis.gsdStatusWidget.invalidate();\n\t\tthis.footer.invalidate();\n\t\tthis.ui.requestRender();\n\t}\n\tprivate setToolRailAnimation(enabled: boolean): void {\n\t\tthis.settingsManager.setToolRailAnimation(enabled);\n\t\tsetRailAnimationEnabled(enabled);\n\t\tfor (const child of this.chatContainer.children) {\n\t\t\tif (child instanceof ToolExecutionComponent) child.refreshRailAnimation();\n\t\t}\n\t\tthis.ui.requestRender();\n\t}\n\tprivate toggleThinkingBlockVisibility(): void { keyHandlers.toggleThinkingBlockVisibility(this); }\n\tprivate openExternalEditor(): void { keyHandlers.openExternalEditor(this); }\n\n\tprivate showSelector(create: Parameters<typeof selectors.showSelector>[1]): void { selectors.showSelector(this, create); }\n\tprivate showSettingsSelector(): void { selectors.showSettingsSelector(this); }\n\tprivate async handleModelCommand(searchTerm?: string): Promise<void> { return selectors.handleModelCommand(this, searchTerm); }\n\tprivate async findExactModelMatch(searchTerm: string) { return selectors.findExactModelMatch(this, searchTerm); }\n\tprivate async getModelCandidates() { return selectors.getModelCandidates(this); }\n\tprivate async updateAvailableProviderCount(): Promise<void> { return selectors.updateAvailableProviderCount(this); }\n\tprivate showModelSelector(initialSearchInput?: string): void { selectors.showModelSelector(this, initialSearchInput); }\n\tprivate async showModelsSelector(): Promise<void> { return selectors.showModelsSelector(this); }\n\tprivate showUserMessageSelector(): void { selectors.showUserMessageSelector(this); }\n\tprivate showTreeSelector(initialSelectedId?: string): void { selectors.showTreeSelector(this, initialSelectedId); }\n\tprivate showSessionSelector(): void { selectors.showSessionSelector(this); }\n\tprivate async handleResumeSession(sessionPath: string): Promise<void> { return selectors.handleResumeSession(this, sessionPath); }\n\tprivate showProviderManager(): void { selectors.showProviderManager(this); }\n\tprivate async showOAuthSelector(mode: \"login\" | \"logout\"): Promise<void> { return selectors.showOAuthSelector(this, mode); }\n\tprivate async showLoginDialog(providerId: string): Promise<void> { return selectors.showLoginDialog(this, providerId); }\n\n\tprivate async handleReloadCommand(): Promise<void> { return commandHandlers.handleReloadCommand(this); }\n\tprivate async handleClearCommand(): Promise<void> { return commandHandlers.handleClearCommand(this); }\n\tprivate handleDebugCommand(): void { commandHandlers.handleDebugCommand(this); }\n\tprivate handleDaxnuts(): void { commandHandlers.handleDaxnuts(this); }\n\tprivate checkDaxnutsEasterEgg(model: { provider: string; id: string }): void { commandHandlers.checkDaxnutsEasterEgg(this, model); }\n\tprivate async handleBashCommand(command: string, excludeFromContext?: boolean, displayCommand?: string, loginShell?: boolean): Promise<void> { return commandHandlers.handleBashCommand(this, command, excludeFromContext, displayCommand, loginShell); }\n\tprivate async executeCompaction(customInstructions?: string, isAuto?: boolean) { return commandHandlers.executeCompaction(this, customInstructions, isAuto); }\n}\n"]}
@@ -0,0 +1,56 @@
1
+ import type { Markdown } from "@gsd/pi-tui";
2
+ import type { AssistantMessageComponent } from "./components/assistant-message.js";
3
+ import type { DynamicBorder } from "./components/dynamic-border.js";
4
+ import { ToolExecutionComponent, ToolPhaseSummaryComponent, type ToolExecutionPhase } from "./components/tool-execution.js";
5
+ /** Per streaming assistant turn — text runs, tools, and rollup summaries. */
6
+ export type RenderedSegment = {
7
+ kind: "text-run";
8
+ startIndex: number;
9
+ endIndex: number;
10
+ contentType: "text" | "thinking";
11
+ component: AssistantMessageComponent;
12
+ /** Snapshot for redundant sub-turn detection after content[] shrinks. */
13
+ cachedText?: string;
14
+ } | {
15
+ kind: "tool";
16
+ contentIndex: number;
17
+ component: ToolExecutionComponent;
18
+ } | {
19
+ kind: "tool-summary";
20
+ component: ToolPhaseSummaryComponent;
21
+ phases: ToolExecutionPhase[];
22
+ };
23
+ export type DesiredSegment = {
24
+ kind: "text-run";
25
+ startIndex: number;
26
+ endIndex: number;
27
+ contentType: "text" | "thinking";
28
+ } | {
29
+ kind: "tool";
30
+ contentIndex: number;
31
+ toolId: string;
32
+ };
33
+ export type ToolRegistrationSource = "content" | "standalone";
34
+ /**
35
+ * Per InteractiveMode instance: streaming transcript walker + pinned message zone.
36
+ * Replaces module-level globals in chat-controller.ts.
37
+ */
38
+ export declare class StreamingRenderState {
39
+ lastProcessedContentIndex: number;
40
+ lastContentLength: number;
41
+ renderedSegments: RenderedSegment[];
42
+ /** Displaced segments when provider sub-turn shrinks content[] mid-lifecycle. */
43
+ orphanedSegments: RenderedSegment[];
44
+ readonly toolRegistrationSources: WeakMap<ToolExecutionComponent, Set<ToolRegistrationSource>>;
45
+ lastPinnedText: string;
46
+ hasToolsInTurn: boolean;
47
+ pinnedBorder: DynamicBorder | undefined;
48
+ pinnedTextComponent: Markdown | undefined;
49
+ pinnedZoneNeedsViewportRealign: boolean;
50
+ resetStreamingSegments(): void;
51
+ resetPinnedZone(): void;
52
+ resetForNewAssistantMessage(): void;
53
+ resetForSessionChange(): void;
54
+ }
55
+ export declare function createStreamingRenderState(): StreamingRenderState;
56
+ //# sourceMappingURL=streaming-render-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streaming-render-state.d.ts","sourceRoot":"","sources":["../../../src/modes/interactive/streaming-render-state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AACnF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EACN,sBAAsB,EACtB,yBAAyB,EACzB,KAAK,kBAAkB,EACvB,MAAM,gCAAgC,CAAC;AAExC,6EAA6E;AAC7E,MAAM,MAAM,eAAe,GACxB;IACA,IAAI,EAAE,UAAU,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,GAAG,UAAU,CAAC;IACjC,SAAS,EAAE,yBAAyB,CAAC;IACrC,yEAAyE;IACzE,UAAU,CAAC,EAAE,MAAM,CAAC;CACnB,GACD;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,sBAAsB,CAAA;CAAE,GACzE;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,SAAS,EAAE,yBAAyB,CAAC;IAAC,MAAM,EAAE,kBAAkB,EAAE,CAAA;CAAE,CAAC;AAEhG,MAAM,MAAM,cAAc,GACvB;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,GAAG,UAAU,CAAA;CAAE,GAC5F;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1D,MAAM,MAAM,sBAAsB,GAAG,SAAS,GAAG,YAAY,CAAC;AAE9D;;;GAGG;AACH,qBAAa,oBAAoB;IAChC,yBAAyB,SAAK;IAC9B,iBAAiB,SAAK;IACtB,gBAAgB,EAAE,eAAe,EAAE,CAAM;IACzC,iFAAiF;IACjF,gBAAgB,EAAE,eAAe,EAAE,CAAM;IACzC,QAAQ,CAAC,uBAAuB,+DAAsE;IAEtG,cAAc,SAAM;IACpB,cAAc,UAAS;IACvB,YAAY,EAAE,aAAa,GAAG,SAAS,CAAC;IACxC,mBAAmB,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC1C,8BAA8B,UAAS;IAEvC,sBAAsB,IAAI,IAAI;IAO9B,eAAe,IAAI,IAAI;IAWvB,2BAA2B,IAAI,IAAI;IAKnC,qBAAqB,IAAI,IAAI;CAG7B;AAED,wBAAgB,0BAA0B,IAAI,oBAAoB,CAEjE"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Per InteractiveMode instance: streaming transcript walker + pinned message zone.
3
+ * Replaces module-level globals in chat-controller.ts.
4
+ */
5
+ export class StreamingRenderState {
6
+ constructor() {
7
+ this.lastProcessedContentIndex = 0;
8
+ this.lastContentLength = 0;
9
+ this.renderedSegments = [];
10
+ /** Displaced segments when provider sub-turn shrinks content[] mid-lifecycle. */
11
+ this.orphanedSegments = [];
12
+ this.toolRegistrationSources = new WeakMap();
13
+ this.lastPinnedText = "";
14
+ this.hasToolsInTurn = false;
15
+ this.pinnedZoneNeedsViewportRealign = false;
16
+ }
17
+ resetStreamingSegments() {
18
+ this.lastProcessedContentIndex = 0;
19
+ this.lastContentLength = 0;
20
+ this.renderedSegments = [];
21
+ this.orphanedSegments = [];
22
+ }
23
+ resetPinnedZone() {
24
+ if (this.pinnedBorder) {
25
+ this.pinnedBorder.stopSpinner();
26
+ }
27
+ this.pinnedBorder = undefined;
28
+ this.pinnedTextComponent = undefined;
29
+ this.lastPinnedText = "";
30
+ this.hasToolsInTurn = false;
31
+ this.pinnedZoneNeedsViewportRealign = false;
32
+ }
33
+ resetForNewAssistantMessage() {
34
+ this.resetStreamingSegments();
35
+ this.resetPinnedZone();
36
+ }
37
+ resetForSessionChange() {
38
+ this.resetForNewAssistantMessage();
39
+ }
40
+ }
41
+ export function createStreamingRenderState() {
42
+ return new StreamingRenderState();
43
+ }
44
+ //# sourceMappingURL=streaming-render-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streaming-render-state.js","sourceRoot":"","sources":["../../../src/modes/interactive/streaming-render-state.ts"],"names":[],"mappings":"AA8BA;;;GAGG;AACH,MAAM,OAAO,oBAAoB;IAAjC;QACC,8BAAyB,GAAG,CAAC,CAAC;QAC9B,sBAAiB,GAAG,CAAC,CAAC;QACtB,qBAAgB,GAAsB,EAAE,CAAC;QACzC,iFAAiF;QACjF,qBAAgB,GAAsB,EAAE,CAAC;QAChC,4BAAuB,GAAG,IAAI,OAAO,EAAuD,CAAC;QAEtG,mBAAc,GAAG,EAAE,CAAC;QACpB,mBAAc,GAAG,KAAK,CAAC;QAGvB,mCAA8B,GAAG,KAAK,CAAC;IA4BxC,CAAC;IA1BA,sBAAsB;QACrB,IAAI,CAAC,yBAAyB,GAAG,CAAC,CAAC;QACnC,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;QAC3B,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;QAC3B,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;IAC5B,CAAC;IAED,eAAe;QACd,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;QACjC,CAAC;QACD,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;QAC9B,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC;QACrC,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;QACzB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,8BAA8B,GAAG,KAAK,CAAC;IAC7C,CAAC;IAED,2BAA2B;QAC1B,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC9B,IAAI,CAAC,eAAe,EAAE,CAAC;IACxB,CAAC;IAED,qBAAqB;QACpB,IAAI,CAAC,2BAA2B,EAAE,CAAC;IACpC,CAAC;CACD;AAED,MAAM,UAAU,0BAA0B;IACzC,OAAO,IAAI,oBAAoB,EAAE,CAAC;AACnC,CAAC","sourcesContent":["import type { Markdown } from \"@gsd/pi-tui\";\n\nimport type { AssistantMessageComponent } from \"./components/assistant-message.js\";\nimport type { DynamicBorder } from \"./components/dynamic-border.js\";\nimport {\n\tToolExecutionComponent,\n\tToolPhaseSummaryComponent,\n\ttype ToolExecutionPhase,\n} from \"./components/tool-execution.js\";\n\n/** Per streaming assistant turn — text runs, tools, and rollup summaries. */\nexport type RenderedSegment =\n\t| {\n\t\t\tkind: \"text-run\";\n\t\t\tstartIndex: number;\n\t\t\tendIndex: number;\n\t\t\tcontentType: \"text\" | \"thinking\";\n\t\t\tcomponent: AssistantMessageComponent;\n\t\t\t/** Snapshot for redundant sub-turn detection after content[] shrinks. */\n\t\t\tcachedText?: string;\n\t }\n\t| { kind: \"tool\"; contentIndex: number; component: ToolExecutionComponent }\n\t| { kind: \"tool-summary\"; component: ToolPhaseSummaryComponent; phases: ToolExecutionPhase[] };\n\nexport type DesiredSegment =\n\t| { kind: \"text-run\"; startIndex: number; endIndex: number; contentType: \"text\" | \"thinking\" }\n\t| { kind: \"tool\"; contentIndex: number; toolId: string };\n\nexport type ToolRegistrationSource = \"content\" | \"standalone\";\n\n/**\n * Per InteractiveMode instance: streaming transcript walker + pinned message zone.\n * Replaces module-level globals in chat-controller.ts.\n */\nexport class StreamingRenderState {\n\tlastProcessedContentIndex = 0;\n\tlastContentLength = 0;\n\trenderedSegments: RenderedSegment[] = [];\n\t/** Displaced segments when provider sub-turn shrinks content[] mid-lifecycle. */\n\torphanedSegments: RenderedSegment[] = [];\n\treadonly toolRegistrationSources = new WeakMap<ToolExecutionComponent, Set<ToolRegistrationSource>>();\n\n\tlastPinnedText = \"\";\n\thasToolsInTurn = false;\n\tpinnedBorder: DynamicBorder | undefined;\n\tpinnedTextComponent: Markdown | undefined;\n\tpinnedZoneNeedsViewportRealign = false;\n\n\tresetStreamingSegments(): void {\n\t\tthis.lastProcessedContentIndex = 0;\n\t\tthis.lastContentLength = 0;\n\t\tthis.renderedSegments = [];\n\t\tthis.orphanedSegments = [];\n\t}\n\n\tresetPinnedZone(): void {\n\t\tif (this.pinnedBorder) {\n\t\t\tthis.pinnedBorder.stopSpinner();\n\t\t}\n\t\tthis.pinnedBorder = undefined;\n\t\tthis.pinnedTextComponent = undefined;\n\t\tthis.lastPinnedText = \"\";\n\t\tthis.hasToolsInTurn = false;\n\t\tthis.pinnedZoneNeedsViewportRealign = false;\n\t}\n\n\tresetForNewAssistantMessage(): void {\n\t\tthis.resetStreamingSegments();\n\t\tthis.resetPinnedZone();\n\t}\n\n\tresetForSessionChange(): void {\n\t\tthis.resetForNewAssistantMessage();\n\t}\n}\n\nexport function createStreamingRenderState(): StreamingRenderState {\n\treturn new StreamingRenderState();\n}\n"]}
@@ -0,0 +1,5 @@
1
+ import type { AgentSessionEvent } from "@gsd/agent-core";
2
+ import { type TranscriptState } from "@gsd/agent-core";
3
+ /** Pure reducer: apply one AgentSessionEvent to transcript state (TUI + web parity). */
4
+ export declare function applyAgentEventToTranscript(state: TranscriptState, event: AgentSessionEvent): TranscriptState;
5
+ //# sourceMappingURL=tui-transcript-tracker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tui-transcript-tracker.d.ts","sourceRoot":"","sources":["../../../src/modes/interactive/tui-transcript-tracker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EASN,KAAK,eAAe,EACpB,MAAM,iBAAiB,CAAC;AAiBzB,wFAAwF;AACxF,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,iBAAiB,GAAG,eAAe,CAkE7G"}
@@ -0,0 +1,77 @@
1
+ import { appendToolSegment, applyTextDelta, applyThinkingDelta, completeTurn, finalizeThinkingStream, pushPendingUserMessage, resetActiveTurn, } from "@gsd/agent-core";
2
+ function asTranscriptUserMessage(message) {
3
+ if (message.role !== "user")
4
+ return null;
5
+ return { role: "user", content: message.content };
6
+ }
7
+ /** Pure reducer: apply one AgentSessionEvent to transcript state (TUI + web parity). */
8
+ export function applyAgentEventToTranscript(state, event) {
9
+ switch (event.type) {
10
+ case "message_start": {
11
+ if (event.message.role === "user") {
12
+ const user = asTranscriptUserMessage(event.message);
13
+ return user ? pushPendingUserMessage(resetActiveTurn(state), user) : state;
14
+ }
15
+ if (event.message.role === "assistant") {
16
+ return resetActiveTurn(state);
17
+ }
18
+ return state;
19
+ }
20
+ case "message_update": {
21
+ if (event.message.role !== "assistant")
22
+ return state;
23
+ const inner = event.assistantMessageEvent;
24
+ if (inner.type === "text_delta" && typeof inner.delta === "string") {
25
+ return applyTextDelta(state, inner.delta);
26
+ }
27
+ if (inner.type === "thinking_delta" && typeof inner.delta === "string") {
28
+ return applyThinkingDelta(state, inner.delta);
29
+ }
30
+ if (inner.type === "thinking_end") {
31
+ return finalizeThinkingStream(state);
32
+ }
33
+ return state;
34
+ }
35
+ case "message_end": {
36
+ if (event.message.role === "user")
37
+ return state;
38
+ if (event.message.role === "assistant") {
39
+ return completeTurn(state);
40
+ }
41
+ return state;
42
+ }
43
+ case "tool_execution_start": {
44
+ return {
45
+ ...state,
46
+ streamingAssistantText: "",
47
+ streamingThinkingText: "",
48
+ activeToolExecution: {
49
+ id: event.toolCallId,
50
+ name: event.toolName,
51
+ args: event.args ?? {},
52
+ },
53
+ };
54
+ }
55
+ case "tool_execution_end": {
56
+ const active = state.activeToolExecution;
57
+ const args = active?.id === event.toolCallId ? active.args : {};
58
+ const next = appendToolSegment(state, {
59
+ id: event.toolCallId,
60
+ name: event.toolName,
61
+ args,
62
+ result: {
63
+ content: event.result.content,
64
+ details: event.result.details,
65
+ isError: event.isError,
66
+ },
67
+ });
68
+ return { ...next, activeToolExecution: null };
69
+ }
70
+ case "agent_end":
71
+ case "turn_end":
72
+ return completeTurn(state);
73
+ default:
74
+ return state;
75
+ }
76
+ }
77
+ //# sourceMappingURL=tui-transcript-tracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tui-transcript-tracker.js","sourceRoot":"","sources":["../../../src/modes/interactive/tui-transcript-tracker.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AgentSessionEvent } from \"@gsd/agent-core\";\nimport {\n\tappendToolSegment,\n\tapplyTextDelta,\n\tapplyThinkingDelta,\n\tcompleteTurn,\n\tfinalizeThinkingStream,\n\tpushPendingUserMessage,\n\tresetActiveTurn,\n\ttype TranscriptChatMessage,\n\ttype TranscriptState,\n} from \"@gsd/agent-core\";\n\ntype ActiveToolExecution = {\n\tid: string;\n\tname: string;\n\targs: Record<string, unknown>;\n};\n\ntype TranscriptStateWithActiveTool = TranscriptState & {\n\tactiveToolExecution?: ActiveToolExecution | null;\n};\n\nfunction asTranscriptUserMessage(message: { role?: string; content?: unknown }): TranscriptChatMessage | null {\n\tif (message.role !== \"user\") return null;\n\treturn { role: \"user\", content: message.content };\n}\n\n/** Pure reducer: apply one AgentSessionEvent to transcript state (TUI + web parity). */\nexport function applyAgentEventToTranscript(state: TranscriptState, event: AgentSessionEvent): TranscriptState {\n\tswitch (event.type) {\n\t\tcase \"message_start\": {\n\t\t\tif (event.message.role === \"user\") {\n\t\t\t\tconst user = asTranscriptUserMessage(event.message);\n\t\t\t\treturn user ? pushPendingUserMessage(resetActiveTurn(state), user) : state;\n\t\t\t}\n\t\t\tif (event.message.role === \"assistant\") {\n\t\t\t\treturn resetActiveTurn(state);\n\t\t\t}\n\t\t\treturn state;\n\t\t}\n\t\tcase \"message_update\": {\n\t\t\tif (event.message.role !== \"assistant\") return state;\n\t\t\tconst inner = event.assistantMessageEvent;\n\t\t\tif (inner.type === \"text_delta\" && typeof inner.delta === \"string\") {\n\t\t\t\treturn applyTextDelta(state, inner.delta);\n\t\t\t}\n\t\t\tif (inner.type === \"thinking_delta\" && typeof inner.delta === \"string\") {\n\t\t\t\treturn applyThinkingDelta(state, inner.delta);\n\t\t\t}\n\t\t\tif (inner.type === \"thinking_end\") {\n\t\t\t\treturn finalizeThinkingStream(state);\n\t\t\t}\n\t\t\treturn state;\n\t\t}\n\t\tcase \"message_end\": {\n\t\t\tif (event.message.role === \"user\") return state;\n\t\t\tif (event.message.role === \"assistant\") {\n\t\t\t\treturn completeTurn(state);\n\t\t\t}\n\t\t\treturn state;\n\t\t}\n\t\tcase \"tool_execution_start\": {\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tstreamingAssistantText: \"\",\n\t\t\t\tstreamingThinkingText: \"\",\n\t\t\t\tactiveToolExecution: {\n\t\t\t\t\tid: event.toolCallId,\n\t\t\t\t\tname: event.toolName,\n\t\t\t\t\targs: (event.args as Record<string, unknown> | undefined) ?? {},\n\t\t\t\t},\n\t\t\t} as TranscriptState;\n\t\t}\n\t\tcase \"tool_execution_end\": {\n\t\t\tconst active = (state as TranscriptStateWithActiveTool).activeToolExecution;\n\t\t\tconst args = active?.id === event.toolCallId ? active.args : {};\n\t\t\tconst next = appendToolSegment(state, {\n\t\t\t\tid: event.toolCallId,\n\t\t\t\tname: event.toolName,\n\t\t\t\targs,\n\t\t\t\tresult: {\n\t\t\t\t\tcontent: event.result.content as Array<{ type: string; text?: string }> | undefined,\n\t\t\t\t\tdetails: event.result.details as Record<string, unknown> | undefined,\n\t\t\t\t\tisError: event.isError,\n\t\t\t\t},\n\t\t\t});\n\t\t\treturn { ...next, activeToolExecution: null } as TranscriptState;\n\t\t}\n\t\tcase \"agent_end\":\n\t\tcase \"turn_end\":\n\t\t\treturn completeTurn(state);\n\t\tdefault:\n\t\t\treturn state;\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"rpc-mode.d.ts","sourceRoot":"","sources":["../../../src/modes/rpc/rpc-mode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAuBpD,YAAY,EACX,UAAU,EACV,qBAAqB,EACrB,sBAAsB,EACtB,aAAa,EACb,kBAAkB,EAClB,WAAW,EACX,eAAe,EACf,UAAU,GACV,MAAM,gBAAgB,CAAC;AAExB;;;GAGG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,CAq1BtE"}
1
+ {"version":3,"file":"rpc-mode.d.ts","sourceRoot":"","sources":["../../../src/modes/rpc/rpc-mode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAwBpD,YAAY,EACX,UAAU,EACV,qBAAqB,EACrB,sBAAsB,EACtB,aAAa,EACb,kBAAkB,EAClB,WAAW,EACX,eAAe,EACf,UAAU,GACV,MAAM,gBAAgB,CAAC;AAExB;;;GAGG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,CAu2BtE"}