@wootsup/yt-builder-mcp 1.1.6 → 1.2.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 (430) hide show
  1. package/README.md +7 -7
  2. package/bin/yt-builder-mcp.js +55 -40
  3. package/dist/auth.d.ts +137 -0
  4. package/dist/auth.d.ts.map +1 -0
  5. package/dist/auth.js +244 -0
  6. package/dist/auth.js.map +1 -0
  7. package/dist/cli/invocation-decision.d.ts +57 -0
  8. package/dist/cli/invocation-decision.d.ts.map +1 -0
  9. package/dist/cli/invocation-decision.js +86 -0
  10. package/dist/cli/invocation-decision.js.map +1 -0
  11. package/dist/client.d.ts +112 -0
  12. package/dist/client.d.ts.map +1 -0
  13. package/dist/client.js +190 -0
  14. package/dist/client.js.map +1 -0
  15. package/dist/clients/claude-code.d.ts +18 -0
  16. package/dist/clients/claude-code.d.ts.map +1 -0
  17. package/dist/clients/claude-code.js +55 -0
  18. package/dist/clients/claude-code.js.map +1 -0
  19. package/dist/clients/claude-desktop.d.ts +19 -0
  20. package/dist/clients/claude-desktop.d.ts.map +1 -0
  21. package/dist/clients/claude-desktop.js +58 -0
  22. package/dist/clients/claude-desktop.js.map +1 -0
  23. package/dist/clients/cline.d.ts +26 -0
  24. package/dist/clients/cline.d.ts.map +1 -0
  25. package/dist/clients/cline.js +82 -0
  26. package/dist/clients/cline.js.map +1 -0
  27. package/dist/clients/codex-cli.d.ts +42 -0
  28. package/dist/clients/codex-cli.d.ts.map +1 -0
  29. package/dist/clients/codex-cli.js +292 -0
  30. package/dist/clients/codex-cli.js.map +1 -0
  31. package/dist/clients/continue.d.ts +13 -0
  32. package/dist/clients/continue.d.ts.map +1 -0
  33. package/dist/clients/continue.js +121 -0
  34. package/dist/clients/continue.js.map +1 -0
  35. package/dist/clients/cursor.d.ts +12 -0
  36. package/dist/clients/cursor.d.ts.map +1 -0
  37. package/dist/clients/cursor.js +40 -0
  38. package/dist/clients/cursor.js.map +1 -0
  39. package/dist/clients/gemini-cli.d.ts +18 -0
  40. package/dist/clients/gemini-cli.d.ts.map +1 -0
  41. package/dist/clients/gemini-cli.js +46 -0
  42. package/dist/clients/gemini-cli.js.map +1 -0
  43. package/dist/clients/home.d.ts +14 -0
  44. package/dist/clients/home.d.ts.map +1 -0
  45. package/dist/clients/home.js +20 -0
  46. package/dist/clients/home.js.map +1 -0
  47. package/dist/clients/index.d.ts +156 -0
  48. package/dist/clients/index.d.ts.map +1 -0
  49. package/dist/clients/index.js +213 -0
  50. package/dist/clients/index.js.map +1 -0
  51. package/dist/clients/roo-code.d.ts +23 -0
  52. package/dist/clients/roo-code.d.ts.map +1 -0
  53. package/dist/clients/roo-code.js +71 -0
  54. package/dist/clients/roo-code.js.map +1 -0
  55. package/dist/clients/zed.d.ts +12 -0
  56. package/dist/clients/zed.d.ts.map +1 -0
  57. package/dist/clients/zed.js +43 -0
  58. package/dist/clients/zed.js.map +1 -0
  59. package/dist/errors/hints.d.ts +51 -0
  60. package/dist/errors/hints.d.ts.map +1 -0
  61. package/dist/errors/hints.js +95 -0
  62. package/dist/errors/hints.js.map +1 -0
  63. package/dist/errors/mask.d.ts +35 -0
  64. package/dist/errors/mask.d.ts.map +1 -0
  65. package/dist/errors/mask.js +49 -0
  66. package/dist/errors/mask.js.map +1 -0
  67. package/dist/errors/sanitize.d.ts +31 -0
  68. package/dist/errors/sanitize.d.ts.map +1 -0
  69. package/dist/errors/sanitize.js +100 -0
  70. package/dist/errors/sanitize.js.map +1 -0
  71. package/dist/errors.d.ts +42 -0
  72. package/dist/errors.d.ts.map +1 -0
  73. package/dist/errors.js +61 -0
  74. package/dist/errors.js.map +1 -0
  75. package/dist/gateway/advanced-tool/discovery.d.ts +19 -0
  76. package/dist/gateway/advanced-tool/discovery.d.ts.map +1 -0
  77. package/dist/gateway/advanced-tool/discovery.js +53 -0
  78. package/dist/gateway/advanced-tool/discovery.js.map +1 -0
  79. package/dist/gateway/advanced-tool/domains.d.ts +47 -0
  80. package/dist/gateway/advanced-tool/domains.d.ts.map +1 -0
  81. package/dist/gateway/advanced-tool/domains.js +94 -0
  82. package/dist/gateway/advanced-tool/domains.js.map +1 -0
  83. package/dist/gateway/advanced-tool/execute.d.ts +29 -0
  84. package/dist/gateway/advanced-tool/execute.d.ts.map +1 -0
  85. package/dist/gateway/advanced-tool/execute.js +54 -0
  86. package/dist/gateway/advanced-tool/execute.js.map +1 -0
  87. package/dist/gateway/advanced-tool/index.d.ts +36 -0
  88. package/dist/gateway/advanced-tool/index.d.ts.map +1 -0
  89. package/dist/gateway/advanced-tool/index.js +39 -0
  90. package/dist/gateway/advanced-tool/index.js.map +1 -0
  91. package/dist/gateway/advanced-tool/register.d.ts +18 -0
  92. package/dist/gateway/advanced-tool/register.d.ts.map +1 -0
  93. package/dist/gateway/advanced-tool/register.js +69 -0
  94. package/dist/gateway/advanced-tool/register.js.map +1 -0
  95. package/dist/gateway/advanced-tool.d.ts +13 -0
  96. package/dist/gateway/advanced-tool.d.ts.map +1 -0
  97. package/dist/gateway/advanced-tool.js +13 -0
  98. package/dist/gateway/advanced-tool.js.map +1 -0
  99. package/dist/gateway/capturing-server.d.ts +117 -0
  100. package/dist/gateway/capturing-server.d.ts.map +1 -0
  101. package/dist/gateway/capturing-server.js +103 -0
  102. package/dist/gateway/capturing-server.js.map +1 -0
  103. package/dist/gateway/essentials.d.ts +50 -0
  104. package/dist/gateway/essentials.d.ts.map +1 -0
  105. package/dist/gateway/essentials.js +108 -0
  106. package/dist/gateway/essentials.js.map +1 -0
  107. package/dist/gateway/test-support.d.ts +41 -0
  108. package/dist/gateway/test-support.d.ts.map +1 -0
  109. package/dist/gateway/test-support.js +60 -0
  110. package/dist/gateway/test-support.js.map +1 -0
  111. package/dist/index.d.ts +30 -0
  112. package/dist/index.d.ts.map +1 -0
  113. package/dist/index.js +119 -0
  114. package/dist/index.js.map +1 -0
  115. package/dist/install-skill.d.ts +43 -0
  116. package/dist/install-skill.d.ts.map +1 -0
  117. package/dist/install-skill.js +118 -0
  118. package/dist/install-skill.js.map +1 -0
  119. package/dist/platform/detect.d.ts +64 -0
  120. package/dist/platform/detect.d.ts.map +1 -0
  121. package/dist/platform/detect.js +98 -0
  122. package/dist/platform/detect.js.map +1 -0
  123. package/dist/platform/index.d.ts +121 -0
  124. package/dist/platform/index.d.ts.map +1 -0
  125. package/dist/platform/index.js +176 -0
  126. package/dist/platform/index.js.map +1 -0
  127. package/dist/platform/joomla.d.ts +44 -0
  128. package/dist/platform/joomla.d.ts.map +1 -0
  129. package/dist/platform/joomla.js +46 -0
  130. package/dist/platform/joomla.js.map +1 -0
  131. package/dist/server.d.ts +110 -0
  132. package/dist/server.d.ts.map +1 -0
  133. package/dist/server.js +274 -0
  134. package/dist/server.js.map +1 -0
  135. package/dist/setup-cli-confirm.d.ts +36 -0
  136. package/dist/setup-cli-confirm.d.ts.map +1 -0
  137. package/dist/setup-cli-confirm.js +59 -0
  138. package/dist/setup-cli-confirm.js.map +1 -0
  139. package/dist/setup-cli.d.ts +193 -0
  140. package/dist/setup-cli.d.ts.map +1 -0
  141. package/dist/setup-cli.js +1032 -0
  142. package/dist/setup-cli.js.map +1 -0
  143. package/dist/setup-prompts.d.ts +64 -0
  144. package/dist/setup-prompts.d.ts.map +1 -0
  145. package/dist/setup-prompts.js +221 -0
  146. package/dist/setup-prompts.js.map +1 -0
  147. package/dist/setup-token.d.ts +38 -0
  148. package/dist/setup-token.d.ts.map +1 -0
  149. package/dist/setup-token.js +106 -0
  150. package/dist/setup-token.js.map +1 -0
  151. package/dist/setup-wizard-defaults.d.ts +43 -0
  152. package/dist/setup-wizard-defaults.d.ts.map +1 -0
  153. package/dist/setup-wizard-defaults.js +160 -0
  154. package/dist/setup-wizard-defaults.js.map +1 -0
  155. package/dist/setup-wizard-handshake.d.ts +25 -0
  156. package/dist/setup-wizard-handshake.d.ts.map +1 -0
  157. package/dist/setup-wizard-handshake.js +103 -0
  158. package/dist/setup-wizard-handshake.js.map +1 -0
  159. package/dist/setup-wizard-types.d.ts +164 -0
  160. package/dist/setup-wizard-types.d.ts.map +1 -0
  161. package/dist/setup-wizard-types.js +11 -0
  162. package/dist/setup-wizard-types.js.map +1 -0
  163. package/dist/setup-wizard.d.ts +33 -0
  164. package/dist/setup-wizard.d.ts.map +1 -0
  165. package/dist/setup-wizard.js +199 -0
  166. package/dist/setup-wizard.js.map +1 -0
  167. package/dist/setup.d.ts +17 -0
  168. package/dist/setup.d.ts.map +1 -0
  169. package/dist/setup.js +33 -0
  170. package/dist/setup.js.map +1 -0
  171. package/dist/sites/bootstrap.d.ts +41 -0
  172. package/dist/sites/bootstrap.d.ts.map +1 -0
  173. package/dist/sites/bootstrap.js +58 -0
  174. package/dist/sites/bootstrap.js.map +1 -0
  175. package/dist/sites/cli/add-site.d.ts +106 -0
  176. package/dist/sites/cli/add-site.d.ts.map +1 -0
  177. package/dist/sites/cli/add-site.js +185 -0
  178. package/dist/sites/cli/add-site.js.map +1 -0
  179. package/dist/sites/cli/list-sites.d.ts +40 -0
  180. package/dist/sites/cli/list-sites.d.ts.map +1 -0
  181. package/dist/sites/cli/list-sites.js +116 -0
  182. package/dist/sites/cli/list-sites.js.map +1 -0
  183. package/dist/sites/cli/remove-site.d.ts +60 -0
  184. package/dist/sites/cli/remove-site.d.ts.map +1 -0
  185. package/dist/sites/cli/remove-site.js +120 -0
  186. package/dist/sites/cli/remove-site.js.map +1 -0
  187. package/dist/sites/cli/set-default.d.ts +47 -0
  188. package/dist/sites/cli/set-default.d.ts.map +1 -0
  189. package/dist/sites/cli/set-default.js +69 -0
  190. package/dist/sites/cli/set-default.js.map +1 -0
  191. package/dist/sites/cli/test-site.d.ts +77 -0
  192. package/dist/sites/cli/test-site.d.ts.map +1 -0
  193. package/dist/sites/cli/test-site.js +146 -0
  194. package/dist/sites/cli/test-site.js.map +1 -0
  195. package/dist/sites/client-pool.d.ts +157 -0
  196. package/dist/sites/client-pool.d.ts.map +1 -0
  197. package/dist/sites/client-pool.js +222 -0
  198. package/dist/sites/client-pool.js.map +1 -0
  199. package/dist/sites/env-bridge.d.ts +55 -0
  200. package/dist/sites/env-bridge.d.ts.map +1 -0
  201. package/dist/sites/env-bridge.js +94 -0
  202. package/dist/sites/env-bridge.js.map +1 -0
  203. package/dist/sites/paths.d.ts +21 -0
  204. package/dist/sites/paths.d.ts.map +1 -0
  205. package/dist/sites/paths.js +37 -0
  206. package/dist/sites/paths.js.map +1 -0
  207. package/dist/sites/probe.d.ts +60 -0
  208. package/dist/sites/probe.d.ts.map +1 -0
  209. package/dist/sites/probe.js +112 -0
  210. package/dist/sites/probe.js.map +1 -0
  211. package/dist/sites/registry.d.ts +142 -0
  212. package/dist/sites/registry.d.ts.map +1 -0
  213. package/dist/sites/registry.js +163 -0
  214. package/dist/sites/registry.js.map +1 -0
  215. package/dist/sites/schema.d.ts +90 -0
  216. package/dist/sites/schema.d.ts.map +1 -0
  217. package/dist/sites/schema.js +71 -0
  218. package/dist/sites/schema.js.map +1 -0
  219. package/dist/sites/secret-resolver.d.ts +115 -0
  220. package/dist/sites/secret-resolver.d.ts.map +1 -0
  221. package/dist/sites/secret-resolver.js +225 -0
  222. package/dist/sites/secret-resolver.js.map +1 -0
  223. package/dist/sites/store.d.ts +82 -0
  224. package/dist/sites/store.d.ts.map +1 -0
  225. package/dist/sites/store.js +198 -0
  226. package/dist/sites/store.js.map +1 -0
  227. package/dist/sites/tools/index.d.ts +28 -0
  228. package/dist/sites/tools/index.d.ts.map +1 -0
  229. package/dist/sites/tools/index.js +38 -0
  230. package/dist/sites/tools/index.js.map +1 -0
  231. package/dist/sites/tools/sites-list.d.ts +48 -0
  232. package/dist/sites/tools/sites-list.d.ts.map +1 -0
  233. package/dist/sites/tools/sites-list.js +137 -0
  234. package/dist/sites/tools/sites-list.js.map +1 -0
  235. package/dist/sites/tools/sites-test.d.ts +47 -0
  236. package/dist/sites/tools/sites-test.d.ts.map +1 -0
  237. package/dist/sites/tools/sites-test.js +148 -0
  238. package/dist/sites/tools/sites-test.js.map +1 -0
  239. package/dist/sites/tools/use-site.d.ts +47 -0
  240. package/dist/sites/tools/use-site.d.ts.map +1 -0
  241. package/dist/sites/tools/use-site.js +183 -0
  242. package/dist/sites/tools/use-site.js.map +1 -0
  243. package/dist/skill-loader.d.ts +111 -0
  244. package/dist/skill-loader.d.ts.map +1 -0
  245. package/dist/skill-loader.js +191 -0
  246. package/dist/skill-loader.js.map +1 -0
  247. package/dist/tools/elements/builders.d.ts +24 -0
  248. package/dist/tools/elements/builders.d.ts.map +1 -0
  249. package/dist/tools/elements/builders.js +208 -0
  250. package/dist/tools/elements/builders.js.map +1 -0
  251. package/dist/tools/elements/handlers-write.d.ts +49 -0
  252. package/dist/tools/elements/handlers-write.d.ts.map +1 -0
  253. package/dist/tools/elements/handlers-write.js +341 -0
  254. package/dist/tools/elements/handlers-write.js.map +1 -0
  255. package/dist/tools/elements/handlers.d.ts +70 -0
  256. package/dist/tools/elements/handlers.d.ts.map +1 -0
  257. package/dist/tools/elements/handlers.js +292 -0
  258. package/dist/tools/elements/handlers.js.map +1 -0
  259. package/dist/tools/elements/index.d.ts +28 -0
  260. package/dist/tools/elements/index.d.ts.map +1 -0
  261. package/dist/tools/elements/index.js +27 -0
  262. package/dist/tools/elements/index.js.map +1 -0
  263. package/dist/tools/elements.d.ts +13 -0
  264. package/dist/tools/elements.d.ts.map +1 -0
  265. package/dist/tools/elements.js +13 -0
  266. package/dist/tools/elements.js.map +1 -0
  267. package/dist/tools/elicitation.d.ts +87 -0
  268. package/dist/tools/elicitation.d.ts.map +1 -0
  269. package/dist/tools/elicitation.js +100 -0
  270. package/dist/tools/elicitation.js.map +1 -0
  271. package/dist/tools/format/elements-format.d.ts +40 -0
  272. package/dist/tools/format/elements-format.d.ts.map +1 -0
  273. package/dist/tools/format/elements-format.js +193 -0
  274. package/dist/tools/format/elements-format.js.map +1 -0
  275. package/dist/tools/format/health-format.d.ts +79 -0
  276. package/dist/tools/format/health-format.d.ts.map +1 -0
  277. package/dist/tools/format/health-format.js +181 -0
  278. package/dist/tools/format/health-format.js.map +1 -0
  279. package/dist/tools/format/inspection-format.d.ts +70 -0
  280. package/dist/tools/format/inspection-format.d.ts.map +1 -0
  281. package/dist/tools/format/inspection-format.js +359 -0
  282. package/dist/tools/format/inspection-format.js.map +1 -0
  283. package/dist/tools/format/pages-format.d.ts +57 -0
  284. package/dist/tools/format/pages-format.d.ts.map +1 -0
  285. package/dist/tools/format/pages-format.js +157 -0
  286. package/dist/tools/format/pages-format.js.map +1 -0
  287. package/dist/tools/format/sources-format.d.ts +44 -0
  288. package/dist/tools/format/sources-format.d.ts.map +1 -0
  289. package/dist/tools/format/sources-format.js +242 -0
  290. package/dist/tools/format/sources-format.js.map +1 -0
  291. package/dist/tools/health.d.ts +22 -0
  292. package/dist/tools/health.d.ts.map +1 -0
  293. package/dist/tools/health.js +220 -0
  294. package/dist/tools/health.js.map +1 -0
  295. package/dist/tools/index.d.ts +30 -0
  296. package/dist/tools/index.d.ts.map +1 -0
  297. package/dist/tools/index.js +39 -0
  298. package/dist/tools/index.js.map +1 -0
  299. package/dist/tools/inspection.d.ts +14 -0
  300. package/dist/tools/inspection.d.ts.map +1 -0
  301. package/dist/tools/inspection.js +401 -0
  302. package/dist/tools/inspection.js.map +1 -0
  303. package/dist/tools/layout-flatten.d.ts +75 -0
  304. package/dist/tools/layout-flatten.d.ts.map +1 -0
  305. package/dist/tools/layout-flatten.js +107 -0
  306. package/dist/tools/layout-flatten.js.map +1 -0
  307. package/dist/tools/multi-items/builders.d.ts +23 -0
  308. package/dist/tools/multi-items/builders.d.ts.map +1 -0
  309. package/dist/tools/multi-items/builders.js +84 -0
  310. package/dist/tools/multi-items/builders.js.map +1 -0
  311. package/dist/tools/multi-items/clean-implode-handler.d.ts +36 -0
  312. package/dist/tools/multi-items/clean-implode-handler.d.ts.map +1 -0
  313. package/dist/tools/multi-items/clean-implode-handler.js +57 -0
  314. package/dist/tools/multi-items/clean-implode-handler.js.map +1 -0
  315. package/dist/tools/multi-items/format/inspection-format.d.ts +41 -0
  316. package/dist/tools/multi-items/format/inspection-format.d.ts.map +1 -0
  317. package/dist/tools/multi-items/format/inspection-format.js +64 -0
  318. package/dist/tools/multi-items/format/inspection-format.js.map +1 -0
  319. package/dist/tools/multi-items/index.d.ts +18 -0
  320. package/dist/tools/multi-items/index.d.ts.map +1 -0
  321. package/dist/tools/multi-items/index.js +18 -0
  322. package/dist/tools/multi-items/index.js.map +1 -0
  323. package/dist/tools/multi-items/inspect-handler.d.ts +76 -0
  324. package/dist/tools/multi-items/inspect-handler.d.ts.map +1 -0
  325. package/dist/tools/multi-items/inspect-handler.js +133 -0
  326. package/dist/tools/multi-items/inspect-handler.js.map +1 -0
  327. package/dist/tools/multi-items/inspection-cache.d.ts +85 -0
  328. package/dist/tools/multi-items/inspection-cache.d.ts.map +1 -0
  329. package/dist/tools/multi-items/inspection-cache.js +126 -0
  330. package/dist/tools/multi-items/inspection-cache.js.map +1 -0
  331. package/dist/tools/multi-items/item-container-map.d.ts +41 -0
  332. package/dist/tools/multi-items/item-container-map.d.ts.map +1 -0
  333. package/dist/tools/multi-items/item-container-map.js +73 -0
  334. package/dist/tools/multi-items/item-container-map.js.map +1 -0
  335. package/dist/tools/pages/builders.d.ts +43 -0
  336. package/dist/tools/pages/builders.d.ts.map +1 -0
  337. package/dist/tools/pages/builders.js +229 -0
  338. package/dist/tools/pages/builders.js.map +1 -0
  339. package/dist/tools/pages/handlers-read.d.ts +33 -0
  340. package/dist/tools/pages/handlers-read.d.ts.map +1 -0
  341. package/dist/tools/pages/handlers-read.js +260 -0
  342. package/dist/tools/pages/handlers-read.js.map +1 -0
  343. package/dist/tools/pages/handlers-write.d.ts +63 -0
  344. package/dist/tools/pages/handlers-write.d.ts.map +1 -0
  345. package/dist/tools/pages/handlers-write.js +127 -0
  346. package/dist/tools/pages/handlers-write.js.map +1 -0
  347. package/dist/tools/pages/index.d.ts +17 -0
  348. package/dist/tools/pages/index.d.ts.map +1 -0
  349. package/dist/tools/pages/index.js +17 -0
  350. package/dist/tools/pages/index.js.map +1 -0
  351. package/dist/tools/pages/schemas.d.ts +157 -0
  352. package/dist/tools/pages/schemas.d.ts.map +1 -0
  353. package/dist/tools/pages/schemas.js +232 -0
  354. package/dist/tools/pages/schemas.js.map +1 -0
  355. package/dist/tools/pages.d.ts +13 -0
  356. package/dist/tools/pages.d.ts.map +1 -0
  357. package/dist/tools/pages.js +13 -0
  358. package/dist/tools/pages.js.map +1 -0
  359. package/dist/tools/pool-resolve-helper.d.ts +83 -0
  360. package/dist/tools/pool-resolve-helper.d.ts.map +1 -0
  361. package/dist/tools/pool-resolve-helper.js +148 -0
  362. package/dist/tools/pool-resolve-helper.js.map +1 -0
  363. package/dist/tools/progress-phases.d.ts +46 -0
  364. package/dist/tools/progress-phases.d.ts.map +1 -0
  365. package/dist/tools/progress-phases.js +48 -0
  366. package/dist/tools/progress-phases.js.map +1 -0
  367. package/dist/tools/shared-schemas.d.ts +25 -0
  368. package/dist/tools/shared-schemas.d.ts.map +1 -0
  369. package/dist/tools/shared-schemas.js +72 -0
  370. package/dist/tools/shared-schemas.js.map +1 -0
  371. package/dist/tools/sources/builders.d.ts +13 -0
  372. package/dist/tools/sources/builders.d.ts.map +1 -0
  373. package/dist/tools/sources/builders.js +118 -0
  374. package/dist/tools/sources/builders.js.map +1 -0
  375. package/dist/tools/sources/handlers-bind.d.ts +28 -0
  376. package/dist/tools/sources/handlers-bind.d.ts.map +1 -0
  377. package/dist/tools/sources/handlers-bind.js +181 -0
  378. package/dist/tools/sources/handlers-bind.js.map +1 -0
  379. package/dist/tools/sources/handlers.d.ts +47 -0
  380. package/dist/tools/sources/handlers.d.ts.map +1 -0
  381. package/dist/tools/sources/handlers.js +108 -0
  382. package/dist/tools/sources/handlers.js.map +1 -0
  383. package/dist/tools/sources/index.d.ts +19 -0
  384. package/dist/tools/sources/index.d.ts.map +1 -0
  385. package/dist/tools/sources/index.js +18 -0
  386. package/dist/tools/sources/index.js.map +1 -0
  387. package/dist/tools/sources.d.ts +14 -0
  388. package/dist/tools/sources.d.ts.map +1 -0
  389. package/dist/tools/sources.js +14 -0
  390. package/dist/tools/sources.js.map +1 -0
  391. package/dist/tools/sparse-fields.d.ts +106 -0
  392. package/dist/tools/sparse-fields.d.ts.map +1 -0
  393. package/dist/tools/sparse-fields.js +165 -0
  394. package/dist/tools/sparse-fields.js.map +1 -0
  395. package/dist/tools/tool-builder/annotations.d.ts +55 -0
  396. package/dist/tools/tool-builder/annotations.d.ts.map +1 -0
  397. package/dist/tools/tool-builder/annotations.js +86 -0
  398. package/dist/tools/tool-builder/annotations.js.map +1 -0
  399. package/dist/tools/tool-builder/define.d.ts +31 -0
  400. package/dist/tools/tool-builder/define.d.ts.map +1 -0
  401. package/dist/tools/tool-builder/define.js +31 -0
  402. package/dist/tools/tool-builder/define.js.map +1 -0
  403. package/dist/tools/tool-builder/index.d.ts +28 -0
  404. package/dist/tools/tool-builder/index.d.ts.map +1 -0
  405. package/dist/tools/tool-builder/index.js +27 -0
  406. package/dist/tools/tool-builder/index.js.map +1 -0
  407. package/dist/tools/tool-builder/results.d.ts +104 -0
  408. package/dist/tools/tool-builder/results.d.ts.map +1 -0
  409. package/dist/tools/tool-builder/results.js +224 -0
  410. package/dist/tools/tool-builder/results.js.map +1 -0
  411. package/dist/tools/tool-builder/types.d.ts +97 -0
  412. package/dist/tools/tool-builder/types.d.ts.map +1 -0
  413. package/dist/tools/tool-builder/types.js +9 -0
  414. package/dist/tools/tool-builder/types.js.map +1 -0
  415. package/dist/tools/tool-builder.d.ts +16 -0
  416. package/dist/tools/tool-builder.d.ts.map +1 -0
  417. package/dist/tools/tool-builder.js +16 -0
  418. package/dist/tools/tool-builder.js.map +1 -0
  419. package/dist/uninstall-skill.d.ts +52 -0
  420. package/dist/uninstall-skill.d.ts.map +1 -0
  421. package/dist/uninstall-skill.js +146 -0
  422. package/dist/uninstall-skill.js.map +1 -0
  423. package/dist/uninstall.d.ts +73 -0
  424. package/dist/uninstall.d.ts.map +1 -0
  425. package/dist/uninstall.js +82 -0
  426. package/dist/uninstall.js.map +1 -0
  427. package/icon.png +0 -0
  428. package/manifest.json +10 -10
  429. package/package.json +4 -1
  430. package/skills/yt-builder-mcp/SKILL.md +30 -26
