kiokuko-dsh 0.2.1 → 0.2.3

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 (353) hide show
  1. package/PERMISSIONS.md +21 -28
  2. package/README.ja.md +8 -6
  3. package/README.md +12 -6
  4. package/THIRD_PARTY_NOTICES.md +8 -0
  5. package/dist/client.cjs +2248 -1383
  6. package/dist/client.d.ts +3 -1
  7. package/dist/client.d.ts.map +1 -1
  8. package/dist/context/continuity-view.d.ts +1 -1
  9. package/dist/deep-thinker/configuration.d.ts.map +1 -1
  10. package/dist/deep-thinker/configuration.js +8 -5
  11. package/dist/deep-thinker/configuration.js.map +1 -1
  12. package/dist/deep-thinker/core/contracts.d.ts +107 -13
  13. package/dist/deep-thinker/core/contracts.d.ts.map +1 -1
  14. package/dist/deep-thinker/core/contracts.js +4 -2
  15. package/dist/deep-thinker/core/contracts.js.map +1 -1
  16. package/dist/deep-thinker/memory-finalizer.d.ts +10 -10
  17. package/dist/deep-thinker/memory-finalizer.js +2 -2
  18. package/dist/deep-thinker/memory-finalizer.js.map +1 -1
  19. package/dist/deep-thinker/report.d.ts +1 -1
  20. package/dist/deep-thinker/store.d.ts +10 -10
  21. package/dist/deep-thinker/store.d.ts.map +1 -1
  22. package/dist/deep-thinker/store.js +2 -2
  23. package/dist/deep-thinker/store.js.map +1 -1
  24. package/dist/dsh/coding-workflow/contracts.d.ts +120 -0
  25. package/dist/dsh/coding-workflow/contracts.d.ts.map +1 -0
  26. package/dist/dsh/coding-workflow/contracts.js +77 -0
  27. package/dist/dsh/coding-workflow/contracts.js.map +1 -0
  28. package/dist/dsh/coding-workflow/host.d.ts +41 -0
  29. package/dist/dsh/coding-workflow/host.d.ts.map +1 -0
  30. package/dist/dsh/coding-workflow/host.js +235 -0
  31. package/dist/dsh/coding-workflow/host.js.map +1 -0
  32. package/dist/dsh/coding-workflow/intent.d.ts +15 -0
  33. package/dist/dsh/coding-workflow/intent.d.ts.map +1 -0
  34. package/dist/dsh/coding-workflow/intent.js +86 -0
  35. package/dist/dsh/coding-workflow/intent.js.map +1 -0
  36. package/dist/dsh/coding-workflow/service.d.ts +155 -0
  37. package/dist/dsh/coding-workflow/service.d.ts.map +1 -0
  38. package/dist/dsh/coding-workflow/service.js +282 -0
  39. package/dist/dsh/coding-workflow/service.js.map +1 -0
  40. package/dist/dsh/coding-workflow/store.d.ts +17 -0
  41. package/dist/dsh/coding-workflow/store.d.ts.map +1 -0
  42. package/dist/dsh/coding-workflow/store.js +77 -0
  43. package/dist/dsh/coding-workflow/store.js.map +1 -0
  44. package/dist/dsh/completion-verifiers.d.ts +39 -0
  45. package/dist/dsh/completion-verifiers.d.ts.map +1 -0
  46. package/dist/dsh/completion-verifiers.js +9 -0
  47. package/dist/dsh/completion-verifiers.js.map +1 -0
  48. package/dist/dsh/config.d.ts +5 -1
  49. package/dist/dsh/config.d.ts.map +1 -1
  50. package/dist/dsh/core/host.d.ts +1 -1
  51. package/dist/dsh/core/host.d.ts.map +1 -1
  52. package/dist/dsh/core/host.js +97 -11
  53. package/dist/dsh/core/host.js.map +1 -1
  54. package/dist/dsh/core/index.d.ts +4 -4
  55. package/dist/dsh/core/index.js +2 -2
  56. package/dist/dsh/core/index.js.map +1 -1
  57. package/dist/dsh/core/tasks.d.ts +2 -0
  58. package/dist/dsh/core/tasks.d.ts.map +1 -1
  59. package/dist/dsh/core/tasks.js +43 -1
  60. package/dist/dsh/core/tasks.js.map +1 -1
  61. package/dist/dsh/core-runtime.d.ts +1 -0
  62. package/dist/dsh/core-runtime.d.ts.map +1 -1
  63. package/dist/dsh/core-runtime.js +4 -1
  64. package/dist/dsh/core-runtime.js.map +1 -1
  65. package/dist/dsh/decisions/config.d.ts +2 -2
  66. package/dist/dsh/enno-delegation.js +2 -2
  67. package/dist/dsh/enno-delegation.js.map +1 -1
  68. package/dist/dsh/execution-command.d.ts +4 -0
  69. package/dist/dsh/execution-command.d.ts.map +1 -0
  70. package/dist/dsh/execution-command.js +52 -0
  71. package/dist/dsh/execution-command.js.map +1 -0
  72. package/dist/dsh/execution-journal.d.ts +17 -0
  73. package/dist/dsh/execution-journal.d.ts.map +1 -0
  74. package/dist/dsh/execution-journal.js +69 -0
  75. package/dist/dsh/execution-journal.js.map +1 -0
  76. package/dist/dsh/execution-result.d.ts +20 -0
  77. package/dist/dsh/execution-result.d.ts.map +1 -0
  78. package/dist/dsh/execution-result.js +7 -0
  79. package/dist/dsh/execution-result.js.map +1 -0
  80. package/dist/dsh/execution-selection.d.ts +150 -23
  81. package/dist/dsh/execution-selection.d.ts.map +1 -1
  82. package/dist/dsh/execution-selection.js +18 -6
  83. package/dist/dsh/execution-selection.js.map +1 -1
  84. package/dist/dsh/host-adapter/admission.d.ts.map +1 -1
  85. package/dist/dsh/host-adapter/admission.js +33 -22
  86. package/dist/dsh/host-adapter/admission.js.map +1 -1
  87. package/dist/dsh/host-adapter/boundaries.d.ts.map +1 -1
  88. package/dist/dsh/host-adapter/boundaries.js +2 -0
  89. package/dist/dsh/host-adapter/boundaries.js.map +1 -1
  90. package/dist/dsh/host-adapter/context.d.ts.map +1 -1
  91. package/dist/dsh/host-adapter/context.js +18 -13
  92. package/dist/dsh/host-adapter/context.js.map +1 -1
  93. package/dist/dsh/host-adapter/lifecycle.d.ts.map +1 -1
  94. package/dist/dsh/host-adapter/lifecycle.js +12 -0
  95. package/dist/dsh/host-adapter/lifecycle.js.map +1 -1
  96. package/dist/dsh/host-adapter/routing.js +1 -1
  97. package/dist/dsh/host-adapter/routing.js.map +1 -1
  98. package/dist/dsh/host-adapter/turn-state.js +1 -1
  99. package/dist/dsh/host-adapter/turn-state.js.map +1 -1
  100. package/dist/dsh/host-adapter.d.ts.map +1 -1
  101. package/dist/dsh/host-adapter.js +61 -18
  102. package/dist/dsh/host-adapter.js.map +1 -1
  103. package/dist/dsh/index.d.ts +4 -2
  104. package/dist/dsh/index.d.ts.map +1 -1
  105. package/dist/dsh/index.js +7 -0
  106. package/dist/dsh/index.js.map +1 -1
  107. package/dist/dsh/intake-gate.d.ts +1 -0
  108. package/dist/dsh/intake-gate.d.ts.map +1 -1
  109. package/dist/dsh/intake-gate.js +9 -1
  110. package/dist/dsh/intake-gate.js.map +1 -1
  111. package/dist/dsh/lisp/approval.d.ts +2 -1
  112. package/dist/dsh/lisp/approval.d.ts.map +1 -1
  113. package/dist/dsh/lisp/approval.js +4 -3
  114. package/dist/dsh/lisp/approval.js.map +1 -1
  115. package/dist/dsh/lisp/candidate.d.ts +1 -1
  116. package/dist/dsh/lisp/code-intelligence-contracts.d.ts +78 -0
  117. package/dist/dsh/lisp/code-intelligence-contracts.d.ts.map +1 -0
  118. package/dist/dsh/lisp/code-intelligence-contracts.js +54 -0
  119. package/dist/dsh/lisp/code-intelligence-contracts.js.map +1 -0
  120. package/dist/dsh/lisp/code-intelligence-provider.d.ts +116 -0
  121. package/dist/dsh/lisp/code-intelligence.d.ts +13 -0
  122. package/dist/dsh/lisp/code-intelligence.d.ts.map +1 -0
  123. package/dist/dsh/lisp/code-intelligence.js +181 -0
  124. package/dist/dsh/lisp/code-intelligence.js.map +1 -0
  125. package/dist/dsh/lisp/coding-choice.d.ts +4 -1
  126. package/dist/dsh/lisp/coding-choice.d.ts.map +1 -1
  127. package/dist/dsh/lisp/coding-choice.js +26 -10
  128. package/dist/dsh/lisp/coding-choice.js.map +1 -1
  129. package/dist/dsh/lisp/compiled-cache.d.ts.map +1 -1
  130. package/dist/dsh/lisp/compiled-cache.js +3 -2
  131. package/dist/dsh/lisp/compiled-cache.js.map +1 -1
  132. package/dist/dsh/lisp/contracts.d.ts +4 -0
  133. package/dist/dsh/lisp/contracts.d.ts.map +1 -1
  134. package/dist/dsh/lisp/contracts.js +1 -0
  135. package/dist/dsh/lisp/contracts.js.map +1 -1
  136. package/dist/dsh/lisp/manager.d.ts +9 -1
  137. package/dist/dsh/lisp/manager.d.ts.map +1 -1
  138. package/dist/dsh/lisp/manager.js +91 -24
  139. package/dist/dsh/lisp/manager.js.map +1 -1
  140. package/dist/dsh/lisp/model-result.d.ts.map +1 -1
  141. package/dist/dsh/lisp/model-result.js +35 -1
  142. package/dist/dsh/lisp/model-result.js.map +1 -1
  143. package/dist/dsh/lisp/proposal-batch.d.ts +2 -0
  144. package/dist/dsh/lisp/proposal-batch.d.ts.map +1 -1
  145. package/dist/dsh/lisp/proposal-batch.js +32 -2
  146. package/dist/dsh/lisp/proposal-batch.js.map +1 -1
  147. package/dist/dsh/lisp/request-surface.d.ts +12 -2
  148. package/dist/dsh/lisp/request-surface.d.ts.map +1 -1
  149. package/dist/dsh/lisp/request-surface.js +1 -1
  150. package/dist/dsh/lisp/request-surface.js.map +1 -1
  151. package/dist/dsh/lisp/sandbox.d.ts +3 -0
  152. package/dist/dsh/lisp/sandbox.d.ts.map +1 -1
  153. package/dist/dsh/lisp/sandbox.js +13 -6
  154. package/dist/dsh/lisp/sandbox.js.map +1 -1
  155. package/dist/dsh/lisp/surface.d.ts +1 -1
  156. package/dist/dsh/lisp/surface.d.ts.map +1 -1
  157. package/dist/dsh/lisp/surface.js +118 -23
  158. package/dist/dsh/lisp/surface.js.map +1 -1
  159. package/dist/dsh/lisp/worker.d.ts +2 -0
  160. package/dist/dsh/lisp/worker.d.ts.map +1 -1
  161. package/dist/dsh/lisp/worker.js +7 -5
  162. package/dist/dsh/lisp/worker.js.map +1 -1
  163. package/dist/dsh/lisp-service-key.d.ts +9 -0
  164. package/dist/dsh/lisp-service-key.d.ts.map +1 -1
  165. package/dist/dsh/lisp-service-key.js +11 -0
  166. package/dist/dsh/lisp-service-key.js.map +1 -1
  167. package/dist/dsh/memory-application.d.ts +1 -1
  168. package/dist/dsh/memory-application.d.ts.map +1 -1
  169. package/dist/dsh/memory-application.js +4 -3
  170. package/dist/dsh/memory-application.js.map +1 -1
  171. package/dist/dsh/model-auto/candidates.d.ts.map +1 -1
  172. package/dist/dsh/model-auto/candidates.js +31 -22
  173. package/dist/dsh/model-auto/candidates.js.map +1 -1
  174. package/dist/dsh/model-configuration.d.ts +145 -2
  175. package/dist/dsh/model-configuration.d.ts.map +1 -1
  176. package/dist/dsh/model-configuration.js +10 -3
  177. package/dist/dsh/model-configuration.js.map +1 -1
  178. package/dist/dsh/model-selection-ui.d.ts.map +1 -1
  179. package/dist/dsh/model-selection-ui.js +7 -2
  180. package/dist/dsh/model-selection-ui.js.map +1 -1
  181. package/dist/dsh/models/config-store.d.ts +8 -0
  182. package/dist/dsh/models/config-store.d.ts.map +1 -0
  183. package/dist/dsh/models/config-store.js +49 -0
  184. package/dist/dsh/models/config-store.js.map +1 -0
  185. package/dist/dsh/models/contracts.d.ts +107 -0
  186. package/dist/dsh/models/contracts.d.ts.map +1 -0
  187. package/dist/dsh/models/contracts.js +104 -0
  188. package/dist/dsh/models/contracts.js.map +1 -0
  189. package/dist/dsh/models/metadata.d.ts +7 -0
  190. package/dist/dsh/models/metadata.d.ts.map +1 -0
  191. package/dist/dsh/models/metadata.js +13 -0
  192. package/dist/dsh/models/metadata.js.map +1 -0
  193. package/dist/dsh/models/profiles.d.ts +10 -0
  194. package/dist/dsh/models/profiles.d.ts.map +1 -0
  195. package/dist/dsh/models/profiles.js +176 -0
  196. package/dist/dsh/models/profiles.js.map +1 -0
  197. package/dist/dsh/models/service.d.ts +97 -0
  198. package/dist/dsh/models/service.d.ts.map +1 -0
  199. package/dist/dsh/models/service.js +518 -0
  200. package/dist/dsh/models/service.js.map +1 -0
  201. package/dist/dsh/models/surface.d.ts +8 -0
  202. package/dist/dsh/models/surface.d.ts.map +1 -0
  203. package/dist/dsh/models/surface.js +162 -0
  204. package/dist/dsh/models/surface.js.map +1 -0
  205. package/dist/dsh/models/vendor/THIRD_PARTY_NOTICES.txt +134 -0
  206. package/dist/dsh/models/vendor/abortable.d.ts +3 -0
  207. package/dist/dsh/models/vendor/abortable.d.ts.map +1 -0
  208. package/dist/dsh/models/vendor/abortable.js +10 -0
  209. package/dist/dsh/models/vendor/abortable.js.map +1 -0
  210. package/dist/dsh/models/vendor/auth-contract.d.ts +67 -0
  211. package/dist/dsh/models/vendor/auth-contract.d.ts.map +1 -0
  212. package/dist/dsh/models/vendor/auth-contract.js +2 -0
  213. package/dist/dsh/models/vendor/auth-contract.js.map +1 -0
  214. package/dist/dsh/models/vendor/credentials.d.ts +58 -0
  215. package/dist/dsh/models/vendor/credentials.d.ts.map +1 -0
  216. package/dist/dsh/models/vendor/credentials.js +205 -0
  217. package/dist/dsh/models/vendor/credentials.js.map +1 -0
  218. package/dist/dsh/models/vendor/nous-oauth.d.ts +6 -0
  219. package/dist/dsh/models/vendor/nous-oauth.d.ts.map +1 -0
  220. package/dist/dsh/models/vendor/nous-oauth.js +113 -0
  221. package/dist/dsh/models/vendor/nous-oauth.js.map +1 -0
  222. package/dist/dsh/models/vendor/opencode-adapter.d.ts +38 -0
  223. package/dist/dsh/models/vendor/opencode-adapter.d.ts.map +1 -0
  224. package/dist/dsh/models/vendor/opencode-adapter.js +207 -0
  225. package/dist/dsh/models/vendor/opencode-adapter.js.map +1 -0
  226. package/dist/dsh/models/vendor/opencode-catalog.d.ts +73 -0
  227. package/dist/dsh/models/vendor/opencode-catalog.d.ts.map +1 -0
  228. package/dist/dsh/models/vendor/opencode-catalog.js +253 -0
  229. package/dist/dsh/models/vendor/opencode-catalog.js.map +1 -0
  230. package/dist/dsh/models/vendor/opencode-codec.d.ts +7 -0
  231. package/dist/dsh/models/vendor/opencode-codec.d.ts.map +1 -0
  232. package/dist/dsh/models/vendor/opencode-codec.js +107 -0
  233. package/dist/dsh/models/vendor/opencode-codec.js.map +1 -0
  234. package/dist/dsh/models/vendor/opencode-owned.generated.d.ts +114 -0
  235. package/dist/dsh/models/vendor/opencode-owned.generated.d.ts.map +1 -0
  236. package/dist/dsh/models/vendor/opencode-owned.generated.js +2867 -0
  237. package/dist/dsh/models/vendor/opencode-owned.generated.js.map +1 -0
  238. package/dist/dsh/models/vendor/opencode-replay.d.ts +17 -0
  239. package/dist/dsh/models/vendor/opencode-replay.d.ts.map +1 -0
  240. package/dist/dsh/models/vendor/opencode-replay.js +147 -0
  241. package/dist/dsh/models/vendor/opencode-replay.js.map +1 -0
  242. package/dist/dsh/models/vendor/opencode-sdk.d.ts +6 -0
  243. package/dist/dsh/models/vendor/opencode-sdk.d.ts.map +1 -0
  244. package/dist/dsh/models/vendor/opencode-sdk.js +49915 -0
  245. package/dist/dsh/models/vendor/opencode-sdk.js.map +7 -0
  246. package/dist/dsh/models/vendor/opencode-transport.d.ts +6 -0
  247. package/dist/dsh/models/vendor/opencode-transport.d.ts.map +1 -0
  248. package/dist/dsh/models/vendor/opencode-transport.js +70 -0
  249. package/dist/dsh/models/vendor/opencode-transport.js.map +1 -0
  250. package/dist/dsh/models/vendor/pi-ai.d.ts +23 -0
  251. package/dist/dsh/models/vendor/pi-ai.d.ts.map +1 -0
  252. package/dist/dsh/models/vendor/pi-ai.js +27 -0
  253. package/dist/dsh/models/vendor/pi-ai.js.map +1 -0
  254. package/dist/dsh/modules/lisp.d.ts +1 -1
  255. package/dist/dsh/modules/lisp.d.ts.map +1 -1
  256. package/dist/dsh/modules/lisp.js +2 -13
  257. package/dist/dsh/modules/lisp.js.map +1 -1
  258. package/dist/dsh/modules/resources.d.ts +3 -1
  259. package/dist/dsh/modules/resources.d.ts.map +1 -1
  260. package/dist/dsh/modules/resources.js +4 -0
  261. package/dist/dsh/modules/resources.js.map +1 -1
  262. package/dist/dsh/native-model-catalog.d.ts.map +1 -1
  263. package/dist/dsh/native-model-catalog.js +4 -3
  264. package/dist/dsh/native-model-catalog.js.map +1 -1
  265. package/dist/dsh/node-tap-summary.d.ts +8 -1
  266. package/dist/dsh/node-tap-summary.d.ts.map +1 -1
  267. package/dist/dsh/node-tap-summary.js +33 -3
  268. package/dist/dsh/node-tap-summary.js.map +1 -1
  269. package/dist/dsh/on-demand-intake.d.ts +1 -1
  270. package/dist/dsh/on-demand-intake.d.ts.map +1 -1
  271. package/dist/dsh/on-demand-intake.js +35 -14
  272. package/dist/dsh/on-demand-intake.js.map +1 -1
  273. package/dist/dsh/owned-evidence.d.ts +49 -0
  274. package/dist/dsh/owned-evidence.d.ts.map +1 -0
  275. package/dist/dsh/owned-evidence.js +69 -0
  276. package/dist/dsh/owned-evidence.js.map +1 -0
  277. package/dist/dsh/owned-execution.d.ts +99 -0
  278. package/dist/dsh/owned-execution.d.ts.map +1 -0
  279. package/dist/dsh/owned-execution.js +558 -0
  280. package/dist/dsh/owned-execution.js.map +1 -0
  281. package/dist/dsh/plan-transition.d.ts +5 -0
  282. package/dist/dsh/plan-transition.d.ts.map +1 -0
  283. package/dist/dsh/plan-transition.js +34 -0
  284. package/dist/dsh/plan-transition.js.map +1 -0
  285. package/dist/dsh/session-memory-finalizer.d.ts.map +1 -1
  286. package/dist/dsh/session-memory-finalizer.js +46 -3
  287. package/dist/dsh/session-memory-finalizer.js.map +1 -1
  288. package/dist/dsh/setup.d.ts +1 -1
  289. package/dist/dsh/setup.d.ts.map +1 -1
  290. package/dist/dsh/setup.js +2 -0
  291. package/dist/dsh/setup.js.map +1 -1
  292. package/dist/dsh/skill-prompts.json +1 -1
  293. package/dist/dsh/task-completion-host.js +3 -3
  294. package/dist/dsh/task-completion-host.js.map +1 -1
  295. package/dist/dsh/task-completion.d.ts +17 -0
  296. package/dist/dsh/task-completion.d.ts.map +1 -1
  297. package/dist/dsh/task-completion.js +144 -38
  298. package/dist/dsh/task-completion.js.map +1 -1
  299. package/dist/dsh/task-intake.d.ts.map +1 -1
  300. package/dist/dsh/task-intake.js +7 -0
  301. package/dist/dsh/task-intake.js.map +1 -1
  302. package/dist/enno-oduno/coding-workflow.d.ts +39 -0
  303. package/dist/enno-oduno/coding-workflow.d.ts.map +1 -0
  304. package/dist/enno-oduno/coding-workflow.js +33 -0
  305. package/dist/enno-oduno/coding-workflow.js.map +1 -0
  306. package/dist/enno-oduno/schemas.d.ts +10 -10
  307. package/dist/enno-oduno/store.d.ts.map +1 -1
  308. package/dist/enno-oduno/store.js +56 -1
  309. package/dist/enno-oduno/store.js.map +1 -1
  310. package/dist/enno-oduno/types.d.ts +1 -0
  311. package/dist/enno-oduno/types.d.ts.map +1 -1
  312. package/dist/enno-oduno/verifier.d.ts.map +1 -1
  313. package/dist/enno-oduno/verifier.js +4 -1
  314. package/dist/enno-oduno/verifier.js.map +1 -1
  315. package/dist/locale/en.json +1 -1
  316. package/dist/locale/ja.json +1 -1
  317. package/dist/locale/ko.json +1 -1
  318. package/dist/locale/zh-CN.json +1 -1
  319. package/dist/memory/application.d.ts +2 -1
  320. package/dist/memory/application.d.ts.map +1 -1
  321. package/dist/memory/application.js +26 -12
  322. package/dist/memory/application.js.map +1 -1
  323. package/dist/memory/evidence.d.ts +2 -0
  324. package/dist/memory/evidence.d.ts.map +1 -1
  325. package/dist/memory/evidence.js +3 -1
  326. package/dist/memory/evidence.js.map +1 -1
  327. package/dist/model-tools/contracts.d.ts +4 -4
  328. package/dist/models-client.cjs +635 -0
  329. package/dist/models-client.d.ts +26 -0
  330. package/dist/models-client.d.ts.map +1 -0
  331. package/dist/models-client.js +642 -0
  332. package/dist/models-client.js.map +1 -0
  333. package/docs/code-intelligence.md +149 -0
  334. package/docs/coding-workflow.md +45 -0
  335. package/docs/dsh-auth-LICENSE.txt +22 -0
  336. package/docs/dsh-auth-provenance.md +25 -0
  337. package/docs/dsh-plugin.md +19 -0
  338. package/docs/execution-support.md +4 -0
  339. package/docs/kiokuko-models.md +66 -0
  340. package/docs/lisp-hot-tools.md +2 -2
  341. package/docs/lisp.md +112 -63
  342. package/docs/model-selection.ja.md +7 -9
  343. package/docs/model-selection.md +14 -12
  344. package/docs/owned-execution.md +99 -0
  345. package/lisp/supervisor.mjs +8 -2
  346. package/lisp/tools.lisp +31 -3
  347. package/migrations/035_owned_execution.sql +19 -0
  348. package/migrations/036_coding_workflow.sql +26 -0
  349. package/package.json +47 -12
  350. package/skills/coding-ideal-routine-skill/SKILL.md +6 -0
  351. package/skills/kiokuko-lisp/SKILL.md +53 -67
  352. package/skills/kiokuko-soul/SKILL.md +7 -28
  353. package/skills/one-shot-software-completion/SKILL.md +5 -6
