gsd-pi 2.73.1-dev.d987996 → 2.74.0-dev.14c45ac

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 (365) hide show
  1. package/dist/cli-web-branch.d.ts +4 -3
  2. package/dist/cli-web-branch.js +10 -7
  3. package/dist/cli.js +184 -206
  4. package/dist/headless-query.js +4 -1
  5. package/dist/help-text.js +23 -0
  6. package/dist/logo.d.ts +1 -1
  7. package/dist/logo.js +1 -1
  8. package/dist/onboarding.js +59 -53
  9. package/dist/resource-loader.js +2 -2
  10. package/dist/resources/extensions/claude-code-cli/stream-adapter.js +68 -4
  11. package/dist/resources/extensions/gsd/activity-log.js +16 -0
  12. package/dist/resources/extensions/gsd/auto/detect-stuck.js +11 -4
  13. package/dist/resources/extensions/gsd/auto/loop.js +147 -10
  14. package/dist/resources/extensions/gsd/auto/phases.js +173 -13
  15. package/dist/resources/extensions/gsd/auto/session.js +10 -0
  16. package/dist/resources/extensions/gsd/auto-dispatch.js +22 -4
  17. package/dist/resources/extensions/gsd/auto-model-selection.js +105 -16
  18. package/dist/resources/extensions/gsd/auto-post-unit.js +254 -15
  19. package/dist/resources/extensions/gsd/auto-prompts.js +12 -0
  20. package/dist/resources/extensions/gsd/auto-start.js +23 -6
  21. package/dist/resources/extensions/gsd/auto-timeout-recovery.js +13 -0
  22. package/dist/resources/extensions/gsd/auto-unit-closeout.js +18 -0
  23. package/dist/resources/extensions/gsd/auto-verification.js +186 -3
  24. package/dist/resources/extensions/gsd/auto.js +65 -12
  25. package/dist/resources/extensions/gsd/bootstrap/register-extension.js +21 -8
  26. package/dist/resources/extensions/gsd/commands/catalog.js +26 -1
  27. package/dist/resources/extensions/gsd/commands/handlers/ops.js +25 -0
  28. package/dist/resources/extensions/gsd/commands/handlers/workflow.js +68 -9
  29. package/dist/resources/extensions/gsd/commands-add-tests.js +111 -0
  30. package/dist/resources/extensions/gsd/commands-backlog.js +140 -0
  31. package/dist/resources/extensions/gsd/commands-do.js +79 -0
  32. package/dist/resources/extensions/gsd/commands-extract-learnings.js +225 -0
  33. package/dist/resources/extensions/gsd/commands-handlers.js +8 -2
  34. package/dist/resources/extensions/gsd/commands-maintenance.js +6 -6
  35. package/dist/resources/extensions/gsd/commands-pr-branch.js +180 -0
  36. package/dist/resources/extensions/gsd/commands-prefs-wizard.js +1 -1
  37. package/dist/resources/extensions/gsd/commands-session-report.js +82 -0
  38. package/dist/resources/extensions/gsd/commands-ship.js +187 -0
  39. package/dist/resources/extensions/gsd/db-writer.js +3 -5
  40. package/dist/resources/extensions/gsd/docs/preferences-reference.md +15 -2
  41. package/dist/resources/extensions/gsd/git-service.js +49 -1
  42. package/dist/resources/extensions/gsd/graph-context.js +157 -0
  43. package/dist/resources/extensions/gsd/gsd-db.js +581 -2
  44. package/dist/resources/extensions/gsd/guided-flow.js +23 -0
  45. package/dist/resources/extensions/gsd/index.js +15 -2
  46. package/dist/resources/extensions/gsd/init-wizard.js +1 -0
  47. package/dist/resources/extensions/gsd/journal.js +27 -0
  48. package/dist/resources/extensions/gsd/md-importer.js +3 -4
  49. package/dist/resources/extensions/gsd/memory-store.js +19 -51
  50. package/dist/resources/extensions/gsd/metrics.js +19 -0
  51. package/dist/resources/extensions/gsd/milestone-validation-gates.js +13 -12
  52. package/dist/resources/extensions/gsd/native-git-bridge.js +7 -4
  53. package/dist/resources/extensions/gsd/notification-widget.js +2 -2
  54. package/dist/resources/extensions/gsd/parallel-orchestrator.js +33 -1
  55. package/dist/resources/extensions/gsd/preferences-models.js +63 -3
  56. package/dist/resources/extensions/gsd/preferences-types.js +2 -0
  57. package/dist/resources/extensions/gsd/preferences-validation.js +130 -2
  58. package/dist/resources/extensions/gsd/preferences.js +26 -0
  59. package/dist/resources/extensions/gsd/prompts/add-tests.md +35 -0
  60. package/dist/resources/extensions/gsd/slice-parallel-orchestrator.js +12 -2
  61. package/dist/resources/extensions/gsd/state.js +66 -15
  62. package/dist/resources/extensions/gsd/templates/PREFERENCES.md +18 -0
  63. package/dist/resources/extensions/gsd/tools/complete-slice.js +20 -0
  64. package/dist/resources/extensions/gsd/tools/validate-milestone.js +39 -4
  65. package/dist/resources/extensions/gsd/tools/workflow-tool-executors.js +3 -14
  66. package/dist/resources/extensions/gsd/triage-resolution.js +2 -5
  67. package/dist/resources/extensions/gsd/unit-ownership.js +1 -1
  68. package/dist/resources/extensions/gsd/uok/audit-toggle.js +7 -0
  69. package/dist/resources/extensions/gsd/uok/audit.js +40 -0
  70. package/dist/resources/extensions/gsd/uok/contracts.js +1 -0
  71. package/dist/resources/extensions/gsd/uok/execution-graph.js +179 -0
  72. package/dist/resources/extensions/gsd/uok/flags.js +29 -0
  73. package/dist/resources/extensions/gsd/uok/gate-runner.js +109 -0
  74. package/dist/resources/extensions/gsd/uok/gitops.js +53 -0
  75. package/dist/resources/extensions/gsd/uok/kernel.js +80 -0
  76. package/dist/resources/extensions/gsd/uok/loop-adapter.js +133 -0
  77. package/dist/resources/extensions/gsd/uok/model-policy.js +66 -0
  78. package/dist/resources/extensions/gsd/uok/plan-v2.js +132 -0
  79. package/dist/resources/extensions/gsd/workflow-logger.js +22 -0
  80. package/dist/resources/extensions/gsd/workflow-manifest.js +8 -69
  81. package/dist/resources/extensions/gsd/workflow-migration.js +21 -22
  82. package/dist/resources/extensions/gsd/workflow-projections.js +4 -1
  83. package/dist/resources/extensions/gsd/workflow-reconcile.js +14 -11
  84. package/dist/resources/extensions/ttsr/ttsr-manager.js +3 -1
  85. package/dist/tsconfig.extensions.tsbuildinfo +1 -0
  86. package/dist/update-check.d.ts +1 -0
  87. package/dist/update-check.js +13 -5
  88. package/dist/update-cmd.js +4 -3
  89. package/dist/web/standalone/.next/BUILD_ID +1 -1
  90. package/dist/web/standalone/.next/app-path-routes-manifest.json +11 -11
  91. package/dist/web/standalone/.next/build-manifest.json +2 -2
  92. package/dist/web/standalone/.next/prerender-manifest.json +3 -3
  93. package/dist/web/standalone/.next/required-server-files.json +1 -1
  94. package/dist/web/standalone/.next/server/app/_global-error.html +1 -1
  95. package/dist/web/standalone/.next/server/app/_global-error.rsc +1 -1
  96. package/dist/web/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  97. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  98. package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  99. package/dist/web/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  100. package/dist/web/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  101. package/dist/web/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  102. package/dist/web/standalone/.next/server/app/_not-found.html +1 -1
  103. package/dist/web/standalone/.next/server/app/_not-found.rsc +1 -1
  104. package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  105. package/dist/web/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  106. package/dist/web/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  107. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  108. package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  109. package/dist/web/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  110. package/dist/web/standalone/.next/server/app/index.html +1 -1
  111. package/dist/web/standalone/.next/server/app/index.rsc +1 -1
  112. package/dist/web/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  113. package/dist/web/standalone/.next/server/app/index.segments/_full.segment.rsc +1 -1
  114. package/dist/web/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  115. package/dist/web/standalone/.next/server/app/index.segments/_index.segment.rsc +1 -1
  116. package/dist/web/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  117. package/dist/web/standalone/.next/server/app-paths-manifest.json +11 -11
  118. package/dist/web/standalone/.next/server/middleware-build-manifest.js +1 -1
  119. package/dist/web/standalone/.next/server/middleware-manifest.json +5 -5
  120. package/dist/web/standalone/.next/server/pages/404.html +1 -1
  121. package/dist/web/standalone/.next/server/pages/500.html +1 -1
  122. package/dist/web/standalone/.next/server/server-reference-manifest.json +1 -1
  123. package/dist/web/standalone/server.js +1 -1
  124. package/package.json +3 -3
  125. package/packages/daemon/package.json +2 -2
  126. package/packages/mcp-server/dist/index.d.ts +3 -0
  127. package/packages/mcp-server/dist/index.d.ts.map +1 -1
  128. package/packages/mcp-server/dist/index.js +3 -0
  129. package/packages/mcp-server/dist/index.js.map +1 -1
  130. package/packages/mcp-server/dist/readers/graph.d.ts +87 -0
  131. package/packages/mcp-server/dist/readers/graph.d.ts.map +1 -0
  132. package/packages/mcp-server/dist/readers/graph.js +655 -0
  133. package/packages/mcp-server/dist/readers/graph.js.map +1 -0
  134. package/packages/mcp-server/dist/readers/index.d.ts +2 -0
  135. package/packages/mcp-server/dist/readers/index.d.ts.map +1 -1
  136. package/packages/mcp-server/dist/readers/index.js +1 -0
  137. package/packages/mcp-server/dist/readers/index.js.map +1 -1
  138. package/packages/mcp-server/dist/server.d.ts.map +1 -1
  139. package/packages/mcp-server/dist/server.js +65 -0
  140. package/packages/mcp-server/dist/server.js.map +1 -1
  141. package/packages/mcp-server/package.json +2 -2
  142. package/packages/mcp-server/src/index.ts +15 -0
  143. package/packages/mcp-server/src/readers/graph.test.ts +604 -0
  144. package/packages/mcp-server/src/readers/graph.ts +855 -0
  145. package/packages/mcp-server/src/readers/index.ts +12 -0
  146. package/packages/mcp-server/src/server.ts +83 -0
  147. package/packages/mcp-server/tsconfig.json +1 -0
  148. package/packages/mcp-server/tsconfig.tsbuildinfo +1 -0
  149. package/packages/native/package.json +2 -2
  150. package/packages/native/tsconfig.tsbuildinfo +1 -0
  151. package/packages/pi-agent-core/package.json +1 -1
  152. package/packages/pi-agent-core/tsconfig.json +1 -0
  153. package/packages/pi-agent-core/tsconfig.tsbuildinfo +1 -0
  154. package/packages/pi-ai/dist/index.d.ts +1 -0
  155. package/packages/pi-ai/dist/index.d.ts.map +1 -1
  156. package/packages/pi-ai/dist/index.js +1 -0
  157. package/packages/pi-ai/dist/index.js.map +1 -1
  158. package/packages/pi-ai/dist/utils/overflow.d.ts.map +1 -1
  159. package/packages/pi-ai/dist/utils/overflow.js +12 -0
  160. package/packages/pi-ai/dist/utils/overflow.js.map +1 -1
  161. package/packages/pi-ai/dist/utils/tests/overflow.test.d.ts +2 -0
  162. package/packages/pi-ai/dist/utils/tests/overflow.test.d.ts.map +1 -0
  163. package/packages/pi-ai/dist/utils/tests/overflow.test.js +50 -0
  164. package/packages/pi-ai/dist/utils/tests/overflow.test.js.map +1 -0
  165. package/packages/pi-ai/package.json +1 -1
  166. package/packages/pi-ai/src/index.ts +4 -0
  167. package/packages/pi-ai/src/utils/overflow.ts +14 -1
  168. package/packages/pi-ai/src/utils/tests/overflow.test.ts +58 -0
  169. package/packages/pi-ai/tsconfig.json +1 -0
  170. package/packages/pi-ai/tsconfig.tsbuildinfo +1 -0
  171. package/packages/pi-coding-agent/dist/core/chat-controller-ordering.test.js +511 -8
  172. package/packages/pi-coding-agent/dist/core/chat-controller-ordering.test.js.map +1 -1
  173. package/packages/pi-coding-agent/dist/core/compaction/utils.js +5 -5
  174. package/packages/pi-coding-agent/dist/core/compaction/utils.js.map +1 -1
  175. package/packages/pi-coding-agent/dist/core/compaction-utils.test.d.ts +2 -0
  176. package/packages/pi-coding-agent/dist/core/compaction-utils.test.d.ts.map +1 -0
  177. package/packages/pi-coding-agent/dist/core/compaction-utils.test.js +45 -0
  178. package/packages/pi-coding-agent/dist/core/compaction-utils.test.js.map +1 -0
  179. package/packages/pi-coding-agent/dist/core/model-registry-env-fallback.test.d.ts +2 -0
  180. package/packages/pi-coding-agent/dist/core/model-registry-env-fallback.test.d.ts.map +1 -0
  181. package/packages/pi-coding-agent/dist/core/model-registry-env-fallback.test.js +52 -0
  182. package/packages/pi-coding-agent/dist/core/model-registry-env-fallback.test.js.map +1 -0
  183. package/packages/pi-coding-agent/dist/core/model-registry.d.ts.map +1 -1
  184. package/packages/pi-coding-agent/dist/core/model-registry.js +2 -2
  185. package/packages/pi-coding-agent/dist/core/model-registry.js.map +1 -1
  186. package/packages/pi-coding-agent/dist/modes/interactive/components/assistant-message.d.ts +12 -2
  187. package/packages/pi-coding-agent/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  188. package/packages/pi-coding-agent/dist/modes/interactive/components/assistant-message.js +61 -28
  189. package/packages/pi-coding-agent/dist/modes/interactive/components/assistant-message.js.map +1 -1
  190. package/packages/pi-coding-agent/dist/modes/interactive/components/dynamic-border.d.ts +2 -1
  191. package/packages/pi-coding-agent/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -1
  192. package/packages/pi-coding-agent/dist/modes/interactive/components/dynamic-border.js +9 -3
  193. package/packages/pi-coding-agent/dist/modes/interactive/components/dynamic-border.js.map +1 -1
  194. package/packages/pi-coding-agent/dist/modes/interactive/components/dynamic-border.test.d.ts +2 -0
  195. package/packages/pi-coding-agent/dist/modes/interactive/components/dynamic-border.test.d.ts.map +1 -0
  196. package/packages/pi-coding-agent/dist/modes/interactive/components/dynamic-border.test.js +52 -0
  197. package/packages/pi-coding-agent/dist/modes/interactive/components/dynamic-border.test.js.map +1 -0
  198. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.d.ts.map +1 -1
  199. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.js +165 -20
  200. package/packages/pi-coding-agent/dist/modes/interactive/controllers/chat-controller.js.map +1 -1
  201. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  202. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js +11 -3
  203. package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js.map +1 -1
  204. package/packages/pi-coding-agent/package.json +1 -1
  205. package/packages/pi-coding-agent/src/core/chat-controller-ordering.test.ts +620 -8
  206. package/packages/pi-coding-agent/src/core/compaction/utils.ts +5 -5
  207. package/packages/pi-coding-agent/src/core/compaction-utils.test.ts +50 -0
  208. package/packages/pi-coding-agent/src/core/model-registry-env-fallback.test.ts +59 -0
  209. package/packages/pi-coding-agent/src/core/model-registry.ts +2 -1
  210. package/packages/pi-coding-agent/src/modes/interactive/components/assistant-message.ts +74 -32
  211. package/packages/pi-coding-agent/src/modes/interactive/components/dynamic-border.test.ts +73 -0
  212. package/packages/pi-coding-agent/src/modes/interactive/components/dynamic-border.ts +9 -3
  213. package/packages/pi-coding-agent/src/modes/interactive/controllers/chat-controller.ts +189 -25
  214. package/packages/pi-coding-agent/src/modes/interactive/interactive-mode.ts +11 -3
  215. package/packages/pi-coding-agent/src/types/ambient-modules.d.ts +69 -0
  216. package/packages/pi-coding-agent/tsconfig.json +3 -2
  217. package/packages/pi-coding-agent/tsconfig.tsbuildinfo +1 -0
  218. package/packages/pi-tui/dist/__tests__/tui.test.js +60 -1
  219. package/packages/pi-tui/dist/__tests__/tui.test.js.map +1 -1
  220. package/packages/pi-tui/dist/tui.d.ts +8 -0
  221. package/packages/pi-tui/dist/tui.d.ts.map +1 -1
  222. package/packages/pi-tui/dist/tui.js +32 -3
  223. package/packages/pi-tui/dist/tui.js.map +1 -1
  224. package/packages/pi-tui/package.json +1 -1
  225. package/packages/pi-tui/src/__tests__/tui.test.ts +76 -1
  226. package/packages/pi-tui/src/tui.ts +31 -3
  227. package/packages/pi-tui/tsconfig.json +1 -0
  228. package/packages/pi-tui/tsconfig.tsbuildinfo +1 -0
  229. package/packages/rpc-client/package.json +1 -1
  230. package/packages/rpc-client/tsconfig.json +1 -0
  231. package/packages/rpc-client/tsconfig.tsbuildinfo +1 -0
  232. package/pkg/package.json +1 -1
  233. package/src/resources/extensions/claude-code-cli/stream-adapter.ts +107 -5
  234. package/src/resources/extensions/claude-code-cli/tests/stream-adapter.test.ts +111 -2
  235. package/src/resources/extensions/gsd/activity-log.ts +21 -0
  236. package/src/resources/extensions/gsd/auto/detect-stuck.ts +12 -4
  237. package/src/resources/extensions/gsd/auto/loop-deps.ts +10 -0
  238. package/src/resources/extensions/gsd/auto/loop.ts +159 -10
  239. package/src/resources/extensions/gsd/auto/phases.ts +213 -13
  240. package/src/resources/extensions/gsd/auto/session.ts +10 -0
  241. package/src/resources/extensions/gsd/auto-dispatch.ts +26 -10
  242. package/src/resources/extensions/gsd/auto-model-selection.ts +151 -16
  243. package/src/resources/extensions/gsd/auto-post-unit.ts +278 -16
  244. package/src/resources/extensions/gsd/auto-prompts.ts +13 -0
  245. package/src/resources/extensions/gsd/auto-start.ts +30 -6
  246. package/src/resources/extensions/gsd/auto-timeout-recovery.ts +17 -0
  247. package/src/resources/extensions/gsd/auto-unit-closeout.ts +25 -1
  248. package/src/resources/extensions/gsd/auto-verification.ts +225 -3
  249. package/src/resources/extensions/gsd/auto.ts +72 -16
  250. package/src/resources/extensions/gsd/bootstrap/register-extension.ts +24 -8
  251. package/src/resources/extensions/gsd/commands/catalog.ts +26 -1
  252. package/src/resources/extensions/gsd/commands/handlers/ops.ts +25 -0
  253. package/src/resources/extensions/gsd/commands/handlers/workflow.ts +74 -9
  254. package/src/resources/extensions/gsd/commands-add-tests.ts +137 -0
  255. package/src/resources/extensions/gsd/commands-backlog.ts +182 -0
  256. package/src/resources/extensions/gsd/commands-do.ts +109 -0
  257. package/src/resources/extensions/gsd/commands-extract-learnings.ts +304 -0
  258. package/src/resources/extensions/gsd/commands-handlers.ts +8 -2
  259. package/src/resources/extensions/gsd/commands-maintenance.ts +6 -6
  260. package/src/resources/extensions/gsd/commands-pr-branch.ts +234 -0
  261. package/src/resources/extensions/gsd/commands-prefs-wizard.ts +1 -1
  262. package/src/resources/extensions/gsd/commands-session-report.ts +101 -0
  263. package/src/resources/extensions/gsd/commands-ship.ts +219 -0
  264. package/src/resources/extensions/gsd/db-writer.ts +3 -5
  265. package/src/resources/extensions/gsd/docs/preferences-reference.md +15 -2
  266. package/src/resources/extensions/gsd/git-service.ts +68 -0
  267. package/src/resources/extensions/gsd/graph-context.ts +212 -0
  268. package/src/resources/extensions/gsd/gsd-db.ts +788 -3
  269. package/src/resources/extensions/gsd/guided-flow.ts +32 -0
  270. package/src/resources/extensions/gsd/index.ts +18 -2
  271. package/src/resources/extensions/gsd/init-wizard.ts +3 -2
  272. package/src/resources/extensions/gsd/journal.ts +30 -0
  273. package/src/resources/extensions/gsd/md-importer.ts +3 -5
  274. package/src/resources/extensions/gsd/memory-store.ts +31 -62
  275. package/src/resources/extensions/gsd/metrics.ts +26 -0
  276. package/src/resources/extensions/gsd/milestone-validation-gates.ts +13 -14
  277. package/src/resources/extensions/gsd/native-git-bridge.ts +11 -12
  278. package/src/resources/extensions/gsd/notification-widget.ts +2 -2
  279. package/src/resources/extensions/gsd/parallel-orchestrator.ts +40 -1
  280. package/src/resources/extensions/gsd/preferences-models.ts +61 -3
  281. package/src/resources/extensions/gsd/preferences-types.ts +44 -0
  282. package/src/resources/extensions/gsd/preferences-validation.ts +130 -2
  283. package/src/resources/extensions/gsd/preferences.ts +28 -0
  284. package/src/resources/extensions/gsd/prompts/add-tests.md +35 -0
  285. package/src/resources/extensions/gsd/session-lock.ts +14 -2
  286. package/src/resources/extensions/gsd/slice-parallel-orchestrator.ts +20 -1
  287. package/src/resources/extensions/gsd/state.ts +80 -17
  288. package/src/resources/extensions/gsd/templates/PREFERENCES.md +18 -0
  289. package/src/resources/extensions/gsd/tests/auto-loop.test.ts +9 -5
  290. package/src/resources/extensions/gsd/tests/auto-model-selection.test.ts +20 -0
  291. package/src/resources/extensions/gsd/tests/auto-post-unit-step-message.test.ts +53 -0
  292. package/src/resources/extensions/gsd/tests/auto-project-root-env.test.ts +7 -3
  293. package/src/resources/extensions/gsd/tests/auto-start-model-capture.test.ts +51 -2
  294. package/src/resources/extensions/gsd/tests/cold-resume-db-reopen.test.ts +6 -2
  295. package/src/resources/extensions/gsd/tests/commands-backlog.test.ts +158 -0
  296. package/src/resources/extensions/gsd/tests/commands-do.test.ts +127 -0
  297. package/src/resources/extensions/gsd/tests/commands-extract-learnings.test.ts +340 -0
  298. package/src/resources/extensions/gsd/tests/commands-pr-branch.test.ts +68 -0
  299. package/src/resources/extensions/gsd/tests/commands-session-report.test.ts +82 -0
  300. package/src/resources/extensions/gsd/tests/commands-ship.test.ts +71 -0
  301. package/src/resources/extensions/gsd/tests/commands-workflow-custom.test.ts +14 -0
  302. package/src/resources/extensions/gsd/tests/complete-milestone-false-merge.test.ts +142 -0
  303. package/src/resources/extensions/gsd/tests/complete-slice.test.ts +2 -2
  304. package/src/resources/extensions/gsd/tests/complete-task.test.ts +2 -2
  305. package/src/resources/extensions/gsd/tests/completed-at-reconcile.test.ts +42 -0
  306. package/src/resources/extensions/gsd/tests/derive-state-crossval.test.ts +3 -2
  307. package/src/resources/extensions/gsd/tests/derive-state-db.test.ts +3 -2
  308. package/src/resources/extensions/gsd/tests/derive-state-helpers.test.ts +68 -8
  309. package/src/resources/extensions/gsd/tests/derive-state.test.ts +3 -3
  310. package/src/resources/extensions/gsd/tests/extension-bootstrap-isolation.test.ts +154 -0
  311. package/src/resources/extensions/gsd/tests/finalize-timeout-guard.test.ts +10 -7
  312. package/src/resources/extensions/gsd/tests/flat-rate-routing-guard.test.ts +137 -1
  313. package/src/resources/extensions/gsd/tests/graph-context.test.ts +337 -0
  314. package/src/resources/extensions/gsd/tests/gsd-db.test.ts +1 -1
  315. package/src/resources/extensions/gsd/tests/integration/state-machine-edge-cases.test.ts +4 -2
  316. package/src/resources/extensions/gsd/tests/journal-integration.test.ts +68 -1
  317. package/src/resources/extensions/gsd/tests/md-importer.test.ts +1 -2
  318. package/src/resources/extensions/gsd/tests/memory-store.test.ts +2 -3
  319. package/src/resources/extensions/gsd/tests/model-isolation.test.ts +91 -2
  320. package/src/resources/extensions/gsd/tests/native-git-bridge-exec-fallback.test.ts +140 -0
  321. package/src/resources/extensions/gsd/tests/post-exec-retry-bypass.test.ts +79 -1
  322. package/src/resources/extensions/gsd/tests/post-unit-state-rebuild.test.ts +2 -1
  323. package/src/resources/extensions/gsd/tests/pre-execution-pause-wiring.test.ts +40 -1
  324. package/src/resources/extensions/gsd/tests/preferences.test.ts +47 -0
  325. package/src/resources/extensions/gsd/tests/single-writer-invariant.test.ts +180 -0
  326. package/src/resources/extensions/gsd/tests/state-machine-full-walkthrough.test.ts +5 -7
  327. package/src/resources/extensions/gsd/tests/token-profile.test.ts +9 -6
  328. package/src/resources/extensions/gsd/tests/uok-audit-unified.test.ts +101 -0
  329. package/src/resources/extensions/gsd/tests/uok-contracts.test.ts +85 -0
  330. package/src/resources/extensions/gsd/tests/uok-execution-graph.test.ts +69 -0
  331. package/src/resources/extensions/gsd/tests/uok-flags.test.ts +39 -0
  332. package/src/resources/extensions/gsd/tests/uok-gate-runner.test.ts +70 -0
  333. package/src/resources/extensions/gsd/tests/uok-gitops-turn-action.test.ts +85 -0
  334. package/src/resources/extensions/gsd/tests/uok-gitops-wiring.test.ts +35 -0
  335. package/src/resources/extensions/gsd/tests/uok-model-policy.test.ts +89 -0
  336. package/src/resources/extensions/gsd/tests/uok-plan-v2-wiring.test.ts +167 -0
  337. package/src/resources/extensions/gsd/tests/uok-preferences.test.ts +42 -0
  338. package/src/resources/extensions/gsd/tests/validate-milestone-stuck-guard.test.ts +179 -0
  339. package/src/resources/extensions/gsd/tests/validate-milestone-write-order.test.ts +39 -0
  340. package/src/resources/extensions/gsd/tests/workflow-logger-wiring.test.ts +223 -0
  341. package/src/resources/extensions/gsd/tools/complete-slice.ts +26 -0
  342. package/src/resources/extensions/gsd/tools/validate-milestone.ts +48 -3
  343. package/src/resources/extensions/gsd/tools/workflow-tool-executors.ts +3 -11
  344. package/src/resources/extensions/gsd/triage-resolution.ts +2 -7
  345. package/src/resources/extensions/gsd/types.ts +1 -1
  346. package/src/resources/extensions/gsd/unit-ownership.ts +2 -2
  347. package/src/resources/extensions/gsd/uok/audit-toggle.ts +9 -0
  348. package/src/resources/extensions/gsd/uok/audit.ts +51 -0
  349. package/src/resources/extensions/gsd/uok/contracts.ts +135 -0
  350. package/src/resources/extensions/gsd/uok/execution-graph.ts +241 -0
  351. package/src/resources/extensions/gsd/uok/flags.ts +45 -0
  352. package/src/resources/extensions/gsd/uok/gate-runner.ts +146 -0
  353. package/src/resources/extensions/gsd/uok/gitops.ts +75 -0
  354. package/src/resources/extensions/gsd/uok/kernel.ts +105 -0
  355. package/src/resources/extensions/gsd/uok/loop-adapter.ts +162 -0
  356. package/src/resources/extensions/gsd/uok/model-policy.ts +112 -0
  357. package/src/resources/extensions/gsd/uok/plan-v2.ts +156 -0
  358. package/src/resources/extensions/gsd/workflow-logger.ts +25 -0
  359. package/src/resources/extensions/gsd/workflow-manifest.ts +9 -104
  360. package/src/resources/extensions/gsd/workflow-migration.ts +21 -29
  361. package/src/resources/extensions/gsd/workflow-projections.ts +8 -1
  362. package/src/resources/extensions/gsd/workflow-reconcile.ts +15 -15
  363. package/src/resources/extensions/ttsr/ttsr-manager.ts +10 -5
  364. /package/dist/web/standalone/.next/static/{cGmbVq2su4f9tMpgIkG8u → ZMKM0OI0CrTgzKWbgfPOg}/_buildManifest.js +0 -0
  365. /package/dist/web/standalone/.next/static/{cGmbVq2su4f9tMpgIkG8u → ZMKM0OI0CrTgzKWbgfPOg}/_ssgManifest.js +0 -0