@@ -0,0 +1,69 @@
1
+ /**
2
+ * W9 — `set-default` CLI subcommand.
3
+ *
4
+ * Flips the `is_default` flag on the target entry to `true`, clears
5
+ * it on every other entry, and updates `default_site_id` to the
6
+ * target. Fails with code `'UNKNOWN_SITE'` when the site_id is not
7
+ * present.
8
+ *
9
+ * Idempotent: setting the already-default site as default is a
10
+ * successful no-op (the file is still rewritten so any drift between
11
+ * `default_site_id` and the per-entry `is_default` flag is healed in
12
+ * the same pass).
13
+ *
14
+ * @license MIT
15
+ */
16
+ import { loadSitesFile, saveSitesFile } from '../store.js';
17
+ export class SetDefaultError extends Error {
18
+ code;
19
+ constructor(code, message) {
20
+ super(message);
21
+ this.code = code;
22
+ this.name = 'SetDefaultError';
23
+ }
24
+ }
25
+ export async function setDefaultCommand(siteId, path, opts, deps) {
26
+ const file = await deps.load(path);
27
+ if (!file.sites.some((s) => s.site_id === siteId)) {
28
+ throw new SetDefaultError('UNKNOWN_SITE', `Site "${siteId}" not found in ${path}. ` +
29
+ (file.sites.length > 0
30
+ ? `Available: ${file.sites.map((s) => s.site_id).join(', ')}.`
31
+ : '(no sites configured)'));
32
+ }
33
+ const previousDefault = file.default_site_id;
34
+ // W12-R2A (A2-M1) — destructive-routing-op safeguard. Flipping the
35
+ // default redirects every subsequent tool call that omits `site_id`
36
+ // to a different connected site. That can silently land write-ops
37
+ // on the wrong CMS install. Fail-closed: if `--yes` is not set, a
38
+ // confirm hook is REQUIRED. Idempotent flip (already-default) is
39
+ // still gated — the file is rewritten even on no-op, and an
40
+ // operator confirming "yes" is the only reliable safe-belt.
41
+ if (opts.yes !== true) {
42
+ if (deps.confirm === undefined) {
43
+ throw new SetDefaultError('SET_DEFAULT_CONFIRM_REQUIRED', `Setting default to "${siteId}" requires --yes (no interactive `
44
+ + `confirm available in this context). Re-run with --yes to skip the prompt.`);
45
+ }
46
+ const priorLabel = previousDefault !== null ? `"${previousDefault}"` : '(none)';
47
+ const cont = await deps.confirm(`Switch default site from ${priorLabel} to "${siteId}" in ${path}? `
48
+ + `This changes which site every subsequent tool call routes to by default.`);
49
+ if (!cont) {
50
+ return { siteId, path, previousDefault, cancelled: true };
51
+ }
52
+ }
53
+ const nextSites = file.sites.map((s) => ({
54
+ ...s,
55
+ is_default: s.site_id === siteId,
56
+ }));
57
+ const nextFile = {
58
+ schema_version: 1,
59
+ default_site_id: siteId,
60
+ sites: nextSites,
61
+ };
62
+ await deps.save(path, nextFile);
63
+ return { siteId, path, previousDefault, cancelled: false };
64
+ }
65
+ export const DEFAULT_SET_DEFAULT_DEPS = {
66
+ load: loadSitesFile,
67
+ save: saveSitesFile,
68
+ };
69
+ //# sourceMappingURL=set-default.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set-default.js","sourceRoot":"","sources":["../../../src/sites/cli/set-default.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAiB3D,MAAM,OAAO,eAAgB,SAAQ,KAAK;IACV;IAA5B,YAA4B,IAAY,EAAE,OAAe;QACrD,KAAK,CAAC,OAAO,CAAC,CAAC;QADS,SAAI,GAAJ,IAAI,CAAQ;QAEpC,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAClC,CAAC;CACJ;AAeD,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACnC,MAAc,EACd,IAAY,EACZ,IAAuB,EACvB,IAAoB;IAEpB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,MAAM,CAAC,EAAE,CAAC;QAChD,MAAM,IAAI,eAAe,CACrB,cAAc,EACd,SAAS,MAAM,kBAAkB,IAAI,IAAI;YACrC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;gBAClB,CAAC,CAAC,cAAc,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;gBAC9D,CAAC,CAAC,uBAAuB,CAAC,CACrC,CAAC;IACN,CAAC;IAED,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;IAE7C,mEAAmE;IACnE,oEAAoE;IACpE,kEAAkE;IAClE,kEAAkE;IAClE,iEAAiE;IACjE,4DAA4D;IAC5D,4DAA4D;IAC5D,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,EAAE,CAAC;QACpB,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC7B,MAAM,IAAI,eAAe,CACrB,8BAA8B,EAC9B,uBAAuB,MAAM,mCAAmC;kBAC1D,2EAA2E,CACpF,CAAC;QACN,CAAC;QACD,MAAM,UAAU,GAAG,eAAe,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,eAAe,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC;QAChF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAC3B,4BAA4B,UAAU,QAAQ,MAAM,QAAQ,IAAI,IAAI;cAC9D,0EAA0E,CACnF,CAAC;QACF,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;QAC9D,CAAC;IACL,CAAC;IAED,MAAM,SAAS,GAAiB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACnD,GAAG,CAAC;QACJ,UAAU,EAAE,CAAC,CAAC,OAAO,KAAK,MAAM;KACnC,CAAC,CAAC,CAAC;IAEJ,MAAM,QAAQ,GAAe;QACzB,cAAc,EAAE,CAAC;QACjB,eAAe,EAAE,MAAM;QACvB,KAAK,EAAE,SAAS;KACnB,CAAC;IAEF,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAEhC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AAC/D,CAAC;AAED,MAAM,CAAC,MAAM,wBAAwB,GAAmB;IACpD,IAAI,EAAE,aAAa;IACnB,IAAI,EAAE,aAAa;CACtB,CAAC"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * W9 — `test-site` CLI subcommand.
3
+ *
4
+ * Live connectivity probe for ONE site_id. Mirrors the runtime
5
+ * behaviour of the `yootheme_builder_sites_test` MCP tool, but from
6
+ * the CLI so operators can pre-flight a site without launching the
7
+ * stdio server.
8
+ *
9
+ * Pipeline (per plan §W9):
10
+ * 1. Load `sites.json` via the W1 store.
11
+ * 2. Build a {@link SiteRegistry} + {@link ClientPool} from the
12
+ * entries, wired to the supplied {@link SecretResolver}.
13
+ * 3. Call `pool.resolve(siteId)` → throws structured
14
+ * {@link UnknownSiteError} / {@link NoDefaultSiteError} which we
15
+ * map to a structured CLI result + a non-zero exit code.
16
+ * 4. Probe `/health` (no auth) + `/etag` (auth) in parallel via
17
+ * `Promise.allSettled` so a failure on one path never hides the
18
+ * other's outcome.
19
+ * 5. Print a green/red structured result and return it for the
20
+ * dispatcher / tests.
21
+ *
22
+ * Returns a {@link TestSiteResult} (not exit codes directly) so tests
23
+ * can assert deterministic outputs without re-implementing the
24
+ * probe-routing logic.
25
+ *
26
+ * @license MIT
27
+ */
28
+ import { type Platform, type PlatformKind } from '../../platform/index.js';
29
+ import { ClientPool } from '../client-pool.js';
30
+ import { SiteRegistry } from '../registry.js';
31
+ import type { SitesFileT } from '../schema.js';
32
+ import { type SecretResolver } from '../secret-resolver.js';
33
+ export interface TestSiteResult {
34
+ readonly siteId: string;
35
+ readonly siteUrl: string;
36
+ readonly platform: PlatformKind | 'unknown';
37
+ readonly pluginReachable: boolean;
38
+ readonly bearerValid: boolean;
39
+ readonly etagReceived: boolean;
40
+ readonly summary: string;
41
+ readonly pluginError?: string;
42
+ readonly bearerError?: string;
43
+ /** True when site_id was not in the registry. */
44
+ readonly unknownSite: boolean;
45
+ /** Available ids when unknownSite is true. */
46
+ readonly available?: readonly string[];
47
+ }
48
+ export interface TestSiteDeps {
49
+ readonly load: (path: string) => Promise<SitesFileT>;
50
+ readonly secretResolver?: SecretResolver;
51
+ /** Inject the platform probe for tests (no network). */
52
+ readonly platformForUrlAsync?: (url: string, hint?: PlatformKind) => Promise<Platform>;
53
+ /**
54
+ * Inject the pool factory. Tests pass a pool that does NOT call
55
+ * the real RestClient (they pre-stub the response shape).
56
+ * Production wires the default ClientPool below.
57
+ */
58
+ readonly buildPool?: (registry: SiteRegistry, resolver: SecretResolver) => ClientPool;
59
+ readonly log?: (line: string) => void;
60
+ }
61
+ export declare class TestSiteError extends Error {
62
+ readonly code: string;
63
+ constructor(code: string, message: string);
64
+ }
65
+ /**
66
+ * Build the runtime result lines for stdout — keeps the live CLI path
67
+ * + tests in sync without forcing tests to parse text.
68
+ */
69
+ export declare function renderTestSiteLines(result: TestSiteResult): readonly string[];
70
+ /**
71
+ * Probe one site and return a structured outcome. Never throws on a
72
+ * probe failure (those are surfaced inside the result); throws ONLY
73
+ * on file-IO failures the operator cannot recover from.
74
+ */
75
+ export declare function testSiteCommand(siteId: string, path: string, deps: TestSiteDeps): Promise<TestSiteResult>;
76
+ export declare const DEFAULT_TEST_SITE_DEPS: TestSiteDeps;
77
+ //# sourceMappingURL=test-site.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-site.d.ts","sourceRoot":"","sources":["../../../src/sites/cli/test-site.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAEH,KAAK,QAAQ,EACb,KAAK,YAAY,EACpB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAM/C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAEH,KAAK,cAAc,EACtB,MAAM,uBAAuB,CAAC;AAG/B,MAAM,WAAW,cAAc;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,YAAY,GAAG,SAAS,CAAC;IAC5C,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,iDAAiD;IACjD,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,8CAA8C;IAC9C,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1C;AAED,MAAM,WAAW,YAAY;IACzB,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;IACrD,QAAQ,CAAC,cAAc,CAAC,EAAE,cAAc,CAAC;IACzC,wDAAwD;IACxD,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAC3B,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,YAAY,KAClB,OAAO,CAAC,QAAQ,CAAC,CAAC;IACvB;;;;OAIG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,CACjB,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,cAAc,KACvB,UAAU,CAAC;IAChB,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC;AAED,qBAAa,aAAc,SAAQ,KAAK;aACR,IAAI,EAAE,MAAM;gBAAZ,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAI5D;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,cAAc,GAAG,SAAS,MAAM,EAAE,CA0B7E;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CACjC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,YAAY,GACnB,OAAO,CAAC,cAAc,CAAC,CAmEzB;AAED,eAAO,MAAM,sBAAsB,EAAE,YAEpC,CAAC"}
@@ -0,0 +1,146 @@
1
+ /**
2
+ * W9 — `test-site` CLI subcommand.
3
+ *
4
+ * Live connectivity probe for ONE site_id. Mirrors the runtime
5
+ * behaviour of the `yootheme_builder_sites_test` MCP tool, but from
6
+ * the CLI so operators can pre-flight a site without launching the
7
+ * stdio server.
8
+ *
9
+ * Pipeline (per plan §W9):
10
+ * 1. Load `sites.json` via the W1 store.
11
+ * 2. Build a {@link SiteRegistry} + {@link ClientPool} from the
12
+ * entries, wired to the supplied {@link SecretResolver}.
13
+ * 3. Call `pool.resolve(siteId)` → throws structured
14
+ * {@link UnknownSiteError} / {@link NoDefaultSiteError} which we
15
+ * map to a structured CLI result + a non-zero exit code.
16
+ * 4. Probe `/health` (no auth) + `/etag` (auth) in parallel via
17
+ * `Promise.allSettled` so a failure on one path never hides the
18
+ * other's outcome.
19
+ * 5. Print a green/red structured result and return it for the
20
+ * dispatcher / tests.
21
+ *
22
+ * Returns a {@link TestSiteResult} (not exit codes directly) so tests
23
+ * can assert deterministic outputs without re-implementing the
24
+ * probe-routing logic.
25
+ *
26
+ * @license MIT
27
+ */
28
+ import { platformForUrlAsync, } from '../../platform/index.js';
29
+ import { ClientPool } from '../client-pool.js';
30
+ import { NoDefaultSiteError, UnknownSiteError, } from '../client-pool.js';
31
+ import { probeSite } from '../probe.js';
32
+ import { SiteRegistry } from '../registry.js';
33
+ import { CompositeSecretResolver, } from '../secret-resolver.js';
34
+ import { loadSitesFile } from '../store.js';
35
+ export class TestSiteError extends Error {
36
+ code;
37
+ constructor(code, message) {
38
+ super(message);
39
+ this.code = code;
40
+ this.name = 'TestSiteError';
41
+ }
42
+ }
43
+ /**
44
+ * Build the runtime result lines for stdout — keeps the live CLI path
45
+ * + tests in sync without forcing tests to parse text.
46
+ */
47
+ export function renderTestSiteLines(result) {
48
+ if (result.unknownSite) {
49
+ const avail = result.available ?? [];
50
+ return [
51
+ `FAIL — Site "${result.siteId}" not found.`,
52
+ avail.length > 0
53
+ ? `Available: ${avail.join(', ')}`
54
+ : '(no sites configured)',
55
+ ];
56
+ }
57
+ const lines = [
58
+ `Site: ${result.siteId}`,
59
+ `URL: ${result.siteUrl}`,
60
+ `Platform: ${result.platform}`,
61
+ `Plugin reachable: ${result.pluginReachable ? 'yes' : 'NO'}`,
62
+ `Bearer valid: ${result.bearerValid ? 'yes' : 'NO'}`,
63
+ `ETag received: ${result.etagReceived ? 'yes' : 'NO'}`,
64
+ ];
65
+ if (result.pluginError !== undefined) {
66
+ lines.push(`Plugin error: ${result.pluginError}`);
67
+ }
68
+ if (result.bearerError !== undefined) {
69
+ lines.push(`Bearer error: ${result.bearerError}`);
70
+ }
71
+ lines.push('', result.summary);
72
+ return lines;
73
+ }
74
+ /**
75
+ * Probe one site and return a structured outcome. Never throws on a
76
+ * probe failure (those are surfaced inside the result); throws ONLY
77
+ * on file-IO failures the operator cannot recover from.
78
+ */
79
+ export async function testSiteCommand(siteId, path, deps) {
80
+ const file = await deps.load(path);
81
+ const registry = new SiteRegistry(file, {
82
+ ...(deps.platformForUrlAsync !== undefined
83
+ ? { platformForUrlAsync: deps.platformForUrlAsync }
84
+ : { platformForUrlAsync }),
85
+ });
86
+ const resolver = deps.secretResolver ?? new CompositeSecretResolver();
87
+ const pool = deps.buildPool !== undefined
88
+ ? deps.buildPool(registry, resolver)
89
+ : new ClientPool(registry, resolver);
90
+ let client;
91
+ let site;
92
+ try {
93
+ const resolution = await pool.resolve(siteId);
94
+ client = resolution.client;
95
+ site = resolution.site;
96
+ }
97
+ catch (e) {
98
+ if (e instanceof UnknownSiteError) {
99
+ const result = {
100
+ siteId,
101
+ siteUrl: '',
102
+ platform: 'unknown',
103
+ pluginReachable: false,
104
+ bearerValid: false,
105
+ etagReceived: false,
106
+ summary: `FAIL — Site "${siteId}" not found.`,
107
+ unknownSite: true,
108
+ available: e.available,
109
+ };
110
+ if (deps.log !== undefined) {
111
+ for (const line of renderTestSiteLines(result))
112
+ deps.log(line);
113
+ }
114
+ return result;
115
+ }
116
+ if (e instanceof NoDefaultSiteError) {
117
+ throw new TestSiteError('NO_DEFAULT_SITE', e.message);
118
+ }
119
+ throw e;
120
+ }
121
+ // W12-R1.2: probe lives in sites/probe.ts — single source of truth
122
+ // shared with the MCP tool surface so the two output channels never
123
+ // drift on edge cases (401 with /health rejected, 500 on /etag etc.).
124
+ const probe = await probeSite(client);
125
+ const result = {
126
+ siteId: site.id,
127
+ siteUrl: site.url,
128
+ platform: site.platform.kind,
129
+ pluginReachable: probe.plugin_reachable,
130
+ bearerValid: probe.bearer_valid,
131
+ etagReceived: probe.etag_received,
132
+ summary: probe.summary,
133
+ ...(probe.plugin_error !== undefined ? { pluginError: probe.plugin_error } : {}),
134
+ ...(probe.bearer_error !== undefined ? { bearerError: probe.bearer_error } : {}),
135
+ unknownSite: false,
136
+ };
137
+ if (deps.log !== undefined) {
138
+ for (const line of renderTestSiteLines(result))
139
+ deps.log(line);
140
+ }
141
+ return result;
142
+ }
143
+ export const DEFAULT_TEST_SITE_DEPS = {
144
+ load: loadSitesFile,
145
+ };
146
+ //# sourceMappingURL=test-site.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-site.js","sourceRoot":"","sources":["../../../src/sites/cli/test-site.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EACH,mBAAmB,GAGtB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EACH,kBAAkB,EAClB,gBAAgB,GACnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,OAAO,EACH,uBAAuB,GAE1B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAsC5C,MAAM,OAAO,aAAc,SAAQ,KAAK;IACR;IAA5B,YAA4B,IAAY,EAAE,OAAe;QACrD,KAAK,CAAC,OAAO,CAAC,CAAC;QADS,SAAI,GAAJ,IAAI,CAAQ;QAEpC,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAChC,CAAC;CACJ;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAsB;IACtD,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;QACrB,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC;QACrC,OAAO;YACH,gBAAgB,MAAM,CAAC,MAAM,cAAc;YAC3C,KAAK,CAAC,MAAM,GAAG,CAAC;gBACZ,CAAC,CAAC,cAAc,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBAClC,CAAC,CAAC,uBAAuB;SAChC,CAAC;IACN,CAAC;IACD,MAAM,KAAK,GAAa;QACpB,mBAAmB,MAAM,CAAC,MAAM,EAAE;QAClC,mBAAmB,MAAM,CAAC,OAAO,EAAE;QACnC,mBAAmB,MAAM,CAAC,QAAQ,EAAE;QACpC,qBAAqB,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE;QAC5D,qBAAqB,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE;QACxD,qBAAqB,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE;KAC5D,CAAC;IACF,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,mBAAmB,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,mBAAmB,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;IACxD,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAC/B,OAAO,KAAK,CAAC;AACjB,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACjC,MAAc,EACd,IAAY,EACZ,IAAkB;IAElB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,QAAQ,GAAG,IAAI,YAAY,CAAC,IAAI,EAAE;QACpC,GAAG,CAAC,IAAI,CAAC,mBAAmB,KAAK,SAAS;YACtC,CAAC,CAAC,EAAE,mBAAmB,EAAE,IAAI,CAAC,mBAAmB,EAAE;YACnD,CAAC,CAAC,EAAE,mBAAmB,EAAE,CAAC;KACjC,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,IAAI,IAAI,uBAAuB,EAAE,CAAC;IACtE,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,KAAK,SAAS;QACrC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC;QACpC,CAAC,CAAC,IAAI,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAEzC,IAAI,MAAM,CAAC;IACX,IAAI,IAAI,CAAC;IACT,IAAI,CAAC;QACD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC9C,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;QAC3B,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;IAC3B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,IAAI,CAAC,YAAY,gBAAgB,EAAE,CAAC;YAChC,MAAM,MAAM,GAAmB;gBAC3B,MAAM;gBACN,OAAO,EAAE,EAAE;gBACX,QAAQ,EAAE,SAAS;gBACnB,eAAe,EAAE,KAAK;gBACtB,WAAW,EAAE,KAAK;gBAClB,YAAY,EAAE,KAAK;gBACnB,OAAO,EAAE,gBAAgB,MAAM,cAAc;gBAC7C,WAAW,EAAE,IAAI;gBACjB,SAAS,EAAE,CAAC,CAAC,SAAS;aACzB,CAAC;YACF,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;gBACzB,KAAK,MAAM,IAAI,IAAI,mBAAmB,CAAC,MAAM,CAAC;oBAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACnE,CAAC;YACD,OAAO,MAAM,CAAC;QAClB,CAAC;QACD,IAAI,CAAC,YAAY,kBAAkB,EAAE,CAAC;YAClC,MAAM,IAAI,aAAa,CACnB,iBAAiB,EACjB,CAAC,CAAC,OAAO,CACZ,CAAC;QACN,CAAC;QACD,MAAM,CAAC,CAAC;IACZ,CAAC;IAED,mEAAmE;IACnE,oEAAoE;IACpE,sEAAsE;IACtE,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC;IAEtC,MAAM,MAAM,GAAmB;QAC3B,MAAM,EAAE,IAAI,CAAC,EAAE;QACf,OAAO,EAAE,IAAI,CAAC,GAAG;QACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI;QAC5B,eAAe,EAAE,KAAK,CAAC,gBAAgB;QACvC,WAAW,EAAE,KAAK,CAAC,YAAY;QAC/B,YAAY,EAAE,KAAK,CAAC,aAAa;QACjC,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,GAAG,CAAC,KAAK,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChF,GAAG,CAAC,KAAK,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChF,WAAW,EAAE,KAAK;KACrB,CAAC;IAEF,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;QACzB,KAAK,MAAM,IAAI,IAAI,mBAAmB,CAAC,MAAM,CAAC;YAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAiB;IAChD,IAAI,EAAE,aAAa;CACtB,CAAC"}
@@ -0,0 +1,157 @@
1
+ /**
2
+ * W4 — ClientPool: caches one {@link RestClient} per `site_id`.
3
+ *
4
+ * The pool sits between the W3 {@link SiteRegistry} (which maps a
5
+ * `site_id` → entry + memoised {@link Platform}) and the W2
6
+ * {@link SecretResolver} (which produces a bearer token at call time)
7
+ * and emits {@link PoolResolution} bundles ready for tool handlers.
8
+ *
9
+ * Design choices (per plan §W4, Z.562-644):
10
+ *
11
+ * - **One client per site_id.** The first `resolve(id)` runs bearer +
12
+ * platform resolve in parallel via `Promise.all` (saves one
13
+ * round-trip-time per cold site) and stores the constructed
14
+ * `RestClient`. All subsequent calls reuse the same instance —
15
+ * identity-equal across the process lifetime.
16
+ *
17
+ * - **Cold parallel calls are racey-but-safe.** When N callers arrive
18
+ * for the same uncached site_id simultaneously, the plan §W4
19
+ * explicitly accepts N first-time `secretResolver.resolve()` calls
20
+ * (Z.630): `op read` is idempotent + latency dominates so a
21
+ * hard-once Promise-cache would not materially help. The W3
22
+ * registry's Promise-cache handles the platform side. The last
23
+ * setter wins the `cache.set(id, client)` race; subsequent
24
+ * `resolve()` calls see a stable single instance. Identity is
25
+ * eventual, not instantaneous — but stable from call N+1 onwards.
26
+ *
27
+ * - **`invalidate(siteId)` for post-401 force-re-resolve.** When the
28
+ * auth layer detects a `401 invalid_kid`, it can drop the cached
29
+ * client so the next call re-fetches the bearer through `op` and
30
+ * constructs a fresh `RestClient`.
31
+ *
32
+ * - **Structured errors.** `NoDefaultSiteError` and `UnknownSiteError`
33
+ * carry `code` + (for unknown) `siteId` + `available[]` so the
34
+ * auth/tool layer can branch on `error.code` instead of substring
35
+ * matching the message.
36
+ *
37
+ * @license MIT
38
+ */
39
+ import { RestClient } from '../client.js';
40
+ import type { SiteRegistry, ResolvedSite } from './registry.js';
41
+ import type { SecretResolver } from './secret-resolver.js';
42
+ /**
43
+ * Thrown when `resolve()` is called without a `siteId` AND the
44
+ * registry has no default configured (neither `default_site_id` nor a
45
+ * flagged `is_default:true` entry). The auth layer surfaces this as a
46
+ * `no_default_site` MCP error with a hint to run
47
+ * `npx -y @wootsup/yt-builder-mcp add-site --default`.
48
+ */
49
+ export declare class NoDefaultSiteError extends Error {
50
+ readonly code: "no_default_site";
51
+ constructor(message?: string);
52
+ }
53
+ /**
54
+ * Thrown when `resolve('some-id')` cannot find `some-id` in the
55
+ * registry. Carries the requested `siteId` and the (insertion-order)
56
+ * list of configured ids so the caller can render a friendly
57
+ * "did-you-mean" hint.
58
+ */
59
+ export declare class UnknownSiteError extends Error {
60
+ readonly siteId: string;
61
+ readonly available: readonly string[];
62
+ readonly code: "unknown_site";
63
+ constructor(siteId: string, available: readonly string[]);
64
+ }
65
+ /**
66
+ * Bundle returned by {@link ClientPool.resolve}. Carries the cached
67
+ * REST client together with the fully-resolved site descriptor for
68
+ * downstream logging / display.
69
+ */
70
+ export interface PoolResolution {
71
+ readonly client: RestClient;
72
+ readonly site: ResolvedSite;
73
+ }
74
+ /**
75
+ * Process-local cache of {@link RestClient} instances keyed by
76
+ * `site_id`. Constructed once at server boot (W6) and shared across
77
+ * all tool handlers.
78
+ *
79
+ * The pool is NOT thread-safe in the strict sense (Node is
80
+ * single-threaded but `await` can interleave); the cold-parallel-call
81
+ * behaviour is documented at the top of this file.
82
+ */
83
+ export declare class ClientPool {
84
+ private readonly _registry;
85
+ private readonly secretResolver;
86
+ private readonly timeoutMs;
87
+ private readonly cache;
88
+ /**
89
+ * Runtime active-site override (Phase 3 — `yootheme_builder_use_site`).
90
+ *
91
+ * The {@link SiteRegistry} is immutable: its `defaultSiteId()` is
92
+ * fixed for the process lifetime. api-mapper's parallel feature
93
+ * (`apimapper_use_profile`) moves a mutable active-pointer in its
94
+ * on-disk ProfileStore. YT Builder instead keeps the registry
95
+ * read-only and layers a process-local override HERE: when set,
96
+ * `resolve(undefined)` targets this id BEFORE consulting
97
+ * `registry.defaultSiteId()`. An explicit `site_id` argument to
98
+ * `resolve()` always wins over the override.
99
+ *
100
+ * `null` = no override (registry default in effect).
101
+ */
102
+ private activeOverride;
103
+ constructor(_registry: SiteRegistry, secretResolver: SecretResolver, timeoutMs?: number);
104
+ /**
105
+ * The current runtime active-site override, or `null` when none is
106
+ * set (the registry default is in effect). Read-only peek — does not
107
+ * resolve a client or hit the network.
108
+ */
109
+ activeSiteId(): string | null;
110
+ /**
111
+ * Set (or clear) the runtime active-site override.
112
+ *
113
+ * Passing a `site_id` makes every subsequent `resolve(undefined)`
114
+ * target that site. Passing `null` clears the override so the
115
+ * registry default applies again.
116
+ *
117
+ * @throws {UnknownSiteError} when `siteId` is not in the registry —
118
+ * the pointer is left UNCHANGED on a bad switch so a typo never
119
+ * silently strands the session on a non-existent site.
120
+ */
121
+ setActiveSite(siteId: string | null): void;
122
+ /**
123
+ * Read-only accessor for the underlying {@link SiteRegistry}. Used
124
+ * internally by the W7 `buildSitesTools(pool)` aggregator so the
125
+ * `sites_list` tool can render the configured-sites table without
126
+ * requiring callers to thread the registry separately. The registry
127
+ * itself is immutable from the outside (no mutator surface) so
128
+ * exposing it here is safe — `listForDisplay()` / `defaultSiteId()` /
129
+ * `listIds()` are all read-only operations.
130
+ *
131
+ * @internal Internal accessor for buildSitesTools; do not consume
132
+ * from tool handlers. Handlers should call `pool.resolve(siteId)`
133
+ * to get a `{client, site}` bundle instead.
134
+ */
135
+ get registry(): SiteRegistry;
136
+ /**
137
+ * Resolve a site_id to its cached {@link RestClient} + descriptor.
138
+ *
139
+ * @param siteId Explicit site_id from the tool param. When
140
+ * `undefined`, the registry's `defaultSiteId()` is used.
141
+ * @throws {NoDefaultSiteError} when `siteId` is omitted and no
142
+ * default is configured.
143
+ * @throws {UnknownSiteError} when the resolved id is not in the
144
+ * registry (either the explicit id is wrong, or the registry's
145
+ * `default_site_id` points at a stale entry).
146
+ */
147
+ resolve(siteId?: string): Promise<PoolResolution>;
148
+ /**
149
+ * Drop the cached client for `siteId` — used by the auth layer
150
+ * after a `401 invalid_kid` so the next call re-runs the bearer
151
+ * resolve and builds a fresh {@link RestClient}.
152
+ *
153
+ * No-op when `siteId` is not in the cache.
154
+ */
155
+ invalidate(siteId: string): void;
156
+ }
157
+ //# sourceMappingURL=client-pool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-pool.d.ts","sourceRoot":"","sources":["../../src/sites/client-pool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D;;;;;;GAMG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;IACzC,SAAgB,IAAI,EAAG,iBAAiB,CAAU;gBAG9C,OAAO,SAG6E;CAK3F;AAED;;;;;GAKG;AACH,qBAAa,gBAAiB,SAAQ,KAAK;aAInB,MAAM,EAAE,MAAM;aACd,SAAS,EAAE,SAAS,MAAM,EAAE;IAJhD,SAAgB,IAAI,EAAG,cAAc,CAAU;gBAG3B,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,MAAM,EAAE;CAQnD;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC3B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;CAC/B;AAED;;;;;;;;GAQG;AACH,qBAAa,UAAU;IAoBf,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,SAAS;IArB9B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiC;IAEvD;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,cAAc,CAAuB;gBAGxB,SAAS,EAAE,YAAY,EACvB,cAAc,EAAE,cAAc,EAC9B,SAAS,GAAE,MAAe;IAG/C;;;;OAIG;IACH,YAAY,IAAI,MAAM,GAAG,IAAI;IAI7B;;;;;;;;;;OAUG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAW1C;;;;;;;;;;;;OAYG;IACH,IAAI,QAAQ,IAAI,YAAY,CAE3B;IAED;;;;;;;;;;OAUG;IACG,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAqDvD;;;;;;OAMG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;CAGnC"}