@namzu/sdk 51.1.0 → 52.0.0

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 (323) hide show
  1. package/CHANGELOG.md +100 -0
  2. package/dist/agents/QueryAgent.d.ts.map +1 -1
  3. package/dist/agents/QueryAgent.js +2 -0
  4. package/dist/agents/QueryAgent.js.map +1 -1
  5. package/dist/agents/SupervisorAgent.d.ts +1 -1
  6. package/dist/agents/SupervisorAgent.d.ts.map +1 -1
  7. package/dist/agents/SupervisorAgent.js.map +1 -1
  8. package/dist/agents/examples/SupervisorAgent.d.ts +42 -0
  9. package/dist/agents/examples/SupervisorAgent.d.ts.map +1 -1
  10. package/dist/agents/examples/SupervisorAgent.js +80 -4
  11. package/dist/agents/examples/SupervisorAgent.js.map +1 -1
  12. package/dist/agents/index.d.ts +1 -1
  13. package/dist/agents/index.d.ts.map +1 -1
  14. package/dist/agents/index.js.map +1 -1
  15. package/dist/authorization/protected-paths.d.ts +36 -0
  16. package/dist/authorization/protected-paths.d.ts.map +1 -0
  17. package/dist/authorization/protected-paths.js +107 -0
  18. package/dist/authorization/protected-paths.js.map +1 -0
  19. package/dist/authorization/readonly-commands.d.ts +39 -0
  20. package/dist/authorization/readonly-commands.d.ts.map +1 -0
  21. package/dist/authorization/readonly-commands.js +797 -0
  22. package/dist/authorization/readonly-commands.js.map +1 -0
  23. package/dist/authorization/readonly-flags.d.ts +19 -0
  24. package/dist/authorization/readonly-flags.d.ts.map +1 -0
  25. package/dist/authorization/readonly-flags.js +178 -0
  26. package/dist/authorization/readonly-flags.js.map +1 -0
  27. package/dist/authorization/removal.d.ts +52 -0
  28. package/dist/authorization/removal.d.ts.map +1 -0
  29. package/dist/authorization/removal.js +283 -0
  30. package/dist/authorization/removal.js.map +1 -0
  31. package/dist/authorization/shell-paths.d.ts +66 -0
  32. package/dist/authorization/shell-paths.d.ts.map +1 -0
  33. package/dist/authorization/shell-paths.js +697 -0
  34. package/dist/authorization/shell-paths.js.map +1 -0
  35. package/dist/bridge/acp/update.d.ts.map +1 -1
  36. package/dist/bridge/acp/update.js +1 -0
  37. package/dist/bridge/acp/update.js.map +1 -1
  38. package/dist/compaction/context-window.d.ts +24 -0
  39. package/dist/compaction/context-window.d.ts.map +1 -1
  40. package/dist/compaction/context-window.js +34 -0
  41. package/dist/compaction/context-window.js.map +1 -1
  42. package/dist/compaction/manual.d.ts.map +1 -1
  43. package/dist/compaction/manual.js +10 -2
  44. package/dist/compaction/manual.js.map +1 -1
  45. package/dist/compaction/plan.d.ts +4 -0
  46. package/dist/compaction/plan.d.ts.map +1 -1
  47. package/dist/compaction/plan.js +6 -2
  48. package/dist/compaction/plan.js.map +1 -1
  49. package/dist/compaction/verifier.d.ts +11 -1
  50. package/dist/compaction/verifier.d.ts.map +1 -1
  51. package/dist/compaction/verifier.js +19 -7
  52. package/dist/compaction/verifier.js.map +1 -1
  53. package/dist/config/runtime.d.ts +55 -7
  54. package/dist/config/runtime.d.ts.map +1 -1
  55. package/dist/config/runtime.js +23 -2
  56. package/dist/config/runtime.js.map +1 -1
  57. package/dist/connector/web/guarded-fetch.d.ts.map +1 -1
  58. package/dist/connector/web/guarded-fetch.js +24 -0
  59. package/dist/connector/web/guarded-fetch.js.map +1 -1
  60. package/dist/connector/web/index.d.ts +1 -1
  61. package/dist/connector/web/index.d.ts.map +1 -1
  62. package/dist/connector/web/page.d.ts +59 -0
  63. package/dist/connector/web/page.d.ts.map +1 -0
  64. package/dist/connector/web/page.js +112 -0
  65. package/dist/connector/web/page.js.map +1 -0
  66. package/dist/connector/web/types.d.ts +47 -0
  67. package/dist/connector/web/types.d.ts.map +1 -1
  68. package/dist/connector/web/types.js.map +1 -1
  69. package/dist/constants/continuation.d.ts +8 -0
  70. package/dist/constants/continuation.d.ts.map +1 -1
  71. package/dist/constants/continuation.js +8 -0
  72. package/dist/constants/continuation.js.map +1 -1
  73. package/dist/constants/plugin/index.d.ts +1 -1
  74. package/dist/constants/plugin/index.d.ts.map +1 -1
  75. package/dist/constants/plugin/index.js +1 -1
  76. package/dist/constants/plugin/index.js.map +1 -1
  77. package/dist/manager/agent/lifecycle.d.ts +7 -0
  78. package/dist/manager/agent/lifecycle.d.ts.map +1 -1
  79. package/dist/manager/agent/lifecycle.js +11 -2
  80. package/dist/manager/agent/lifecycle.js.map +1 -1
  81. package/dist/manager/session/turn-recorder.d.ts.map +1 -1
  82. package/dist/manager/session/turn-recorder.js +4 -2
  83. package/dist/manager/session/turn-recorder.js.map +1 -1
  84. package/dist/plugin/index.d.ts +1 -1
  85. package/dist/plugin/index.d.ts.map +1 -1
  86. package/dist/plugin/index.js +1 -1
  87. package/dist/plugin/index.js.map +1 -1
  88. package/dist/plugin/lifecycle.d.ts +6 -0
  89. package/dist/plugin/lifecycle.d.ts.map +1 -1
  90. package/dist/plugin/lifecycle.js +98 -114
  91. package/dist/plugin/lifecycle.js.map +1 -1
  92. package/dist/plugin/shell-hook.d.ts +90 -22
  93. package/dist/plugin/shell-hook.d.ts.map +1 -1
  94. package/dist/plugin/shell-hook.js +434 -41
  95. package/dist/plugin/shell-hook.js.map +1 -1
  96. package/dist/public-runtime.d.ts +4 -1
  97. package/dist/public-runtime.d.ts.map +1 -1
  98. package/dist/public-runtime.js +4 -1
  99. package/dist/public-runtime.js.map +1 -1
  100. package/dist/public-types.d.ts +2 -2
  101. package/dist/public-types.d.ts.map +1 -1
  102. package/dist/runtime/jobs/registry.d.ts +21 -0
  103. package/dist/runtime/jobs/registry.d.ts.map +1 -1
  104. package/dist/runtime/jobs/registry.js +15 -2
  105. package/dist/runtime/jobs/registry.js.map +1 -1
  106. package/dist/runtime/query/executor/tool-call-admission.d.ts +10 -0
  107. package/dist/runtime/query/executor/tool-call-admission.d.ts.map +1 -1
  108. package/dist/runtime/query/executor/tool-call-admission.js +74 -13
  109. package/dist/runtime/query/executor/tool-call-admission.js.map +1 -1
  110. package/dist/runtime/query/executor.d.ts +41 -2
  111. package/dist/runtime/query/executor.d.ts.map +1 -1
  112. package/dist/runtime/query/executor.js +190 -6
  113. package/dist/runtime/query/executor.js.map +1 -1
  114. package/dist/runtime/query/finalize-turn.d.ts +6 -0
  115. package/dist/runtime/query/finalize-turn.d.ts.map +1 -1
  116. package/dist/runtime/query/finalize-turn.js +1 -1
  117. package/dist/runtime/query/finalize-turn.js.map +1 -1
  118. package/dist/runtime/query/index.d.ts +29 -0
  119. package/dist/runtime/query/index.d.ts.map +1 -1
  120. package/dist/runtime/query/index.js +15 -3
  121. package/dist/runtime/query/index.js.map +1 -1
  122. package/dist/runtime/query/iteration/index.d.ts +31 -0
  123. package/dist/runtime/query/iteration/index.d.ts.map +1 -1
  124. package/dist/runtime/query/iteration/index.js +216 -7
  125. package/dist/runtime/query/iteration/index.js.map +1 -1
  126. package/dist/runtime/query/iteration/phases/compaction-breaker.d.ts +58 -0
  127. package/dist/runtime/query/iteration/phases/compaction-breaker.d.ts.map +1 -0
  128. package/dist/runtime/query/iteration/phases/compaction-breaker.js +91 -0
  129. package/dist/runtime/query/iteration/phases/compaction-breaker.js.map +1 -0
  130. package/dist/runtime/query/iteration/phases/compaction.d.ts.map +1 -1
  131. package/dist/runtime/query/iteration/phases/compaction.js +89 -7
  132. package/dist/runtime/query/iteration/phases/compaction.js.map +1 -1
  133. package/dist/runtime/query/iteration/phases/context.d.ts +10 -0
  134. package/dist/runtime/query/iteration/phases/context.d.ts.map +1 -1
  135. package/dist/runtime/query/iteration/phases/context.js.map +1 -1
  136. package/dist/runtime/query/iteration/phases/tool-review.d.ts.map +1 -1
  137. package/dist/runtime/query/iteration/phases/tool-review.js +165 -2
  138. package/dist/runtime/query/iteration/phases/tool-review.js.map +1 -1
  139. package/dist/runtime/query/path-escalation.d.ts +36 -0
  140. package/dist/runtime/query/path-escalation.d.ts.map +1 -0
  141. package/dist/runtime/query/path-escalation.js +184 -0
  142. package/dist/runtime/query/path-escalation.js.map +1 -0
  143. package/dist/runtime/query/plugin-hooks.d.ts.map +1 -1
  144. package/dist/runtime/query/plugin-hooks.js +8 -0
  145. package/dist/runtime/query/plugin-hooks.js.map +1 -1
  146. package/dist/runtime/query/reminders.d.ts +35 -0
  147. package/dist/runtime/query/reminders.d.ts.map +1 -0
  148. package/dist/runtime/query/reminders.js +7 -0
  149. package/dist/runtime/query/reminders.js.map +1 -0
  150. package/dist/runtime/query/resume-pending.d.ts.map +1 -1
  151. package/dist/runtime/query/resume-pending.js +26 -0
  152. package/dist/runtime/query/resume-pending.js.map +1 -1
  153. package/dist/runtime/query/review-policy.d.ts +26 -0
  154. package/dist/runtime/query/review-policy.d.ts.map +1 -1
  155. package/dist/runtime/query/review-policy.js +79 -5
  156. package/dist/runtime/query/review-policy.js.map +1 -1
  157. package/dist/runtime/query/tool-output-budget.d.ts +46 -0
  158. package/dist/runtime/query/tool-output-budget.d.ts.map +1 -1
  159. package/dist/runtime/query/tool-output-budget.js +85 -1
  160. package/dist/runtime/query/tool-output-budget.js.map +1 -1
  161. package/dist/runtime/query/tooling.d.ts +1 -0
  162. package/dist/runtime/query/tooling.d.ts.map +1 -1
  163. package/dist/runtime/query/tooling.js +5 -0
  164. package/dist/runtime/query/tooling.js.map +1 -1
  165. package/dist/session/paths.d.ts +5 -1
  166. package/dist/session/paths.d.ts.map +1 -1
  167. package/dist/session/paths.js +8 -0
  168. package/dist/session/paths.js.map +1 -1
  169. package/dist/store/memory/disk.d.ts.map +1 -1
  170. package/dist/store/memory/disk.js +2 -2
  171. package/dist/store/memory/disk.js.map +1 -1
  172. package/dist/store/memory/markdown.d.ts.map +1 -1
  173. package/dist/store/memory/markdown.js +2 -2
  174. package/dist/store/memory/markdown.js.map +1 -1
  175. package/dist/store/memory/naming.d.ts +9 -0
  176. package/dist/store/memory/naming.d.ts.map +1 -1
  177. package/dist/store/memory/naming.js +12 -0
  178. package/dist/store/memory/naming.js.map +1 -1
  179. package/dist/tools/builtins/bash.d.ts +30 -1
  180. package/dist/tools/builtins/bash.d.ts.map +1 -1
  181. package/dist/tools/builtins/bash.js +170 -26
  182. package/dist/tools/builtins/bash.js.map +1 -1
  183. package/dist/tools/builtins/content-fingerprint.d.ts +2 -0
  184. package/dist/tools/builtins/content-fingerprint.d.ts.map +1 -1
  185. package/dist/tools/builtins/content-fingerprint.js +4 -0
  186. package/dist/tools/builtins/content-fingerprint.js.map +1 -1
  187. package/dist/tools/builtins/edit.d.ts.map +1 -1
  188. package/dist/tools/builtins/edit.js +60 -18
  189. package/dist/tools/builtins/edit.js.map +1 -1
  190. package/dist/tools/builtins/grep.d.ts +8 -1
  191. package/dist/tools/builtins/grep.d.ts.map +1 -1
  192. package/dist/tools/builtins/grep.js +152 -33
  193. package/dist/tools/builtins/grep.js.map +1 -1
  194. package/dist/tools/builtins/read-file.d.ts +1 -0
  195. package/dist/tools/builtins/read-file.d.ts.map +1 -1
  196. package/dist/tools/builtins/read-file.js +44 -5
  197. package/dist/tools/builtins/read-file.js.map +1 -1
  198. package/dist/tools/builtins/read-render.d.ts +52 -0
  199. package/dist/tools/builtins/read-render.d.ts.map +1 -1
  200. package/dist/tools/builtins/read-render.js +143 -0
  201. package/dist/tools/builtins/read-render.js.map +1 -1
  202. package/dist/tools/builtins/web.d.ts +13 -2
  203. package/dist/tools/builtins/web.d.ts.map +1 -1
  204. package/dist/tools/builtins/web.js +225 -32
  205. package/dist/tools/builtins/web.js.map +1 -1
  206. package/dist/tools/coordinator/ask-user-question.d.ts +2 -0
  207. package/dist/tools/coordinator/ask-user-question.d.ts.map +1 -1
  208. package/dist/tools/coordinator/ask-user-question.js +256 -92
  209. package/dist/tools/coordinator/ask-user-question.js.map +1 -1
  210. package/dist/tools/coordinator/question-options.d.ts +1 -0
  211. package/dist/tools/coordinator/question-options.d.ts.map +1 -1
  212. package/dist/tools/coordinator/question-options.js +6 -1
  213. package/dist/tools/coordinator/question-options.js.map +1 -1
  214. package/dist/tools/defineTool.d.ts +4 -1
  215. package/dist/tools/defineTool.d.ts.map +1 -1
  216. package/dist/tools/defineTool.js +6 -1
  217. package/dist/tools/defineTool.js.map +1 -1
  218. package/dist/tools/paths.d.ts +6 -0
  219. package/dist/tools/paths.d.ts.map +1 -1
  220. package/dist/tools/paths.js +1 -1
  221. package/dist/tools/paths.js.map +1 -1
  222. package/dist/types/agent/query.d.ts +3 -0
  223. package/dist/types/agent/query.d.ts.map +1 -1
  224. package/dist/types/errors/catalog.js +1 -1
  225. package/dist/types/errors/catalog.js.map +1 -1
  226. package/dist/types/hitl/index.d.ts +104 -0
  227. package/dist/types/hitl/index.d.ts.map +1 -1
  228. package/dist/types/hitl/index.js.map +1 -1
  229. package/dist/types/message/index.d.ts +1 -1
  230. package/dist/types/message/index.d.ts.map +1 -1
  231. package/dist/types/message/index.js +2 -0
  232. package/dist/types/message/index.js.map +1 -1
  233. package/dist/types/plugin/index.d.ts +93 -19
  234. package/dist/types/plugin/index.d.ts.map +1 -1
  235. package/dist/types/plugin/index.js +3 -0
  236. package/dist/types/plugin/index.js.map +1 -1
  237. package/dist/types/provider/errors.d.ts +19 -0
  238. package/dist/types/provider/errors.d.ts.map +1 -1
  239. package/dist/types/provider/errors.js +24 -0
  240. package/dist/types/provider/errors.js.map +1 -1
  241. package/dist/types/session/events.d.ts +10 -2
  242. package/dist/types/session/events.d.ts.map +1 -1
  243. package/dist/types/session/events.js.map +1 -1
  244. package/dist/types/session/records.d.ts +9 -9
  245. package/dist/types/session/records.d.ts.map +1 -1
  246. package/dist/types/session/records.js +1 -0
  247. package/dist/types/session/records.js.map +1 -1
  248. package/dist/types/session/stop-reason.d.ts +5 -0
  249. package/dist/types/session/stop-reason.d.ts.map +1 -1
  250. package/dist/types/tool/index.d.ts +52 -0
  251. package/dist/types/tool/index.d.ts.map +1 -1
  252. package/dist/types/tool/index.js.map +1 -1
  253. package/package.json +4 -2
  254. package/src/agents/QueryAgent.ts +5 -1
  255. package/src/agents/SupervisorAgent.ts +1 -1
  256. package/src/agents/examples/SupervisorAgent.ts +217 -106
  257. package/src/agents/index.ts +1 -1
  258. package/src/authorization/protected-paths.ts +110 -0
  259. package/src/authorization/readonly-commands.ts +771 -0
  260. package/src/authorization/readonly-flags.ts +196 -0
  261. package/src/authorization/removal.ts +326 -0
  262. package/src/authorization/shell-paths.ts +927 -0
  263. package/src/bridge/acp/update.ts +1 -0
  264. package/src/compaction/context-window.ts +41 -0
  265. package/src/compaction/manual.ts +10 -2
  266. package/src/compaction/plan.ts +11 -2
  267. package/src/compaction/verifier.ts +28 -3
  268. package/src/config/runtime.ts +23 -2
  269. package/src/connector/web/guarded-fetch.ts +26 -0
  270. package/src/connector/web/index.ts +3 -0
  271. package/src/connector/web/page.ts +130 -0
  272. package/src/connector/web/types.ts +47 -0
  273. package/src/constants/continuation.ts +10 -0
  274. package/src/constants/plugin/index.ts +1 -1
  275. package/src/manager/agent/lifecycle.ts +12 -4
  276. package/src/manager/session/turn-recorder.ts +10 -2
  277. package/src/plugin/index.ts +1 -0
  278. package/src/plugin/lifecycle.ts +107 -119
  279. package/src/plugin/shell-hook.ts +477 -43
  280. package/src/public-runtime.ts +8 -0
  281. package/src/public-types.ts +4 -0
  282. package/src/runtime/jobs/registry.ts +39 -2
  283. package/src/runtime/query/executor/tool-call-admission.ts +79 -13
  284. package/src/runtime/query/executor.ts +242 -8
  285. package/src/runtime/query/finalize-turn.ts +7 -1
  286. package/src/runtime/query/index.ts +45 -3
  287. package/src/runtime/query/iteration/index.ts +251 -12
  288. package/src/runtime/query/iteration/phases/compaction-breaker.ts +106 -0
  289. package/src/runtime/query/iteration/phases/compaction.ts +99 -12
  290. package/src/runtime/query/iteration/phases/context.ts +11 -0
  291. package/src/runtime/query/iteration/phases/tool-review.ts +177 -2
  292. package/src/runtime/query/path-escalation.ts +204 -0
  293. package/src/runtime/query/plugin-hooks.ts +8 -0
  294. package/src/runtime/query/reminders.ts +45 -0
  295. package/src/runtime/query/resume-pending.ts +27 -0
  296. package/src/runtime/query/review-policy.ts +106 -5
  297. package/src/runtime/query/tool-output-budget.ts +115 -1
  298. package/src/runtime/query/tooling.ts +6 -0
  299. package/src/session/paths.ts +11 -1
  300. package/src/store/memory/disk.ts +2 -1
  301. package/src/store/memory/markdown.ts +2 -1
  302. package/src/store/memory/naming.ts +13 -0
  303. package/src/tools/builtins/bash.ts +203 -34
  304. package/src/tools/builtins/content-fingerprint.ts +5 -0
  305. package/src/tools/builtins/edit.ts +69 -19
  306. package/src/tools/builtins/grep.ts +159 -38
  307. package/src/tools/builtins/read-file.ts +48 -5
  308. package/src/tools/builtins/read-render.ts +193 -0
  309. package/src/tools/builtins/web.ts +258 -33
  310. package/src/tools/coordinator/ask-user-question.ts +309 -103
  311. package/src/tools/coordinator/question-options.ts +8 -1
  312. package/src/tools/defineTool.ts +11 -2
  313. package/src/tools/paths.ts +1 -1
  314. package/src/types/agent/query.ts +3 -0
  315. package/src/types/errors/catalog.ts +1 -1
  316. package/src/types/hitl/index.ts +104 -0
  317. package/src/types/message/index.ts +2 -0
  318. package/src/types/plugin/index.ts +101 -18
  319. package/src/types/provider/errors.ts +33 -0
  320. package/src/types/session/events.ts +10 -2
  321. package/src/types/session/records.ts +1 -0
  322. package/src/types/session/stop-reason.ts +5 -0
  323. package/src/types/tool/index.ts +53 -2