@@ -10,6 +10,21 @@ import { appKey } from "../components/keybinding-hints.js";
10
10
  // Tracks the last processed content index to avoid re-scanning all blocks on every message_update
11
11
  let lastProcessedContentIndex = 0;
12
12
 
13
+ // Tracks the previous content[] length so we can detect when an adapter resets
14
+ // the assistant content array for a new provider sub-turn within one lifecycle.
15
+ let lastContentLength = 0;
16
+
17
+ // --- Segment walker state (per streaming assistant turn) ---
18
+ type RenderedSegment =
19
+ | { kind: "text-run"; startIndex: number; endIndex: number; component: AssistantMessageComponent }
20
+ | { kind: "tool"; contentIndex: number; component: ToolExecutionComponent };
21
+
22
+ let renderedSegments: RenderedSegment[] = [];
23
+ // When providers reuse one assistant lifecycle across internal sub-turns,
24
+ // a content[] shrink resets renderedSegments. Keep the displaced segments so
25
+ // claude-code MCP pruning can remove stale provisional text later.
26
+ let orphanedSegments: RenderedSegment[] = [];
27
+
13
28
  function hasVisibleAssistantContent(message: { content: Array<any> }): boolean {
14
29
  return message.content.some(
15
30
  (c) =>
@@ -78,8 +93,11 @@ export async function handleAgentEvent(host: InteractiveModeStateHost & {
78
93
  // Reset content index tracker and pinned state when a new assistant message starts
79
94
  if (event.type === "message_start" && event.message.role === "assistant") {
80
95
  lastProcessedContentIndex = 0;
96
+ lastContentLength = 0;
81
97
  lastPinnedText = "";
82
98
  hasToolsInTurn = false;
99
+ renderedSegments = [];
100
+ orphanedSegments = [];
83
101
  if (pinnedBorder) pinnedBorder.stopSpinner();
84
102
  pinnedBorder = undefined;
85
103
  pinnedTextComponent = undefined;
@@ -99,6 +117,9 @@ export async function handleAgentEvent(host: InteractiveModeStateHost & {
99
117
  host.pinnedMessageContainer.clear();
100
118
  lastPinnedText = "";
101
119
  hasToolsInTurn = false;
120
+ renderedSegments = [];
121
+ orphanedSegments = [];
122
+ lastContentLength = 0;
102
123
  if (pinnedBorder) pinnedBorder.stopSpinner();
103
124
  pinnedBorder = undefined;
104
125
  pinnedTextComponent = undefined;
@@ -202,12 +223,23 @@ export async function handleAgentEvent(host: InteractiveModeStateHost & {
202
223
  }
203
224
 
204
225
  const contentBlocks = host.streamingMessage.content;
205
- // Some adapters reuse a single assistant lifecycle while internally
206
- // spanning multiple provider turns. When a new turn starts, content
207
- // length can shrink back to 0/1; reset scan index to avoid skipping.
208
- if (lastProcessedContentIndex >= contentBlocks.length) {
226
+ // Some adapters (notably claude-code) reuse a single assistant
227
+ // lifecycle while internally spanning multiple provider sub-turns.
228
+ // When a new sub-turn starts, content[] length shrinks back to 0/1.
229
+ // The scan loop needs its index reset, AND the segment walker's
230
+ // renderedSegments map must be cleared so existing text-run
231
+ // components don't get overwritten in place with new sub-turn
232
+ // content (#4144 regression). Prior sub-turn children stay in
233
+ // chatContainer as frozen history; new segments append after them.
234
+ if (contentBlocks.length < lastContentLength) {
235
+ orphanedSegments = [...renderedSegments];
236
+ renderedSegments = [];
237
+ lastPinnedText = "";
238
+ lastProcessedContentIndex = 0;
239
+ } else if (lastProcessedContentIndex >= contentBlocks.length) {
209
240
  lastProcessedContentIndex = 0;
210
241
  }
242
+ lastContentLength = contentBlocks.length;
211
243
  for (let i = lastProcessedContentIndex; i < contentBlocks.length; i++) {
212
244
  const content = contentBlocks[i];
213
245
  if (content.type === "toolCall") {
@@ -273,24 +305,148 @@ export async function handleAgentEvent(host: InteractiveModeStateHost & {
273
305
  }
274
306
  }
275
307
 
276
- // Render assistant text/thinking after tool components so mixed
277
- // streams keep chronological ordering in the chat container.
278
- const hasToolBlocks = hasAssistantToolBlocks(host.streamingMessage);
279
- if (!host.streamingComponent && hasVisibleAssistantContent(host.streamingMessage)) {
280
- host.streamingComponent = new AssistantMessageComponent(
281
- undefined,
282
- host.hideThinkingBlock,
283
- host.getMarkdownThemeWithSettings(),
284
- host.settingsManager.getTimestampFormat(),
285
- );
286
- host.chatContainer.addChild(host.streamingComponent);
287
- }
288
- if (host.streamingComponent) {
289
- if (hasToolBlocks) {
290
- host.chatContainer.removeChild(host.streamingComponent);
291
- host.chatContainer.addChild(host.streamingComponent);
308
+ // Segment walker: render content blocks in stream order, append-only.
309
+ // Build desired segment plan from content[].
310
+ {
311
+ const blocks = host.streamingMessage.content;
312
+ const isClaudeCodeProvider = host.streamingMessage.provider === "claude-code";
313
+ const hasMcpToolBlock = blocks.some((b: any) => {
314
+ if (b?.type === "toolCall") {
315
+ return typeof b?.mcpServer === "string" || String(b?.name ?? "").startsWith("mcp__");
316
+ }
317
+ if (b?.type === "serverToolUse") {
318
+ return typeof b?.mcpServer === "string" || String(b?.name ?? "").startsWith("mcp__");
319
+ }
320
+ return false;
321
+ });
322
+ const shouldDropPreToolText = isClaudeCodeProvider && hasMcpToolBlock;
323
+ const firstToolIdx = blocks.findIndex((b: any) => b.type === "toolCall" || b.type === "serverToolUse");
324
+ type DesiredSegment =
325
+ | { kind: "text-run"; startIndex: number; endIndex: number }
326
+ | { kind: "tool"; contentIndex: number; toolId: string };
327
+ const desired: DesiredSegment[] = [];
328
+ let runStart = -1;
329
+ for (let i = 0; i < blocks.length; i++) {
330
+ const b = blocks[i];
331
+ const isText = b.type === "text" || b.type === "thinking";
332
+ const isTool = b.type === "toolCall" || b.type === "serverToolUse";
333
+ if (isText) {
334
+ if (shouldDropPreToolText && firstToolIdx >= 0 && i < firstToolIdx) {
335
+ continue;
336
+ }
337
+ if (runStart === -1) runStart = i;
338
+ } else {
339
+ if (runStart !== -1) {
340
+ desired.push({ kind: "text-run", startIndex: runStart, endIndex: i - 1 });
341
+ runStart = -1;
342
+ }
343
+ if (isTool) {
344
+ desired.push({ kind: "tool", contentIndex: i, toolId: b.id });
345
+ }
346
+ }
347
+ }
348
+ if (runStart !== -1) {
349
+ desired.push({ kind: "text-run", startIndex: runStart, endIndex: blocks.length - 1 });
350
+ }
351
+
352
+ // Claude Code MCP can emit provisional pre-tool prose that gets
353
+ // superseded by post-tool output. Prune stale text-run segments so
354
+ // the final assistant output remains below tool output.
355
+ if (shouldDropPreToolText && firstToolIdx >= 0) {
356
+ if (orphanedSegments.length > 0) {
357
+ const remainingOrphans: RenderedSegment[] = [];
358
+ for (const orphan of orphanedSegments) {
359
+ if (orphan.kind === "text-run") {
360
+ host.chatContainer.removeChild(orphan.component);
361
+ if (host.streamingComponent === orphan.component) {
362
+ host.streamingComponent = undefined;
363
+ }
364
+ continue;
365
+ }
366
+ remainingOrphans.push(orphan);
367
+ }
368
+ orphanedSegments = remainingOrphans;
369
+ }
370
+ const desiredTextStarts = new Set(
371
+ desired
372
+ .filter((seg): seg is Extract<DesiredSegment, { kind: "text-run" }> => seg.kind === "text-run")
373
+ .map((seg) => seg.startIndex),
374
+ );
375
+ const desiredToolIndices = new Set(
376
+ desired
377
+ .filter((seg): seg is Extract<DesiredSegment, { kind: "tool" }> => seg.kind === "tool")
378
+ .map((seg) => seg.contentIndex),
379
+ );
380
+ const nextRendered: RenderedSegment[] = [];
381
+ for (const seg of renderedSegments) {
382
+ if (seg.kind === "text-run" && !desiredTextStarts.has(seg.startIndex)) {
383
+ host.chatContainer.removeChild(seg.component);
384
+ if (host.streamingComponent === seg.component) {
385
+ host.streamingComponent = undefined;
386
+ }
387
+ continue;
388
+ }
389
+ if (seg.kind === "tool" && !desiredToolIndices.has(seg.contentIndex)) {
390
+ continue;
391
+ }
392
+ nextRendered.push(seg);
393
+ }
394
+ renderedSegments = nextRendered;
395
+ }
396
+
397
+ // Append any newly needed segments (never reorder existing ones).
398
+ for (const seg of desired) {
399
+ if (seg.kind === "tool") {
400
+ // Tool segments are already handled above via pendingTools; just
401
+ // register them in renderedSegments if not yet tracked.
402
+ const existing = renderedSegments.find(
403
+ (s) => s.kind === "tool" && s.contentIndex === seg.contentIndex,
404
+ );
405
+ if (!existing) {
406
+ const comp = host.pendingTools.get(seg.toolId);
407
+ if (comp) {
408
+ renderedSegments.push({ kind: "tool", contentIndex: seg.contentIndex, component: comp });
409
+ }
410
+ }
411
+ } else {
412
+ // text-run segment
413
+ const existing = renderedSegments.find(
414
+ (s) => s.kind === "text-run" && s.startIndex === seg.startIndex,
415
+ );
416
+ if (!existing) {
417
+ const comp = new AssistantMessageComponent(
418
+ undefined,
419
+ host.hideThinkingBlock,
420
+ host.getMarkdownThemeWithSettings(),
421
+ host.settingsManager.getTimestampFormat(),
422
+ { startIndex: seg.startIndex, endIndex: seg.endIndex },
423
+ );
424
+ host.chatContainer.addChild(comp);
425
+ renderedSegments.push({ kind: "text-run", startIndex: seg.startIndex, endIndex: seg.endIndex, component: comp });
426
+ host.streamingComponent = comp;
427
+ }
428
+ }
429
+ }
430
+
431
+ // Update all trailing text-run segments with the latest message so
432
+ // streaming text grows in place.
433
+ for (const seg of renderedSegments) {
434
+ if (seg.kind === "text-run") {
435
+ // Find corresponding desired segment to get current endIndex
436
+ const d = desired.find((ds) => ds.kind === "text-run" && ds.startIndex === seg.startIndex);
437
+ if (d && d.kind === "text-run" && d.endIndex !== seg.endIndex) {
438
+ seg.endIndex = d.endIndex;
439
+ seg.component.setRange({ startIndex: seg.startIndex, endIndex: seg.endIndex });
440
+ }
441
+ seg.component.updateContent(host.streamingMessage);
442
+ }
443
+ }
444
+
445
+ // Keep streamingComponent pointing at the last text-run for message_end compatibility.
446
+ const lastTextSeg = [...renderedSegments].reverse().find((s) => s.kind === "text-run");
447
+ if (lastTextSeg && lastTextSeg.kind === "text-run") {
448
+ host.streamingComponent = lastTextSeg.component;
292
449
  }
293
- host.streamingComponent.updateContent(host.streamingMessage);
294
450
  }
295
451
 
296
452
  // Update index: fully processed blocks won't need re-scanning.
@@ -376,6 +532,7 @@ export async function handleAgentEvent(host: InteractiveModeStateHost & {
376
532
  host.chatContainer.addChild(host.streamingComponent);
377
533
  }
378
534
  if (host.streamingComponent) {
535
+ host.streamingComponent.setShowMetadata(true);
379
536
  host.streamingComponent.updateContent(host.streamingMessage);
380
537
  }
381
538
 
@@ -399,6 +556,9 @@ export async function handleAgentEvent(host: InteractiveModeStateHost & {
399
556
  }
400
557
  host.streamingComponent = undefined;
401
558
  host.streamingMessage = undefined;
559
+ renderedSegments = [];
560
+ orphanedSegments = [];
561
+ lastContentLength = 0;
402
562
  // Clear pinned output once the message is finalized in the chat
403
563
  // container — prevents duplicate display when the agent continues
404
564
  // (e.g. form elicitation) after the assistant message ends.
@@ -454,11 +614,15 @@ export async function handleAgentEvent(host: InteractiveModeStateHost & {
454
614
  host.loadingAnimation = undefined;
455
615
  host.statusContainer.clear();
456
616
  }
457
- if (host.streamingComponent) {
458
- host.chatContainer.removeChild(host.streamingComponent);
459
- host.streamingComponent = undefined;
460
- host.streamingMessage = undefined;
617
+ if (host.streamingComponent && host.streamingMessage) {
618
+ host.streamingComponent.setShowMetadata(true);
619
+ host.streamingComponent.updateContent(host.streamingMessage);
461
620
  }
621
+ host.streamingComponent = undefined;
622
+ host.streamingMessage = undefined;
623
+ renderedSegments = [];
624
+ orphanedSegments = [];
625
+ lastContentLength = 0;
462
626
  host.pendingTools.clear();
463
627
  // Pinned output is only useful while work is actively streaming.
464
628
  // Keep chat history as the single source after completion.
@@ -1402,7 +1402,9 @@ export class InteractiveMode {
1402
1402
 
1403
1403
  // widgetContainerAbove: spacer collapses when pinned content is visible
1404
1404
  // so there's no extra blank line between pinned output and the editor border.
1405
- this.widgetContainerAbove.clear();
1405
+ // Use detachChildren() (not clear()) — the extensionWidgetsAbove map owns
1406
+ // disposal; clear() would dispose every mounted widget on every re-render.
1407
+ this.widgetContainerAbove.detachChildren();
1406
1408
  const pinned = this.pinnedMessageContainer;
1407
1409
  this.widgetContainerAbove.addChild({
1408
1410
  render: () => pinned.children.length > 0 ? [] : [""],
@@ -1422,7 +1424,9 @@ export class InteractiveMode {
1422
1424
  spacerWhenEmpty: boolean,
1423
1425
  leadingSpacer: boolean,
1424
1426
  ): void {
1425
- container.clear();
1427
+ // Detach without disposing — the widgets map owns lifecycle; disposing
1428
+ // here would kill refresh timers and subscriptions on every re-render.
1429
+ container.detachChildren();
1426
1430
 
1427
1431
  if (widgets.size === 0) {
1428
1432
  if (spacerWhenEmpty) {
@@ -2302,9 +2306,13 @@ export class InteractiveMode {
2302
2306
 
2303
2307
  private rebuildChatFromMessages(): void {
2304
2308
  this.chatContainer.clear();
2309
+ this.pinnedMessageContainer.clear();
2305
2310
  const context = this.sessionManager.buildSessionContext();
2306
2311
  this.renderSessionContext(context);
2307
- this.populatePinnedFromMessages(context.messages);
2312
+ // Pinned content NOT re-populated here — the streaming lifecycle in
2313
+ // chat-controller.ts manages the pinned zone during active work.
2314
+ // populatePinnedFromMessages() remains in renderInitialMessages()
2315
+ // for the session-resume case at startup.
2308
2316
  }
2309
2317
 
2310
2318
  /**
@@ -0,0 +1,69 @@
1
+ declare module "proper-lockfile" {
2
+ export interface RetryOptions {
3
+ retries?: number;
4
+ factor?: number;
5
+ minTimeout?: number;
6
+ maxTimeout?: number;
7
+ randomize?: boolean;
8
+ }
9
+
10
+ export interface LockOptions {
11
+ realpath?: boolean;
12
+ retries?: number | RetryOptions;
13
+ stale?: number;
14
+ onCompromised?: (err: Error) => void;
15
+ }
16
+
17
+ export type ReleaseSync = () => void;
18
+ export type ReleaseAsync = () => Promise<void>;
19
+
20
+ export interface ProperLockfileApi {
21
+ lockSync(path: string, options?: LockOptions): ReleaseSync;
22
+ lock(path: string, options?: LockOptions): Promise<ReleaseAsync>;
23
+ }
24
+
25
+ const lockfile: ProperLockfileApi;
26
+ export default lockfile;
27
+ }
28
+
29
+ declare module "sql.js" {
30
+ export interface Statement {
31
+ bind(values: (string | number | null | Uint8Array)[]): void;
32
+ step(): boolean;
33
+ getAsObject(): Record<string, unknown>;
34
+ free(): void;
35
+ }
36
+
37
+ export interface Database {
38
+ run(sql: string, params?: unknown[]): void;
39
+ prepare(sql: string): Statement;
40
+ export(): Uint8Array;
41
+ close(): void;
42
+ }
43
+
44
+ export interface SqlJsStatic {
45
+ Database: new (data?: Uint8Array | ArrayBuffer | Buffer) => Database;
46
+ }
47
+
48
+ export interface SqlJsConfig {
49
+ locateFile?: (file: string) => string;
50
+ }
51
+
52
+ export default function initSqlJs(config?: SqlJsConfig): Promise<SqlJsStatic>;
53
+ }
54
+
55
+ declare module "hosted-git-info" {
56
+ export interface HostedGitInfo {
57
+ domain?: string;
58
+ user?: string;
59
+ project?: string;
60
+ committish?: string;
61
+ }
62
+
63
+ export interface HostedGitInfoApi {
64
+ fromUrl(url: string): HostedGitInfo | undefined;
65
+ }
66
+
67
+ const hostedGitInfo: HostedGitInfoApi;
68
+ export default hostedGitInfo;
69
+ }
@@ -6,6 +6,7 @@
6
6
  "strict": true,
7
7
  "esModuleInterop": true,
8
8
  "skipLibCheck": true,
9
+ "incremental": true,
9
10
  "forceConsistentCasingInFileNames": true,
10
11
  "declaration": true,
11
12
  "declarationMap": true,
@@ -22,6 +23,6 @@
22
23
  "outDir": "./dist",
23
24
  "rootDir": "./src"
24
25
  },
25
- "include": ["src/**/*.ts"],
26
- "exclude": ["node_modules", "dist", "**/*.d.ts", "src/**/*.d.ts"]
26
+ "include": ["src/**/*.ts", "src/**/*.d.ts"],
27
+ "exclude": ["node_modules", "dist"]
27
28
  }