@@ -0,0 +1,6 @@
1
+ /** Protocol SDKs serialize the wire; the owned descriptor controls model settings. */
2
+ import type { GenerateOptions } from '@deepseek-ai/dsh-llm';
3
+ import type { LanguageModelV4, LanguageModelV4Prompt } from '@ai-sdk/provider';
4
+ import { type OpenCodeModel } from './opencode-catalog.js';
5
+ export declare function createTransport(descriptor: OpenCodeModel, options: GenerateOptions, apiKey: string, headers: Record<string, string>, prompt: LanguageModelV4Prompt, fetcher?: typeof fetch): LanguageModelV4;
6
+ //# sourceMappingURL=opencode-transport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opencode-transport.d.ts","sourceRoot":"","sources":["../../../../src/dsh/models/vendor/opencode-transport.ts"],"names":[],"mappings":"AAAA,sFAAsF;AACtF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAA;AAE9E,OAAO,EAAkB,KAAK,aAAa,EAAsB,MAAM,uBAAuB,CAAA;AAC9F,wBAAgB,eAAe,CAAC,UAAU,EAAE,aAAa,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,qBAAqB,EAAE,OAAO,GAAE,OAAO,KAAa,GAAG,eAAe,CAsDnN"}
@@ -0,0 +1,70 @@
1
+ import { createAnthropic, createOpenAI, createGoogleGenerativeAI, createOpenAICompatible } from './opencode-sdk.js';
2
+ import { OPEN_CODE_URLS } from './opencode-catalog.js';
3
+ export function createTransport(descriptor, options, apiKey, headers, prompt, fetcher = fetch) {
4
+ const baseURL = OPEN_CODE_URLS[options.provider];
5
+ if (!baseURL)
6
+ throw new Error('Unknown OpenCode route');
7
+ const fixedFetch = async (input, init) => {
8
+ const url = typeof input === 'string' ? input : input instanceof URL ? input.href : input.url;
9
+ if (!new URL(url).href.startsWith(`${baseURL}/`))
10
+ throw new Error('OpenCode SDK attempted to leave its fixed route');
11
+ // SDK serializers keep their protocol codecs; all model settings come
12
+ // from our descriptor, overriding any SDK id-based limits or enums.
13
+ if (typeof init?.body === 'string') {
14
+ const body = JSON.parse(init.body);
15
+ const effort = descriptor.reasoning ? options.reasoningEffort : undefined;
16
+ const maxTokens = options.maxTokens ?? descriptor.maxTokens;
17
+ const sampling = descriptor.protocol === 'google' ? (body.generationConfig ??= {}) : body;
18
+ if (descriptor.temperature && options.temperature !== undefined)
19
+ sampling.temperature = options.temperature;
20
+ else
21
+ delete sampling.temperature;
22
+ switch (descriptor.protocol) {
23
+ case 'messages':
24
+ body.max_tokens = maxTokens;
25
+ // Effort works independently of thinking. Do not invent an
26
+ // adaptive mode or budget for models advertising only effort.
27
+ // https://platform.claude.com/docs/en/build-with-claude/effort
28
+ if (effort)
29
+ body.output_config = { ...body.output_config, effort };
30
+ break;
31
+ case 'responses': {
32
+ body.store = false;
33
+ const ids = new Map(prompt.flatMap(message => message.role === 'assistant' ? message.content.flatMap(part => part.type === 'tool-call' && typeof part.providerOptions?.openai?.itemId === 'string' ? [[part.toolCallId, part.providerOptions.openai.itemId]] : []) : []));
34
+ for (const item of body.input ?? [])
35
+ if (item.type === 'function_call' && ids.has(item.call_id))
36
+ item.id = ids.get(item.call_id);
37
+ body.max_output_tokens = maxTokens;
38
+ if (descriptor.reasoning) {
39
+ body.include = [...new Set([...(body.include ?? []), 'reasoning.encrypted_content'])];
40
+ if (effort)
41
+ body.reasoning = { effort };
42
+ }
43
+ else
44
+ delete body.reasoning;
45
+ break;
46
+ }
47
+ case 'chat':
48
+ body.max_tokens = maxTokens;
49
+ if (effort)
50
+ body.reasoning_effort = effort;
51
+ break;
52
+ case 'google':
53
+ sampling.maxOutputTokens = maxTokens;
54
+ if (effort)
55
+ sampling.thinkingConfig = { ...sampling.thinkingConfig, thinkingLevel: effort, includeThoughts: true };
56
+ break;
57
+ }
58
+ init = { ...init, body: JSON.stringify(body) };
59
+ }
60
+ return fetcher(input, { ...init, redirect: 'error' });
61
+ };
62
+ const settings = { baseURL, apiKey, headers, fetch: fixedFetch };
63
+ switch (descriptor.protocol) {
64
+ case 'messages': return createAnthropic(settings)(descriptor.id);
65
+ case 'responses': return createOpenAI(settings).responses(descriptor.id);
66
+ case 'google': return createGoogleGenerativeAI(settings)(descriptor.id);
67
+ case 'chat': return createOpenAICompatible({ ...settings, name: 'opencode' })(descriptor.id);
68
+ }
69
+ }
70
+ //# sourceMappingURL=opencode-transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opencode-transport.js","sourceRoot":"","sources":["../../../../src/dsh/models/vendor/opencode-transport.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * The pi-ai instance owned by the installed dsh-llm-pi-ai adapter.
3
+ *
4
+ * Loading a second catalog from dsh-auth and handing its Provider objects to
5
+ * the adapter crosses package instances and is neither type- nor runtime-safe.
6
+ * Resolve the adapter's own dependency instead, and derive every public type
7
+ * from the adapter contract so this package owns no pi-ai version.
8
+ */
9
+ import type { PiAiAdapterOptions, ResolvedPiAiProviderProfile } from '@deepseek-ai/dsh-llm-pi-ai';
10
+ export type PiAiProvider = NonNullable<ResolvedPiAiProviderProfile['piProvider']>;
11
+ type PiAiAuth = PiAiAdapterOptions['auth'];
12
+ export type PiAiAuthContext = PiAiAuth['authContext'];
13
+ export type PiAiCredentialStore = PiAiAuth['credentials'];
14
+ export type PiAiCredential = NonNullable<Awaited<ReturnType<PiAiCredentialStore['read']>>>;
15
+ export type PiAiCredentialInfo = Awaited<ReturnType<PiAiCredentialStore['list']>>[number];
16
+ type PiAiOAuth = NonNullable<PiAiProvider['auth']['oauth']>;
17
+ export type PiAiAuthInteraction = Parameters<PiAiOAuth['login']>[0];
18
+ export type PiAiAuthPrompt = Parameters<PiAiAuthInteraction['prompt']>[0];
19
+ export type PiAiAuthEvent = Parameters<PiAiAuthInteraction['notify']>[0];
20
+ /** Fresh Provider objects from the exact pi-ai module used by dsh-llm-pi-ai. */
21
+ export declare const adapterBuiltinProviders: () => readonly PiAiProvider[];
22
+ export {};
23
+ //# sourceMappingURL=pi-ai.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pi-ai.d.ts","sourceRoot":"","sources":["../../../../src/dsh/models/vendor/pi-ai.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,OAAO,KAAK,EAAE,kBAAkB,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAA;AAGjG,MAAM,MAAM,YAAY,GAAG,WAAW,CAAC,2BAA2B,CAAC,YAAY,CAAC,CAAC,CAAA;AAEjF,KAAK,QAAQ,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAA;AAC1C,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAA;AACrD,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAA;AACzD,MAAM,MAAM,cAAc,GAAG,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;AAC1F,MAAM,MAAM,kBAAkB,GAAG,OAAO,CAAC,UAAU,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;AAEzF,KAAK,SAAS,GAAG,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAA;AAC3D,MAAM,MAAM,mBAAmB,GAAG,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AACnE,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AACzE,MAAM,MAAM,aAAa,GAAG,UAAU,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAmBxE,gFAAgF;AAChF,eAAO,MAAM,uBAAuB,QAjBd,SAAS,YAAY,EAiBoB,CAAA"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * The pi-ai instance owned by the installed dsh-llm-pi-ai adapter.
3
+ *
4
+ * Loading a second catalog from dsh-auth and handing its Provider objects to
5
+ * the adapter crosses package instances and is neither type- nor runtime-safe.
6
+ * Resolve the adapter's own dependency instead, and derive every public type
7
+ * from the adapter contract so this package owns no pi-ai version.
8
+ */
9
+ import { existsSync } from 'node:fs';
10
+ import { createRequire } from 'node:module';
11
+ import { join } from 'node:path';
12
+ import { pathToFileURL } from 'node:url';
13
+ /** Locate the first pi-ai catalog Node would resolve from dsh-llm-pi-ai. */
14
+ function adapterCatalogUrl() {
15
+ const adapterManifest = import.meta.resolve('@deepseek-ai/dsh-llm-pi-ai/package.json');
16
+ const require = createRequire(adapterManifest);
17
+ for (const root of require.resolve.paths('@earendil-works/pi-ai') ?? []) {
18
+ const catalog = join(root, '@earendil-works', 'pi-ai', 'dist', 'providers', 'all.js');
19
+ if (existsSync(catalog))
20
+ return pathToFileURL(catalog).href;
21
+ }
22
+ throw new Error('dsh-auth: dsh-llm-pi-ai has no resolvable pi-ai provider catalog');
23
+ }
24
+ const catalog = await import(adapterCatalogUrl());
25
+ /** Fresh Provider objects from the exact pi-ai module used by dsh-llm-pi-ai. */
26
+ export const adapterBuiltinProviders = catalog.builtinProviders;
27
+ //# sourceMappingURL=pi-ai.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pi-ai.js","sourceRoot":"","sources":["../../../../src/dsh/models/vendor/pi-ai.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAqBxC,4EAA4E;AAC5E,SAAS,iBAAiB;IACxB,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAA;IACtF,MAAM,OAAO,GAAG,aAAa,CAAC,eAAe,CAAC,CAAA;IAC9C,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,IAAI,EAAE,EAAE,CAAC;QACxE,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAA;QACrF,IAAI,UAAU,CAAC,OAAO,CAAC;YAAE,OAAO,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,CAAA;IAC7D,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAA;AACrF,CAAC;AAED,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,iBAAiB,EAAE,CAA0B,CAAA;AAE1E,gFAAgF;AAChF,MAAM,CAAC,MAAM,uBAAuB,GAAG,OAAO,CAAC,gBAAgB,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import type { DshModule } from '../core/modules.js';
2
2
  import type { CoreModuleHost } from '../core/host.js';
