pi-kot 0.1.20 → 0.1.21

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 (330) hide show
  1. package/README.md +253 -17
  2. package/package.json +8 -60
  3. package/bin/pi-kot.mjs +0 -148
  4. package/dist/client/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  5. package/dist/client/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  6. package/dist/client/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  7. package/dist/client/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  8. package/dist/client/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  9. package/dist/client/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  10. package/dist/client/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  11. package/dist/client/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  12. package/dist/client/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  13. package/dist/client/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  14. package/dist/client/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  15. package/dist/client/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  16. package/dist/client/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  17. package/dist/client/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  18. package/dist/client/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  19. package/dist/client/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  20. package/dist/client/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  21. package/dist/client/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  22. package/dist/client/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  23. package/dist/client/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  24. package/dist/client/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  25. package/dist/client/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  26. package/dist/client/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  27. package/dist/client/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  28. package/dist/client/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  29. package/dist/client/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  30. package/dist/client/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  31. package/dist/client/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  32. package/dist/client/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  33. package/dist/client/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  34. package/dist/client/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  35. package/dist/client/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  36. package/dist/client/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  37. package/dist/client/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  38. package/dist/client/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  39. package/dist/client/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  40. package/dist/client/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  41. package/dist/client/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  42. package/dist/client/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  43. package/dist/client/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  44. package/dist/client/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  45. package/dist/client/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  46. package/dist/client/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  47. package/dist/client/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  48. package/dist/client/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  49. package/dist/client/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  50. package/dist/client/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  51. package/dist/client/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  52. package/dist/client/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  53. package/dist/client/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  54. package/dist/client/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  55. package/dist/client/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  56. package/dist/client/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  57. package/dist/client/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  58. package/dist/client/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  59. package/dist/client/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  60. package/dist/client/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  61. package/dist/client/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  62. package/dist/client/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  63. package/dist/client/assets/index-C5quN7Km.js +0 -448
  64. package/dist/client/assets/index-C5quN7Km.js.map +0 -1
  65. package/dist/client/assets/index-CuQOwQs1.css +0 -1
  66. package/dist/client/index.html +0 -14
  67. package/dist/server/ask-user-question/envelope.d.ts +0 -11
  68. package/dist/server/ask-user-question/envelope.d.ts.map +0 -1
  69. package/dist/server/ask-user-question/envelope.js +0 -41
  70. package/dist/server/ask-user-question/envelope.js.map +0 -1
  71. package/dist/server/ask-user-question/plan-mode-question-tool.d.ts +0 -26
  72. package/dist/server/ask-user-question/plan-mode-question-tool.d.ts.map +0 -1
  73. package/dist/server/ask-user-question/plan-mode-question-tool.js +0 -273
  74. package/dist/server/ask-user-question/plan-mode-question-tool.js.map +0 -1
  75. package/dist/server/ask-user-question/prompt-strings.d.ts +0 -4
  76. package/dist/server/ask-user-question/prompt-strings.d.ts.map +0 -1
  77. package/dist/server/ask-user-question/prompt-strings.js +0 -18
  78. package/dist/server/ask-user-question/prompt-strings.js.map +0 -1
  79. package/dist/server/ask-user-question/registry.d.ts +0 -39
  80. package/dist/server/ask-user-question/registry.d.ts.map +0 -1
  81. package/dist/server/ask-user-question/registry.js +0 -124
  82. package/dist/server/ask-user-question/registry.js.map +0 -1
  83. package/dist/server/ask-user-question/tool.d.ts +0 -4
  84. package/dist/server/ask-user-question/tool.d.ts.map +0 -1
  85. package/dist/server/ask-user-question/tool.js +0 -68
  86. package/dist/server/ask-user-question/tool.js.map +0 -1
  87. package/dist/server/ask-user-question/types.d.ts +0 -50
  88. package/dist/server/ask-user-question/types.d.ts.map +0 -1
  89. package/dist/server/ask-user-question/types.js +0 -7
  90. package/dist/server/ask-user-question/types.js.map +0 -1
  91. package/dist/server/ask-user-question/validate.d.ts +0 -3
  92. package/dist/server/ask-user-question/validate.d.ts.map +0 -1
  93. package/dist/server/ask-user-question/validate.js +0 -67
  94. package/dist/server/ask-user-question/validate.js.map +0 -1
  95. package/dist/server/compaction-continuation.d.ts +0 -113
  96. package/dist/server/compaction-continuation.d.ts.map +0 -1
  97. package/dist/server/compaction-continuation.js +0 -65
  98. package/dist/server/compaction-continuation.js.map +0 -1
  99. package/dist/server/compaction-history.d.ts +0 -62
  100. package/dist/server/compaction-history.d.ts.map +0 -1
  101. package/dist/server/compaction-history.js +0 -180
  102. package/dist/server/compaction-history.js.map +0 -1
  103. package/dist/server/config-manager.d.ts +0 -97
  104. package/dist/server/config-manager.d.ts.map +0 -1
  105. package/dist/server/config-manager.js +0 -352
  106. package/dist/server/config-manager.js.map +0 -1
  107. package/dist/server/config.d.ts +0 -24
  108. package/dist/server/config.d.ts.map +0 -1
  109. package/dist/server/config.js +0 -67
  110. package/dist/server/config.js.map +0 -1
  111. package/dist/server/extension-manager.d.ts +0 -116
  112. package/dist/server/extension-manager.d.ts.map +0 -1
  113. package/dist/server/extension-manager.js +0 -586
  114. package/dist/server/extension-manager.js.map +0 -1
  115. package/dist/server/extension-ui-bridge.d.ts +0 -35
  116. package/dist/server/extension-ui-bridge.d.ts.map +0 -1
  117. package/dist/server/extension-ui-bridge.js +0 -228
  118. package/dist/server/extension-ui-bridge.js.map +0 -1
  119. package/dist/server/extensions-discovery.d.ts +0 -26
  120. package/dist/server/extensions-discovery.d.ts.map +0 -1
  121. package/dist/server/extensions-discovery.js +0 -107
  122. package/dist/server/extensions-discovery.js.map +0 -1
  123. package/dist/server/file-manager.d.ts +0 -79
  124. package/dist/server/file-manager.d.ts.map +0 -1
  125. package/dist/server/file-manager.js +0 -535
  126. package/dist/server/file-manager.js.map +0 -1
  127. package/dist/server/file-references.d.ts +0 -5
  128. package/dist/server/file-references.d.ts.map +0 -1
  129. package/dist/server/file-references.js +0 -249
  130. package/dist/server/file-references.js.map +0 -1
  131. package/dist/server/file-searcher.d.ts +0 -29
  132. package/dist/server/file-searcher.d.ts.map +0 -1
  133. package/dist/server/file-searcher.js +0 -318
  134. package/dist/server/file-searcher.js.map +0 -1
  135. package/dist/server/git-clone.d.ts +0 -56
  136. package/dist/server/git-clone.d.ts.map +0 -1
  137. package/dist/server/git-clone.js +0 -173
  138. package/dist/server/git-clone.js.map +0 -1
  139. package/dist/server/git-hunk-stager.d.ts +0 -56
  140. package/dist/server/git-hunk-stager.d.ts.map +0 -1
  141. package/dist/server/git-hunk-stager.js +0 -137
  142. package/dist/server/git-hunk-stager.js.map +0 -1
  143. package/dist/server/git-runner.d.ts +0 -346
  144. package/dist/server/git-runner.d.ts.map +0 -1
  145. package/dist/server/git-runner.js +0 -884
  146. package/dist/server/git-runner.js.map +0 -1
  147. package/dist/server/index.d.ts +0 -22
  148. package/dist/server/index.d.ts.map +0 -1
  149. package/dist/server/index.js +0 -262
  150. package/dist/server/index.js.map +0 -1
  151. package/dist/server/lifecycle-notifications.d.ts +0 -28
  152. package/dist/server/lifecycle-notifications.d.ts.map +0 -1
  153. package/dist/server/lifecycle-notifications.js +0 -38
  154. package/dist/server/lifecycle-notifications.js.map +0 -1
  155. package/dist/server/mcp/config.d.ts +0 -23
  156. package/dist/server/mcp/config.d.ts.map +0 -1
  157. package/dist/server/mcp/config.js +0 -139
  158. package/dist/server/mcp/config.js.map +0 -1
  159. package/dist/server/mcp/manager.d.ts +0 -40
  160. package/dist/server/mcp/manager.d.ts.map +0 -1
  161. package/dist/server/mcp/manager.js +0 -435
  162. package/dist/server/mcp/manager.js.map +0 -1
  163. package/dist/server/mcp/stdio-trust.d.ts +0 -5
  164. package/dist/server/mcp/stdio-trust.d.ts.map +0 -1
  165. package/dist/server/mcp/stdio-trust.js +0 -78
  166. package/dist/server/mcp/stdio-trust.js.map +0 -1
  167. package/dist/server/mcp/tool-bridge.d.ts +0 -33
  168. package/dist/server/mcp/tool-bridge.d.ts.map +0 -1
  169. package/dist/server/mcp/tool-bridge.js +0 -138
  170. package/dist/server/mcp/tool-bridge.js.map +0 -1
  171. package/dist/server/orchestration/config.d.ts +0 -5
  172. package/dist/server/orchestration/config.d.ts.map +0 -1
  173. package/dist/server/orchestration/config.js +0 -35
  174. package/dist/server/orchestration/config.js.map +0 -1
  175. package/dist/server/orchestration/event-bridge.d.ts +0 -32
  176. package/dist/server/orchestration/event-bridge.d.ts.map +0 -1
  177. package/dist/server/orchestration/event-bridge.js +0 -110
  178. package/dist/server/orchestration/event-bridge.js.map +0 -1
  179. package/dist/server/orchestration/inbox.d.ts +0 -9
  180. package/dist/server/orchestration/inbox.d.ts.map +0 -1
  181. package/dist/server/orchestration/inbox.js +0 -186
  182. package/dist/server/orchestration/inbox.js.map +0 -1
  183. package/dist/server/orchestration/init.d.ts +0 -2
  184. package/dist/server/orchestration/init.d.ts.map +0 -1
  185. package/dist/server/orchestration/init.js +0 -22
  186. package/dist/server/orchestration/init.js.map +0 -1
  187. package/dist/server/orchestration/store.d.ts +0 -33
  188. package/dist/server/orchestration/store.d.ts.map +0 -1
  189. package/dist/server/orchestration/store.js +0 -331
  190. package/dist/server/orchestration/store.js.map +0 -1
  191. package/dist/server/orchestration/tools.d.ts +0 -15
  192. package/dist/server/orchestration/tools.d.ts.map +0 -1
  193. package/dist/server/orchestration/tools.js +0 -621
  194. package/dist/server/orchestration/tools.js.map +0 -1
  195. package/dist/server/orchestration/types.d.ts +0 -68
  196. package/dist/server/orchestration/types.d.ts.map +0 -1
  197. package/dist/server/orchestration/types.js +0 -43
  198. package/dist/server/orchestration/types.js.map +0 -1
  199. package/dist/server/orchestration/worker-lifecycle.d.ts +0 -15
  200. package/dist/server/orchestration/worker-lifecycle.d.ts.map +0 -1
  201. package/dist/server/orchestration/worker-lifecycle.js +0 -45
  202. package/dist/server/orchestration/worker-lifecycle.js.map +0 -1
  203. package/dist/server/project-manager.d.ts +0 -25
  204. package/dist/server/project-manager.d.ts.map +0 -1
  205. package/dist/server/project-manager.js +0 -157
  206. package/dist/server/project-manager.js.map +0 -1
  207. package/dist/server/pty-manager.d.ts +0 -54
  208. package/dist/server/pty-manager.d.ts.map +0 -1
  209. package/dist/server/pty-manager.js +0 -220
  210. package/dist/server/pty-manager.js.map +0 -1
  211. package/dist/server/routes/_schemas.d.ts +0 -16
  212. package/dist/server/routes/_schemas.d.ts.map +0 -1
  213. package/dist/server/routes/_schemas.js +0 -12
  214. package/dist/server/routes/_schemas.js.map +0 -1
  215. package/dist/server/routes/ask-user-question.d.ts +0 -3
  216. package/dist/server/routes/ask-user-question.d.ts.map +0 -1
  217. package/dist/server/routes/ask-user-question.js +0 -105
  218. package/dist/server/routes/ask-user-question.js.map +0 -1
  219. package/dist/server/routes/auth.d.ts +0 -8
  220. package/dist/server/routes/auth.d.ts.map +0 -1
  221. package/dist/server/routes/auth.js +0 -225
  222. package/dist/server/routes/auth.js.map +0 -1
  223. package/dist/server/routes/config.d.ts +0 -3
  224. package/dist/server/routes/config.d.ts.map +0 -1
  225. package/dist/server/routes/config.js +0 -568
  226. package/dist/server/routes/config.js.map +0 -1
  227. package/dist/server/routes/control.d.ts +0 -3
  228. package/dist/server/routes/control.d.ts.map +0 -1
  229. package/dist/server/routes/control.js +0 -365
  230. package/dist/server/routes/control.js.map +0 -1
  231. package/dist/server/routes/exec.d.ts +0 -3
  232. package/dist/server/routes/exec.d.ts.map +0 -1
  233. package/dist/server/routes/exec.js +0 -426
  234. package/dist/server/routes/exec.js.map +0 -1
  235. package/dist/server/routes/extension-commands.d.ts +0 -22
  236. package/dist/server/routes/extension-commands.d.ts.map +0 -1
  237. package/dist/server/routes/extension-commands.js +0 -178
  238. package/dist/server/routes/extension-commands.js.map +0 -1
  239. package/dist/server/routes/extensions.d.ts +0 -8
  240. package/dist/server/routes/extensions.d.ts.map +0 -1
  241. package/dist/server/routes/extensions.js +0 -414
  242. package/dist/server/routes/extensions.js.map +0 -1
  243. package/dist/server/routes/files.d.ts +0 -3
  244. package/dist/server/routes/files.d.ts.map +0 -1
  245. package/dist/server/routes/files.js +0 -835
  246. package/dist/server/routes/files.js.map +0 -1
  247. package/dist/server/routes/git.d.ts +0 -3
  248. package/dist/server/routes/git.d.ts.map +0 -1
  249. package/dist/server/routes/git.js +0 -1058
  250. package/dist/server/routes/git.js.map +0 -1
  251. package/dist/server/routes/mcp.d.ts +0 -3
  252. package/dist/server/routes/mcp.d.ts.map +0 -1
  253. package/dist/server/routes/mcp.js +0 -403
  254. package/dist/server/routes/mcp.js.map +0 -1
  255. package/dist/server/routes/orchestration.d.ts +0 -3
  256. package/dist/server/routes/orchestration.d.ts.map +0 -1
  257. package/dist/server/routes/orchestration.js +0 -251
  258. package/dist/server/routes/orchestration.js.map +0 -1
  259. package/dist/server/routes/projects.d.ts +0 -3
  260. package/dist/server/routes/projects.d.ts.map +0 -1
  261. package/dist/server/routes/projects.js +0 -421
  262. package/dist/server/routes/projects.js.map +0 -1
  263. package/dist/server/routes/prompt.d.ts +0 -3
  264. package/dist/server/routes/prompt.d.ts.map +0 -1
  265. package/dist/server/routes/prompt.js +0 -311
  266. package/dist/server/routes/prompt.js.map +0 -1
  267. package/dist/server/routes/session-extensions.d.ts +0 -11
  268. package/dist/server/routes/session-extensions.d.ts.map +0 -1
  269. package/dist/server/routes/session-extensions.js +0 -171
  270. package/dist/server/routes/session-extensions.js.map +0 -1
  271. package/dist/server/routes/sessions.d.ts +0 -3
  272. package/dist/server/routes/sessions.d.ts.map +0 -1
  273. package/dist/server/routes/sessions.js +0 -706
  274. package/dist/server/routes/sessions.js.map +0 -1
  275. package/dist/server/routes/skills.d.ts +0 -14
  276. package/dist/server/routes/skills.d.ts.map +0 -1
  277. package/dist/server/routes/skills.js +0 -448
  278. package/dist/server/routes/skills.js.map +0 -1
  279. package/dist/server/routes/stream.d.ts +0 -3
  280. package/dist/server/routes/stream.d.ts.map +0 -1
  281. package/dist/server/routes/stream.js +0 -112
  282. package/dist/server/routes/stream.js.map +0 -1
  283. package/dist/server/routes/terminal.d.ts +0 -28
  284. package/dist/server/routes/terminal.d.ts.map +0 -1
  285. package/dist/server/routes/terminal.js +0 -211
  286. package/dist/server/routes/terminal.js.map +0 -1
  287. package/dist/server/routes/tunnel.d.ts +0 -13
  288. package/dist/server/routes/tunnel.d.ts.map +0 -1
  289. package/dist/server/routes/tunnel.js +0 -231
  290. package/dist/server/routes/tunnel.js.map +0 -1
  291. package/dist/server/session-registry.d.ts +0 -164
  292. package/dist/server/session-registry.d.ts.map +0 -1
  293. package/dist/server/session-registry.js +0 -754
  294. package/dist/server/session-registry.js.map +0 -1
  295. package/dist/server/skill-overrides.d.ts +0 -47
  296. package/dist/server/skill-overrides.d.ts.map +0 -1
  297. package/dist/server/skill-overrides.js +0 -178
  298. package/dist/server/skill-overrides.js.map +0 -1
  299. package/dist/server/sse-bridge.d.ts +0 -31
  300. package/dist/server/sse-bridge.d.ts.map +0 -1
  301. package/dist/server/sse-bridge.js +0 -158
  302. package/dist/server/sse-bridge.js.map +0 -1
  303. package/dist/server/tool-overrides.d.ts +0 -39
  304. package/dist/server/tool-overrides.d.ts.map +0 -1
  305. package/dist/server/tool-overrides.js +0 -121
  306. package/dist/server/tool-overrides.js.map +0 -1
  307. package/dist/server/tunnel/executable-search.d.ts +0 -45
  308. package/dist/server/tunnel/executable-search.d.ts.map +0 -1
  309. package/dist/server/tunnel/executable-search.js +0 -150
  310. package/dist/server/tunnel/executable-search.js.map +0 -1
  311. package/dist/server/tunnel/install-help.d.ts +0 -19
  312. package/dist/server/tunnel/install-help.d.ts.map +0 -1
  313. package/dist/server/tunnel/install-help.js +0 -47
  314. package/dist/server/tunnel/install-help.js.map +0 -1
  315. package/dist/server/tunnel/providers/ngrok.d.ts +0 -34
  316. package/dist/server/tunnel/providers/ngrok.d.ts.map +0 -1
  317. package/dist/server/tunnel/providers/ngrok.js +0 -464
  318. package/dist/server/tunnel/providers/ngrok.js.map +0 -1
  319. package/dist/server/tunnel/registry.d.ts +0 -15
  320. package/dist/server/tunnel/registry.d.ts.map +0 -1
  321. package/dist/server/tunnel/registry.js +0 -58
  322. package/dist/server/tunnel/registry.js.map +0 -1
  323. package/dist/server/tunnel/service.d.ts +0 -15
  324. package/dist/server/tunnel/service.d.ts.map +0 -1
  325. package/dist/server/tunnel/service.js +0 -158
  326. package/dist/server/tunnel/service.js.map +0 -1
  327. package/dist/server/tunnel/types.d.ts +0 -166
  328. package/dist/server/tunnel/types.d.ts.map +0 -1
  329. package/dist/server/tunnel/types.js +0 -217
  330. package/dist/server/tunnel/types.js.map +0 -1
