gsd-pi 2.34.0-dev.ed0bfbf → 2.35.0-dev.30eec3f

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 (334) hide show
  1. package/dist/cli.js +7 -2
  2. package/dist/resource-loader.d.ts +1 -1
  3. package/dist/resource-loader.js +13 -1
  4. package/dist/resources/extensions/async-jobs/await-tool.js +0 -2
  5. package/dist/resources/extensions/async-jobs/job-manager.js +0 -6
  6. package/dist/resources/extensions/bg-shell/output-formatter.js +1 -19
  7. package/dist/resources/extensions/bg-shell/process-manager.js +0 -4
  8. package/dist/resources/extensions/bg-shell/types.js +0 -2
  9. package/dist/resources/extensions/context7/index.js +5 -0
  10. package/dist/resources/extensions/get-secrets-from-user.js +2 -30
  11. package/dist/resources/extensions/google-search/index.js +5 -0
  12. package/dist/resources/extensions/gsd/auto-dispatch.js +43 -1
  13. package/dist/resources/extensions/gsd/auto-loop.js +10 -1
  14. package/dist/resources/extensions/gsd/auto-recovery.js +35 -0
  15. package/dist/resources/extensions/gsd/auto-start.js +35 -2
  16. package/dist/resources/extensions/gsd/auto.js +59 -4
  17. package/dist/resources/extensions/gsd/changelog.js +162 -0
  18. package/dist/resources/extensions/gsd/commands-bootstrap.js +1 -0
  19. package/dist/resources/extensions/gsd/commands-handlers.js +2 -2
  20. package/dist/resources/extensions/gsd/commands-inspect.js +10 -3
  21. package/dist/resources/extensions/gsd/commands-prefs-wizard.js +5 -1
  22. package/dist/resources/extensions/gsd/commands.js +8 -1
  23. package/dist/resources/extensions/gsd/docs/preferences-reference.md +10 -0
  24. package/dist/resources/extensions/gsd/doctor-checks.js +113 -5
  25. package/dist/resources/extensions/gsd/doctor-environment.js +26 -17
  26. package/dist/resources/extensions/gsd/doctor-proactive.js +22 -0
  27. package/dist/resources/extensions/gsd/doctor.js +36 -0
  28. package/dist/resources/extensions/gsd/files.js +11 -2
  29. package/dist/resources/extensions/gsd/gitignore.js +54 -7
  30. package/dist/resources/extensions/gsd/guided-flow.js +5 -3
  31. package/dist/resources/extensions/gsd/health-widget-core.js +96 -0
  32. package/dist/resources/extensions/gsd/health-widget.js +97 -46
  33. package/dist/resources/extensions/gsd/index.js +10 -1
  34. package/dist/resources/extensions/gsd/migrate-external.js +55 -2
  35. package/dist/resources/extensions/gsd/paths.js +74 -7
  36. package/dist/resources/extensions/gsd/post-unit-hooks.js +4 -1
  37. package/dist/resources/extensions/gsd/preferences-validation.js +54 -1
  38. package/dist/resources/extensions/gsd/preferences.js +2 -0
  39. package/dist/resources/extensions/gsd/prompts/complete-milestone.md +2 -0
  40. package/dist/resources/extensions/gsd/prompts/validate-milestone.md +2 -0
  41. package/dist/resources/extensions/gsd/roadmap-mutations.js +55 -0
  42. package/dist/resources/extensions/gsd/session-lock.js +26 -2
  43. package/dist/resources/extensions/gsd/templates/plan.md +8 -0
  44. package/dist/resources/extensions/gsd/worktree-resolver.js +12 -0
  45. package/dist/resources/extensions/remote-questions/remote-command.js +2 -22
  46. package/dist/resources/extensions/shared/mod.js +1 -1
  47. package/dist/resources/extensions/shared/sanitize.js +30 -0
  48. package/dist/resources/extensions/subagent/index.js +6 -14
  49. package/dist/resources/skills/create-gsd-extension/references/events-reference.md +4 -4
  50. package/package.json +2 -1
  51. package/packages/pi-agent-core/dist/agent-loop.d.ts +14 -0
  52. package/packages/pi-agent-core/dist/agent-loop.d.ts.map +1 -1
  53. package/packages/pi-agent-core/dist/agent-loop.js +24 -27
  54. package/packages/pi-agent-core/dist/agent-loop.js.map +1 -1
  55. package/packages/pi-agent-core/dist/agent.d.ts +1 -0
  56. package/packages/pi-agent-core/dist/agent.d.ts.map +1 -1
  57. package/packages/pi-agent-core/dist/agent.js +11 -22
  58. package/packages/pi-agent-core/dist/agent.js.map +1 -1
  59. package/packages/pi-agent-core/dist/proxy.d.ts.map +1 -1
  60. package/packages/pi-agent-core/dist/proxy.js +2 -8
  61. package/packages/pi-agent-core/dist/proxy.js.map +1 -1
  62. package/packages/pi-agent-core/src/agent-loop.ts +30 -27
  63. package/packages/pi-agent-core/src/agent.ts +12 -23
  64. package/packages/pi-agent-core/src/proxy.ts +2 -8
  65. package/packages/pi-ai/dist/providers/azure-openai-responses.d.ts.map +1 -1
  66. package/packages/pi-ai/dist/providers/azure-openai-responses.js +5 -41
  67. package/packages/pi-ai/dist/providers/azure-openai-responses.js.map +1 -1
  68. package/packages/pi-ai/dist/providers/openai-completions.d.ts.map +1 -1
  69. package/packages/pi-ai/dist/providers/openai-completions.js +10 -73
  70. package/packages/pi-ai/dist/providers/openai-completions.js.map +1 -1
  71. package/packages/pi-ai/dist/providers/openai-responses.d.ts.map +1 -1
  72. package/packages/pi-ai/dist/providers/openai-responses.js +9 -80
  73. package/packages/pi-ai/dist/providers/openai-responses.js.map +1 -1
  74. package/packages/pi-ai/dist/providers/openai-shared.d.ts +65 -0
  75. package/packages/pi-ai/dist/providers/openai-shared.d.ts.map +1 -0
  76. package/packages/pi-ai/dist/providers/openai-shared.js +146 -0
  77. package/packages/pi-ai/dist/providers/openai-shared.js.map +1 -0
  78. package/packages/pi-ai/dist/utils/oauth/google-antigravity.d.ts.map +1 -1
  79. package/packages/pi-ai/dist/utils/oauth/google-antigravity.js +7 -135
  80. package/packages/pi-ai/dist/utils/oauth/google-antigravity.js.map +1 -1
  81. package/packages/pi-ai/dist/utils/oauth/google-gemini-cli.d.ts.map +1 -1
  82. package/packages/pi-ai/dist/utils/oauth/google-gemini-cli.js +7 -135
  83. package/packages/pi-ai/dist/utils/oauth/google-gemini-cli.js.map +1 -1
  84. package/packages/pi-ai/dist/utils/oauth/google-oauth-utils.d.ts +46 -0
  85. package/packages/pi-ai/dist/utils/oauth/google-oauth-utils.d.ts.map +1 -0
  86. package/packages/pi-ai/dist/utils/oauth/google-oauth-utils.js +160 -0
  87. package/packages/pi-ai/dist/utils/oauth/google-oauth-utils.js.map +1 -0
  88. package/packages/pi-ai/src/providers/azure-openai-responses.ts +11 -45
  89. package/packages/pi-ai/src/providers/openai-completions.ts +16 -86
  90. package/packages/pi-ai/src/providers/openai-responses.ts +16 -96
  91. package/packages/pi-ai/src/providers/openai-shared.ts +193 -0
  92. package/packages/pi-ai/src/utils/oauth/google-antigravity.ts +14 -162
  93. package/packages/pi-ai/src/utils/oauth/google-gemini-cli.ts +13 -161
  94. package/packages/pi-ai/src/utils/oauth/google-oauth-utils.ts +201 -0
  95. package/packages/pi-coding-agent/dist/core/agent-session.d.ts +16 -63
  96. package/packages/pi-coding-agent/dist/core/agent-session.d.ts.map +1 -1
  97. package/packages/pi-coding-agent/dist/core/agent-session.js +104 -641
  98. package/packages/pi-coding-agent/dist/core/agent-session.js.map +1 -1
  99. package/packages/pi-coding-agent/dist/core/auth-storage.d.ts +0 -1
  100. package/packages/pi-coding-agent/dist/core/auth-storage.d.ts.map +1 -1
  101. package/packages/pi-coding-agent/dist/core/auth-storage.js +4 -35
  102. package/packages/pi-coding-agent/dist/core/auth-storage.js.map +1 -1
  103. package/packages/pi-coding-agent/dist/core/compaction/branch-summarization.d.ts.map +1 -1
  104. package/packages/pi-coding-agent/dist/core/compaction/branch-summarization.js +5 -43
  105. package/packages/pi-coding-agent/dist/core/compaction/branch-summarization.js.map +1 -1
  106. package/packages/pi-coding-agent/dist/core/compaction/compaction.d.ts.map +1 -1
  107. package/packages/pi-coding-agent/dist/core/compaction/compaction.js +11 -69
  108. package/packages/pi-coding-agent/dist/core/compaction/compaction.js.map +1 -1
  109. package/packages/pi-coding-agent/dist/core/compaction/utils.d.ts +40 -0
  110. package/packages/pi-coding-agent/dist/core/compaction/utils.d.ts.map +1 -1
  111. package/packages/pi-coding-agent/dist/core/compaction/utils.js +78 -0
  112. package/packages/pi-coding-agent/dist/core/compaction/utils.js.map +1 -1
  113. package/packages/pi-coding-agent/dist/core/compaction-orchestrator.d.ts +77 -0
  114. package/packages/pi-coding-agent/dist/core/compaction-orchestrator.d.ts.map +1 -0
  115. package/packages/pi-coding-agent/dist/core/compaction-orchestrator.js +331 -0
  116. package/packages/pi-coding-agent/dist/core/compaction-orchestrator.js.map +1 -0
  117. package/packages/pi-coding-agent/dist/core/extensions/index.d.ts +2 -2
  118. package/packages/pi-coding-agent/dist/core/extensions/index.d.ts.map +1 -1
  119. package/packages/pi-coding-agent/dist/core/extensions/index.js +1 -1
  120. package/packages/pi-coding-agent/dist/core/extensions/index.js.map +1 -1
  121. package/packages/pi-coding-agent/dist/core/extensions/runner.d.ts +15 -0
  122. package/packages/pi-coding-agent/dist/core/extensions/runner.d.ts.map +1 -1
  123. package/packages/pi-coding-agent/dist/core/extensions/runner.js +129 -243
  124. package/packages/pi-coding-agent/dist/core/extensions/runner.js.map +1 -1
  125. package/packages/pi-coding-agent/dist/core/extensions/types.d.ts +49 -42
  126. package/packages/pi-coding-agent/dist/core/extensions/types.d.ts.map +1 -1
  127. package/packages/pi-coding-agent/dist/core/extensions/types.js +2 -21
  128. package/packages/pi-coding-agent/dist/core/extensions/types.js.map +1 -1
  129. package/packages/pi-coding-agent/dist/core/lock-utils.d.ts +39 -0
  130. package/packages/pi-coding-agent/dist/core/lock-utils.d.ts.map +1 -0
  131. package/packages/pi-coding-agent/dist/core/lock-utils.js +89 -0
  132. package/packages/pi-coding-agent/dist/core/lock-utils.js.map +1 -0
  133. package/packages/pi-coding-agent/dist/core/lsp/config.d.ts +2 -0
  134. package/packages/pi-coding-agent/dist/core/lsp/config.d.ts.map +1 -1
  135. package/packages/pi-coding-agent/dist/core/lsp/config.js +4 -1
  136. package/packages/pi-coding-agent/dist/core/lsp/config.js.map +1 -1
  137. package/packages/pi-coding-agent/dist/core/lsp/index.d.ts.map +1 -1
  138. package/packages/pi-coding-agent/dist/core/lsp/index.js +52 -107
  139. package/packages/pi-coding-agent/dist/core/lsp/index.js.map +1 -1
  140. package/packages/pi-coding-agent/dist/core/lsp/lspmux.d.ts.map +1 -1
  141. package/packages/pi-coding-agent/dist/core/lsp/lspmux.js +2 -21
  142. package/packages/pi-coding-agent/dist/core/lsp/lspmux.js.map +1 -1
  143. package/packages/pi-coding-agent/dist/core/lsp/types.d.ts +0 -1
  144. package/packages/pi-coding-agent/dist/core/lsp/types.d.ts.map +1 -1
  145. package/packages/pi-coding-agent/dist/core/lsp/types.js +0 -28
  146. package/packages/pi-coding-agent/dist/core/lsp/types.js.map +1 -1
  147. package/packages/pi-coding-agent/dist/core/package-manager.d.ts.map +1 -1
  148. package/packages/pi-coding-agent/dist/core/package-manager.js +2 -4
  149. package/packages/pi-coding-agent/dist/core/package-manager.js.map +1 -1
  150. package/packages/pi-coding-agent/dist/core/resource-loader.d.ts +2 -4
  151. package/packages/pi-coding-agent/dist/core/resource-loader.d.ts.map +1 -1
  152. package/packages/pi-coding-agent/dist/core/resource-loader.js +46 -60
  153. package/packages/pi-coding-agent/dist/core/resource-loader.js.map +1 -1
  154. package/packages/pi-coding-agent/dist/core/retry-handler.d.ts +87 -0
  155. package/packages/pi-coding-agent/dist/core/retry-handler.d.ts.map +1 -0
  156. package/packages/pi-coding-agent/dist/core/retry-handler.js +295 -0
  157. package/packages/pi-coding-agent/dist/core/retry-handler.js.map +1 -0
  158. package/packages/pi-coding-agent/dist/core/session-manager.d.ts +0 -1
  159. package/packages/pi-coding-agent/dist/core/session-manager.d.ts.map +1 -1
  160. package/packages/pi-coding-agent/dist/core/session-manager.js +3 -28
  161. package/packages/pi-coding-agent/dist/core/session-manager.js.map +1 -1
  162. package/packages/pi-coding-agent/dist/core/settings-manager.d.ts +8 -0
  163. package/packages/pi-coding-agent/dist/core/settings-manager.d.ts.map +1 -1
  164. package/packages/pi-coding-agent/dist/core/settings-manager.js +76 -166
  165. package/packages/pi-coding-agent/dist/core/settings-manager.js.map +1 -1
  166. package/packages/pi-coding-agent/dist/core/skills.d.ts.map +1 -1
  167. package/packages/pi-coding-agent/dist/core/skills.js +1 -3
  168. package/packages/pi-coding-agent/dist/core/skills.js.map +1 -1
  169. package/packages/pi-coding-agent/dist/index.d.ts +1 -1
  170. package/packages/pi-coding-agent/dist/index.d.ts.map +1 -1
  171. package/packages/pi-coding-agent/dist/index.js +1 -1
  172. package/packages/pi-coding-agent/dist/index.js.map +1 -1
  173. package/packages/pi-coding-agent/dist/modes/interactive/components/session-selector.d.ts +1 -1
  174. package/packages/pi-coding-agent/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
  175. package/packages/pi-coding-agent/dist/modes/interactive/components/session-selector.js +9 -26
  176. package/packages/pi-coding-agent/dist/modes/interactive/components/session-selector.js.map +1 -1
  177. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  178. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.js +1 -13
  179. package/packages/pi-coding-agent/dist/modes/interactive/components/tool-execution.js.map +1 -1
  180. package/packages/pi-coding-agent/dist/modes/interactive/components/tree-render-utils.d.ts +44 -0
  181. package/packages/pi-coding-agent/dist/modes/interactive/components/tree-render-utils.d.ts.map +1 -0
  182. package/packages/pi-coding-agent/dist/modes/interactive/components/tree-render-utils.js +61 -0
  183. package/packages/pi-coding-agent/dist/modes/interactive/components/tree-render-utils.js.map +1 -0
  184. package/packages/pi-coding-agent/dist/modes/interactive/components/tree-selector.d.ts.map +1 -1
  185. package/packages/pi-coding-agent/dist/modes/interactive/components/tree-selector.js +6 -9
  186. package/packages/pi-coding-agent/dist/modes/interactive/components/tree-selector.js.map +1 -1
  187. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.d.ts +65 -0
  188. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  189. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.js +6 -16
  190. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.js.map +1 -1
  191. package/packages/pi-coding-agent/dist/modes/interactive/theme/themes.d.ts +12 -0
  192. package/packages/pi-coding-agent/dist/modes/interactive/theme/themes.d.ts.map +1 -0
  193. package/packages/pi-coding-agent/dist/modes/interactive/theme/themes.js +175 -0
  194. package/packages/pi-coding-agent/dist/modes/interactive/theme/themes.js.map +1 -0
  195. package/packages/pi-coding-agent/dist/modes/interactive/utils/shorten-path.d.ts +6 -0
  196. package/packages/pi-coding-agent/dist/modes/interactive/utils/shorten-path.d.ts.map +1 -0
  197. package/packages/pi-coding-agent/dist/modes/interactive/utils/shorten-path.js +15 -0
  198. package/packages/pi-coding-agent/dist/modes/interactive/utils/shorten-path.js.map +1 -0
  199. package/packages/pi-coding-agent/dist/modes/print-mode.d.ts.map +1 -1
  200. package/packages/pi-coding-agent/dist/modes/print-mode.js +2 -30
  201. package/packages/pi-coding-agent/dist/modes/print-mode.js.map +1 -1
  202. package/packages/pi-coding-agent/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  203. package/packages/pi-coding-agent/dist/modes/rpc/rpc-mode.js +2 -28
  204. package/packages/pi-coding-agent/dist/modes/rpc/rpc-mode.js.map +1 -1
  205. package/packages/pi-coding-agent/dist/modes/shared/command-context-actions.d.ts +19 -0
  206. package/packages/pi-coding-agent/dist/modes/shared/command-context-actions.d.ts.map +1 -0
  207. package/packages/pi-coding-agent/dist/modes/shared/command-context-actions.js +45 -0
  208. package/packages/pi-coding-agent/dist/modes/shared/command-context-actions.js.map +1 -0
  209. package/packages/pi-coding-agent/dist/utils/error.d.ts +5 -0
  210. package/packages/pi-coding-agent/dist/utils/error.d.ts.map +1 -0
  211. package/packages/pi-coding-agent/dist/utils/error.js +7 -0
  212. package/packages/pi-coding-agent/dist/utils/error.js.map +1 -0
  213. package/packages/pi-coding-agent/package.json +1 -1
  214. package/packages/pi-coding-agent/src/core/agent-session.ts +117 -745
  215. package/packages/pi-coding-agent/src/core/auth-storage.ts +4 -38
  216. package/packages/pi-coding-agent/src/core/compaction/branch-summarization.ts +7 -53
  217. package/packages/pi-coding-agent/src/core/compaction/compaction.ts +14 -74
  218. package/packages/pi-coding-agent/src/core/compaction/utils.ts +100 -0
  219. package/packages/pi-coding-agent/src/core/compaction-orchestrator.ts +424 -0
  220. package/packages/pi-coding-agent/src/core/extensions/index.ts +1 -21
  221. package/packages/pi-coding-agent/src/core/extensions/runner.ts +119 -243
  222. package/packages/pi-coding-agent/src/core/extensions/types.ts +50 -69
  223. package/packages/pi-coding-agent/src/core/lock-utils.ts +113 -0
  224. package/packages/pi-coding-agent/src/core/lsp/config.ts +4 -1
  225. package/packages/pi-coding-agent/src/core/lsp/index.ts +83 -152
  226. package/packages/pi-coding-agent/src/core/lsp/lspmux.ts +2 -22
  227. package/packages/pi-coding-agent/src/core/lsp/types.ts +0 -29
  228. package/packages/pi-coding-agent/src/core/package-manager.ts +1 -4
  229. package/packages/pi-coding-agent/src/core/resource-loader.ts +56 -69
  230. package/packages/pi-coding-agent/src/core/retry-handler.ts +359 -0
  231. package/packages/pi-coding-agent/src/core/session-manager.ts +3 -30
  232. package/packages/pi-coding-agent/src/core/settings-manager.ts +85 -164
  233. package/packages/pi-coding-agent/src/core/skills.ts +1 -4
  234. package/packages/pi-coding-agent/src/index.ts +1 -7
  235. package/packages/pi-coding-agent/src/modes/interactive/components/session-selector.ts +17 -29
  236. package/packages/pi-coding-agent/src/modes/interactive/components/tool-execution.ts +1 -13
  237. package/packages/pi-coding-agent/src/modes/interactive/components/tree-render-utils.ts +81 -0
  238. package/packages/pi-coding-agent/src/modes/interactive/components/tree-selector.ts +14 -19
  239. package/packages/pi-coding-agent/src/modes/interactive/theme/theme.ts +7 -18
  240. package/packages/pi-coding-agent/src/modes/interactive/theme/themes.ts +196 -0
  241. package/packages/pi-coding-agent/src/modes/interactive/utils/shorten-path.ts +14 -0
  242. package/packages/pi-coding-agent/src/modes/print-mode.ts +2 -30
  243. package/packages/pi-coding-agent/src/modes/rpc/rpc-mode.ts +2 -28
  244. package/packages/pi-coding-agent/src/modes/shared/command-context-actions.ts +53 -0
  245. package/packages/pi-coding-agent/src/utils/error.ts +6 -0
  246. package/packages/pi-tui/dist/components/markdown.d.ts +5 -0
  247. package/packages/pi-tui/dist/components/markdown.d.ts.map +1 -1
  248. package/packages/pi-tui/dist/components/markdown.js +25 -31
  249. package/packages/pi-tui/dist/components/markdown.js.map +1 -1
  250. package/packages/pi-tui/dist/keys.d.ts +0 -4
  251. package/packages/pi-tui/dist/keys.d.ts.map +1 -1
  252. package/packages/pi-tui/dist/keys.js +94 -162
  253. package/packages/pi-tui/dist/keys.js.map +1 -1
  254. package/packages/pi-tui/src/components/markdown.ts +25 -29
  255. package/packages/pi-tui/src/keys.ts +94 -173
  256. package/pkg/dist/modes/interactive/theme/theme.d.ts +65 -0
  257. package/pkg/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  258. package/pkg/dist/modes/interactive/theme/theme.js +6 -16
  259. package/pkg/dist/modes/interactive/theme/theme.js.map +1 -1
  260. package/pkg/dist/modes/interactive/theme/themes.d.ts +12 -0
  261. package/pkg/dist/modes/interactive/theme/themes.d.ts.map +1 -0
  262. package/pkg/dist/modes/interactive/theme/themes.js +175 -0
  263. package/pkg/dist/modes/interactive/theme/themes.js.map +1 -0
  264. package/pkg/package.json +1 -1
  265. package/src/resources/extensions/async-jobs/await-tool.ts +0 -2
  266. package/src/resources/extensions/async-jobs/job-manager.ts +0 -7
  267. package/src/resources/extensions/bg-shell/output-formatter.ts +0 -17
  268. package/src/resources/extensions/bg-shell/process-manager.ts +0 -4
  269. package/src/resources/extensions/bg-shell/types.ts +0 -12
  270. package/src/resources/extensions/context7/index.ts +7 -0
  271. package/src/resources/extensions/get-secrets-from-user.ts +2 -35
  272. package/src/resources/extensions/google-search/index.ts +7 -0
  273. package/src/resources/extensions/gsd/auto-dispatch.ts +49 -1
  274. package/src/resources/extensions/gsd/auto-loop.ts +11 -1
  275. package/src/resources/extensions/gsd/auto-recovery.ts +39 -0
  276. package/src/resources/extensions/gsd/auto-start.ts +42 -2
  277. package/src/resources/extensions/gsd/auto.ts +61 -3
  278. package/src/resources/extensions/gsd/changelog.ts +213 -0
  279. package/src/resources/extensions/gsd/commands-bootstrap.ts +1 -0
  280. package/src/resources/extensions/gsd/commands-handlers.ts +2 -2
  281. package/src/resources/extensions/gsd/commands-inspect.ts +10 -3
  282. package/src/resources/extensions/gsd/commands-prefs-wizard.ts +5 -1
  283. package/src/resources/extensions/gsd/commands.ts +9 -1
  284. package/src/resources/extensions/gsd/docs/preferences-reference.md +10 -0
  285. package/src/resources/extensions/gsd/doctor-checks.ts +107 -5
  286. package/src/resources/extensions/gsd/doctor-environment.ts +26 -16
  287. package/src/resources/extensions/gsd/doctor-proactive.ts +24 -0
  288. package/src/resources/extensions/gsd/doctor-types.ts +9 -1
  289. package/src/resources/extensions/gsd/doctor.ts +35 -0
  290. package/src/resources/extensions/gsd/files.ts +12 -2
  291. package/src/resources/extensions/gsd/gitignore.ts +54 -7
  292. package/src/resources/extensions/gsd/guided-flow.ts +5 -3
  293. package/src/resources/extensions/gsd/health-widget-core.ts +129 -0
  294. package/src/resources/extensions/gsd/health-widget.ts +103 -59
  295. package/src/resources/extensions/gsd/index.ts +10 -1
  296. package/src/resources/extensions/gsd/migrate-external.ts +47 -2
  297. package/src/resources/extensions/gsd/paths.ts +73 -7
  298. package/src/resources/extensions/gsd/post-unit-hooks.ts +5 -1
  299. package/src/resources/extensions/gsd/preferences-validation.ts +54 -1
  300. package/src/resources/extensions/gsd/preferences.ts +2 -0
  301. package/src/resources/extensions/gsd/prompts/complete-milestone.md +2 -0
  302. package/src/resources/extensions/gsd/prompts/validate-milestone.md +2 -0
  303. package/src/resources/extensions/gsd/roadmap-mutations.ts +66 -0
  304. package/src/resources/extensions/gsd/session-lock.ts +29 -2
  305. package/src/resources/extensions/gsd/templates/plan.md +8 -0
  306. package/src/resources/extensions/gsd/tests/commands-inspect-open-db.test.ts +46 -0
  307. package/src/resources/extensions/gsd/tests/doctor-git.test.ts +98 -2
  308. package/src/resources/extensions/gsd/tests/doctor-runtime.test.ts +59 -3
  309. package/src/resources/extensions/gsd/tests/files-loadfile-eisdir.test.ts +20 -0
  310. package/src/resources/extensions/gsd/tests/gitignore-tracked-gsd.test.ts +214 -0
  311. package/src/resources/extensions/gsd/tests/health-widget.test.ts +158 -0
  312. package/src/resources/extensions/gsd/tests/paths.test.ts +113 -0
  313. package/src/resources/extensions/gsd/tests/preferences.test.ts +40 -2
  314. package/src/resources/extensions/gsd/tests/test-utils.ts +165 -0
  315. package/src/resources/extensions/gsd/tests/validate-directory.test.ts +15 -0
  316. package/src/resources/extensions/gsd/tests/validate-milestone.test.ts +2 -0
  317. package/src/resources/extensions/gsd/tests/worktree-sync-milestones.test.ts +32 -0
  318. package/src/resources/extensions/gsd/worktree-resolver.ts +11 -0
  319. package/src/resources/extensions/remote-questions/remote-command.ts +2 -23
  320. package/src/resources/extensions/shared/mod.ts +1 -1
  321. package/src/resources/extensions/shared/sanitize.ts +36 -0
  322. package/src/resources/extensions/subagent/index.ts +6 -12
  323. package/src/resources/skills/create-gsd-extension/references/events-reference.md +4 -4
  324. package/dist/resources/extensions/shared/wizard-ui.js +0 -478
  325. package/packages/pi-coding-agent/dist/modes/interactive/theme/dark.json +0 -85
  326. package/packages/pi-coding-agent/dist/modes/interactive/theme/light.json +0 -84
  327. package/packages/pi-coding-agent/dist/modes/interactive/theme/theme-schema.json +0 -335
  328. package/packages/pi-coding-agent/src/modes/interactive/theme/dark.json +0 -85
  329. package/packages/pi-coding-agent/src/modes/interactive/theme/light.json +0 -84
  330. package/packages/pi-coding-agent/src/modes/interactive/theme/theme-schema.json +0 -335
  331. package/pkg/dist/modes/interactive/theme/dark.json +0 -85
  332. package/pkg/dist/modes/interactive/theme/light.json +0 -84
  333. package/pkg/dist/modes/interactive/theme/theme-schema.json +0 -335
  334. package/src/resources/extensions/shared/wizard-ui.ts +0 -551