3
- /** Protected execution stays host-owned. Unload preserves the existing root fence. */
3
+ /** Lisp uses the shared development executor; explicit protected mode retains its root fence. */
4
4
  export declare const lispModule: DshModule<CoreModuleHost>;
5
5
  //# sourceMappingURL=lisp.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"lisp.d.ts","sourceRoot":"","sources":["../../../src/dsh/modules/lisp.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAGrD,sFAAsF;AACtF,eAAO,MAAM,UAAU,EAAE,SAAS,CAAC,cAAc,CAiBhD,CAAA"}
1
+ {"version":3,"file":"lisp.d.ts","sourceRoot":"","sources":["../../../src/dsh/modules/lisp.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAGrD,iGAAiG;AACjG,eAAO,MAAM,UAAU,EAAE,SAAS,CAAC,cAAc,CAShD,CAAA"}
@@ -1,26 +1,15 @@
1
1
  import { LispConfig } from '../lisp/contracts.js';
2
2
  import { mountLispSurface } from '../lisp/surface.js';
3
- import { LISP_CODING_SERVICE } from '../lisp/coding-choice.js';
4
- import { resolveGroundedIntakeProfile } from '../intake-profile-resolver.js';
5
3
  import { bundledResources } from './resources.js';
6
- /** Protected execution stays host-owned. Unload preserves the existing root fence. */
4
+ /** Lisp uses the shared development executor; explicit protected mode retains its root fence. */
7
5
  export const lispModule = {
8
6
  id: 'lisp', coreVersion: 1, requires: ['tools', 'sessions', 'agents', 'commands'], conflicts: ['enno'],
9
7
  resources: bundledResources(['kiokuko-lisp']),
10
8
  configure: value => LispConfig.parse(value ?? {}),
11
9
  async mount({ host, defer }, configuration) {
12
10
  const surface = await mountLispSurface(host.context, host.runtime, LispConfig.parse(configuration), host.prompts, host.decisions, host.semanticCompaction);
13
- const unregister = host.beforeTask(async (input) => {
14
- const coding = host.context.get(LISP_CODING_SERVICE, false);
15
- if (!coding || !input.agent)
16
- return;
17
- const profile = resolveGroundedIntakeProfile({ task: input.task, cwd: input.cwd, deferTaskTypeInference: input.deferTaskTypeInference === true, ...(input.profileHints ? { profileHints: input.profileHints } : {}) });
18
- const selected = await coding.prepare({ agent: input.agent, task: input.task, taskType: profile.profileHints.taskType, turn: input.turn, signal: input.signal });
19
- return { taskType: selected.taskType, ...(selected.clarification ? { constraints: selected.clarification } : {}) };
20
- });
21
- defer(unregister);
22
11
  let drained;
23
- return { stopIngress() { unregister(); surface.stop(); }, drain() { return drained ??= surface.dispose(); }, async dispose() { } };
12
+ return { stopIngress() { surface.stop(); }, drain() { return drained ??= surface.dispose(); }, async dispose() { } };
24
13
  },
25
14
  };
26
15
  //# sourceMappingURL=lisp.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"lisp.js","sourceRoot":"","sources":["../../../src/dsh/modules/lisp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAE,mBAAmB,EAA0B,MAAM,0BAA0B,CAAA;AACtF,OAAO,EAAE,4BAA4B,EAAE,MAAM,+BAA+B,CAAA;AAG5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAEjD,sFAAsF;AACtF,MAAM,CAAC,MAAM,UAAU,GAA8B;IACnD,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC,MAAM,CAAC;IACtG,SAAS,EAAE,gBAAgB,CAAC,CAAC,cAAc,CAAC,CAAC;IAC7C,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;IACjD,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,aAAa;QACxC,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAA;QAC1J,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,EAAC,KAAK,EAAC,EAAE;YAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,KAAK,CAAkC,CAAA;YAC5F,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK;gBAAE,OAAM;YACnC,MAAM,OAAO,GAAG,4BAA4B,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,sBAAsB,EAAE,KAAK,CAAC,sBAAsB,KAAK,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;YACtN,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAA;YAChK,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAA;QACpH,CAAC,CAAC,CAAA;QACF,KAAK,CAAC,UAAU,CAAC,CAAA;QACjB,IAAI,OAAkC,CAAA;QACtC,OAAO,EAAE,WAAW,KAAK,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAA,CAAC,CAAC,EAAE,KAAK,KAAK,OAAO,OAAO,KAAK,OAAO,CAAC,OAAO,EAAE,CAAA,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,KAAI,CAAC,EAAE,CAAA;IACjI,CAAC;CACF,CAAA"}
1
+ {"version":3,"file":"lisp.js","sourceRoot":"","sources":["../../../src/dsh/modules/lisp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAGrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAEjD,iGAAiG;AACjG,MAAM,CAAC,MAAM,UAAU,GAA8B;IACnD,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC,MAAM,CAAC;IACtG,SAAS,EAAE,gBAAgB,CAAC,CAAC,cAAc,CAAC,CAAC;IAC7C,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;IACjD,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,aAAa;QACxC,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAA;QAC1J,IAAI,OAAkC,CAAA;QACtC,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,EAAE,CAAA,CAAC,CAAC,EAAE,KAAK,KAAK,OAAO,OAAO,KAAK,OAAO,CAAC,OAAO,EAAE,CAAA,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,KAAI,CAAC,EAAE,CAAA;IACnH,CAAC;CACF,CAAA"}
@@ -1,7 +1,9 @@
1
- import type { DshModule, ModuleResource } from '../core/modules.js';
1
+ import type { DshModule, ModuleResource, ModuleRegistration } from '../core/modules.js';
2
2
  /** Explicit trusted build inventory. Resource names never originate in user input. */
3
3
  export declare function bundledResources(names: readonly string[]): readonly ModuleResource[];
4
4
  export declare function skillModule<Host>(id: string, names: readonly string[]): DshModule<Host>;
5
5
  export declare const coreSkills: DshModule<unknown>;
6
6
  export declare const codingSkills: DshModule<unknown>;
7
+ /** Coding is a core workflow, including compositions without optional modules. */
8
+ export declare function withCoreSkills<Host>(registrations: readonly ModuleRegistration<Host>[]): readonly ModuleRegistration<Host>[];
7
9
  //# sourceMappingURL=resources.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../../../src/dsh/modules/resources.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAGnE,sFAAsF;AACtF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,cAAc,EAAE,CAKpF;AACD,wBAAgB,WAAW,CAAC,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,CAEvF;AACD,eAAO,MAAM,UAAU,oBAA8F,CAAA;AACrH,eAAO,MAAM,YAAY,oBAAsX,CAAA"}
1
+ {"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../../../src/dsh/modules/resources.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAGvF,sFAAsF;AACtF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,cAAc,EAAE,CAKpF;AACD,wBAAgB,WAAW,CAAC,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,CAEvF;AACD,eAAO,MAAM,UAAU,oBAA8F,CAAA;AACrH,eAAO,MAAM,YAAY,oBAAsX,CAAA;AAC/Y,kFAAkF;AAClF,wBAAgB,cAAc,CAAC,IAAI,EAAE,aAAa,EAAE,SAAS,kBAAkB,CAAC,IAAI,CAAC,EAAE,GAAG,SAAS,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAE5H"}
@@ -13,4 +13,8 @@ export function skillModule(id, names) {
13
13
  }
14
14
  export const coreSkills = skillModule('core-skills', ['kiokuko-soul', 'memory-reasoning', 'natural-japanese-output']);
15
15
  export const codingSkills = skillModule('coding-skills', ['coding-ideal-routine-skill', 'kiokuko-single-purpose-functions', 'one-shot-software-completion', 'kiokuko-simple-work', 'kiokuko-ui-design-soul', 'veteran-programmer-skill', 'kiokuko-investigate', 'kiokuko-architecture', 'kiokuko-review', 'kiokuko-benchmark', 'kiokuko-verification', 'kiokuko-skill-authoring', 'kiokuko-technical-writing']);
16
+ /** Coding is a core workflow, including compositions without optional modules. */
17
+ export function withCoreSkills(registrations) {
18
+ return [{ module: coreSkills }, ...(registrations.some(entry => entry.module.id === codingSkills.id) ? [] : [{ module: codingSkills }]), ...registrations];
19
+ }
16
20
  //# sourceMappingURL=resources.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resources.js","sourceRoot":"","sources":["../../../src/dsh/modules/resources.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAE3C,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;AAEhE,sFAAsF;AACtF,MAAM,UAAU,gBAAgB,CAAC,KAAwB;IACvD,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QAC1B,MAAM,KAAK,GAAG,wBAAwB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,UAAU,CAAC,CAAA;QACtG,OAAO,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,mBAAmB,IAAI,KAAK,yBAAyB,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,IAAI,IAAI,YAAY,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;IAC5O,CAAC,CAAC,CAAA;AACJ,CAAC;AACD,MAAM,UAAU,WAAW,CAAO,EAAU,EAAE,KAAwB;IACpE,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,gBAAgB,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,SAAS,CAAA,CAAC,CAAC,EAAE,CAAA;AACnN,CAAC;AACD,MAAM,CAAC,MAAM,UAAU,GAAG,WAAW,CAAC,aAAa,EAAE,CAAC,cAAc,EAAE,kBAAkB,EAAE,yBAAyB,CAAC,CAAC,CAAA;AACrH,MAAM,CAAC,MAAM,YAAY,GAAG,WAAW,CAAC,eAAe,EAAE,CAAC,4BAA4B,EAAE,kCAAkC,EAAE,8BAA8B,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,2BAA2B,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"resources.js","sourceRoot":"","sources":["../../../src/dsh/modules/resources.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAE3C,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;AAEhE,sFAAsF;AACtF,MAAM,UAAU,gBAAgB,CAAC,KAAwB;IACvD,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QAC1B,MAAM,KAAK,GAAG,wBAAwB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,UAAU,CAAC,CAAA;QACtG,OAAO,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,mBAAmB,IAAI,KAAK,yBAAyB,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,IAAI,IAAI,YAAY,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;IAC5O,CAAC,CAAC,CAAA;AACJ,CAAC;AACD,MAAM,UAAU,WAAW,CAAO,EAAU,EAAE,KAAwB;IACpE,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,gBAAgB,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,SAAS,CAAA,CAAC,CAAC,EAAE,CAAA;AACnN,CAAC;AACD,MAAM,CAAC,MAAM,UAAU,GAAG,WAAW,CAAC,aAAa,EAAE,CAAC,cAAc,EAAE,kBAAkB,EAAE,yBAAyB,CAAC,CAAC,CAAA;AACrH,MAAM,CAAC,MAAM,YAAY,GAAG,WAAW,CAAC,eAAe,EAAE,CAAC,4BAA4B,EAAE,kCAAkC,EAAE,8BAA8B,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,2BAA2B,CAAC,CAAC,CAAA;AAC/Y,kFAAkF;AAClF,MAAM,UAAU,cAAc,CAAO,aAAkD;IACrF,OAAO,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,GAAG,aAAa,CAAC,CAAA;AAC5J,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"native-model-catalog.d.ts","sourceRoot":"","sources":["../../src/dsh/native-model-catalog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAsB,eAAe,EAAc,MAAM,0BAA0B,CAAA;AAE/F,UAAU,sBAAsB;IAAG,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE;AAC9H,UAAU,aAAc,SAAQ,eAAe;IAAG,yBAAyB,CAAC,IAAI,SAAS,sBAAsB,EAAE,CAAA;CAAE;AACnH,UAAU,cAAc;IAAG,QAAQ,CAAC,OAAO,EAAE;QAAE,aAAa,EAAE,IAAI,CAAA;KAAE,GAAG,SAAS;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,EAAE,CAAA;CAAE;AAClH,MAAM,WAAW,kBAAmB,SAAQ,eAAe;CAAG;AA+B9D,gFAAgF;AAChF,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,aAAa,GAAG,SAAS,EAAE,QAAQ,CAAC,EAAE,cAAc,GAAG,kBAAkB,GAAG,SAAS,CAqB5H"}
1
+ {"version":3,"file":"native-model-catalog.d.ts","sourceRoot":"","sources":["../../src/dsh/native-model-catalog.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAsB,eAAe,EAAc,MAAM,0BAA0B,CAAA;AAE/F,UAAU,sBAAsB;IAAG,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE;AAC9H,UAAU,aAAc,SAAQ,eAAe;IAAG,yBAAyB,CAAC,IAAI,SAAS,sBAAsB,EAAE,CAAA;CAAE;AACnH,UAAU,cAAc;IAAG,QAAQ,CAAC,OAAO,EAAE;QAAE,aAAa,EAAE,IAAI,CAAA;KAAE,GAAG,SAAS;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,EAAE,CAAA;CAAE;AAClH,MAAM,WAAW,kBAAmB,SAAQ,eAAe;CAAG;AA+B9D,gFAAgF;AAChF,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,aAAa,GAAG,SAAS,EAAE,QAAQ,CAAC,EAAE,cAAc,GAAG,kBAAkB,GAAG,SAAS,CAqB5H"}
@@ -1,8 +1,9 @@
1
+ import { ownedModelRoute } from './models/metadata.js';
1
2
  const object = (value) => value !== null && typeof value === 'object' && !Array.isArray(value) ? value : undefined;
2
3
  const families = {
3
4
  openai: 'openai', 'openai-codex': 'openai', deepseek: 'deepseek', 'deepseek-official': 'deepseek',
4
5
  'opencode-go': 'opencode-go', opencode: 'opencode-zen', 'opencode-zen': 'opencode-zen',
5
- openrouter: 'openrouter', orcarouter: 'orcarouter', ollama: 'ollama',
6
+ openrouter: 'openrouter', ollama: 'ollama',
6
7
  };
7
8
  /** Read only connection metadata; never copy credentials, headers or whole profiles. */
8
9
  function providerRoute(provider, entry, descriptions) {
@@ -26,7 +27,7 @@ function providerRoute(provider, entry, descriptions) {
26
27
  const isPath = (path) => endpoint?.pathname === path || endpoint?.pathname.startsWith(`${path}/`);
27
28
  const family = host === 'opencode.ai' && isPath('/zen/go') ? 'opencode-go'
28
29
  : host === 'opencode.ai' && isPath('/zen') ? 'opencode-zen'
29
- : host === 'openrouter.ai' ? 'openrouter' : host === 'api.orcarouter.ai' ? 'orcarouter'
30
+ : host === 'openrouter.ai' ? 'openrouter'
30
31
  : host === 'api.deepseek.com' ? 'deepseek' : host === 'api.openai.com' ? 'openai'
31
32
  : entry.declared === false ? families[provider] ?? 'other' : 'other';
32
33
  const local = family === 'ollama' || host === 'localhost' || host === '127.0.0.1' || host === '[::1]';
@@ -52,7 +53,7 @@ export function nativeModelCatalog(llm, settings) {
52
53
  catch { /* Optional metadata must not prevent model discovery. */ }
53
54
  }
54
55
  return providers.map((provider) => {
55
- const route = providerRoute(provider.id, directory.find(entry => entry.provider === provider.id), descriptions);
56
+ const route = ownedModelRoute(llm, provider.id) ?? providerRoute(provider.id, directory.find(entry => entry.provider === provider.id), descriptions);
56
57
  return { ...provider, ...(route ? { route } : {}) };
57
58
  });
58
59
  },
@@ -1 +1 @@
1
- {"version":3,"file":"native-model-catalog.js","sourceRoot":"","sources":["../../src/dsh/native-model-catalog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"native-model-catalog.js","sourceRoot":"","sources":["../../src/dsh/native-model-catalog.ts"],"names":[],"mappings":"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"}
@@ -5,8 +5,15 @@ export interface TapSummary {
5
5
  cancelled: number;
6
6
  skipped: number;
7
7
  todo: number;
8
+ filtered?: number;
9
+ measured?: number;
8
10
  }
9
11
  /** Accept only a complete final Node TAP trailer, never a previewed progress line. */
10
- export declare function parseNodeTapSummary(output: string): TapSummary | undefined;
12
+ export declare function parseNodeTapSummary(output: string, completeHostOutput?: boolean): TapSummary | undefined;
13
+ /** Cargo emits one terminal summary for each harness, including doc tests. */
14
+ export declare function parseCargoSummary(output: string): TapSummary | undefined;
15
+ export declare function parseTestSummary(output: string, completeHostOutput?: boolean): TapSummary | undefined;
16
+ /** Node counts an assertion-free test file as a passing implicit file test. */
17
+ export declare function hasExplicitTestCases(output: string): boolean;
11
18
  export declare function selectedNodeTestCommand(command: string): boolean;
12
19
  //# sourceMappingURL=node-tap-summary.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"node-tap-summary.d.ts","sourceRoot":"","sources":["../../src/dsh/node-tap-summary.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IAAG,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE;AAG3H,sFAAsF;AACtF,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAS1E;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAQhE"}
1
+ {"version":3,"file":"node-tap-summary.d.ts","sourceRoot":"","sources":["../../src/dsh/node-tap-summary.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IAAG,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAC,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAC,MAAM,CAAA;CAAE;AAG/J,sFAAsF;AACtF,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,kBAAkB,UAAQ,GAAG,UAAU,GAAG,SAAS,CAStG;AAED,8EAA8E;AAC9E,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAcxE;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,kBAAkB,UAAQ,GAAG,UAAU,GAAG,SAAS,CAEnG;AAED,+EAA+E;AAC/E,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAG5D;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAQhE"}
@@ -1,7 +1,7 @@
1
1
  const TAP_KEYS = ['tests', 'pass', 'fail', 'cancelled', 'skipped', 'todo'];
2
2
  /** Accept only a complete final Node TAP trailer, never a previewed progress line. */
3
- export function parseNodeTapSummary(output) {
4
- if (Buffer.byteLength(output) > 64_000 || /(?:truncated|Output capped|middle pruned)/iu.test(output))
3
+ export function parseNodeTapSummary(output, completeHostOutput = false) {
4
+ if (!completeHostOutput && (Buffer.byteLength(output) > 64_000 || /(?:truncated|Output capped|middle pruned)/iu.test(output)))
5
5
  return undefined;
6
6
  const values = new Map();
7
7
  for (const match of output.matchAll(/^# (tests|pass|fail|cancelled|skipped|todo) (\d+)\s*$/gmu)) {
@@ -12,6 +12,36 @@ export function parseNodeTapSummary(output) {
12
12
  const summary = Object.fromEntries(TAP_KEYS.map(key => [key, values.get(key)]));
13
13
  return summary.tests === summary.pass + summary.fail + summary.cancelled + summary.skipped + summary.todo ? summary : undefined;
14
14
  }
15
+ /** Cargo emits one terminal summary for each harness, including doc tests. */
16
+ export function parseCargoSummary(output) {
17
+ const starts = [...output.matchAll(/^running (\d+) tests?\s*$/gmu)];
18
+ const ends = [...output.matchAll(/^test result: (ok|FAILED)\. (\d+) passed; (\d+) failed; (\d+) ignored; (\d+) measured; (\d+) filtered out; finished in .+$/gmu)];
19
+ if (!starts.length || starts.length !== ends.length)
20
+ return undefined;
21
+ const total = { tests: 0, pass: 0, fail: 0, cancelled: 0, skipped: 0, todo: 0 };
22
+ for (let i = 0; i < ends.length; i++) {
23
+ const end = ends[i], start = starts[i];
24
+ const pass = Number(end[2]), fail = Number(end[3]), skipped = Number(end[4]) + Number(end[5]);
25
+ if (start.index >= end.index || (i > 0 && start.index <= ends[i - 1].index)
26
+ || Number(start[1]) !== pass + fail + skipped || end[1] === 'FAILED' && fail === 0)
27
+ return undefined;
28
+ total.tests += Number(start[1]);
29
+ total.pass += pass;
30
+ total.fail += fail;
31
+ total.skipped += skipped;
32
+ total.filtered = (total.filtered ?? 0) + Number(end[6]);
33
+ total.measured = (total.measured ?? 0) + Number(end[5]);
34
+ }
35
+ return total.tests > 0 ? total : undefined;
36
+ }
37
+ export function parseTestSummary(output, completeHostOutput = false) {
38
+ return parseNodeTapSummary(output, completeHostOutput) ?? parseCargoSummary(output);
39
+ }
40
+ /** Node counts an assertion-free test file as a passing implicit file test. */
41
+ export function hasExplicitTestCases(output) {
42
+ return parseCargoSummary(output) !== undefined || [...output.matchAll(/^\s*# Subtest: (.+)\s*$/gmu)]
43
+ .some(match => !/(?:^|[/\\])[^/\\]*\.(?:ts|[cm]?js)$/u.test(match[1].trim()));
44
+ }
15
45
  export function selectedNodeTestCommand(command) {
16
46
  if (/[;&|><`$()\\'"\n\r]/u.test(command))
17
47
  return false;
@@ -21,7 +51,7 @@ export function selectedNodeTestCommand(command) {
21
51
  if (!args.includes('--test') || !args.includes('--test-reporter=tap')
22
52
  || args.some(arg => ['--eval', '-e', '--print', '-p'].includes(arg)))
23
53
  return false;
24
- return args.some(arg => /\.test\.(?:ts|js|mjs)$/u.test(arg)
54
+ return args.some(arg => /\.(?:ts|[cm]?js)$/u.test(arg)
25
55
  && !pathIsUnsafe(arg));
26
56
  }
27
57
  function pathIsUnsafe(value) {
@@ -1 +1 @@
1
- {"version":3,"file":"node-tap-summary.js","sourceRoot":"","sources":["../../src/dsh/node-tap-summary.ts"],"names":[],"mappings":"AACA,MAAM,QAAQ,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,CAAU,CAAA;AAEnF,sFAAsF;AACtF,MAAM,UAAU,mBAAmB,CAAC,MAAc;IAChD,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,MAAM,IAAI,6CAA6C,CAAC,IAAI,CAAC,MAAM,CAAC;QAAE,OAAO,SAAS,CAAA;IACtH,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAA;IACxC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,QAAQ,CAAC,0DAA0D,CAAC,EAAE,CAAC;QAChG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACzC,CAAC;IACD,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;QAAE,OAAO,SAAS,CAAA;IAC1G,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,CAAC,CAA0B,CAAA;IACzG,OAAO,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAA;AACjI,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,OAAe;IACrD,IAAI,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,KAAK,CAAA;IACtD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IACzC,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAAE,OAAO,KAAK,CAAA;IACrE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC;WAChE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAAE,OAAO,KAAK,CAAA;IACpF,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,yBAAyB,CAAC,IAAI,CAAC,GAAG,CAAC;WACtD,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAA;AAC1B,CAAC;AAED,SAAS,YAAY,CAAC,KAAa;IACjC,OAAO,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;AAChG,CAAC"}
1
+ {"version":3,"file":"node-tap-summary.js","sourceRoot":"","sources":["../../src/dsh/node-tap-summary.ts"],"names":[],"mappings":"AACA,MAAM,QAAQ,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,CAAU,CAAA;AAEnF,sFAAsF;AACtF,MAAM,UAAU,mBAAmB,CAAC,MAAc,EAAE,kBAAkB,GAAG,KAAK;IAC5E,IAAI,CAAC,kBAAkB,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,MAAM,IAAI,6CAA6C,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAAE,OAAO,SAAS,CAAA;IAC/I,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAA;IACxC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,QAAQ,CAAC,0DAA0D,CAAC,EAAE,CAAC;QAChG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACzC,CAAC;IACD,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;QAAE,OAAO,SAAS,CAAA;IAC1G,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,CAAC,CAA0B,CAAA;IACzG,OAAO,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAA;AACjI,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,iBAAiB,CAAC,MAAc;IAC9C,MAAM,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,8BAA8B,CAAC,CAAC,CAAA;IACnE,MAAM,IAAI,GAAG,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,+HAA+H,CAAC,CAAC,CAAA;IAClK,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAA;IACrE,MAAM,KAAK,GAAe,EAAC,KAAK,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,SAAS,EAAC,CAAC,EAAC,OAAO,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,CAAA;IAC9E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAE,EAAE,KAAK,GAAG,MAAM,CAAC,CAAC,CAAE,CAAA;QACxC,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QAC7F,IAAI,KAAK,CAAC,KAAM,IAAI,GAAG,CAAC,KAAM,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,KAAM,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,KAAM,CAAC;eAC3E,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,GAAG,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,IAAI,KAAK,CAAC;YAAE,OAAO,SAAS,CAAA;QACtG,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC;QAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC;QAAC,KAAK,CAAC,OAAO,IAAI,OAAO,CAAA;QACjG,KAAK,CAAC,QAAQ,GAAC,CAAC,KAAK,CAAC,QAAQ,IAAE,CAAC,CAAC,GAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAAA,KAAK,CAAC,QAAQ,GAAC,CAAC,KAAK,CAAC,QAAQ,IAAE,CAAC,CAAC,GAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IACrG,CAAC;IACD,OAAO,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;AAC5C,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAc,EAAE,kBAAkB,GAAG,KAAK;IACzE,OAAO,mBAAmB,CAAC,MAAM,EAAE,kBAAkB,CAAC,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAA;AACrF,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,oBAAoB,CAAC,MAAc;IACjD,OAAO,iBAAiB,CAAC,MAAM,CAAC,KAAK,SAAS,IAAI,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,4BAA4B,CAAC,CAAC;SACjG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,sCAAsC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;AAClF,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,OAAe;IACrD,IAAI,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,KAAK,CAAA;IACtD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IACzC,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAAE,OAAO,KAAK,CAAA;IACrE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC;WAChE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAAE,OAAO,KAAK,CAAA;IACpF,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC;WACjD,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAA;AAC1B,CAAC;AAED,SAAS,YAAY,CAAC,KAAa;IACjC,OAAO,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;AAChG,CAAC"}
@@ -4,7 +4,7 @@ import { type TaskType } from '../akinator/types.js';
4
4
  import type { AkinatorTaskClassification } from './decisions/akinator-classification.js';
5
5
  export type { IntakeMode } from './intake-mode.js';
6
6
  export declare const TASK_PREPARE_TOOL = "prepare_requested_work";
7
- export declare const ON_DEMAND_GUIDANCE = "The original user request may be answered now without selecting a task category. No execution task has been prepared yet. Preserve all requested actions, negations, alternatives and target uncertainty. Native read, glob, grep, web_search and web_fetch demands automatically prepare the original request with research advice when no non-chat action type is resolved. Use these tools directly to gather requested evidence; do not call prepare_requested_work merely to read a plan or inspect files. Other tool-backed work requires prepare_requested_work(taskType); its type is advisory and grants no permission. Do not silently replace a requested action with a text-only answer or claim work was done. Ask a concrete clarification in ordinary conversation when the actual target or requested action is unclear. Installed Skill reads need no preparation and do not activate execution. Do not prepare work merely to load a skill. Existing native tool permissions and approvals still apply. If only run_code is exposed, prepare with exactly return await tools.prepare_requested_work({\"taskType\":\"research\"}) using the appropriate advisory type; the host intercepts that preparation-only carrier without evaluating code. Extra statements or expressions are refused until preparation completes.";
7
+ export declare const ON_DEMAND_GUIDANCE = "The original user request may be answered now without selecting a task category. No execution task has been prepared yet. Preserve all requested actions, negations, alternatives and target uncertainty. Native read, glob, grep, web_search and web_fetch demands automatically prepare the original request with research advice when no non-chat action type is resolved. Use these tools directly to gather requested evidence; do not call prepare_requested_work merely to read a plan or inspect files. An explicit development request is prepared automatically on its first tool demand. prepare_requested_work(taskType) remains an advisory control operation. Do not silently replace a requested action with a text-only answer or claim work was done. Ask a concrete clarification in ordinary conversation when the actual target or requested action is unclear. Installed Skill reads need no preparation and do not activate execution. Do not prepare work merely to load a skill. Owned development tools use their own authorization; Plan, goal, cancellation and execution ownership still apply. If only run_code is exposed and the request is ambiguous, prepare with exactly return await tools.prepare_requested_work({\"taskType\":\"research\"}) using the appropriate advisory type; the host intercepts that preparation-only carrier without evaluating code. For an explicit development request, its first run_code demand prepares automatically before evaluating the program.";
8
8
  export interface DemandAgent {
9
9
  readonly ctx?: unknown;
10
10
  readonly id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"on-demand-intake.d.ts","sourceRoot":"","sources":["../../src/dsh/on-demand-intake.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"on-demand-intake.d.ts","sourceRoot":"","sources":["../../src/dsh/on-demand-intake.ts"],"names":[],"mappings":"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"}
@@ -3,8 +3,10 @@ import { randomUUID } from 'node:crypto';
3
3
  import { TASK_TYPES } from '../akinator/types.js';
4
4
  import { canonicalContentHash } from '../serialization/validate.js';
5
5
  import { KIOKUKO_DSH_SOURCE_KIND } from './plugin-source.js';
6
+ import { deriveProfile } from '../akinator/domain.js';
7
+ import { codingIntent } from './coding-workflow/intent.js';
6
8
  export const TASK_PREPARE_TOOL = 'prepare_requested_work';
7
- export const ON_DEMAND_GUIDANCE = 'The original user request may be answered now without selecting a task category. No execution task has been prepared yet. Preserve all requested actions, negations, alternatives and target uncertainty. Native read, glob, grep, web_search and web_fetch demands automatically prepare the original request with research advice when no non-chat action type is resolved. Use these tools directly to gather requested evidence; do not call prepare_requested_work merely to read a plan or inspect files. Other tool-backed work requires prepare_requested_work(taskType); its type is advisory and grants no permission. Do not silently replace a requested action with a text-only answer or claim work was done. Ask a concrete clarification in ordinary conversation when the actual target or requested action is unclear. Installed Skill reads need no preparation and do not activate execution. Do not prepare work merely to load a skill. Existing native tool permissions and approvals still apply. If only run_code is exposed, prepare with exactly return await tools.prepare_requested_work({"taskType":"research"}) using the appropriate advisory type; the host intercepts that preparation-only carrier without evaluating code. Extra statements or expressions are refused until preparation completes.';
9
+ export const ON_DEMAND_GUIDANCE = 'The original user request may be answered now without selecting a task category. No execution task has been prepared yet. Preserve all requested actions, negations, alternatives and target uncertainty. Native read, glob, grep, web_search and web_fetch demands automatically prepare the original request with research advice when no non-chat action type is resolved. Use these tools directly to gather requested evidence; do not call prepare_requested_work merely to read a plan or inspect files. An explicit development request is prepared automatically on its first tool demand. prepare_requested_work(taskType) remains an advisory control operation. Do not silently replace a requested action with a text-only answer or claim work was done. Ask a concrete clarification in ordinary conversation when the actual target or requested action is unclear. Installed Skill reads need no preparation and do not activate execution. Do not prepare work merely to load a skill. Owned development tools use their own authorization; Plan, goal, cancellation and execution ownership still apply. If only run_code is exposed and the request is ambiguous, prepare with exactly return await tools.prepare_requested_work({"taskType":"research"}) using the appropriate advisory type; the host intercepts that preparation-only carrier without evaluating code. For an explicit development request, its first run_code demand prepares automatically before evaluating the program.';
8
10
  const ACTION_TYPES = TASK_TYPES.filter(type => type !== 'chat');
9
11
  function humanMessages(messages) {
10
12
  return messages.filter((value) => value?.role === 'user' && (!value.source || value.source.kind === 'user'));
@@ -19,7 +21,9 @@ function eventTurn(event) {
19
21
  return Number.isSafeInteger(data?.turn) ? data.turn : undefined;
20
22
  }
21
23
  /** Tool names select advice only; admission and native permissions remain authoritative. */
22
- function automaticPreparationType(intent, name) {
24
+ function automaticPreparationType(intent, name, task) {
25
+ if (codingIntent(task))
26
+ return 'build';
23
27
  if (intent.taskType && intent.taskType !== 'chat')
24
28
  return intent.taskType;
25
29
  return ['read', 'glob', 'grep', 'web_search', 'web_fetch'].includes(name) ? 'research' : undefined;
@@ -91,15 +95,21 @@ export class OnDemandIntake {
91
95
  if (previous.status === 'closed')
92
96
  throw new Error('On-demand turn is closed');
93
97
  const fresh = humanMessages(input.messages).filter(message => previous.humanContents.get(humanId(message)) !== canonicalContentHash(message));
94
- if (fresh.length) {
95
- previous.status = 'stale';
96
- previous.controller.abort(new Error('Human instructions changed'));
98
+ if (!fresh.length) {
99
+ if (previous.capture && !await previous.capture)
100
+ return false;
101
+ return previous.status !== 'prepared';
97
102
  }
98
- if (previous.capture && !await previous.capture)
99
- return false;
100
- return previous.status !== 'prepared';
103
+ previous.status = 'stale';
104
+ previous.controller.abort(new Error('Human instructions changed'));
105
+ // A new native batch can contain only the steering message. Preserve
106
+ // the original request while replacing changed messages by identity.
107
+ const merged = new Map(previous.input.messages.map(message => [humanId(message), message]));
108
+ for (const message of input.messages)
109
+ merged.set(humanId(message), message);
110
+ input = { ...input, messages: [...merged.values()] };
101
111
  }
102
- if (!['closed', 'prepared'].includes(previous.status))
112
+ if (previous.input.turn !== input.turn && !['closed', 'prepared'].includes(previous.status))
103
113
  throw new Error('Previous on-demand turn has not ended');
104
114
  previous.controller.abort(new Error('A newer native turn superseded this request'));
105
115
  }
@@ -116,7 +126,7 @@ export class OnDemandIntake {
116
126
  // validated owner's first reader once, including absence; never rebind it.
117
127
  if (!this.#skillReaders.has(input.agent))
118
128
  this.#skillReaders.set(input.agent, this.#startupSkillReader ?? this.#tools?.get('skill', input.agent)?.execute);
119
- if (await this.host.existing(input)) {
129
+ if (previous?.input.turn !== input.turn && await this.host.existing(input)) {
120
130
  this.assertCurrent(state);
121
131
  // Retain the exact resumed request for the public preparation receipt.
122
132
  // Existing ownership alone grants nothing: readiness is rechecked at dispatch.
@@ -130,7 +140,18 @@ export class OnDemandIntake {
130
140
  }
131
141
  if (!humanMessages(input.messages).length)
132
142
  throw new Error('Original human input is required before on-demand intake');
133
- state.intent = await this.host.classify(input, state.task);
143
+ try {
144
+ state.intent = await this.host.classify(input, state.task);
145
+ }
146
+ catch {
147
+ input.signal.throwIfAborted();
148
+ state.intent = { deferInference: true };
149
+ }
150
+ if (!state.intent.taskType && !state.intent.deferInference && !executionClarification(state.task)) {
151
+ const type = deriveProfile(state.task).taskType;
152
+ if (type === 'build' || type === 'debug' || type === 'devops')
153
+ state.intent = { ...state.intent, taskType: type };
154
+ }
134
155
  this.assertCurrent(state);
135
156
  // Eager mode still binds known work before generation. Classifier uncertainty
136
157
  // instead reaches ordinary reasoning, with no execution grant or purpose UI.
@@ -325,8 +346,8 @@ export class OnDemandIntake {
325
346
  const skillReader = this.#skillReaders.get(state.input.agent);
326
347
  const skillRead = execution.name === 'skill' && skillReader !== undefined && actual.execute === skillReader && state.status === 'answer';
327
348
  const carrier = execution.name === 'run_code' && state.status !== 'prepared' ? preparationCarrier(execution.arguments) : undefined;
328
- if (execution.name === 'run_code' && state.status !== 'prepared' && !carrier)
329
- return denied('Before PTC execution, use exactly the preparation-only carrier: return await tools.prepare_requested_work({"taskType":"research"}). No other program is admitted until work is prepared.');
349
+ if (execution.name === 'run_code' && state.status !== 'prepared' && !carrier && !automaticPreparationType(state.intent, execution.name, state.task))
350
+ return denied('Clarify the requested work before code execution.');
330
351
  if (carrier) {
331
352
  if (state.status !== 'answer' || state.preparationCalls.has(execution.callId))
332
353
  return denied('Preparation carrier is not current');
@@ -337,7 +358,7 @@ export class OnDemandIntake {
337
358
  }
338
359
  else if (!skillRead) {
339
360
  if (state.status !== 'prepared') {
340
- const type = automaticPreparationType(state.intent, execution.name);
361
+ const type = automaticPreparationType(state.intent, execution.name, state.task);
341
362
  if (!type)
342
363
  return denied('Before tool-backed work, call prepare_requested_work with its advisory taskType. Clarify unknown actions or targets first; the original request is preserved.');
343
364
  await this.prepare(state, type, execution.signal);