@@ -1,273 +0,0 @@
1
- import { registerPending } from "./registry.js";
2
- export const PLAN_MODE_QUESTION_TOOL_NAME = "plan_mode_question";
3
- /** Input schema — identical to what the pi-plan-mode extension expects. */
4
- const inputSchema = {
5
- type: "object",
6
- additionalProperties: false,
7
- required: ["questions"],
8
- properties: {
9
- questions: {
10
- type: "array",
11
- minItems: 1,
12
- maxItems: 3,
13
- description: "Questions to show the user. Prefer 1 and do not exceed 3.",
14
- items: {
15
- type: "object",
16
- additionalProperties: false,
17
- required: ["id", "header", "question", "options"],
18
- properties: {
19
- id: {
20
- type: "string",
21
- description: "Stable identifier for mapping answers (snake_case).",
22
- },
23
- header: {
24
- type: "string",
25
- description: "Short header label shown in the UI (12 or fewer chars).",
26
- },
27
- question: {
28
- type: "string",
29
- description: "Single-sentence prompt shown to the user.",
30
- },
31
- options: {
32
- type: "array",
33
- minItems: 2,
34
- maxItems: 4,
35
- description: "Provide 2-4 mutually exclusive choices. Put the recommended option first when there is a clear default.",
36
- items: {
37
- type: "object",
38
- additionalProperties: false,
39
- required: ["label", "description"],
40
- properties: {
41
- label: {
42
- type: "string",
43
- description: "User-facing label (1-5 words).",
44
- },
45
- description: {
46
- type: "string",
47
- description: "One short sentence explaining impact/tradeoff if selected.",
48
- },
49
- },
50
- },
51
- },
52
- },
53
- },
54
- },
55
- },
56
- };
57
- /**
58
- * Normalize and validate `plan_mode_question` params. Mirrors the
59
- * pi-plan-mode extension's validation logic.
60
- */
61
- function normalizeInput(raw) {
62
- if (typeof raw !== "object" || raw === null) {
63
- return { ok: false, error: "Expected an object" };
64
- }
65
- const input = raw;
66
- const rawQuestions = input.questions;
67
- if (!Array.isArray(rawQuestions) || rawQuestions.length === 0 || rawQuestions.length > 3) {
68
- return { ok: false, error: "questions must contain 1-3 items" };
69
- }
70
- const questions = [];
71
- for (let qi = 0; qi < rawQuestions.length; qi++) {
72
- const q = rawQuestions[qi];
73
- if (typeof q !== "object" || q === null) {
74
- return { ok: false, error: `question ${qi + 1} must be an object` };
75
- }
76
- const qq = q;
77
- const id = typeof qq.id === "string" && qq.id.trim().length > 0 ? qq.id.trim() : undefined;
78
- const header = typeof qq.header === "string" && qq.header.trim().length > 0 ? qq.header.trim() : undefined;
79
- const question = typeof qq.question === "string" && qq.question.trim().length > 0 ? qq.question.trim() : undefined;
80
- if (!id || !header || !question) {
81
- return {
82
- ok: false,
83
- error: `question ${qi + 1} requires non-empty id, header, and question`,
84
- };
85
- }
86
- const rawOptions = qq.options;
87
- if (!Array.isArray(rawOptions) || rawOptions.length < 2 || rawOptions.length > 4) {
88
- return {
89
- ok: false,
90
- error: `question ${qi + 1} options must contain 2-4 items`,
91
- };
92
- }
93
- const options = [];
94
- for (let oi = 0; oi < rawOptions.length; oi++) {
95
- const o = rawOptions[oi];
96
- if (typeof o !== "object" || o === null) {
97
- return { ok: false, error: `question ${qi + 1} option ${oi + 1} must be an object` };
98
- }
99
- const oo = o;
100
- const label = typeof oo.label === "string" && oo.label.trim().length > 0 ? oo.label.trim() : undefined;
101
- const description = typeof oo.description === "string" && oo.description.trim().length > 0
102
- ? oo.description.trim()
103
- : undefined;
104
- if (!label || !description) {
105
- return {
106
- ok: false,
107
- error: `question ${qi + 1} option ${oi + 1} requires label and description`,
108
- };
109
- }
110
- options.push({ label, description });
111
- }
112
- questions.push({ id, header, question, options });
113
- }
114
- return { ok: true, questions };
115
- }
116
- /**
117
- * Map a QuestionAnswer from the ask-user-question pipeline back to a
118
- * PlanModeQuestionAnswer, using the original PlanModeQuestion to
119
- * recover `id` and `header`.
120
- */
121
- function mapAnswer(answer, original) {
122
- const base = {
123
- id: original.id,
124
- header: original.header,
125
- question: original.question,
126
- };
127
- switch (answer.kind) {
128
- case "option":
129
- return {
130
- ...base,
131
- answer: answer.answer ?? original.options[0]?.label ?? "",
132
- wasCustom: false,
133
- optionIndex: original.options.findIndex((o) => o.label === answer.answer) + 1,
134
- };
135
- case "custom":
136
- return {
137
- ...base,
138
- answer: answer.answer ?? "",
139
- wasCustom: true,
140
- };
141
- case "multi":
142
- return {
143
- ...base,
144
- answer: answer.selected?.join(", ") ?? "",
145
- wasCustom: false,
146
- };
147
- case "chat":
148
- return {
149
- ...base,
150
- answer: answer.notes ?? "(user chose to discuss this)",
151
- wasCustom: true,
152
- };
153
- }
154
- }
155
- /** Build the JSON payload string the LLM sees in content text. */
156
- function formatPayload(payload) {
157
- return JSON.stringify(payload, null, 2);
158
- }
159
- /**
160
- * Create the `plan_mode_question` tool for a given session.
161
- * Registers with the same tool name the pi-plan-mode extension uses,
162
- * so the SDK's tool registry favours this one (customTools are loaded
163
- * after extension tools).
164
- */
165
- export function createPlanModeQuestionTool(sessionId) {
166
- return {
167
- name: PLAN_MODE_QUESTION_TOOL_NAME,
168
- label: "Plan question",
169
- description: "Ask the user one to three Plan-mode clarification questions with meaningful options, then wait for the answer. Only available while Plan mode is active.",
170
- promptSnippet: "Ask user decision questions while Plan mode is active",
171
- promptGuidelines: [
172
- "In Plan mode, use plan_mode_question for important preferences, tradeoffs, or assumptions that cannot be discovered from read-only exploration.",
173
- ],
174
- parameters: inputSchema,
175
- async execute(_toolCallId, params, signal) {
176
- const parsed = normalizeInput(params);
177
- if (!parsed.ok) {
178
- return {
179
- content: [
180
- {
181
- type: "text",
182
- text: formatPayload({
183
- cancelled: true,
184
- reason: "invalid_input",
185
- message: `Error: ${parsed.error}`,
186
- }),
187
- },
188
- ],
189
- details: {
190
- cancelled: true,
191
- reason: "invalid_input",
192
- questions: [],
193
- },
194
- };
195
- }
196
- // Map plan_mode_question Question format → ask_user_question Question format
197
- const registryQuestions = parsed.questions.map((q) => ({
198
- question: q.question,
199
- header: q.header,
200
- options: q.options,
201
- }));
202
- try {
203
- const { result } = registerPending({
204
- sessionId,
205
- questions: registryQuestions,
206
- signal,
207
- });
208
- const registryResult = await result;
209
- const details = registryResult.details;
210
- if (details.cancelled) {
211
- return {
212
- content: [
213
- {
214
- type: "text",
215
- text: formatPayload({
216
- cancelled: true,
217
- reason: "cancelled",
218
- message: "User cancelled the Plan-mode question prompt.",
219
- }),
220
- },
221
- ],
222
- details: {
223
- cancelled: true,
224
- reason: "cancelled",
225
- questions: parsed.questions,
226
- },
227
- };
228
- }
229
- // Map answers back to plan_mode_question format
230
- const planAnswers = details.answers.map((a, i) => {
231
- const original = parsed.questions[i];
232
- return mapAnswer(a, original);
233
- });
234
- return {
235
- content: [
236
- {
237
- type: "text",
238
- text: formatPayload({
239
- cancelled: false,
240
- answers: planAnswers,
241
- }),
242
- },
243
- ],
244
- details: {
245
- cancelled: false,
246
- questions: parsed.questions,
247
- answers: planAnswers,
248
- },
249
- };
250
- }
251
- catch {
252
- return {
253
- content: [
254
- {
255
- type: "text",
256
- text: formatPayload({
257
- cancelled: true,
258
- reason: "ui_unavailable",
259
- message: "Unable to ask Plan-mode questions because the question pipeline is not available.",
260
- }),
261
- },
262
- ],
263
- details: {
264
- cancelled: true,
265
- reason: "ui_unavailable",
266
- questions: parsed.questions,
267
- },
268
- };
269
- }
270
- },
271
- };
272
- }
273
- //# sourceMappingURL=plan-mode-question-tool.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plan-mode-question-tool.js","sourceRoot":"","sources":["../../src/ask-user-question/plan-mode-question-tool.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAGhD,MAAM,CAAC,MAAM,4BAA4B,GAAG,oBAAoB,CAAC;AAuBjE,2EAA2E;AAC3E,MAAM,WAAW,GAAG;IAClB,IAAI,EAAE,QAAQ;IACd,oBAAoB,EAAE,KAAK;IAC3B,QAAQ,EAAE,CAAC,WAAW,CAAC;IACvB,UAAU,EAAE;QACV,SAAS,EAAE;YACT,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,CAAC;YACX,QAAQ,EAAE,CAAC;YACX,WAAW,EACT,2DAA2D;YAC7D,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,oBAAoB,EAAE,KAAK;gBAC3B,QAAQ,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,CAAC;gBACjD,UAAU,EAAE;oBACV,EAAE,EAAE;wBACF,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,qDAAqD;qBACnE;oBACD,MAAM,EAAE;wBACN,IAAI,EAAE,QAAQ;wBACd,WAAW,EACT,yDAAyD;qBAC5D;oBACD,QAAQ,EAAE;wBACR,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,2CAA2C;qBACzD;oBACD,OAAO,EAAE;wBACP,IAAI,EAAE,OAAO;wBACb,QAAQ,EAAE,CAAC;wBACX,QAAQ,EAAE,CAAC;wBACX,WAAW,EACT,yGAAyG;wBAC3G,KAAK,EAAE;4BACL,IAAI,EAAE,QAAQ;4BACd,oBAAoB,EAAE,KAAK;4BAC3B,QAAQ,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC;4BAClC,UAAU,EAAE;gCACV,KAAK,EAAE;oCACL,IAAI,EAAE,QAAQ;oCACd,WAAW,EAAE,gCAAgC;iCAC9C;gCACD,WAAW,EAAE;oCACX,IAAI,EAAE,QAAQ;oCACd,WAAW,EACT,4DAA4D;iCAC/D;6BACF;yBACF;qBACF;iBACF;aACF;SACF;KACF;CACO,CAAC;AAEX;;;GAGG;AACH,SAAS,cAAc,CACrB,GAAY;IAEZ,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QAC5C,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC;IACpD,CAAC;IACD,MAAM,KAAK,GAAG,GAA8B,CAAC;IAC7C,MAAM,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC;IACrC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzF,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,kCAAkC,EAAE,CAAC;IAClE,CAAC;IAED,MAAM,SAAS,GAAuB,EAAE,CAAC;IACzC,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,YAAY,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC;QAChD,MAAM,CAAC,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC;QAC3B,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YACxC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,CAAC,oBAAoB,EAAE,CAAC;QACtE,CAAC;QACD,MAAM,EAAE,GAAG,CAA4B,CAAC;QACxC,MAAM,EAAE,GAAG,OAAO,EAAE,CAAC,EAAE,KAAK,QAAQ,IAAI,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QAC3F,MAAM,MAAM,GACV,OAAO,EAAE,CAAC,MAAM,KAAK,QAAQ,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9F,MAAM,QAAQ,GACZ,OAAO,EAAE,CAAC,QAAQ,KAAK,QAAQ,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QACpG,IAAI,CAAC,EAAE,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChC,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,KAAK,EAAE,YAAY,EAAE,GAAG,CAAC,8CAA8C;aACxE,CAAC;QACJ,CAAC;QAED,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,CAAC;QAC9B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjF,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,KAAK,EAAE,YAAY,EAAE,GAAG,CAAC,iCAAiC;aAC3D,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GAA6C,EAAE,CAAC;QAC7D,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,UAAU,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC;YAC9C,MAAM,CAAC,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;YACzB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;gBACxC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,oBAAoB,EAAE,CAAC;YACvF,CAAC;YACD,MAAM,EAAE,GAAG,CAA4B,CAAC;YACxC,MAAM,KAAK,GACT,OAAO,EAAE,CAAC,KAAK,KAAK,QAAQ,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;YAC3F,MAAM,WAAW,GACf,OAAO,EAAE,CAAC,WAAW,KAAK,QAAQ,IAAI,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;gBACpE,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE;gBACvB,CAAC,CAAC,SAAS,CAAC;YAChB,IAAI,CAAC,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC;gBAC3B,OAAO;oBACL,EAAE,EAAE,KAAK;oBACT,KAAK,EAAE,YAAY,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,iCAAiC;iBAC5E,CAAC;YACJ,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;QACvC,CAAC;QAED,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;AACjC,CAAC;AAED;;;;GAIG;AACH,SAAS,SAAS,CAChB,MAAsB,EACtB,QAA0B;IAE1B,MAAM,IAAI,GAAG;QACX,EAAE,EAAE,QAAQ,CAAC,EAAE;QACf,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;KAC5B,CAAC;IAEF,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,QAAQ;YACX,OAAO;gBACL,GAAG,IAAI;gBACP,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,EAAE;gBACzD,SAAS,EAAE,KAAK;gBAChB,WAAW,EAAE,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;aAC9E,CAAC;QACJ,KAAK,QAAQ;YACX,OAAO;gBACL,GAAG,IAAI;gBACP,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;gBAC3B,SAAS,EAAE,IAAI;aAChB,CAAC;QACJ,KAAK,OAAO;YACV,OAAO;gBACL,GAAG,IAAI;gBACP,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;gBACzC,SAAS,EAAE,KAAK;aACjB,CAAC;QACJ,KAAK,MAAM;YACT,OAAO;gBACL,GAAG,IAAI;gBACP,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI,8BAA8B;gBACtD,SAAS,EAAE,IAAI;aAChB,CAAC;IACN,CAAC;AACH,CAAC;AAED,kEAAkE;AAClE,SAAS,aAAa,CAAC,OAAgC;IACrD,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAC1C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,0BAA0B,CACxC,SAAiB;IAEjB,OAAO;QACL,IAAI,EAAE,4BAA4B;QAClC,KAAK,EAAE,eAAe;QACtB,WAAW,EACT,0JAA0J;QAC5J,aAAa,EACX,uDAAuD;QACzD,gBAAgB,EAAE;YAChB,iJAAiJ;SAClJ;QACD,UAAU,EAAE,WAAW;QACvB,KAAK,CAAC,OAAO,CACX,WAAmB,EACnB,MAAe,EACf,MAA+B;YAE/B,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;YACtC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;gBACf,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,aAAa,CAAC;gCAClB,SAAS,EAAE,IAAI;gCACf,MAAM,EAAE,eAAe;gCACvB,OAAO,EAAE,UAAU,MAAM,CAAC,KAAK,EAAE;6BAClC,CAAC;yBACH;qBACF;oBACD,OAAO,EAAE;wBACP,SAAS,EAAE,IAAI;wBACf,MAAM,EAAE,eAAyC;wBACjD,SAAS,EAAE,EAAE;qBACd;iBACF,CAAC;YACJ,CAAC;YAED,6EAA6E;YAC7E,MAAM,iBAAiB,GAAe,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACjE,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,OAAO,EAAE,CAAC,CAAC,OAAO;aACnB,CAAC,CAAC,CAAC;YAEJ,IAAI,CAAC;gBACH,MAAM,EAAE,MAAM,EAAE,GAAG,eAAe,CAAC;oBACjC,SAAS;oBACT,SAAS,EAAE,iBAAiB;oBAC5B,MAAM;iBACP,CAAC,CAAC;gBACH,MAAM,cAAc,GAAG,MAAM,MAAM,CAAC;gBACpC,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC;gBAEvC,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;oBACtB,OAAO;wBACL,OAAO,EAAE;4BACP;gCACE,IAAI,EAAE,MAAe;gCACrB,IAAI,EAAE,aAAa,CAAC;oCAClB,SAAS,EAAE,IAAI;oCACf,MAAM,EAAE,WAAW;oCACnB,OAAO,EAAE,+CAA+C;iCACzD,CAAC;6BACH;yBACF;wBACD,OAAO,EAAE;4BACP,SAAS,EAAE,IAAI;4BACf,MAAM,EAAE,WAAqC;4BAC7C,SAAS,EAAE,MAAM,CAAC,SAAS;yBAC5B;qBACF,CAAC;gBACJ,CAAC;gBAED,gDAAgD;gBAChD,MAAM,WAAW,GAA6B,OAAO,CAAC,OAAO,CAAC,GAAG,CAC/D,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;oBACP,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;oBACrC,OAAO,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;gBAChC,CAAC,CACF,CAAC;gBAEF,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,aAAa,CAAC;gCAClB,SAAS,EAAE,KAAK;gCAChB,OAAO,EAAE,WAAW;6BACrB,CAAC;yBACH;qBACF;oBACD,OAAO,EAAE;wBACP,SAAS,EAAE,KAAK;wBAChB,SAAS,EAAE,MAAM,CAAC,SAAS;wBAC3B,OAAO,EAAE,WAAW;qBACrB;iBACF,CAAC;YACJ,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,aAAa,CAAC;gCAClB,SAAS,EAAE,IAAI;gCACf,MAAM,EAAE,gBAAgB;gCACxB,OAAO,EACL,mFAAmF;6BACtF,CAAC;yBACH;qBACF;oBACD,OAAO,EAAE;wBACP,SAAS,EAAE,IAAI;wBACf,MAAM,EAAE,gBAA0C;wBAClD,SAAS,EAAE,MAAM,CAAC,SAAS;qBAC5B;iBACF,CAAC;YACJ,CAAC;QACH,CAAC;KAC2B,CAAC;AACjC,CAAC"}
@@ -1,4 +0,0 @@
1
- export declare const TOOL_DESCRIPTION: string;
2
- export declare const PROMPT_SNIPPET: string;
3
- export declare const PROMPT_GUIDELINES: string;
4
- //# sourceMappingURL=prompt-strings.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"prompt-strings.d.ts","sourceRoot":"","sources":["../../src/ask-user-question/prompt-strings.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,QAIF,CAAC;AAE5B,eAAO,MAAM,cAAc,QAEc,CAAC;AAE1C,eAAO,MAAM,iBAAiB,QAWiB,CAAC"}
@@ -1,18 +0,0 @@
1
- export const TOOL_DESCRIPTION = "Present a structured question to the user with predefined options. " +
2
- "Use this when you need the user to make a choice or provide input " +
3
- "before continuing. Supports single-select, multi-select, and " +
4
- "free-text custom input.";
5
- export const PROMPT_SNIPPET = "\n- Use `ask_user_question` to ask the user questions when you need " +
6
- "their input, choices, or decisions.\n";
7
- export const PROMPT_GUIDELINES = "## Asking the user questions\n\n" +
8
- "You can use `ask_user_question` to ask the user structured questions " +
9
- "when you need their input. Each question can have multiple options. " +
10
- "The user can select one option, type a custom answer, or choose to " +
11
- "chat about it instead.\n\n" +
12
- "Guidelines:\n" +
13
- "- Use this when you're blocked and need user input\n" +
14
- "- Provide clear, descriptive options\n" +
15
- "- Keep headers short (16 chars max)\n" +
16
- "- You can ask up to 4 questions at once\n" +
17
- "- Each question needs between 2-4 options\n";
18
- //# sourceMappingURL=prompt-strings.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"prompt-strings.js","sourceRoot":"","sources":["../../src/ask-user-question/prompt-strings.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAC3B,qEAAqE;IACrE,oEAAoE;IACpE,+DAA+D;IAC/D,yBAAyB,CAAC;AAE5B,MAAM,CAAC,MAAM,cAAc,GACzB,sEAAsE;IACtE,uCAAuC,CAAC;AAE1C,MAAM,CAAC,MAAM,iBAAiB,GAC5B,kCAAkC;IAClC,uEAAuE;IACvE,sEAAsE;IACtE,qEAAqE;IACrE,4BAA4B;IAC5B,eAAe;IACf,sDAAsD;IACtD,wCAAwC;IACxC,uCAAuC;IACvC,2CAA2C;IAC3C,6CAA6C,CAAC"}
@@ -1,39 +0,0 @@
1
- import type { AskUserQuestionResult, Question } from "./types.js";
2
- /**
3
- * In-memory registry of pending ask_user_question requests.
4
- * One pending per session (SDK serialises tool calls per session).
5
- * The tool factory registers a pending entry, the answer route
6
- * resolves it, and the SSE bridge re-emits on reconnect.
7
- */
8
- export interface PendingAskUserQuestion {
9
- requestId: string;
10
- sessionId: string;
11
- questions: Question[];
12
- createdAt: Date;
13
- }
14
- export type AskQuestionEvent = {
15
- type: "ask_user_question";
16
- sessionId: string;
17
- requestId: string;
18
- questions: Question[];
19
- } | {
20
- type: "ask_user_question_cancelled";
21
- sessionId: string;
22
- requestId: string;
23
- reason: string;
24
- };
25
- type Listener = (event: AskQuestionEvent) => void;
26
- export declare function subscribe(fn: Listener): () => void;
27
- export declare function registerPending(args: {
28
- sessionId: string;
29
- questions: Question[];
30
- signal?: AbortSignal;
31
- }): {
32
- requestId: string;
33
- result: Promise<AskUserQuestionResult>;
34
- };
35
- export declare function answerPending(requestId: string, expectedSessionId: string, result: AskUserQuestionResult): boolean;
36
- export declare function getPendingForSession(sessionId: string): PendingAskUserQuestion[];
37
- export declare function _resetForTests(): void;
38
- export {};
39
- //# sourceMappingURL=registry.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/ask-user-question/registry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAElE;;;;;GAKG;AAEH,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,SAAS,EAAE,IAAI,CAAC;CACjB;AASD,MAAM,MAAM,gBAAgB,GACxB;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,QAAQ,EAAE,CAAA;CAAE,GAC1F;IAAE,IAAI,EAAE,6BAA6B,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAElG,KAAK,QAAQ,GAAG,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;AAGlD,wBAAgB,SAAS,CAAC,EAAE,EAAE,QAAQ,GAAG,MAAM,IAAI,CAGlD;AAQD,wBAAgB,eAAe,CAAC,IAAI,EAAE;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAA;CAAE,CAqEhE;AASD,wBAAgB,aAAa,CAC3B,SAAS,EAAE,MAAM,EACjB,iBAAiB,EAAE,MAAM,EACzB,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAaT;AAED,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,sBAAsB,EAAE,CAWhF;AAED,wBAAgB,cAAc,IAAI,IAAI,CAIrC"}
@@ -1,124 +0,0 @@
1
- import { randomUUID } from "node:crypto";
2
- const byRequestId = new Map();
3
- const bySessionId = new Map();
4
- const listeners = new Set();
5
- export function subscribe(fn) {
6
- listeners.add(fn);
7
- return () => listeners.delete(fn);
8
- }
9
- function notify(event) {
10
- for (const fn of listeners) {
11
- try {
12
- fn(event);
13
- }
14
- catch { /* best-effort */ }
15
- }
16
- }
17
- export function registerPending(args) {
18
- const requestId = randomUUID();
19
- // If there's already a pending entry for this session, resolve it
20
- // as cancelled first (shouldn't happen with serialised tools, but
21
- // be safe).
22
- const existingId = bySessionId.get(args.sessionId);
23
- if (existingId !== undefined) {
24
- const existing = byRequestId.get(existingId);
25
- if (existing !== undefined) {
26
- byRequestId.delete(existingId);
27
- bySessionId.delete(args.sessionId);
28
- existing.resolve({
29
- content: [{ type: "text", text: "Replaced by a new question." }],
30
- details: { answers: [], cancelled: true, error: "superseded" },
31
- });
32
- notify({
33
- type: "ask_user_question_cancelled",
34
- sessionId: args.sessionId,
35
- requestId: existingId,
36
- reason: "superseded",
37
- });
38
- }
39
- }
40
- let resolveFn;
41
- const result = new Promise((resolve) => {
42
- resolveFn = resolve;
43
- });
44
- const entry = {
45
- requestId,
46
- sessionId: args.sessionId,
47
- questions: args.questions,
48
- createdAt: new Date(),
49
- resolve: resolveFn,
50
- };
51
- byRequestId.set(requestId, entry);
52
- bySessionId.set(args.sessionId, requestId);
53
- if (args.signal !== undefined) {
54
- const onAbort = () => {
55
- if (byRequestId.has(requestId)) {
56
- removeEntry(requestId);
57
- notify({
58
- type: "ask_user_question_cancelled",
59
- sessionId: args.sessionId,
60
- requestId,
61
- reason: "aborted",
62
- });
63
- resolveFn({
64
- content: [{ type: "text", text: "The agent was aborted." }],
65
- details: { answers: [], cancelled: true, error: "aborted" },
66
- });
67
- }
68
- };
69
- if (args.signal.aborted)
70
- onAbort();
71
- else
72
- args.signal.addEventListener("abort", onAbort, { once: true });
73
- }
74
- notify({
75
- type: "ask_user_question",
76
- sessionId: args.sessionId,
77
- requestId,
78
- questions: args.questions,
79
- });
80
- return { requestId, result };
81
- }
82
- function removeEntry(requestId) {
83
- const e = byRequestId.get(requestId);
84
- if (e === undefined)
85
- return;
86
- byRequestId.delete(requestId);
87
- bySessionId.delete(e.sessionId);
88
- }
89
- export function answerPending(requestId, expectedSessionId, result) {
90
- const e = byRequestId.get(requestId);
91
- if (e === undefined)
92
- return false;
93
- if (e.sessionId !== expectedSessionId)
94
- return false;
95
- removeEntry(requestId);
96
- notify({
97
- type: "ask_user_question_cancelled",
98
- sessionId: e.sessionId,
99
- requestId,
100
- reason: "answered",
101
- });
102
- e.resolve(result);
103
- return true;
104
- }
105
- export function getPendingForSession(sessionId) {
106
- const id = bySessionId.get(sessionId);
107
- if (id === undefined)
108
- return [];
109
- const e = byRequestId.get(id);
110
- if (e === undefined)
111
- return [];
112
- return [{
113
- requestId: e.requestId,
114
- sessionId: e.sessionId,
115
- questions: e.questions,
116
- createdAt: e.createdAt,
117
- }];
118
- }
119
- export function _resetForTests() {
120
- byRequestId.clear();
121
- bySessionId.clear();
122
- listeners.clear();
123
- }
124
- //# sourceMappingURL=registry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/ask-user-question/registry.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- import type { ToolDefinition } from "@earendil-works/pi-coding-agent";
2
- export declare const ASK_USER_QUESTION_TOOL_NAME = "ask_user_question";
3
- export declare function createAskUserQuestionTool(sessionId: string): ToolDefinition;
4
- //# sourceMappingURL=tool.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../src/ask-user-question/tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAOtE,eAAO,MAAM,2BAA2B,sBAAsB,CAAC;AAqC/D,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,CAyB3E"}
@@ -1,68 +0,0 @@
1
- import { registerPending } from "./registry.js";
2
- import { validateQuestionnaire } from "./validate.js";
3
- import { buildResult } from "./envelope.js";
4
- import { PROMPT_GUIDELINES, PROMPT_SNIPPET, TOOL_DESCRIPTION } from "./prompt-strings.js";
5
- import { MAX_HEADER_LENGTH, MAX_LABEL_LENGTH, MAX_OPTIONS, MAX_QUESTIONS, MIN_OPTIONS } from "./types.js";
6
- export const ASK_USER_QUESTION_TOOL_NAME = "ask_user_question";
7
- const inputSchema = {
8
- type: "object",
9
- required: ["questions"],
10
- properties: {
11
- questions: {
12
- type: "array",
13
- minItems: 1,
14
- maxItems: MAX_QUESTIONS,
15
- items: {
16
- type: "object",
17
- required: ["question", "header", "options"],
18
- properties: {
19
- question: { type: "string", minLength: 1 },
20
- header: { type: "string", minLength: 1, maxLength: MAX_HEADER_LENGTH },
21
- multiSelect: { type: "boolean" },
22
- options: {
23
- type: "array",
24
- minItems: MIN_OPTIONS,
25
- maxItems: MAX_OPTIONS,
26
- items: {
27
- type: "object",
28
- required: ["label", "description"],
29
- properties: {
30
- label: { type: "string", minLength: 1, maxLength: MAX_LABEL_LENGTH },
31
- description: { type: "string", minLength: 1 },
32
- preview: { type: "string" },
33
- },
34
- },
35
- },
36
- },
37
- },
38
- },
39
- },
40
- };
41
- export function createAskUserQuestionTool(sessionId) {
42
- return {
43
- name: ASK_USER_QUESTION_TOOL_NAME,
44
- label: "Ask User Question",
45
- description: TOOL_DESCRIPTION,
46
- promptSnippet: PROMPT_SNIPPET,
47
- promptGuidelines: [PROMPT_GUIDELINES],
48
- parameters: inputSchema,
49
- async execute(_toolCallId, params, signal) {
50
- const validation = validateQuestionnaire(params);
51
- if (!validation.ok) {
52
- return buildResult([], { cancelled: true, questionCount: 0 });
53
- }
54
- try {
55
- const { result } = registerPending({
56
- sessionId,
57
- questions: validation.params.questions,
58
- signal,
59
- });
60
- return await result;
61
- }
62
- catch {
63
- return buildResult([], { cancelled: true, questionCount: 0 });
64
- }
65
- },
66
- };
67
- }
68
- //# sourceMappingURL=tool.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tool.js","sourceRoot":"","sources":["../../src/ask-user-question/tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC1F,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE1G,MAAM,CAAC,MAAM,2BAA2B,GAAG,mBAAmB,CAAC;AAE/D,MAAM,WAAW,GAAG;IAClB,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,CAAC,WAAW,CAAC;IACvB,UAAU,EAAE;QACV,SAAS,EAAE;YACT,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,CAAC;YACX,QAAQ,EAAE,aAAa;YACvB,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,SAAS,CAAC;gBAC3C,UAAU,EAAE;oBACV,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE;oBAC1C,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE;oBACtE,WAAW,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;oBAChC,OAAO,EAAE;wBACP,IAAI,EAAE,OAAO;wBACb,QAAQ,EAAE,WAAW;wBACrB,QAAQ,EAAE,WAAW;wBACrB,KAAK,EAAE;4BACL,IAAI,EAAE,QAAQ;4BACd,QAAQ,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC;4BAClC,UAAU,EAAE;gCACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;gCACpE,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE;gCAC7C,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;6BAC5B;yBACF;qBACF;iBACF;aACF;SACF;KACF;CACO,CAAC;AAEX,MAAM,UAAU,yBAAyB,CAAC,SAAiB;IACzD,OAAO;QACL,IAAI,EAAE,2BAA2B;QACjC,KAAK,EAAE,mBAAmB;QAC1B,WAAW,EAAE,gBAAgB;QAC7B,aAAa,EAAE,cAAc;QAC7B,gBAAgB,EAAE,CAAC,iBAAiB,CAAC;QACrC,UAAU,EAAE,WAAW;QACvB,KAAK,CAAC,OAAO,CAAC,WAAmB,EAAE,MAAe,EAAE,MAA+B;YACjF,MAAM,UAAU,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;YACjD,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;gBACnB,OAAO,WAAW,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC,CAAC;YAChE,CAAC;YACD,IAAI,CAAC;gBACH,MAAM,EAAE,MAAM,EAAE,GAAG,eAAe,CAAC;oBACjC,SAAS;oBACT,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC,SAAS;oBACtC,MAAM;iBACP,CAAC,CAAC;gBACH,OAAO,MAAM,MAAM,CAAC;YACtB,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,WAAW,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC,CAAC;YAChE,CAAC;QACH,CAAC;KAC2B,CAAC;AACjC,CAAC"}
@@ -1,50 +0,0 @@
1
- export declare const MAX_QUESTIONS = 4;
2
- export declare const MIN_OPTIONS = 2;
3
- export declare const MAX_OPTIONS = 4;
4
- export declare const MAX_HEADER_LENGTH = 16;
5
- export declare const MAX_LABEL_LENGTH = 60;
6
- export declare const RESERVED_LABELS: readonly ["Other", "Type something.", "Chat about this", "Next"];
7
- export interface Option {
8
- label: string;
9
- description: string;
10
- preview?: string;
11
- }
12
- export interface Question {
13
- question: string;
14
- header: string;
15
- options: Option[];
16
- multiSelect?: boolean;
17
- }
18
- export interface AskUserQuestionParams {
19
- questions: Question[];
20
- }
21
- export interface QuestionAnswer {
22
- questionIndex: number;
23
- question: string;
24
- kind: "option" | "custom" | "chat" | "multi";
25
- answer: string | null;
26
- selected?: string[];
27
- notes?: string;
28
- preview?: string;
29
- }
30
- export interface AskUserQuestionDetails {
31
- answers: QuestionAnswer[];
32
- cancelled: boolean;
33
- error?: string;
34
- }
35
- export interface AskUserQuestionResult {
36
- content: {
37
- type: "text";
38
- text: string;
39
- }[];
40
- details: AskUserQuestionDetails;
41
- }
42
- export type ValidationResult = {
43
- ok: true;
44
- params: AskUserQuestionParams;
45
- } | {
46
- ok: false;
47
- error: string;
48
- message: string;
49
- };
50
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ask-user-question/types.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,IAAI,CAAC;AAC/B,eAAO,MAAM,WAAW,IAAI,CAAC;AAC7B,eAAO,MAAM,WAAW,IAAI,CAAC;AAC7B,eAAO,MAAM,iBAAiB,KAAK,CAAC;AACpC,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAEnC,eAAO,MAAM,eAAe,YAAI,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,CAAU,CAAC;AAEhG,MAAM,WAAW,MAAM;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,QAAQ,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;IAC7C,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC1C,OAAO,EAAE,sBAAsB,CAAC;CACjC;AAED,MAAM,MAAM,gBAAgB,GACxB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,qBAAqB,CAAA;CAAE,GAC3C;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC"}
@@ -1,7 +0,0 @@
1
- export const MAX_QUESTIONS = 4;
2
- export const MIN_OPTIONS = 2;
3
- export const MAX_OPTIONS = 4;
4
- export const MAX_HEADER_LENGTH = 16;
5
- export const MAX_LABEL_LENGTH = 60;
6
- export const RESERVED_LABELS = ["Other", "Type something.", "Chat about this", "Next"];
7
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/ask-user-question/types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC;AAC/B,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC;AAC7B,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC;AAC7B,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC;AACpC,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAEnC,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,CAAU,CAAC"}
@@ -1,3 +0,0 @@
1
- import { type ValidationResult } from "./types.js";
2
- export declare function validateQuestionnaire(raw: unknown): ValidationResult;
3
- //# sourceMappingURL=validate.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/ask-user-question/validate.ts"],"names":[],"mappings":"AAAA,OAAO,EAQL,KAAK,gBAAgB,EACtB,MAAM,YAAY,CAAC;AAEpB,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,GAAG,gBAAgB,CAoEpE"}