@@ -185,176 +185,108 @@ const FUNCTIONAL_CODEPOINTS = {
185
185
  home: -14,
186
186
  end: -15,
187
187
  };
188
- const LEGACY_KEY_SEQUENCES = {
189
- up: ["\x1b[A", "\x1bOA"],
190
- down: ["\x1b[B", "\x1bOB"],
191
- right: ["\x1b[C", "\x1bOC"],
192
- left: ["\x1b[D", "\x1bOD"],
193
- home: ["\x1b[H", "\x1bOH", "\x1b[1~", "\x1b[7~"],
194
- end: ["\x1b[F", "\x1bOF", "\x1b[4~", "\x1b[8~"],
195
- insert: ["\x1b[2~"],
196
- delete: ["\x1b[3~"],
197
- pageUp: ["\x1b[5~", "\x1b[[5~"],
198
- pageDown: ["\x1b[6~", "\x1b[[6~"],
199
- clear: ["\x1b[E", "\x1bOE"],
200
- f1: ["\x1bOP", "\x1b[11~", "\x1b[[A"],
201
- f2: ["\x1bOQ", "\x1b[12~", "\x1b[[B"],
202
- f3: ["\x1bOR", "\x1b[13~", "\x1b[[C"],
203
- f4: ["\x1bOS", "\x1b[14~", "\x1b[[D"],
204
- f5: ["\x1b[15~", "\x1b[[E"],
205
- f6: ["\x1b[17~"],
206
- f7: ["\x1b[18~"],
207
- f8: ["\x1b[19~"],
208
- f9: ["\x1b[20~"],
209
- f10: ["\x1b[21~"],
210
- f11: ["\x1b[23~"],
211
- f12: ["\x1b[24~"],
212
- };
213
- const LEGACY_SHIFT_SEQUENCES = {
214
- up: ["\x1b[a"],
215
- down: ["\x1b[b"],
216
- right: ["\x1b[c"],
217
- left: ["\x1b[d"],
218
- clear: ["\x1b[e"],
219
- insert: ["\x1b[2$"],
220
- delete: ["\x1b[3$"],
221
- pageUp: ["\x1b[5$"],
222
- pageDown: ["\x1b[6$"],
223
- home: ["\x1b[7$"],
224
- end: ["\x1b[8$"],
225
- };
226
- const LEGACY_CTRL_SEQUENCES = {
227
- up: ["\x1bOa"],
228
- down: ["\x1bOb"],
229
- right: ["\x1bOc"],
230
- left: ["\x1bOd"],
231
- clear: ["\x1bOe"],
232
- insert: ["\x1b[2^"],
233
- delete: ["\x1b[3^"],
234
- pageUp: ["\x1b[5^"],
235
- pageDown: ["\x1b[6^"],
236
- home: ["\x1b[7^"],
237
- end: ["\x1b[8^"],
238
- };
239
- const LEGACY_SEQUENCE_KEY_IDS = {
240
- "\x1bOA": "up",
241
- "\x1bOB": "down",
242
- "\x1bOC": "right",
243
- "\x1bOD": "left",
244
- "\x1bOH": "home",
245
- "\x1bOF": "end",
246
- "\x1b[E": "clear",
247
- "\x1bOE": "clear",
248
- "\x1bOe": "ctrl+clear",
249
- "\x1b[e": "shift+clear",
250
- "\x1b[2~": "insert",
251
- "\x1b[2$": "shift+insert",
252
- "\x1b[2^": "ctrl+insert",
253
- "\x1b[3$": "shift+delete",
254
- "\x1b[3^": "ctrl+delete",
255
- "\x1b[[5~": "pageUp",
256
- "\x1b[[6~": "pageDown",
257
- "\x1b[a": "shift+up",
258
- "\x1b[b": "shift+down",
259
- "\x1b[c": "shift+right",
260
- "\x1b[d": "shift+left",
261
- "\x1bOa": "ctrl+up",
262
- "\x1bOb": "ctrl+down",
263
- "\x1bOc": "ctrl+right",
264
- "\x1bOd": "ctrl+left",
265
- "\x1b[5$": "shift+pageUp",
266
- "\x1b[6$": "shift+pageDown",
267
- "\x1b[7$": "shift+home",
268
- "\x1b[8$": "shift+end",
269
- "\x1b[5^": "ctrl+pageUp",
270
- "\x1b[6^": "ctrl+pageDown",
271
- "\x1b[7^": "ctrl+home",
272
- "\x1b[8^": "ctrl+end",
273
- "\x1bOP": "f1",
274
- "\x1bOQ": "f2",
275
- "\x1bOR": "f3",
276
- "\x1bOS": "f4",
277
- "\x1b[11~": "f1",
278
- "\x1b[12~": "f2",
279
- "\x1b[13~": "f3",
280
- "\x1b[14~": "f4",
281
- "\x1b[[A": "f1",
282
- "\x1b[[B": "f2",
283
- "\x1b[[C": "f3",
284
- "\x1b[[D": "f4",
285
- "\x1b[[E": "f5",
286
- "\x1b[15~": "f5",
287
- "\x1b[17~": "f6",
288
- "\x1b[18~": "f7",
289
- "\x1b[19~": "f8",
290
- "\x1b[20~": "f9",
291
- "\x1b[21~": "f10",
292
- "\x1b[23~": "f11",
293
- "\x1b[24~": "f12",
294
- "\x1bb": "alt+left",
295
- "\x1bf": "alt+right",
296
- "\x1bp": "alt+up",
297
- "\x1bn": "alt+down",
188
+ /**
189
+ * Consolidated legacy terminal key sequences.
190
+ * Each key maps to its sequences for unmodified, shift-modified, and ctrl-modified variants.
191
+ * This single structure replaces three separate maps (LEGACY_KEY_SEQUENCES,
192
+ * LEGACY_SHIFT_SEQUENCES, LEGACY_CTRL_SEQUENCES) that shared the same key sets.
193
+ */
194
+ const LEGACY_SEQUENCES = {
195
+ up: { plain: ["\x1b[A", "\x1bOA"], shift: ["\x1b[a"], ctrl: ["\x1bOa"] },
196
+ down: { plain: ["\x1b[B", "\x1bOB"], shift: ["\x1b[b"], ctrl: ["\x1bOb"] },
197
+ right: { plain: ["\x1b[C", "\x1bOC"], shift: ["\x1b[c"], ctrl: ["\x1bOc"] },
198
+ left: { plain: ["\x1b[D", "\x1bOD"], shift: ["\x1b[d"], ctrl: ["\x1bOd"] },
199
+ home: { plain: ["\x1b[H", "\x1bOH", "\x1b[1~", "\x1b[7~"], shift: ["\x1b[7$"], ctrl: ["\x1b[7^"] },
200
+ end: { plain: ["\x1b[F", "\x1bOF", "\x1b[4~", "\x1b[8~"], shift: ["\x1b[8$"], ctrl: ["\x1b[8^"] },
201
+ insert: { plain: ["\x1b[2~"], shift: ["\x1b[2$"], ctrl: ["\x1b[2^"] },
202
+ delete: { plain: ["\x1b[3~"], shift: ["\x1b[3$"], ctrl: ["\x1b[3^"] },
203
+ pageUp: { plain: ["\x1b[5~", "\x1b[[5~"], shift: ["\x1b[5$"], ctrl: ["\x1b[5^"] },
204
+ pageDown: { plain: ["\x1b[6~", "\x1b[[6~"], shift: ["\x1b[6$"], ctrl: ["\x1b[6^"] },
205
+ clear: { plain: ["\x1b[E", "\x1bOE"], shift: ["\x1b[e"], ctrl: ["\x1bOe"] },
206
+ f1: { plain: ["\x1bOP", "\x1b[11~", "\x1b[[A"] },
207
+ f2: { plain: ["\x1bOQ", "\x1b[12~", "\x1b[[B"] },
208
+ f3: { plain: ["\x1bOR", "\x1b[13~", "\x1b[[C"] },
209
+ f4: { plain: ["\x1bOS", "\x1b[14~", "\x1b[[D"] },
210
+ f5: { plain: ["\x1b[15~", "\x1b[[E"] },
211
+ f6: { plain: ["\x1b[17~"] },
212
+ f7: { plain: ["\x1b[18~"] },
213
+ f8: { plain: ["\x1b[19~"] },
214
+ f9: { plain: ["\x1b[20~"] },
215
+ f10: { plain: ["\x1b[21~"] },
216
+ f11: { plain: ["\x1b[23~"] },
217
+ f12: { plain: ["\x1b[24~"] },
298
218
  };
219
+ /**
220
+ * Reverse lookup from escape sequence to key identifier, auto-generated from LEGACY_SEQUENCES.
221
+ * Additional non-standard sequences (alt+arrow aliases) are appended after generation.
222
+ */
223
+ const LEGACY_SEQUENCE_KEY_IDS = (() => {
224
+ const map = {};
225
+ for (const [key, entry] of Object.entries(LEGACY_SEQUENCES)) {
226
+ const keyId = key;
227
+ if (entry.plain) {
228
+ for (const seq of entry.plain)
229
+ map[seq] = keyId;
230
+ }
231
+ if (entry.shift) {
232
+ for (const seq of entry.shift)
233
+ map[seq] = `shift+${keyId}`;
234
+ }
235
+ if (entry.ctrl) {
236
+ for (const seq of entry.ctrl)
237
+ map[seq] = `ctrl+${keyId}`;
238
+ }
239
+ }
240
+ // Non-standard alt+arrow aliases not derivable from the table
241
+ map["\x1bb"] = "alt+left";
242
+ map["\x1bf"] = "alt+right";
243
+ map["\x1bp"] = "alt+up";
244
+ map["\x1bn"] = "alt+down";
245
+ return map;
246
+ })();
299
247
  const matchesLegacySequence = (data, sequences) => sequences.includes(data);
300
248
  const matchesLegacyModifierSequence = (data, key, modifier) => {
301
- if (modifier === MODIFIERS.shift) {
302
- return matchesLegacySequence(data, LEGACY_SHIFT_SEQUENCES[key]);
249
+ const entry = LEGACY_SEQUENCES[key];
250
+ if (!entry)
251
+ return false;
252
+ if (modifier === MODIFIERS.shift && entry.shift) {
253
+ return matchesLegacySequence(data, entry.shift);
303
254
  }
304
- if (modifier === MODIFIERS.ctrl) {
305
- return matchesLegacySequence(data, LEGACY_CTRL_SEQUENCES[key]);
255
+ if (modifier === MODIFIERS.ctrl && entry.ctrl) {
256
+ return matchesLegacySequence(data, entry.ctrl);
306
257
  }
307
258
  return false;
308
259
  };
309
260
  // Store the last parsed event type for isKeyRelease() to query
310
261
  let _lastEventType = "press";
311
262
  /**
312
- * Check if the last parsed key event was a key release.
313
- * Only meaningful when Kitty keyboard protocol with flag 2 is active.
263
+ * Check if input data contains a Kitty event type marker.
264
+ * Event type markers appear as ":<eventType>" followed by a sequence terminator (u, ~, A-D, H, F).
265
+ * Ignores bracketed paste content which may contain similar patterns.
314
266
  */
315
- export function isKeyRelease(data) {
316
- // Don't treat bracketed paste content as key release, even if it contains
317
- // patterns like ":3F" (e.g., bluetooth MAC addresses like "90:62:3F:A5").
318
- // Terminal.ts re-wraps paste content with bracketed paste markers before
319
- // passing to TUI, so pasted data will always contain \x1b[200~.
267
+ function hasKittyEventType(data, eventType) {
320
268
  if (data.includes("\x1b[200~")) {
321
269
  return false;
322
270
  }
323
- // Quick check: release events with flag 2 contain ":3"
324
- // Format: \x1b[<codepoint>;<modifier>:3u
325
- if (data.includes(":3u") ||
326
- data.includes(":3~") ||
327
- data.includes(":3A") ||
328
- data.includes(":3B") ||
329
- data.includes(":3C") ||
330
- data.includes(":3D") ||
331
- data.includes(":3H") ||
332
- data.includes(":3F")) {
333
- return true;
334
- }
335
- return false;
271
+ const marker = `:${eventType}`;
272
+ return (data.includes(`${marker}u`) ||
273
+ data.includes(`${marker}~`) ||
274
+ data.includes(`${marker}A`) ||
275
+ data.includes(`${marker}B`) ||
276
+ data.includes(`${marker}C`) ||
277
+ data.includes(`${marker}D`) ||
278
+ data.includes(`${marker}H`) ||
279
+ data.includes(`${marker}F`));
280
+ }
281
+ export function isKeyRelease(data) {
282
+ return hasKittyEventType(data, 3);
336
283
  }
337
284
  /**
338
285
  * Check if the last parsed key event was a key repeat.
339
286
  * Only meaningful when Kitty keyboard protocol with flag 2 is active.
340
287
  */
341
288
  export function isKeyRepeat(data) {
342
- // Don't treat bracketed paste content as key repeat, even if it contains
343
- // patterns like ":2F". See isKeyRelease() for details.
344
- if (data.includes("\x1b[200~")) {
345
- return false;
346
- }
347
- if (data.includes(":2u") ||
348
- data.includes(":2~") ||
349
- data.includes(":2A") ||
350
- data.includes(":2B") ||
351
- data.includes(":2C") ||
352
- data.includes(":2D") ||
353
- data.includes(":2H") ||
354
- data.includes(":2F")) {
355
- return true;
356
- }
357
- return false;
289
+ return hasKittyEventType(data, 2);
358
290
  }
359
291
  function parseEventType(eventTypeStr) {
360
292
  if (!eventTypeStr)
@@ -652,7 +584,7 @@ export function matchesKey(data, keyId) {
652
584
  return matchesKittySequence(data, CODEPOINTS.backspace, modifier);
653
585
  case "insert":
654
586
  if (modifier === 0) {
655
- return (matchesLegacySequence(data, LEGACY_KEY_SEQUENCES.insert) ||
587
+ return (matchesLegacySequence(data, LEGACY_SEQUENCES.insert.plain) ||
656
588
  matchesKittySequence(data, FUNCTIONAL_CODEPOINTS.insert, 0));
657
589
  }
658
590
  if (matchesLegacyModifierSequence(data, "insert", modifier)) {
@@ -661,7 +593,7 @@ export function matchesKey(data, keyId) {
661
593
  return matchesKittySequence(data, FUNCTIONAL_CODEPOINTS.insert, modifier);
662
594
  case "delete":
663
595
  if (modifier === 0) {
664
- return (matchesLegacySequence(data, LEGACY_KEY_SEQUENCES.delete) ||
596
+ return (matchesLegacySequence(data, LEGACY_SEQUENCES.delete.plain) ||
665
597
  matchesKittySequence(data, FUNCTIONAL_CODEPOINTS.delete, 0));
666
598
  }
667
599
  if (matchesLegacyModifierSequence(data, "delete", modifier)) {
@@ -670,12 +602,12 @@ export function matchesKey(data, keyId) {
670
602
  return matchesKittySequence(data, FUNCTIONAL_CODEPOINTS.delete, modifier);
671
603
  case "clear":
672
604
  if (modifier === 0) {
673
- return matchesLegacySequence(data, LEGACY_KEY_SEQUENCES.clear);
605
+ return matchesLegacySequence(data, LEGACY_SEQUENCES.clear.plain);
674
606
  }
675
607
  return matchesLegacyModifierSequence(data, "clear", modifier);
676
608
  case "home":
677
609
  if (modifier === 0) {
678
- return (matchesLegacySequence(data, LEGACY_KEY_SEQUENCES.home) ||
610
+ return (matchesLegacySequence(data, LEGACY_SEQUENCES.home.plain) ||
679
611
  matchesKittySequence(data, FUNCTIONAL_CODEPOINTS.home, 0));
680
612
  }
681
613
  if (matchesLegacyModifierSequence(data, "home", modifier)) {
@@ -684,7 +616,7 @@ export function matchesKey(data, keyId) {
684
616
  return matchesKittySequence(data, FUNCTIONAL_CODEPOINTS.home, modifier);
685
617
  case "end":
686
618
  if (modifier === 0) {
687
- return (matchesLegacySequence(data, LEGACY_KEY_SEQUENCES.end) ||
619
+ return (matchesLegacySequence(data, LEGACY_SEQUENCES.end.plain) ||
688
620
  matchesKittySequence(data, FUNCTIONAL_CODEPOINTS.end, 0));
689
621
  }
690
622
  if (matchesLegacyModifierSequence(data, "end", modifier)) {
@@ -693,7 +625,7 @@ export function matchesKey(data, keyId) {
693
625
  return matchesKittySequence(data, FUNCTIONAL_CODEPOINTS.end, modifier);
694
626
  case "pageup":
695
627
  if (modifier === 0) {
696
- return (matchesLegacySequence(data, LEGACY_KEY_SEQUENCES.pageUp) ||
628
+ return (matchesLegacySequence(data, LEGACY_SEQUENCES.pageUp.plain) ||
697
629
  matchesKittySequence(data, FUNCTIONAL_CODEPOINTS.pageUp, 0));
698
630
  }
699
631
  if (matchesLegacyModifierSequence(data, "pageUp", modifier)) {
@@ -702,7 +634,7 @@ export function matchesKey(data, keyId) {
702
634
  return matchesKittySequence(data, FUNCTIONAL_CODEPOINTS.pageUp, modifier);
703
635
  case "pagedown":
704
636
  if (modifier === 0) {
705
- return (matchesLegacySequence(data, LEGACY_KEY_SEQUENCES.pageDown) ||
637
+ return (matchesLegacySequence(data, LEGACY_SEQUENCES.pageDown.plain) ||
706
638
  matchesKittySequence(data, FUNCTIONAL_CODEPOINTS.pageDown, 0));
707
639
  }
708
640
  if (matchesLegacyModifierSequence(data, "pageDown", modifier)) {
@@ -714,7 +646,7 @@ export function matchesKey(data, keyId) {
714
646
  return data === "\x1bp" || matchesKittySequence(data, ARROW_CODEPOINTS.up, MODIFIERS.alt);
715
647
  }
716
648
  if (modifier === 0) {
717
- return (matchesLegacySequence(data, LEGACY_KEY_SEQUENCES.up) ||
649
+ return (matchesLegacySequence(data, LEGACY_SEQUENCES.up.plain) ||
718
650
  matchesKittySequence(data, ARROW_CODEPOINTS.up, 0));
719
651
  }
720
652
  if (matchesLegacyModifierSequence(data, "up", modifier)) {
@@ -726,7 +658,7 @@ export function matchesKey(data, keyId) {
726
658
  return data === "\x1bn" || matchesKittySequence(data, ARROW_CODEPOINTS.down, MODIFIERS.alt);
727
659
  }
728
660
  if (modifier === 0) {
729
- return (matchesLegacySequence(data, LEGACY_KEY_SEQUENCES.down) ||
661
+ return (matchesLegacySequence(data, LEGACY_SEQUENCES.down.plain) ||
730
662
  matchesKittySequence(data, ARROW_CODEPOINTS.down, 0));
731
663
  }
732
664
  if (matchesLegacyModifierSequence(data, "down", modifier)) {
@@ -746,7 +678,7 @@ export function matchesKey(data, keyId) {
746
678
  matchesKittySequence(data, ARROW_CODEPOINTS.left, MODIFIERS.ctrl));
747
679
  }
748
680
  if (modifier === 0) {
749
- return (matchesLegacySequence(data, LEGACY_KEY_SEQUENCES.left) ||
681
+ return (matchesLegacySequence(data, LEGACY_SEQUENCES.left.plain) ||
750
682
  matchesKittySequence(data, ARROW_CODEPOINTS.left, 0));
751
683
  }
752
684
  if (matchesLegacyModifierSequence(data, "left", modifier)) {
@@ -766,7 +698,7 @@ export function matchesKey(data, keyId) {
766
698
  matchesKittySequence(data, ARROW_CODEPOINTS.right, MODIFIERS.ctrl));
767
699
  }
768
700
  if (modifier === 0) {
769
- return (matchesLegacySequence(data, LEGACY_KEY_SEQUENCES.right) ||
701
+ return (matchesLegacySequence(data, LEGACY_SEQUENCES.right.plain) ||
770
702
  matchesKittySequence(data, ARROW_CODEPOINTS.right, 0));
771
703
  }
772
704
  if (matchesLegacyModifierSequence(data, "right", modifier)) {
@@ -789,7 +721,7 @@ export function matchesKey(data, keyId) {
789
721
  return false;
790
722
  }
791
723
  const functionKey = key;
792
- return matchesLegacySequence(data, LEGACY_KEY_SEQUENCES[functionKey]);
724
+ return matchesLegacySequence(data, LEGACY_SEQUENCES[functionKey].plain);
793
725
  }
794
726
  }
795
727
  // Handle single letter/digit keys and symbols