@@ -24,7 +24,7 @@ export const ASK_USER_QUESTION_TOOL_NAME = 'ask_user_question';
24
24
  * `additionalProperties: false` turns that into a refusal at generation time
25
25
  * rather than a rejection after the fact.
26
26
  */
27
- const askUserQuestionModelInputSchema = {
27
+ const askUserQuestionItemModelSchema = {
28
28
  type: 'object',
29
29
  properties: {
30
30
  question: {
@@ -33,7 +33,7 @@ const askUserQuestionModelInputSchema = {
33
33
  },
34
34
  header: {
35
35
  type: 'string',
36
- description: 'Optional very short topic label, no more than 24 characters.',
36
+ description: 'Optional very short topic label, no more than 24 characters; unique within the call.',
37
37
  },
38
38
  options: {
39
39
  type: 'array',
@@ -53,6 +53,10 @@ const askUserQuestionModelInputSchema = {
53
53
  type: 'boolean',
54
54
  description: 'True on the option you recommend; put that option first. The host shows the recommendation, so never write it into the label.',
55
55
  },
56
+ preview: {
57
+ type: 'string',
58
+ description: 'Optional plain text or markdown shown beside the options while this one is focused: a snippet, a mock-up, a side-by-side. Leave it out unless it helps the choice.',
59
+ },
56
60
  },
57
61
  required: ['label'],
58
62
  additionalProperties: false,
@@ -70,60 +74,224 @@ const askUserQuestionModelInputSchema = {
70
74
  required: ['question', 'options'],
71
75
  additionalProperties: false,
72
76
  };
77
+ /**
78
+ * The single closed shape a capable provider constrains this call to: a
79
+ * `questions` array of one to four questions. The older single-question
80
+ * input (`question` and `options` at the top level) is still accepted at
81
+ * run time as a one-element batch, but is not offered to the model.
82
+ */
83
+ const askUserQuestionModelInputSchema = {
84
+ type: 'object',
85
+ properties: {
86
+ questions: {
87
+ type: 'array',
88
+ description: 'A JSON array of 1-4 questions. Batch only related decisions that all block your next step; ask a single decision as one entry.',
89
+ items: askUserQuestionItemModelSchema,
90
+ },
91
+ },
92
+ required: ['questions'],
93
+ additionalProperties: false,
94
+ };
95
+ /** The most questions one call may carry. */
96
+ export const MAX_QUESTIONS_PER_CALL = 4;
97
+ const optionSchema = z
98
+ .object({
99
+ label: z
100
+ .string()
101
+ .min(1)
102
+ .max(80)
103
+ .describe('Concise option label (1-5 words), plain text: no "(Recommended)" or other parenthesised note at the end.'),
104
+ description: z
105
+ .string()
106
+ .max(300)
107
+ .optional()
108
+ .describe('One line on what practically changes if this option is chosen.'),
109
+ recommended: z
110
+ .boolean()
111
+ .optional()
112
+ .describe('True on the option you recommend; put it first. Never write the recommendation into the label.'),
113
+ preview: z
114
+ .string()
115
+ .max(4000)
116
+ .optional()
117
+ .describe('Optional plain text or markdown shown beside the options while this one is focused.'),
118
+ })
119
+ .strict();
120
+ const questionSchema = z
121
+ .object({
122
+ question: z
123
+ .string()
124
+ .min(1)
125
+ .describe('Full question text — clear, specific, ends with a question mark.'),
126
+ header: z
127
+ .string()
128
+ .max(24)
129
+ .optional()
130
+ .describe('Very short topic label for the question (e.g. "Audience", "Auth method").'),
131
+ options: z
132
+ .array(optionSchema)
133
+ .min(2)
134
+ .max(4)
135
+ .describe('2-4 genuinely distinct, context-derived options.'),
136
+ multiSelect: z
137
+ .boolean()
138
+ .optional()
139
+ .default(false)
140
+ .describe('True only when several options can apply at once.'),
141
+ allowFreeText: z
142
+ .boolean()
143
+ .optional()
144
+ .default(true)
145
+ .describe('Whether the user may answer in their own words.'),
146
+ })
147
+ .strict();
148
+ /**
149
+ * The old single-question input is a one-element batch. Anything that has
150
+ * `questions` is left alone, so a call mixing both shapes fails the strict
151
+ * object below instead of silently dropping one.
152
+ */
153
+ function batchFromLegacy(input) {
154
+ if (typeof input !== 'object' || input === null || Array.isArray(input))
155
+ return input;
156
+ const record = input;
157
+ if ('questions' in record || !('question' in record))
158
+ return input;
159
+ return { questions: [record] };
160
+ }
161
+ const inputSchema = z
162
+ .preprocess(batchFromLegacy, z
163
+ .object({
164
+ questions: z
165
+ .array(questionSchema)
166
+ .min(1)
167
+ .max(MAX_QUESTIONS_PER_CALL)
168
+ .describe('1-4 related questions, asked together; one answer comes back per question.'),
169
+ })
170
+ .strict())
171
+ .superRefine((value, ctx) => {
172
+ const questions = value.questions.map((q) => q.question.trim().toLowerCase());
173
+ if (new Set(questions).size !== questions.length) {
174
+ ctx.addIssue({
175
+ code: 'custom',
176
+ path: ['questions'],
177
+ message: 'Question texts must be unique within one call.',
178
+ });
179
+ }
180
+ const headers = value.questions.flatMap((q) => q.header !== undefined ? [q.header.trim().toLowerCase()] : []);
181
+ if (new Set(headers).size !== headers.length) {
182
+ ctx.addIssue({
183
+ code: 'custom',
184
+ path: ['questions'],
185
+ message: 'Headers must be unique within one call: a host uses them as tab labels and answer keys.',
186
+ });
187
+ }
188
+ });
189
+ const NO_ANSWER_TEXT = 'The user did not answer this question. Do not assume a choice or consent; proceed on your best judgment or continue without this information.';
190
+ const NO_ANSWER_BATCH_TEXT = 'The user did not answer these questions. Do not assume a choice or consent; proceed on your best judgment or continue without this information.';
191
+ const isAnswered = (answer) => answer.selected.length > 0 || answer.freeText !== '';
192
+ /**
193
+ * Which answer belongs to which question. `answers` is the batch form; a
194
+ * decision without it answers the FIRST question only — the shape a host
195
+ * that predates batches sends, and what a single-question call has always
196
+ * received. An entry that names no question of this call, or names one
197
+ * twice, is dropped: it was meant for something else.
198
+ */
199
+ function readAnswers(items, decision) {
200
+ const entries = decision.answers ??
201
+ (items[0]
202
+ ? [
203
+ {
204
+ questionId: items[0].id,
205
+ selectedOptionIds: decision.selectedOptionIds,
206
+ freeText: decision.freeText,
207
+ },
208
+ ]
209
+ : []);
210
+ const byId = new Map();
211
+ for (const entry of entries) {
212
+ if (!byId.has(entry.questionId))
213
+ byId.set(entry.questionId, entry);
214
+ }
215
+ return items.map((item) => {
216
+ const entry = byId.get(item.id);
217
+ // The label the user saw, never a marker: `questionOptions` took it
218
+ // out. Whether it was the recommended option is a field of its own.
219
+ const chosen = (entry?.selectedOptionIds ?? [])
220
+ .map((id) => item.options.find((opt) => opt.id === id))
221
+ .filter((opt) => opt !== undefined);
222
+ const selected = (item.multiSelect ? chosen : chosen.slice(0, 1)).map((opt) => ({
223
+ id: opt.id,
224
+ label: opt.label,
225
+ ...(opt.recommended === true ? { recommended: true } : {}),
226
+ }));
227
+ return { item, selected, freeText: entry?.freeText?.trim() ?? '' };
228
+ });
229
+ }
230
+ function describeSingle(answer) {
231
+ const { item, selected, freeText } = answer;
232
+ let output;
233
+ if (selected.length > 0) {
234
+ const joined = selected.map((s) => `"${s.label}"`).join(', ');
235
+ output = `User answered "${item.question}": ${joined}`;
236
+ if (freeText)
237
+ output += `\nAdditional note from the user: "${freeText}"`;
238
+ }
239
+ else {
240
+ output = `User answered "${item.question}" in their own words: "${freeText}"`;
241
+ }
242
+ return {
243
+ output,
244
+ data: {
245
+ question: item.question,
246
+ selected,
247
+ ...(freeText ? { freeText } : {}),
248
+ answered: true,
249
+ },
250
+ };
251
+ }
252
+ const labelOf = (item) => item.header ?? item.question;
253
+ function describeBatch(answers) {
254
+ const lines = answers.map((answer) => {
255
+ const { item, selected, freeText } = answer;
256
+ if (selected.length > 0) {
257
+ const joined = selected.map((s) => `"${s.label}"`).join(', ');
258
+ return `${labelOf(item)}: ${joined}${freeText ? ` (note: "${freeText}")` : ''}`;
259
+ }
260
+ if (freeText)
261
+ return `${labelOf(item)} (own words): "${freeText}"`;
262
+ return `${labelOf(item)}: not answered, assume nothing`;
263
+ });
264
+ const answered = answers.filter(isAnswered).length;
265
+ return {
266
+ output: `The user answered ${answered} of ${answers.length} questions:\n${lines.join('\n')}`,
267
+ data: {
268
+ questions: answers.map(({ item }) => ({
269
+ questionId: item.id,
270
+ ...(item.header !== undefined ? { header: item.header } : {}),
271
+ question: item.question,
272
+ })),
273
+ answers: answers.map((answer) => ({
274
+ questionId: answer.item.id,
275
+ ...(answer.item.header !== undefined ? { header: answer.item.header } : {}),
276
+ question: answer.item.question,
277
+ selected: answer.selected,
278
+ ...(answer.freeText ? { freeText: answer.freeText } : {}),
279
+ answered: isAnswered(answer),
280
+ })),
281
+ answered: true,
282
+ },
283
+ };
284
+ }
73
285
  export function buildAskUserQuestionTool(config) {
74
286
  const parkHandler = config.resumeHandler;
75
287
  const { questionParks, pendingAnswers } = config;
76
288
  return defineTool({
77
289
  name: ASK_USER_QUESTION_TOOL_NAME,
78
- description: 'Ask the user ONE question ONLY when you are blocked on a decision that is genuinely theirs to make — one you cannot resolve from their request, your tools, the files you can read, or sensible defaults. The question must be the genuinely undecidable thing in THIS task. Never ask for information a tool can discover (do not ask what you can read, list, or search), never re-ask what the conversation already answers, and never ask meta-questions like "Shall I proceed?" — plan ratification goes through approve_plan. Provide 2-4 genuinely distinct options derived from the actual context — concrete paths, never generic placeholders (for example, asked to prepare a presentation, ask "Who is the audience?" with options like Board / Engineering team / Customer); keep labels short (1-5 words) and give each option a one-line description of what practically changes if it is chosen. If you recommend an option, put it FIRST and set recommended: true on it; the host marks it for the user, so never write "(Recommended)" or any translation of it into a label, and never end a label with a parenthesised note (put qualifiers in the description). Set multiSelect: true only when several options can apply at once. A free-text "Something else" escape hatch is always shown automatically — do not add your own "Other" option. Ask ONE question per call and prefer at most one question per assistant turn; if several decisions block you, ask only the ones that materially change your next actions, in sequence — most work needs at most 2-3 questions, so prefer proceeding on stated defaults over interrogating the user. Never invent answers or synthetic content on the user\'s behalf unless they explicitly asked for a random/test scenario. The answer arrives as this tool\'s result; if the result says the user did not answer, do not ask this or any other question again — proceed on your best judgment without assuming consent.',
79
- inputSchema: z
80
- .object({
81
- question: z
82
- .string()
83
- .min(1)
84
- .describe('Full question text — clear, specific, ends with a question mark.'),
85
- header: z
86
- .string()
87
- .max(24)
88
- .optional()
89
- .describe('Very short topic label for the question (e.g. "Audience", "Auth method").'),
90
- options: z
91
- .array(z
92
- .object({
93
- label: z
94
- .string()
95
- .min(1)
96
- .max(80)
97
- .describe('Concise option label (1-5 words), plain text: no "(Recommended)" or other parenthesised note at the end.'),
98
- description: z
99
- .string()
100
- .max(300)
101
- .optional()
102
- .describe('One line on what practically changes if this option is chosen.'),
103
- recommended: z
104
- .boolean()
105
- .optional()
106
- .describe('True on the option you recommend; put it first. Never write the recommendation into the label.'),
107
- })
108
- .strict())
109
- .min(2)
110
- .max(4)
111
- .describe('2-4 genuinely distinct, context-derived options.'),
112
- multiSelect: z
113
- .boolean()
114
- .optional()
115
- .default(false)
116
- .describe('True only when several options can apply at once.'),
117
- allowFreeText: z
118
- .boolean()
119
- .optional()
120
- .default(true)
121
- .describe('Whether the user may answer in their own words.'),
122
- })
123
- .strict(),
290
+ description: 'Ask the user when you are blocked on a decision that is genuinely theirs to make — one you cannot resolve from their request, your tools, the files you can read, or sensible defaults. The question must be the genuinely undecidable thing in THIS task. Never ask for information a tool can discover (do not ask what you can read, list, or search), never re-ask what the conversation already answers, and never ask meta-questions like "Shall I proceed?" — plan ratification goes through approve_plan. Provide 2-4 genuinely distinct options derived from the actual context — concrete paths, never generic placeholders (for example, asked to prepare a presentation, ask "Who is the audience?" with options like Board / Engineering team / Customer); keep labels short (1-5 words) and give each option a one-line description of what practically changes if it is chosen. If you recommend an option, put it FIRST and set recommended: true on it; the host marks it for the user, so never write "(Recommended)" or any translation of it into a label, and never end a label with a parenthesised note (put qualifiers in the description). Set multiSelect: true only when several options can apply at once. An option may carry a preview (plain text or markdown) that the host shows beside the list while it is focused; use it only when seeing the thing helps the choice. A free-text "Something else" escape hatch is always shown automatically — do not add your own "Other" option. Put the questions in the questions array. Use ONE entry for a single decision. Put several entries in the same call only when they are related decisions that ALL block your next step and the user can answer them together (for example which account, for what purpose, which environment before a credentialed step), at most 4, each with a short unique header; the user answers them all in one card and you get one answer per question. Never batch questions that depend on one another\'s answers — ask the first, then decide. Most work needs at most 2-3 questions in all, so prefer proceeding on stated defaults over interrogating the user. Never invent answers or synthetic content on the user\'s behalf unless they explicitly asked for a random/test scenario. The answers arrive as this tool\'s result; a question the result says was not answered must not be assumed, and if the result says the user did not answer at all, do not ask again — proceed on your best judgment without assuming consent.',
291
+ inputSchema,
124
292
  modelInputSchema: structuredClone(askUserQuestionModelInputSchema),
125
293
  enforceModelInput: true,
126
- validationErrorHint: 'Required shape: {"question":"...?","options":[{"label":"First","description":"What changes","recommended":true},{"label":"Second","description":"What changes"}]}. "options" must be a JSON array of 2-4 objects, never a string.',
294
+ validationErrorHint: 'Required shape: {"questions":[{"question":"...?","header":"Short","options":[{"label":"First","description":"What changes","recommended":true},{"label":"Second","description":"What changes"}]}]}. "questions" must be a JSON array of 1-4 objects. "options" must be a JSON array of 2-4 objects, never a string. Question texts and headers must be unique within one call.',
127
295
  category: 'custom',
128
296
  permissions: [],
129
297
  readOnly: true,
@@ -134,7 +302,11 @@ export function buildAskUserQuestionTool(config) {
134
302
  // registries by turn — concurrent parks on one turn clobber each
135
303
  // other and the first promise never resolves (the turn hangs to TTL).
136
304
  concurrencySafe: false,
137
- async execute({ question, header, options, multiSelect, allowFreeText }, context) {
305
+ async execute(input, context) {
306
+ // A host that calls the tool without going through the registry
307
+ // hands over the older single-question shape or unfilled defaults;
308
+ // parsing again is a no-op for input the registry already parsed.
309
+ const { questions } = inputSchema.parse(input);
138
310
  const toolUseId = context.toolUseId;
139
311
  if (!toolUseId) {
140
312
  // Without the executing tool_use_id the question has no
@@ -150,14 +322,28 @@ export function buildAskUserQuestionTool(config) {
150
322
  // Labels without a recommendation marker, in any language, and the
151
323
  // recommendation as a field: what the host shows and what the
152
324
  // answer below quotes back to the model.
153
- const shownOptions = questionOptions(options);
325
+ const items = questions.map((q, index) => ({
326
+ id: `${toolUseId}#${index}`,
327
+ question: q.question,
328
+ ...(q.header !== undefined ? { header: q.header } : {}),
329
+ options: questionOptions(q.options),
330
+ multiSelect: q.multiSelect,
331
+ allowFreeText: q.allowFreeText,
332
+ }));
333
+ const batch = items.length > 1;
334
+ const [first] = items;
335
+ if (!first)
336
+ return { success: false, output: '', error: 'No question was asked.' };
337
+ // The top level mirrors the first question, so a host that does
338
+ // not know `questions` still shows and answers a real question.
154
339
  const questionData = {
155
340
  questionId: toolUseId,
156
- question,
157
- ...(header !== undefined ? { header } : {}),
158
- options: shownOptions,
159
- multiSelect,
160
- allowFreeText,
341
+ question: first.question,
342
+ ...(first.header !== undefined ? { header: first.header } : {}),
343
+ options: first.options,
344
+ multiSelect: first.multiSelect,
345
+ allowFreeText: first.allowFreeText,
346
+ ...(batch ? { questions: items } : {}),
161
347
  };
162
348
  // An answer carried in from a resumed turn. Checked before the
163
349
  // park, because re-entering this tool is HOW the answer gets
@@ -193,14 +379,21 @@ export function buildAskUserQuestionTool(config) {
193
379
  // carry a different question's id.
194
380
  const noAnswer = {
195
381
  success: true,
196
- output: 'The user did not answer this question. Do not assume a choice or consent; proceed on your best judgment or continue without this information.',
197
- data: { question, answered: false },
382
+ output: batch ? NO_ANSWER_BATCH_TEXT : NO_ANSWER_TEXT,
383
+ data: batch
384
+ ? {
385
+ question: first.question,
386
+ questions: items.map((i) => i.question),
387
+ answered: false,
388
+ }
389
+ : { question: first.question, answered: false },
198
390
  };
199
391
  if (decision.action === 'abort') {
392
+ // One decline ends the whole batch: there is no partial refusal.
200
393
  return {
201
394
  success: false,
202
395
  output: 'The user declined to answer and asked to stop. Acknowledge briefly and end your turn.',
203
- data: { question, answered: false, declined: true },
396
+ data: { question: first.question, answered: false, declined: true },
204
397
  };
205
398
  }
206
399
  if (decision.action !== 'answer_question')
@@ -211,40 +404,11 @@ export function buildAskUserQuestionTool(config) {
211
404
  // fabricate a selection against the wrong question.
212
405
  return noAnswer;
213
406
  }
214
- // The label the user saw, never a marker: `questionOptions` took it
215
- // out. Whether it was the recommended option is a field of its own.
216
- const selected = decision.selectedOptionIds
217
- .map((id) => shownOptions.find((opt) => opt.id === id))
218
- .filter((opt) => opt !== undefined)
219
- .map((opt) => ({
220
- id: opt.id,
221
- label: opt.label,
222
- ...(opt.recommended === true ? { recommended: true } : {}),
223
- }));
224
- const freeText = decision.freeText?.trim() ?? '';
225
- if (selected.length === 0 && !freeText)
407
+ const answers = readAnswers(items, decision);
408
+ if (!answers.some(isAnswered))
226
409
  return noAnswer;
227
- let output;
228
- if (selected.length > 0) {
229
- const joined = selected.map((s) => `"${s.label}"`).join(', ');
230
- output = `User answered "${question}": ${joined}`;
231
- if (freeText) {
232
- output += `\nAdditional note from the user: "${freeText}"`;
233
- }
234
- }
235
- else {
236
- output = `User answered "${question}" in their own words: "${freeText}"`;
237
- }
238
- return {
239
- success: true,
240
- output,
241
- data: {
242
- question,
243
- selected,
244
- ...(freeText ? { freeText } : {}),
245
- answered: true,
246
- },
247
- };
410
+ const described = batch ? describeBatch(answers) : describeSingle(answers[0]);
411
+ return { success: true, output: described.output, data: described.data };
248
412
  },
249
413
  });
250
414
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ask-user-question.js","sourceRoot":"","sources":["../../../src/tools/coordinator/ask-user-question.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ask-user-question.js","sourceRoot":"","sources":["../../../src/tools/coordinator/ask-user-question.ts"],"names":[],"mappings":"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"}
@@ -53,6 +53,7 @@ export interface AuthoredQuestionOption {
53
53
  readonly label: string;
54
54
  readonly description?: string;
55
55
  readonly recommended?: boolean;
56
+ readonly preview?: string;
56
57
  }
57
58
  /**
58
59
  * A label or a group's text as two options are compared by: letter case and
@@ -1 +1 @@
1
- {"version":3,"file":"question-options.d.ts","sourceRoot":"","sources":["../../../src/tools/coordinator/question-options.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAEnE,wCAAwC;AACxC,MAAM,WAAW,sBAAsB;IACtC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAA;CAC9B;AAuBD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CActD;AA6BD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,SAAS,sBAAsB,EAAE,GAAG,kBAAkB,EAAE,CAoDhG"}
1
+ {"version":3,"file":"question-options.d.ts","sourceRoot":"","sources":["../../../src/tools/coordinator/question-options.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAEnE,wCAAwC;AACxC,MAAM,WAAW,sBAAsB;IACtC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAA;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CACzB;AA0BD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CActD;AA8BD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,SAAS,sBAAsB,EAAE,GAAG,kBAAkB,EAAE,CAsDhG"}
@@ -56,7 +56,10 @@ function trailingGroup(label) {
56
56
  const match = TRAILING_GROUP.exec(label);
57
57
  if (!match)
58
58
  return null;
59
- return { base: (match[1] ?? '').trim(), text: (match[2] ?? match[3] ?? '').trim() };
59
+ return {
60
+ base: (match[1] ?? '').trim(),
61
+ text: (match[2] ?? match[3] ?? '').trim(),
62
+ };
60
63
  }
61
64
  /**
62
65
  * A label or a group's text as two options are compared by: letter case and
@@ -116,6 +119,7 @@ export function questionOptions(options) {
116
119
  recommended: option.recommended ?? english,
117
120
  hadEnglishMarker: removed,
118
121
  description: option.description,
122
+ ...(option.preview !== undefined ? { preview: option.preview } : {}),
119
123
  };
120
124
  });
121
125
  // Only a recommended option can carry a localised marker. An unflagged
@@ -147,6 +151,7 @@ export function questionOptions(options) {
147
151
  id: `opt_${index + 1}`,
148
152
  label: option.label,
149
153
  ...(option.description !== undefined ? { description: option.description } : {}),
154
+ ...(option.preview !== undefined ? { preview: option.preview } : {}),
150
155
  ...(option.recommended ? { recommended: true } : {}),
151
156
  }));
152
157
  }
@@ -1 +1 @@
1
- {"version":3,"file":"question-options.js","sourceRoot":"","sources":["../../../src/tools/coordinator/question-options.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"question-options.js","sourceRoot":"","sources":["../../../src/tools/coordinator/question-options.ts"],"names":[],"mappings":"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"}
@@ -19,7 +19,8 @@ export interface DefineToolOptions<S extends z.ZodType> {
19
19
  /** Whether this exact call only observes state; conservative for unknown inputs. */
20
20
  readOnly: boolean | ((input: z.infer<S>) => boolean);
21
21
  destructive: boolean | ((input: z.infer<S>) => boolean);
22
- concurrencySafe: boolean;
22
+ /** Whether this exact call may run beside others; a function decides per call. */
23
+ concurrencySafe: boolean | ((input: z.infer<S>) => boolean);
23
24
  /** Whether this exact call sends the screen to the provider; see {@link ToolDefinition.capturesScreen}. */
24
25
  capturesScreen?: boolean | ((input: z.infer<S>) => boolean);
25
26
  /** Whether this exact call always needs a person's approval; see {@link ToolDefinition.requiresApproval}. */
@@ -28,6 +29,8 @@ export interface DefineToolOptions<S extends z.ZodType> {
28
29
  metadata?: Readonly<Record<string, unknown>>;
29
30
  /** Batch ordering boundary; see {@link ToolDefinition.executionBarrier}. */
30
31
  executionBarrier?: boolean;
32
+ /** The tool bounds its own output; see {@link ToolDefinition.selfLimitingOutput}. */
33
+ selfLimitingOutput?: boolean;
31
34
  tier?: string;
32
35
  /**
33
36
  * How this tool's call and result should be shown; see
@@ -1 +1 @@
1
- {"version":3,"file":"defineTool.d.ts","sourceRoot":"","sources":["../../src/tools/defineTool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"defineTool.d.ts","sourceRoot":"","sources":["../../src/tools/defineTool.ts"],"names":[],"mappings":"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"}
@@ -61,13 +61,18 @@ export function defineTool(options) {
61
61
  ...(options.executionBarrier !== undefined
62
62
  ? { executionBarrier: options.executionBarrier }
63
63
  : {}),
64
+ ...(options.selfLimitingOutput !== undefined
65
+ ? { selfLimitingOutput: options.selfLimitingOutput }
66
+ : {}),
64
67
  category: options.category,
65
68
  permissions: options.permissions,
66
69
  isReadOnly: typeof options.readOnly === 'function' ? options.readOnly : () => options.readOnly,
67
70
  isDestructive: typeof options.destructive === 'function'
68
71
  ? options.destructive
69
72
  : constantDestructive(options.destructive),
70
- isConcurrencySafe: () => options.concurrencySafe,
73
+ isConcurrencySafe: typeof options.concurrencySafe === 'function'
74
+ ? options.concurrencySafe
75
+ : () => options.concurrencySafe,
71
76
  ...(options.capturesScreen !== undefined
72
77
  ? {
73
78
  capturesScreen: typeof options.capturesScreen === 'function'
@@ -1 +1 @@
1
- {"version":3,"file":"defineTool.js","sourceRoot":"","sources":["../../src/tools/defineTool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"defineTool.js","sourceRoot":"","sources":["../../src/tools/defineTool.ts"],"names":[],"mappings":"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"}
@@ -96,4 +96,10 @@ export declare function isWithin(root: string, candidate: string): boolean;
96
96
  * process on the user's own machine.
97
97
  */
98
98
  export declare function resolveWithinReal(root: string, candidate: string | undefined): Promise<string>;
99
+ /**
100
+ * The canonical form of an absolute path that may not exist: the deepest
101
+ * existing ancestor with its links resolved, and the rest appended as
102
+ * written. A path of which nothing exists is returned as it stands.
103
+ */
104
+ export declare function canonicalize(absolute: string): Promise<string>;
99
105
  //# sourceMappingURL=paths.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/tools/paths.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAejF;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,sBAAsB,GAAI,OAAO,MAAM,KAAG,MAC6L,CAAA;AAEpP;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE;IAClC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAA;IACjC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAClD,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAC1C,GAAG,SAAS,MAAM,EAAE,CAMpB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,gBAAgB,CACrC,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,SAAS,EAAE,MAAM,GAAG,SAAS,GAC3B,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAU7B;AAWD,yEAAyE;AACzE,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAchG;AAED,gGAAgG;AAChG,wBAAsB,oBAAoB,CACzC,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,SAAS,EAAE,MAAM,GAAG,SAAS,GAC3B,OAAO,CAAC,MAAM,CAAC,CAoBjB;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAOjE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,wBAAsB,iBAAiB,CACtC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,GAAG,SAAS,GAC3B,OAAO,CAAC,MAAM,CAAC,CA0BjB"}
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/tools/paths.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAejF;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,sBAAsB,GAAI,OAAO,MAAM,KAAG,MAC6L,CAAA;AAEpP;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE;IAClC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAA;IACjC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAClD,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAC1C,GAAG,SAAS,MAAM,EAAE,CAMpB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,gBAAgB,CACrC,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,SAAS,EAAE,MAAM,GAAG,SAAS,GAC3B,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAU7B;AAWD,yEAAyE;AACzE,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAchG;AAED,gGAAgG;AAChG,wBAAsB,oBAAoB,CACzC,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,SAAS,EAAE,MAAM,GAAG,SAAS,GAC3B,OAAO,CAAC,MAAM,CAAC,CAoBjB;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAOjE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,wBAAsB,iBAAiB,CACtC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,GAAG,SAAS,GAC3B,OAAO,CAAC,MAAM,CAAC,CA0BjB;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAkBpE"}
@@ -200,7 +200,7 @@ export async function resolveWithinReal(root, candidate) {
200
200
  * existing ancestor with its links resolved, and the rest appended as
201
201
  * written. A path of which nothing exists is returned as it stands.
202
202
  */
203
- async function canonicalize(absolute) {
203
+ export async function canonicalize(absolute) {
204
204
  // Walk up to the deepest existing ancestor. Terminates at the filesystem
205
205
  // root, where `dirname` becomes a fixed point.
206
206
  let existing = absolute;