@wootsup/yt-builder-mcp 1.0.1 → 1.1.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.
- package/README.md +18 -6
- package/bin/yt-builder-mcp.js +6 -0
- package/dist/auth.d.ts +119 -0
- package/dist/auth.d.ts.map +1 -0
- package/dist/auth.js +226 -0
- package/dist/auth.js.map +1 -0
- package/dist/client.d.ts +84 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +151 -0
- package/dist/client.js.map +1 -0
- package/dist/clients/claude-code.d.ts +18 -0
- package/dist/clients/claude-code.d.ts.map +1 -0
- package/dist/clients/claude-code.js +53 -0
- package/dist/clients/claude-code.js.map +1 -0
- package/dist/clients/claude-desktop.d.ts +19 -0
- package/dist/clients/claude-desktop.d.ts.map +1 -0
- package/dist/clients/claude-desktop.js +56 -0
- package/dist/clients/claude-desktop.js.map +1 -0
- package/dist/clients/cline.d.ts +26 -0
- package/dist/clients/cline.d.ts.map +1 -0
- package/dist/clients/cline.js +80 -0
- package/dist/clients/cline.js.map +1 -0
- package/dist/clients/codex-cli.d.ts +42 -0
- package/dist/clients/codex-cli.d.ts.map +1 -0
- package/dist/clients/codex-cli.js +194 -0
- package/dist/clients/codex-cli.js.map +1 -0
- package/dist/clients/continue.d.ts +13 -0
- package/dist/clients/continue.d.ts.map +1 -0
- package/dist/clients/continue.js +52 -0
- package/dist/clients/continue.js.map +1 -0
- package/dist/clients/cursor.d.ts +12 -0
- package/dist/clients/cursor.d.ts.map +1 -0
- package/dist/clients/cursor.js +38 -0
- package/dist/clients/cursor.js.map +1 -0
- package/dist/clients/gemini-cli.d.ts +18 -0
- package/dist/clients/gemini-cli.d.ts.map +1 -0
- package/dist/clients/gemini-cli.js +44 -0
- package/dist/clients/gemini-cli.js.map +1 -0
- package/dist/clients/home.d.ts +14 -0
- package/dist/clients/home.d.ts.map +1 -0
- package/dist/clients/home.js +20 -0
- package/dist/clients/home.js.map +1 -0
- package/dist/clients/index.d.ts +52 -0
- package/dist/clients/index.d.ts.map +1 -0
- package/dist/clients/index.js +72 -0
- package/dist/clients/index.js.map +1 -0
- package/dist/clients/roo-code.d.ts +23 -0
- package/dist/clients/roo-code.d.ts.map +1 -0
- package/dist/clients/roo-code.js +69 -0
- package/dist/clients/roo-code.js.map +1 -0
- package/dist/clients/zed.d.ts +12 -0
- package/dist/clients/zed.d.ts.map +1 -0
- package/dist/clients/zed.js +41 -0
- package/dist/clients/zed.js.map +1 -0
- package/dist/errors/hints.d.ts +51 -0
- package/dist/errors/hints.d.ts.map +1 -0
- package/dist/errors/hints.js +95 -0
- package/dist/errors/hints.js.map +1 -0
- package/dist/errors/mask.d.ts +35 -0
- package/dist/errors/mask.d.ts.map +1 -0
- package/dist/errors/mask.js +49 -0
- package/dist/errors/mask.js.map +1 -0
- package/dist/errors/sanitize.d.ts +31 -0
- package/dist/errors/sanitize.d.ts.map +1 -0
- package/dist/errors/sanitize.js +100 -0
- package/dist/errors/sanitize.js.map +1 -0
- package/dist/errors.d.ts +42 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +61 -0
- package/dist/errors.js.map +1 -0
- package/dist/gateway/advanced-tool/discovery.d.ts +19 -0
- package/dist/gateway/advanced-tool/discovery.d.ts.map +1 -0
- package/dist/gateway/advanced-tool/discovery.js +53 -0
- package/dist/gateway/advanced-tool/discovery.js.map +1 -0
- package/dist/gateway/advanced-tool/domains.d.ts +47 -0
- package/dist/gateway/advanced-tool/domains.d.ts.map +1 -0
- package/dist/gateway/advanced-tool/domains.js +94 -0
- package/dist/gateway/advanced-tool/domains.js.map +1 -0
- package/dist/gateway/advanced-tool/execute.d.ts +29 -0
- package/dist/gateway/advanced-tool/execute.d.ts.map +1 -0
- package/dist/gateway/advanced-tool/execute.js +54 -0
- package/dist/gateway/advanced-tool/execute.js.map +1 -0
- package/dist/gateway/advanced-tool/index.d.ts +36 -0
- package/dist/gateway/advanced-tool/index.d.ts.map +1 -0
- package/dist/gateway/advanced-tool/index.js +39 -0
- package/dist/gateway/advanced-tool/index.js.map +1 -0
- package/dist/gateway/advanced-tool/register.d.ts +18 -0
- package/dist/gateway/advanced-tool/register.d.ts.map +1 -0
- package/dist/gateway/advanced-tool/register.js +69 -0
- package/dist/gateway/advanced-tool/register.js.map +1 -0
- package/dist/gateway/advanced-tool.d.ts +13 -0
- package/dist/gateway/advanced-tool.d.ts.map +1 -0
- package/dist/gateway/advanced-tool.js +13 -0
- package/dist/gateway/advanced-tool.js.map +1 -0
- package/dist/gateway/capturing-server.d.ts +117 -0
- package/dist/gateway/capturing-server.d.ts.map +1 -0
- package/dist/gateway/capturing-server.js +103 -0
- package/dist/gateway/capturing-server.js.map +1 -0
- package/dist/gateway/essentials.d.ts +49 -0
- package/dist/gateway/essentials.d.ts.map +1 -0
- package/dist/gateway/essentials.js +92 -0
- package/dist/gateway/essentials.js.map +1 -0
- package/dist/gateway/test-support.d.ts +41 -0
- package/dist/gateway/test-support.d.ts.map +1 -0
- package/dist/gateway/test-support.js +60 -0
- package/dist/gateway/test-support.js.map +1 -0
- package/dist/index.d.ts +29 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +113 -0
- package/dist/index.js.map +1 -0
- package/dist/install-skill.d.ts +43 -0
- package/dist/install-skill.d.ts.map +1 -0
- package/dist/install-skill.js +118 -0
- package/dist/install-skill.js.map +1 -0
- package/dist/platform/detect.d.ts +64 -0
- package/dist/platform/detect.d.ts.map +1 -0
- package/dist/platform/detect.js +98 -0
- package/dist/platform/detect.js.map +1 -0
- package/dist/platform/index.d.ts +121 -0
- package/dist/platform/index.d.ts.map +1 -0
- package/dist/platform/index.js +176 -0
- package/dist/platform/index.js.map +1 -0
- package/dist/platform/joomla.d.ts +44 -0
- package/dist/platform/joomla.d.ts.map +1 -0
- package/dist/platform/joomla.js +46 -0
- package/dist/platform/joomla.js.map +1 -0
- package/dist/server.d.ts +109 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +237 -0
- package/dist/server.js.map +1 -0
- package/dist/setup-cli-confirm.d.ts +36 -0
- package/dist/setup-cli-confirm.d.ts.map +1 -0
- package/dist/setup-cli-confirm.js +59 -0
- package/dist/setup-cli-confirm.js.map +1 -0
- package/dist/setup-cli.d.ts +152 -0
- package/dist/setup-cli.d.ts.map +1 -0
- package/dist/setup-cli.js +870 -0
- package/dist/setup-cli.js.map +1 -0
- package/dist/setup-prompts.d.ts +41 -0
- package/dist/setup-prompts.d.ts.map +1 -0
- package/dist/setup-prompts.js +146 -0
- package/dist/setup-prompts.js.map +1 -0
- package/dist/setup-token.d.ts +38 -0
- package/dist/setup-token.d.ts.map +1 -0
- package/dist/setup-token.js +106 -0
- package/dist/setup-token.js.map +1 -0
- package/dist/setup-wizard-defaults.d.ts +43 -0
- package/dist/setup-wizard-defaults.d.ts.map +1 -0
- package/dist/setup-wizard-defaults.js +160 -0
- package/dist/setup-wizard-defaults.js.map +1 -0
- package/dist/setup-wizard-handshake.d.ts +25 -0
- package/dist/setup-wizard-handshake.d.ts.map +1 -0
- package/dist/setup-wizard-handshake.js +103 -0
- package/dist/setup-wizard-handshake.js.map +1 -0
- package/dist/setup-wizard-types.d.ts +164 -0
- package/dist/setup-wizard-types.d.ts.map +1 -0
- package/dist/setup-wizard-types.js +11 -0
- package/dist/setup-wizard-types.js.map +1 -0
- package/dist/setup-wizard.d.ts +33 -0
- package/dist/setup-wizard.d.ts.map +1 -0
- package/dist/setup-wizard.js +199 -0
- package/dist/setup-wizard.js.map +1 -0
- package/dist/setup.d.ts +17 -0
- package/dist/setup.d.ts.map +1 -0
- package/dist/setup.js +33 -0
- package/dist/setup.js.map +1 -0
- package/dist/sites/cli/add-site.d.ts +106 -0
- package/dist/sites/cli/add-site.d.ts.map +1 -0
- package/dist/sites/cli/add-site.js +185 -0
- package/dist/sites/cli/add-site.js.map +1 -0
- package/dist/sites/cli/list-sites.d.ts +40 -0
- package/dist/sites/cli/list-sites.d.ts.map +1 -0
- package/dist/sites/cli/list-sites.js +117 -0
- package/dist/sites/cli/list-sites.js.map +1 -0
- package/dist/sites/cli/remove-site.d.ts +60 -0
- package/dist/sites/cli/remove-site.d.ts.map +1 -0
- package/dist/sites/cli/remove-site.js +120 -0
- package/dist/sites/cli/remove-site.js.map +1 -0
- package/dist/sites/cli/set-default.d.ts +47 -0
- package/dist/sites/cli/set-default.d.ts.map +1 -0
- package/dist/sites/cli/set-default.js +69 -0
- package/dist/sites/cli/set-default.js.map +1 -0
- package/dist/sites/cli/test-site.d.ts +77 -0
- package/dist/sites/cli/test-site.d.ts.map +1 -0
- package/dist/sites/cli/test-site.js +146 -0
- package/dist/sites/cli/test-site.js.map +1 -0
- package/dist/sites/client-pool.d.ts +124 -0
- package/dist/sites/client-pool.d.ts.map +1 -0
- package/dist/sites/client-pool.js +172 -0
- package/dist/sites/client-pool.js.map +1 -0
- package/dist/sites/env-bridge.d.ts +55 -0
- package/dist/sites/env-bridge.d.ts.map +1 -0
- package/dist/sites/env-bridge.js +94 -0
- package/dist/sites/env-bridge.js.map +1 -0
- package/dist/sites/paths.d.ts +21 -0
- package/dist/sites/paths.d.ts.map +1 -0
- package/dist/sites/paths.js +37 -0
- package/dist/sites/paths.js.map +1 -0
- package/dist/sites/probe.d.ts +60 -0
- package/dist/sites/probe.d.ts.map +1 -0
- package/dist/sites/probe.js +112 -0
- package/dist/sites/probe.js.map +1 -0
- package/dist/sites/registry.d.ts +142 -0
- package/dist/sites/registry.d.ts.map +1 -0
- package/dist/sites/registry.js +163 -0
- package/dist/sites/registry.js.map +1 -0
- package/dist/sites/schema.d.ts +90 -0
- package/dist/sites/schema.d.ts.map +1 -0
- package/dist/sites/schema.js +71 -0
- package/dist/sites/schema.js.map +1 -0
- package/dist/sites/secret-resolver.d.ts +109 -0
- package/dist/sites/secret-resolver.d.ts.map +1 -0
- package/dist/sites/secret-resolver.js +189 -0
- package/dist/sites/secret-resolver.js.map +1 -0
- package/dist/sites/store.d.ts +82 -0
- package/dist/sites/store.d.ts.map +1 -0
- package/dist/sites/store.js +198 -0
- package/dist/sites/store.js.map +1 -0
- package/dist/sites/tools/index.d.ts +28 -0
- package/dist/sites/tools/index.d.ts.map +1 -0
- package/dist/sites/tools/index.js +30 -0
- package/dist/sites/tools/index.js.map +1 -0
- package/dist/sites/tools/sites-list.d.ts +48 -0
- package/dist/sites/tools/sites-list.d.ts.map +1 -0
- package/dist/sites/tools/sites-list.js +135 -0
- package/dist/sites/tools/sites-list.js.map +1 -0
- package/dist/sites/tools/sites-test.d.ts +47 -0
- package/dist/sites/tools/sites-test.d.ts.map +1 -0
- package/dist/sites/tools/sites-test.js +148 -0
- package/dist/sites/tools/sites-test.js.map +1 -0
- package/dist/skill-loader.d.ts +111 -0
- package/dist/skill-loader.d.ts.map +1 -0
- package/dist/skill-loader.js +191 -0
- package/dist/skill-loader.js.map +1 -0
- package/dist/tools/elements/builders.d.ts +24 -0
- package/dist/tools/elements/builders.d.ts.map +1 -0
- package/dist/tools/elements/builders.js +199 -0
- package/dist/tools/elements/builders.js.map +1 -0
- package/dist/tools/elements/handlers-write.d.ts +49 -0
- package/dist/tools/elements/handlers-write.d.ts.map +1 -0
- package/dist/tools/elements/handlers-write.js +148 -0
- package/dist/tools/elements/handlers-write.js.map +1 -0
- package/dist/tools/elements/handlers.d.ts +68 -0
- package/dist/tools/elements/handlers.d.ts.map +1 -0
- package/dist/tools/elements/handlers.js +206 -0
- package/dist/tools/elements/handlers.js.map +1 -0
- package/dist/tools/elements/index.d.ts +28 -0
- package/dist/tools/elements/index.d.ts.map +1 -0
- package/dist/tools/elements/index.js +27 -0
- package/dist/tools/elements/index.js.map +1 -0
- package/dist/tools/elements.d.ts +13 -0
- package/dist/tools/elements.d.ts.map +1 -0
- package/dist/tools/elements.js +13 -0
- package/dist/tools/elements.js.map +1 -0
- package/dist/tools/elicitation.d.ts +87 -0
- package/dist/tools/elicitation.d.ts.map +1 -0
- package/dist/tools/elicitation.js +100 -0
- package/dist/tools/elicitation.js.map +1 -0
- package/dist/tools/format/elements-format.d.ts +40 -0
- package/dist/tools/format/elements-format.d.ts.map +1 -0
- package/dist/tools/format/elements-format.js +194 -0
- package/dist/tools/format/elements-format.js.map +1 -0
- package/dist/tools/format/health-format.d.ts +79 -0
- package/dist/tools/format/health-format.d.ts.map +1 -0
- package/dist/tools/format/health-format.js +181 -0
- package/dist/tools/format/health-format.js.map +1 -0
- package/dist/tools/format/inspection-format.d.ts +58 -0
- package/dist/tools/format/inspection-format.d.ts.map +1 -0
- package/dist/tools/format/inspection-format.js +164 -0
- package/dist/tools/format/inspection-format.js.map +1 -0
- package/dist/tools/format/pages-format.d.ts +48 -0
- package/dist/tools/format/pages-format.d.ts.map +1 -0
- package/dist/tools/format/pages-format.js +137 -0
- package/dist/tools/format/pages-format.js.map +1 -0
- package/dist/tools/format/sources-format.d.ts +25 -0
- package/dist/tools/format/sources-format.d.ts.map +1 -0
- package/dist/tools/format/sources-format.js +208 -0
- package/dist/tools/format/sources-format.js.map +1 -0
- package/dist/tools/health.d.ts +22 -0
- package/dist/tools/health.d.ts.map +1 -0
- package/dist/tools/health.js +220 -0
- package/dist/tools/health.js.map +1 -0
- package/dist/tools/index.d.ts +30 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +39 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/inspection.d.ts +14 -0
- package/dist/tools/inspection.d.ts.map +1 -0
- package/dist/tools/inspection.js +170 -0
- package/dist/tools/inspection.js.map +1 -0
- package/dist/tools/layout-flatten.d.ts +75 -0
- package/dist/tools/layout-flatten.d.ts.map +1 -0
- package/dist/tools/layout-flatten.js +107 -0
- package/dist/tools/layout-flatten.js.map +1 -0
- package/dist/tools/multi-items/builders.d.ts +23 -0
- package/dist/tools/multi-items/builders.d.ts.map +1 -0
- package/dist/tools/multi-items/builders.js +69 -0
- package/dist/tools/multi-items/builders.js.map +1 -0
- package/dist/tools/multi-items/clean-implode-handler.d.ts +28 -0
- package/dist/tools/multi-items/clean-implode-handler.d.ts.map +1 -0
- package/dist/tools/multi-items/clean-implode-handler.js +40 -0
- package/dist/tools/multi-items/clean-implode-handler.js.map +1 -0
- package/dist/tools/multi-items/index.d.ts +18 -0
- package/dist/tools/multi-items/index.d.ts.map +1 -0
- package/dist/tools/multi-items/index.js +18 -0
- package/dist/tools/multi-items/index.js.map +1 -0
- package/dist/tools/multi-items/inspect-handler.d.ts +41 -0
- package/dist/tools/multi-items/inspect-handler.d.ts.map +1 -0
- package/dist/tools/multi-items/inspect-handler.js +50 -0
- package/dist/tools/multi-items/inspect-handler.js.map +1 -0
- package/dist/tools/multi-items/item-container-map.d.ts +41 -0
- package/dist/tools/multi-items/item-container-map.d.ts.map +1 -0
- package/dist/tools/multi-items/item-container-map.js +73 -0
- package/dist/tools/multi-items/item-container-map.js.map +1 -0
- package/dist/tools/pages/builders.d.ts +14 -0
- package/dist/tools/pages/builders.d.ts.map +1 -0
- package/dist/tools/pages/builders.js +127 -0
- package/dist/tools/pages/builders.js.map +1 -0
- package/dist/tools/pages/handlers-read.d.ts +33 -0
- package/dist/tools/pages/handlers-read.d.ts.map +1 -0
- package/dist/tools/pages/handlers-read.js +171 -0
- package/dist/tools/pages/handlers-read.js.map +1 -0
- package/dist/tools/pages/handlers-write.d.ts +21 -0
- package/dist/tools/pages/handlers-write.d.ts.map +1 -0
- package/dist/tools/pages/handlers-write.js +52 -0
- package/dist/tools/pages/handlers-write.js.map +1 -0
- package/dist/tools/pages/index.d.ts +17 -0
- package/dist/tools/pages/index.d.ts.map +1 -0
- package/dist/tools/pages/index.js +17 -0
- package/dist/tools/pages/index.js.map +1 -0
- package/dist/tools/pages/schemas.d.ts +30 -0
- package/dist/tools/pages/schemas.d.ts.map +1 -0
- package/dist/tools/pages/schemas.js +48 -0
- package/dist/tools/pages/schemas.js.map +1 -0
- package/dist/tools/pages.d.ts +13 -0
- package/dist/tools/pages.d.ts.map +1 -0
- package/dist/tools/pages.js +13 -0
- package/dist/tools/pages.js.map +1 -0
- package/dist/tools/pool-resolve-helper.d.ts +83 -0
- package/dist/tools/pool-resolve-helper.d.ts.map +1 -0
- package/dist/tools/pool-resolve-helper.js +148 -0
- package/dist/tools/pool-resolve-helper.js.map +1 -0
- package/dist/tools/progress-phases.d.ts +46 -0
- package/dist/tools/progress-phases.d.ts.map +1 -0
- package/dist/tools/progress-phases.js +48 -0
- package/dist/tools/progress-phases.js.map +1 -0
- package/dist/tools/shared-schemas.d.ts +25 -0
- package/dist/tools/shared-schemas.d.ts.map +1 -0
- package/dist/tools/shared-schemas.js +48 -0
- package/dist/tools/shared-schemas.js.map +1 -0
- package/dist/tools/sources/builders.d.ts +13 -0
- package/dist/tools/sources/builders.d.ts.map +1 -0
- package/dist/tools/sources/builders.js +115 -0
- package/dist/tools/sources/builders.js.map +1 -0
- package/dist/tools/sources/handlers-bind.d.ts +28 -0
- package/dist/tools/sources/handlers-bind.d.ts.map +1 -0
- package/dist/tools/sources/handlers-bind.js +129 -0
- package/dist/tools/sources/handlers-bind.js.map +1 -0
- package/dist/tools/sources/handlers.d.ts +45 -0
- package/dist/tools/sources/handlers.d.ts.map +1 -0
- package/dist/tools/sources/handlers.js +91 -0
- package/dist/tools/sources/handlers.js.map +1 -0
- package/dist/tools/sources/index.d.ts +19 -0
- package/dist/tools/sources/index.d.ts.map +1 -0
- package/dist/tools/sources/index.js +18 -0
- package/dist/tools/sources/index.js.map +1 -0
- package/dist/tools/sources.d.ts +14 -0
- package/dist/tools/sources.d.ts.map +1 -0
- package/dist/tools/sources.js +14 -0
- package/dist/tools/sources.js.map +1 -0
- package/dist/tools/sparse-fields.d.ts +80 -0
- package/dist/tools/sparse-fields.d.ts.map +1 -0
- package/dist/tools/sparse-fields.js +144 -0
- package/dist/tools/sparse-fields.js.map +1 -0
- package/dist/tools/tool-builder/annotations.d.ts +55 -0
- package/dist/tools/tool-builder/annotations.d.ts.map +1 -0
- package/dist/tools/tool-builder/annotations.js +86 -0
- package/dist/tools/tool-builder/annotations.js.map +1 -0
- package/dist/tools/tool-builder/define.d.ts +31 -0
- package/dist/tools/tool-builder/define.d.ts.map +1 -0
- package/dist/tools/tool-builder/define.js +31 -0
- package/dist/tools/tool-builder/define.js.map +1 -0
- package/dist/tools/tool-builder/index.d.ts +28 -0
- package/dist/tools/tool-builder/index.d.ts.map +1 -0
- package/dist/tools/tool-builder/index.js +27 -0
- package/dist/tools/tool-builder/index.js.map +1 -0
- package/dist/tools/tool-builder/results.d.ts +93 -0
- package/dist/tools/tool-builder/results.d.ts.map +1 -0
- package/dist/tools/tool-builder/results.js +211 -0
- package/dist/tools/tool-builder/results.js.map +1 -0
- package/dist/tools/tool-builder/types.d.ts +82 -0
- package/dist/tools/tool-builder/types.d.ts.map +1 -0
- package/dist/tools/tool-builder/types.js +9 -0
- package/dist/tools/tool-builder/types.js.map +1 -0
- package/dist/tools/tool-builder.d.ts +16 -0
- package/dist/tools/tool-builder.d.ts.map +1 -0
- package/dist/tools/tool-builder.js +16 -0
- package/dist/tools/tool-builder.js.map +1 -0
- package/manifest.json +27 -10
- package/package.json +3 -1
- package/skills/yt-builder-mcp/SKILL.md +397 -138
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup-cli.js","sourceRoot":"","sources":["../src/setup-cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `setup-prompts` — interactive clack prompts for the setup wizard.
|
|
3
|
+
*
|
|
4
|
+
* Split from `setup-wizard-defaults.ts` in Round-1.5 (replaces the
|
|
5
|
+
* Round-1 LoC-exception spec-amendment with a structural code-fix).
|
|
6
|
+
*
|
|
7
|
+
* Cohesion:
|
|
8
|
+
* - this file owns every clack/inquirer-style prompt sequence
|
|
9
|
+
* (`defaultPrompt`, `defaultConfirmContinue`) — pure terminal
|
|
10
|
+
* I/O, no REST / file-system side effects.
|
|
11
|
+
* - `setup-wizard-defaults.ts` retains the real-I/O implementations
|
|
12
|
+
* (RestClient probes, file-system writers, rollback, handshake).
|
|
13
|
+
*
|
|
14
|
+
* @license MIT
|
|
15
|
+
*/
|
|
16
|
+
import { type DetectedClient } from './clients/index.js';
|
|
17
|
+
import type { WizardAnswers } from './setup-wizard-types.js';
|
|
18
|
+
/**
|
|
19
|
+
* Interactive multi-step prompt sequence — Wave 6.5 UX-parity with
|
|
20
|
+
* api-mapper:
|
|
21
|
+
*
|
|
22
|
+
* 1. password input for the Bearer key (length-validated)
|
|
23
|
+
* 2. decode the token's signed payload (signature-unverified) and use
|
|
24
|
+
* `iss` to pre-fill the URL prompt — the typical user only needs
|
|
25
|
+
* to press Enter here
|
|
26
|
+
* 3. text input for the profile name (default: `default`) — supports
|
|
27
|
+
* multi-site usage in a single wizard install
|
|
28
|
+
* 4. multiselect AI clients (pre-populates with detected clients)
|
|
29
|
+
*
|
|
30
|
+
* Returns `null` when the user cancels any prompt — `runWizard`
|
|
31
|
+
* treats that as a clean exit.
|
|
32
|
+
*/
|
|
33
|
+
export declare function defaultPrompt(input: {
|
|
34
|
+
detected: readonly DetectedClient[];
|
|
35
|
+
}): Promise<WizardAnswers | null>;
|
|
36
|
+
/**
|
|
37
|
+
* Yes/no confirmation prompt. Returns `false` on cancel (safer default
|
|
38
|
+
* than `true` — the wizard treats it as "don't continue").
|
|
39
|
+
*/
|
|
40
|
+
export declare function defaultConfirmContinue(message: string): Promise<boolean>;
|
|
41
|
+
//# sourceMappingURL=setup-prompts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup-prompts.d.ts","sourceRoot":"","sources":["../src/setup-prompts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAYH,OAAO,EAEH,KAAK,cAAc,EACtB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAG7D;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,aAAa,CAAC,KAAK,EAAE;IACvC,QAAQ,EAAE,SAAS,cAAc,EAAE,CAAC;CACvC,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAsGhC;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAI9E"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `setup-prompts` — interactive clack prompts for the setup wizard.
|
|
3
|
+
*
|
|
4
|
+
* Split from `setup-wizard-defaults.ts` in Round-1.5 (replaces the
|
|
5
|
+
* Round-1 LoC-exception spec-amendment with a structural code-fix).
|
|
6
|
+
*
|
|
7
|
+
* Cohesion:
|
|
8
|
+
* - this file owns every clack/inquirer-style prompt sequence
|
|
9
|
+
* (`defaultPrompt`, `defaultConfirmContinue`) — pure terminal
|
|
10
|
+
* I/O, no REST / file-system side effects.
|
|
11
|
+
* - `setup-wizard-defaults.ts` retains the real-I/O implementations
|
|
12
|
+
* (RestClient probes, file-system writers, rollback, handshake).
|
|
13
|
+
*
|
|
14
|
+
* @license MIT
|
|
15
|
+
*/
|
|
16
|
+
import { cancel, confirm as clackConfirm, intro, isCancel, multiselect, password, text, } from '@clack/prompts';
|
|
17
|
+
import { ALL_CLIENTS, } from './clients/index.js';
|
|
18
|
+
import { SERVER_NAME, SERVER_VERSION } from './server.js';
|
|
19
|
+
import { decodeToken, normaliseUrl } from './setup-token.js';
|
|
20
|
+
import { SITE_ID_REGEX } from './sites/schema.js';
|
|
21
|
+
/**
|
|
22
|
+
* Interactive multi-step prompt sequence — Wave 6.5 UX-parity with
|
|
23
|
+
* api-mapper:
|
|
24
|
+
*
|
|
25
|
+
* 1. password input for the Bearer key (length-validated)
|
|
26
|
+
* 2. decode the token's signed payload (signature-unverified) and use
|
|
27
|
+
* `iss` to pre-fill the URL prompt — the typical user only needs
|
|
28
|
+
* to press Enter here
|
|
29
|
+
* 3. text input for the profile name (default: `default`) — supports
|
|
30
|
+
* multi-site usage in a single wizard install
|
|
31
|
+
* 4. multiselect AI clients (pre-populates with detected clients)
|
|
32
|
+
*
|
|
33
|
+
* Returns `null` when the user cancels any prompt — `runWizard`
|
|
34
|
+
* treats that as a clean exit.
|
|
35
|
+
*/
|
|
36
|
+
export async function defaultPrompt(input) {
|
|
37
|
+
intro(`${SERVER_NAME} v${SERVER_VERSION} — setup wizard`);
|
|
38
|
+
// 1. Bearer key first. Decoded `iss` will pre-fill the URL prompt.
|
|
39
|
+
const bearerRaw = await password({
|
|
40
|
+
message: 'Bearer key (from wp-admin → Tools → "YT Builder MCP" → Bearer Keys):',
|
|
41
|
+
validate: (v) => {
|
|
42
|
+
const trimmed = v.trim();
|
|
43
|
+
if (trimmed === '')
|
|
44
|
+
return 'Bearer key is required.';
|
|
45
|
+
if (trimmed.length < 16) {
|
|
46
|
+
return 'Bearer key looks too short — expected at least 16 chars.';
|
|
47
|
+
}
|
|
48
|
+
return undefined;
|
|
49
|
+
},
|
|
50
|
+
});
|
|
51
|
+
if (isCancel(bearerRaw)) {
|
|
52
|
+
cancel('Setup cancelled.');
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
const bearer = bearerRaw.trim();
|
|
56
|
+
const decoded = decodeToken(bearer);
|
|
57
|
+
const urlInitial = decoded?.iss ?? '';
|
|
58
|
+
// 2. WordPress site URL — pre-filled from the decoded `iss` claim
|
|
59
|
+
// when the token was decodable; the user just presses Enter.
|
|
60
|
+
const wpUrlRaw = await text({
|
|
61
|
+
message: urlInitial !== ''
|
|
62
|
+
? 'WordPress site URL (pre-filled from your key — press Enter to accept):'
|
|
63
|
+
: 'WordPress site URL (e.g. https://example.com):',
|
|
64
|
+
placeholder: urlInitial !== '' ? urlInitial : 'https://example.com',
|
|
65
|
+
initialValue: urlInitial,
|
|
66
|
+
validate: (v) => {
|
|
67
|
+
const trimmed = v.trim();
|
|
68
|
+
if (trimmed === '')
|
|
69
|
+
return 'URL is required.';
|
|
70
|
+
if (!/^https?:\/\//.test(trimmed)) {
|
|
71
|
+
return 'URL must start with http:// or https://.';
|
|
72
|
+
}
|
|
73
|
+
try {
|
|
74
|
+
void new URL(trimmed);
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
return 'URL is not a valid web address.';
|
|
78
|
+
}
|
|
79
|
+
return undefined;
|
|
80
|
+
},
|
|
81
|
+
});
|
|
82
|
+
if (isCancel(wpUrlRaw)) {
|
|
83
|
+
cancel('Setup cancelled.');
|
|
84
|
+
return null;
|
|
85
|
+
}
|
|
86
|
+
const wpUrl = normaliseUrl(wpUrlRaw);
|
|
87
|
+
// 3. Site ID — multi-site registry key. Default 'default'.
|
|
88
|
+
// Renamed from `profileName` in W9 to align with the sites.json
|
|
89
|
+
// schema's `site_id` field. Same validation rules (SITE_ID_REGEX
|
|
90
|
+
// shape: letters / digits / dash / underscore), same default.
|
|
91
|
+
const siteRaw = await text({
|
|
92
|
+
message: 'Site ID (e.g. wp-acme):',
|
|
93
|
+
placeholder: 'default',
|
|
94
|
+
initialValue: 'default',
|
|
95
|
+
validate: (v) => {
|
|
96
|
+
const trimmed = v.trim();
|
|
97
|
+
if (trimmed === '')
|
|
98
|
+
return 'Site ID is required.';
|
|
99
|
+
if (!SITE_ID_REGEX.test(trimmed)) {
|
|
100
|
+
return 'Use letters, digits, dashes, or underscores only.';
|
|
101
|
+
}
|
|
102
|
+
return undefined;
|
|
103
|
+
},
|
|
104
|
+
});
|
|
105
|
+
if (isCancel(siteRaw)) {
|
|
106
|
+
cancel('Setup cancelled.');
|
|
107
|
+
return null;
|
|
108
|
+
}
|
|
109
|
+
const siteId = siteRaw.trim();
|
|
110
|
+
// 4. AI client selection (multi-select; pre-checks detected ones).
|
|
111
|
+
const clientChoices = ALL_CLIENTS.map((c) => {
|
|
112
|
+
const detection = input.detected.find((d) => d.id === c.id);
|
|
113
|
+
return {
|
|
114
|
+
value: c.id,
|
|
115
|
+
label: detection?.detected === true ? `${c.label} (detected)` : c.label,
|
|
116
|
+
hint: detection?.configPath ?? '',
|
|
117
|
+
};
|
|
118
|
+
});
|
|
119
|
+
const selectedRaw = await multiselect({
|
|
120
|
+
message: 'Which AI clients should we configure?',
|
|
121
|
+
options: clientChoices,
|
|
122
|
+
initialValues: input.detected.filter((d) => d.detected).map((d) => d.id),
|
|
123
|
+
required: true,
|
|
124
|
+
});
|
|
125
|
+
if (isCancel(selectedRaw)) {
|
|
126
|
+
cancel('Setup cancelled.');
|
|
127
|
+
return null;
|
|
128
|
+
}
|
|
129
|
+
return {
|
|
130
|
+
wpUrl,
|
|
131
|
+
bearer,
|
|
132
|
+
selectedClients: selectedRaw,
|
|
133
|
+
siteId,
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Yes/no confirmation prompt. Returns `false` on cancel (safer default
|
|
138
|
+
* than `true` — the wizard treats it as "don't continue").
|
|
139
|
+
*/
|
|
140
|
+
export async function defaultConfirmContinue(message) {
|
|
141
|
+
const ans = await clackConfirm({ message, initialValue: false });
|
|
142
|
+
if (isCancel(ans))
|
|
143
|
+
return false;
|
|
144
|
+
return ans === true;
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=setup-prompts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup-prompts.js","sourceRoot":"","sources":["../src/setup-prompts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure helpers for the setup wizard — token decode + URL extraction.
|
|
3
|
+
*
|
|
4
|
+
* Split out of `setup-prompts.ts` so it can be unit-tested without a TTY
|
|
5
|
+
* and so the `runWizard` body can decode a token without dragging in the
|
|
6
|
+
* @clack/prompts UI surface.
|
|
7
|
+
*
|
|
8
|
+
* The decode is intentionally signature-UNVERIFIED. The wizard cannot
|
|
9
|
+
* verify the HMAC signature (that requires the plugin's signing-secret
|
|
10
|
+
* which only the server holds). We use the decoded payload purely to
|
|
11
|
+
* pre-fill the URL prompt as a convenience — the canonical auth check
|
|
12
|
+
* happens later when `runWizard` hits `/v1/health` with the token; if
|
|
13
|
+
* the payload has been tampered with, that probe rejects it.
|
|
14
|
+
*
|
|
15
|
+
* @license MIT
|
|
16
|
+
*/
|
|
17
|
+
import type { DecodedTokenPayload } from './setup-wizard-types.js';
|
|
18
|
+
/**
|
|
19
|
+
* Decode the base64url payload of a Bearer key.
|
|
20
|
+
*
|
|
21
|
+
* Returns `null` when the token shape is invalid OR the payload JSON is
|
|
22
|
+
* malformed OR the required fields (kid + scope + iss) are missing or
|
|
23
|
+
* the wrong type. Callers should treat `null` as "this token is unusable
|
|
24
|
+
* for URL pre-fill; ask the user to type the URL by hand."
|
|
25
|
+
*/
|
|
26
|
+
export declare function decodeToken(token: string): DecodedTokenPayload | null;
|
|
27
|
+
/**
|
|
28
|
+
* Normalise a URL string the way the wizard wants it:
|
|
29
|
+
* - trim whitespace
|
|
30
|
+
* - strip trailing slashes
|
|
31
|
+
* - return empty string on null/undefined input
|
|
32
|
+
*
|
|
33
|
+
* Exposed so the prompt validator and the identity probe share one
|
|
34
|
+
* canonicalisation rule (otherwise drift causes "looks the same to the
|
|
35
|
+
* human, mismatches in code" bugs).
|
|
36
|
+
*/
|
|
37
|
+
export declare function normaliseUrl(input: string | null | undefined): string;
|
|
38
|
+
//# sourceMappingURL=setup-token.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup-token.d.ts","sourceRoot":"","sources":["../src/setup-token.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAKnE;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI,CAmDrE;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAGrE"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure helpers for the setup wizard — token decode + URL extraction.
|
|
3
|
+
*
|
|
4
|
+
* Split out of `setup-prompts.ts` so it can be unit-tested without a TTY
|
|
5
|
+
* and so the `runWizard` body can decode a token without dragging in the
|
|
6
|
+
* @clack/prompts UI surface.
|
|
7
|
+
*
|
|
8
|
+
* The decode is intentionally signature-UNVERIFIED. The wizard cannot
|
|
9
|
+
* verify the HMAC signature (that requires the plugin's signing-secret
|
|
10
|
+
* which only the server holds). We use the decoded payload purely to
|
|
11
|
+
* pre-fill the URL prompt as a convenience — the canonical auth check
|
|
12
|
+
* happens later when `runWizard` hits `/v1/health` with the token; if
|
|
13
|
+
* the payload has been tampered with, that probe rejects it.
|
|
14
|
+
*
|
|
15
|
+
* @license MIT
|
|
16
|
+
*/
|
|
17
|
+
/** Plugin token format: ytb_(live|test)_<base64url-payload>.<base64url-sig> */
|
|
18
|
+
const TOKEN_FORMAT = /^ytb_(?:live|test)_([A-Za-z0-9_-]+)\.([A-Za-z0-9_-]+)$/;
|
|
19
|
+
/**
|
|
20
|
+
* Decode the base64url payload of a Bearer key.
|
|
21
|
+
*
|
|
22
|
+
* Returns `null` when the token shape is invalid OR the payload JSON is
|
|
23
|
+
* malformed OR the required fields (kid + scope + iss) are missing or
|
|
24
|
+
* the wrong type. Callers should treat `null` as "this token is unusable
|
|
25
|
+
* for URL pre-fill; ask the user to type the URL by hand."
|
|
26
|
+
*/
|
|
27
|
+
export function decodeToken(token) {
|
|
28
|
+
const trimmed = token.trim();
|
|
29
|
+
const match = TOKEN_FORMAT.exec(trimmed);
|
|
30
|
+
if (match === null)
|
|
31
|
+
return null;
|
|
32
|
+
const payloadB64 = match[1];
|
|
33
|
+
if (typeof payloadB64 !== 'string' || payloadB64.length === 0)
|
|
34
|
+
return null;
|
|
35
|
+
let json;
|
|
36
|
+
try {
|
|
37
|
+
json = base64UrlDecode(payloadB64);
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
let parsed;
|
|
43
|
+
try {
|
|
44
|
+
parsed = JSON.parse(json);
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
if (parsed === null || typeof parsed !== 'object' || Array.isArray(parsed)) {
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
const obj = parsed;
|
|
53
|
+
const kid = obj['kid'];
|
|
54
|
+
const scope = obj['scope'];
|
|
55
|
+
const iss = obj['iss'];
|
|
56
|
+
if (typeof kid !== 'string' || kid === '')
|
|
57
|
+
return null;
|
|
58
|
+
if (typeof iss !== 'string' || iss === '')
|
|
59
|
+
return null;
|
|
60
|
+
let scopeList;
|
|
61
|
+
if (Array.isArray(scope)) {
|
|
62
|
+
scopeList = scope.filter((s) => typeof s === 'string');
|
|
63
|
+
}
|
|
64
|
+
else if (typeof scope === 'string') {
|
|
65
|
+
scopeList = [scope];
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
const exp = obj['exp'];
|
|
71
|
+
const payload = {
|
|
72
|
+
kid,
|
|
73
|
+
scope: scopeList,
|
|
74
|
+
iss: iss.replace(/\/+$/, ''),
|
|
75
|
+
...(typeof exp === 'number' && Number.isFinite(exp) ? { exp } : {}),
|
|
76
|
+
};
|
|
77
|
+
return payload;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Normalise a URL string the way the wizard wants it:
|
|
81
|
+
* - trim whitespace
|
|
82
|
+
* - strip trailing slashes
|
|
83
|
+
* - return empty string on null/undefined input
|
|
84
|
+
*
|
|
85
|
+
* Exposed so the prompt validator and the identity probe share one
|
|
86
|
+
* canonicalisation rule (otherwise drift causes "looks the same to the
|
|
87
|
+
* human, mismatches in code" bugs).
|
|
88
|
+
*/
|
|
89
|
+
export function normaliseUrl(input) {
|
|
90
|
+
if (typeof input !== 'string')
|
|
91
|
+
return '';
|
|
92
|
+
return input.trim().replace(/\/+$/, '');
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Standard base64url → utf-8 decoder. Pads + decodes via Buffer; throws
|
|
96
|
+
* a generic Error when the input isn't valid base64url so callers can
|
|
97
|
+
* `try/catch` and return null.
|
|
98
|
+
*/
|
|
99
|
+
function base64UrlDecode(input) {
|
|
100
|
+
const padded = input.replace(/-/g, '+').replace(/_/g, '/');
|
|
101
|
+
const padding = padded.length % 4;
|
|
102
|
+
const fullPadded = padding === 0 ? padded : padded + '='.repeat(4 - padding);
|
|
103
|
+
const buf = Buffer.from(fullPadded, 'base64');
|
|
104
|
+
return buf.toString('utf8');
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=setup-token.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup-token.js","sourceRoot":"","sources":["../src/setup-token.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default `WizardDeps` implementations — real-I/O side of the wizard
|
|
3
|
+
* (FS writes, rollback, client-config dispatch).
|
|
4
|
+
*
|
|
5
|
+
* REST probes + handshake/version-check live in
|
|
6
|
+
* `./setup-wizard-handshake.ts` (Round-2 R2-A2-IMP1 split for headroom).
|
|
7
|
+
* Clack prompts live in `./setup-prompts.ts` (Round-1.5 split). The
|
|
8
|
+
* wizard algorithm lives in `./setup-wizard.ts`.
|
|
9
|
+
*
|
|
10
|
+
* Re-exports `majorMinor` from the handshake module so existing
|
|
11
|
+
* consumers (`tests/setup/wizard-defaults.test.ts`, `setup-wizard.ts`)
|
|
12
|
+
* keep working through this barrel.
|
|
13
|
+
*
|
|
14
|
+
* @license MIT
|
|
15
|
+
*/
|
|
16
|
+
import { majorMinor } from './setup-wizard-handshake.js';
|
|
17
|
+
import type { PickupResult, WizardDeps, WriteResult } from './setup-wizard-types.js';
|
|
18
|
+
export { majorMinor };
|
|
19
|
+
/**
|
|
20
|
+
* Roll back a list of write-results: restore previous content (or
|
|
21
|
+
* remove freshly written files). Best-effort — errors surface via
|
|
22
|
+
* `logFn` so partial rollback doesn't mask the original failure.
|
|
23
|
+
*/
|
|
24
|
+
export declare function rollbackWrites(writes: readonly WriteResult[], logFn: (line: string) => void): Promise<void>;
|
|
25
|
+
/**
|
|
26
|
+
* Default implementation of `WizardDeps.fetchPickup` — POSTs the nonce
|
|
27
|
+
* to the pickup URL revealed in wp-admin and maps the snake_case payload
|
|
28
|
+
* (`site_url`, `plugin_version`) to camelCase (`siteurl`, `pluginVersion`).
|
|
29
|
+
*
|
|
30
|
+
* Failure modes throw with explicit, user-actionable messages:
|
|
31
|
+
* - 404 → "pickup expired or already claimed (5-minute TTL)"
|
|
32
|
+
* - 403 → "pickup bound to a different IP — regenerate from wp-admin"
|
|
33
|
+
* - 429 → "rate limit — wait ~60s and try again"
|
|
34
|
+
* - 400 → "invalid request" (echoes server's message when parseable)
|
|
35
|
+
* - network → "check URL is reachable + plugin is active"
|
|
36
|
+
*
|
|
37
|
+
* The function intentionally has no retry loop — a one-shot nonce that
|
|
38
|
+
* fails has either been consumed or expired; the only sensible recovery
|
|
39
|
+
* is for the operator to regenerate from wp-admin.
|
|
40
|
+
*/
|
|
41
|
+
export declare function defaultFetchPickup(pickupUrl: string, nonce: string): Promise<PickupResult>;
|
|
42
|
+
export declare const DEFAULT_WIZARD_DEPS: WizardDeps;
|
|
43
|
+
//# sourceMappingURL=setup-wizard-defaults.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup-wizard-defaults.d.ts","sourceRoot":"","sources":["../src/setup-wizard-defaults.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAQH,OAAO,EAKH,UAAU,EACb,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EACR,YAAY,EACZ,UAAU,EACV,WAAW,EACd,MAAM,yBAAyB,CAAC;AAIjC,OAAO,EAAE,UAAU,EAAE,CAAC;AAEtB;;;;GAIG;AACH,wBAAsB,cAAc,CAChC,MAAM,EAAE,SAAS,WAAW,EAAE,EAC9B,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAC9B,OAAO,CAAC,IAAI,CAAC,CAgBf;AAgCD;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,kBAAkB,CACpC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GACd,OAAO,CAAC,YAAY,CAAC,CAsEvB;AAED,eAAO,MAAM,mBAAmB,EAAE,UAUjC,CAAC"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default `WizardDeps` implementations — real-I/O side of the wizard
|
|
3
|
+
* (FS writes, rollback, client-config dispatch).
|
|
4
|
+
*
|
|
5
|
+
* REST probes + handshake/version-check live in
|
|
6
|
+
* `./setup-wizard-handshake.ts` (Round-2 R2-A2-IMP1 split for headroom).
|
|
7
|
+
* Clack prompts live in `./setup-prompts.ts` (Round-1.5 split). The
|
|
8
|
+
* wizard algorithm lives in `./setup-wizard.ts`.
|
|
9
|
+
*
|
|
10
|
+
* Re-exports `majorMinor` from the handshake module so existing
|
|
11
|
+
* consumers (`tests/setup/wizard-defaults.test.ts`, `setup-wizard.ts`)
|
|
12
|
+
* keep working through this barrel.
|
|
13
|
+
*
|
|
14
|
+
* @license MIT
|
|
15
|
+
*/
|
|
16
|
+
import { detectAvailableClients, findClient, } from './clients/index.js';
|
|
17
|
+
import { defaultConfirmContinue, defaultPrompt } from './setup-prompts.js';
|
|
18
|
+
import { defaultHandshake, defaultProbeAuth, defaultProbeHealth, defaultProbeIdentity, majorMinor, } from './setup-wizard-handshake.js';
|
|
19
|
+
// Re-export for backward-compat with existing call-sites
|
|
20
|
+
// (`setup-wizard.ts`, `tests/setup/wizard-defaults.test.ts`).
|
|
21
|
+
export { majorMinor };
|
|
22
|
+
/**
|
|
23
|
+
* Roll back a list of write-results: restore previous content (or
|
|
24
|
+
* remove freshly written files). Best-effort — errors surface via
|
|
25
|
+
* `logFn` so partial rollback doesn't mask the original failure.
|
|
26
|
+
*/
|
|
27
|
+
export async function rollbackWrites(writes, logFn) {
|
|
28
|
+
const { unlink, writeFile } = await import('node:fs/promises');
|
|
29
|
+
for (const w of writes) {
|
|
30
|
+
if (!w.ok || w.path === '')
|
|
31
|
+
continue;
|
|
32
|
+
try {
|
|
33
|
+
if (w.previousContent === null) {
|
|
34
|
+
await unlink(w.path);
|
|
35
|
+
logFn(` ↩ removed ${w.path}`);
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
await writeFile(w.path, w.previousContent, 'utf-8');
|
|
39
|
+
logFn(` ↩ restored ${w.path}`);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
catch (e) {
|
|
43
|
+
logFn(` ↩ rollback FAILED for ${w.path}: ${e instanceof Error ? e.message : String(e)}`);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
async function readIfExists(path) {
|
|
48
|
+
try {
|
|
49
|
+
const { readFile } = await import('node:fs/promises');
|
|
50
|
+
const { existsSync } = await import('node:fs');
|
|
51
|
+
return existsSync(path) ? await readFile(path, 'utf-8') : null;
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
async function defaultWriteClient(id, serverName, config) {
|
|
58
|
+
const writer = findClient(id);
|
|
59
|
+
if (writer === undefined) {
|
|
60
|
+
return { id, label: id, ok: false, error: 'Unknown client.', path: '', previousContent: null };
|
|
61
|
+
}
|
|
62
|
+
const path = writer.configPath();
|
|
63
|
+
const previousContent = await readIfExists(path);
|
|
64
|
+
try {
|
|
65
|
+
await writer.apply(serverName, config);
|
|
66
|
+
return { id, label: writer.label, ok: true, path, previousContent };
|
|
67
|
+
}
|
|
68
|
+
catch (e) {
|
|
69
|
+
const error = e instanceof Error ? e.message : String(e);
|
|
70
|
+
return { id, label: writer.label, ok: false, error, path, previousContent };
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Default implementation of `WizardDeps.fetchPickup` — POSTs the nonce
|
|
75
|
+
* to the pickup URL revealed in wp-admin and maps the snake_case payload
|
|
76
|
+
* (`site_url`, `plugin_version`) to camelCase (`siteurl`, `pluginVersion`).
|
|
77
|
+
*
|
|
78
|
+
* Failure modes throw with explicit, user-actionable messages:
|
|
79
|
+
* - 404 → "pickup expired or already claimed (5-minute TTL)"
|
|
80
|
+
* - 403 → "pickup bound to a different IP — regenerate from wp-admin"
|
|
81
|
+
* - 429 → "rate limit — wait ~60s and try again"
|
|
82
|
+
* - 400 → "invalid request" (echoes server's message when parseable)
|
|
83
|
+
* - network → "check URL is reachable + plugin is active"
|
|
84
|
+
*
|
|
85
|
+
* The function intentionally has no retry loop — a one-shot nonce that
|
|
86
|
+
* fails has either been consumed or expired; the only sensible recovery
|
|
87
|
+
* is for the operator to regenerate from wp-admin.
|
|
88
|
+
*/
|
|
89
|
+
export async function defaultFetchPickup(pickupUrl, nonce) {
|
|
90
|
+
let response;
|
|
91
|
+
try {
|
|
92
|
+
response = await fetch(pickupUrl, {
|
|
93
|
+
method: 'POST',
|
|
94
|
+
headers: { 'Content-Type': 'application/json' },
|
|
95
|
+
body: JSON.stringify({ nonce }),
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
catch (e) {
|
|
99
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
100
|
+
throw new Error(`Could not reach the pickup URL (${msg}). Check the URL is reachable and the plugin is active.`);
|
|
101
|
+
}
|
|
102
|
+
if (response.status === 200) {
|
|
103
|
+
let raw;
|
|
104
|
+
try {
|
|
105
|
+
raw = await response.json();
|
|
106
|
+
}
|
|
107
|
+
catch {
|
|
108
|
+
throw new Error('Pickup response was not valid JSON. Re-generate the pickup URL from wp-admin.');
|
|
109
|
+
}
|
|
110
|
+
if (raw === null || typeof raw !== 'object') {
|
|
111
|
+
throw new Error('Pickup response had an unexpected shape (not an object).');
|
|
112
|
+
}
|
|
113
|
+
const obj = raw;
|
|
114
|
+
const token = typeof obj.token === 'string' ? obj.token : undefined;
|
|
115
|
+
const siteurl = typeof obj.site_url === 'string' ? obj.site_url : undefined;
|
|
116
|
+
const pluginVersion = typeof obj.plugin_version === 'string' ? obj.plugin_version : undefined;
|
|
117
|
+
if (token === undefined || siteurl === undefined || pluginVersion === undefined) {
|
|
118
|
+
throw new Error('Pickup response missing required fields (token, site_url, plugin_version). Update the plugin.');
|
|
119
|
+
}
|
|
120
|
+
return { token, siteurl, pluginVersion };
|
|
121
|
+
}
|
|
122
|
+
// Try to surface the server's structured message when it's there.
|
|
123
|
+
let serverMessage;
|
|
124
|
+
try {
|
|
125
|
+
const body = await response.json();
|
|
126
|
+
if (body !== null && typeof body === 'object') {
|
|
127
|
+
const m = body.message;
|
|
128
|
+
if (typeof m === 'string' && m !== '')
|
|
129
|
+
serverMessage = m;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
catch {
|
|
133
|
+
// body not JSON — ignore.
|
|
134
|
+
}
|
|
135
|
+
if (response.status === 404) {
|
|
136
|
+
throw new Error('Pickup not available. The URL may have expired (5-minute TTL) or already been claimed. Generate a fresh pickup from wp-admin.');
|
|
137
|
+
}
|
|
138
|
+
if (response.status === 403) {
|
|
139
|
+
throw new Error('Pickup is bound to a different IP. Regenerate from wp-admin with the "different machine" option, or run this CLI from the same network as the browser session.');
|
|
140
|
+
}
|
|
141
|
+
if (response.status === 429) {
|
|
142
|
+
throw new Error('Rate limit hit on pickup endpoint. Wait ~60s and try again.');
|
|
143
|
+
}
|
|
144
|
+
if (response.status === 400) {
|
|
145
|
+
throw new Error(`Pickup rejected the request as malformed${serverMessage ? `: ${serverMessage}` : ''}. Re-generate the pickup URL from wp-admin.`);
|
|
146
|
+
}
|
|
147
|
+
throw new Error(`Pickup failed with HTTP ${response.status}${serverMessage ? `: ${serverMessage}` : ''}.`);
|
|
148
|
+
}
|
|
149
|
+
export const DEFAULT_WIZARD_DEPS = {
|
|
150
|
+
prompt: defaultPrompt,
|
|
151
|
+
detectClients: () => detectAvailableClients(),
|
|
152
|
+
probeHealth: defaultProbeHealth,
|
|
153
|
+
probeIdentity: defaultProbeIdentity,
|
|
154
|
+
probeAuth: defaultProbeAuth,
|
|
155
|
+
confirmContinue: defaultConfirmContinue,
|
|
156
|
+
writeClient: defaultWriteClient,
|
|
157
|
+
handshake: defaultHandshake,
|
|
158
|
+
fetchPickup: defaultFetchPickup,
|
|
159
|
+
};
|
|
160
|
+
//# sourceMappingURL=setup-wizard-defaults.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup-wizard-defaults.js","sourceRoot":"","sources":["../src/setup-wizard-defaults.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACH,sBAAsB,EACtB,UAAU,GAEb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EACH,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB,EACpB,UAAU,GACb,MAAM,6BAA6B,CAAC;AAOrC,yDAAyD;AACzD,8DAA8D;AAC9D,OAAO,EAAE,UAAU,EAAE,CAAC;AAEtB;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAChC,MAA8B,EAC9B,KAA6B;IAE7B,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAC/D,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACrB,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK,EAAE;YAAE,SAAS;QACrC,IAAI,CAAC;YACD,IAAI,CAAC,CAAC,eAAe,KAAK,IAAI,EAAE,CAAC;gBAC7B,MAAM,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBACrB,KAAK,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YACnC,CAAC;iBAAM,CAAC;gBACJ,MAAM,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;gBACpD,KAAK,CAAC,gBAAgB,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YACpC,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,KAAK,CAAC,2BAA2B,CAAC,CAAC,IAAI,KAAK,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC9F,CAAC;IACL,CAAC;AACL,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,IAAY;IACpC,IAAI,CAAC;QACD,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;QACtD,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;QAC/C,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACnE,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,IAAI,CAAC;IAChB,CAAC;AACL,CAAC;AAED,KAAK,UAAU,kBAAkB,CAC7B,EAAU,EACV,UAAkB,EAClB,MAAuB;IAEvB,MAAM,MAAM,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;IAC9B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;IACnG,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;IACjC,MAAM,eAAe,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;IACjD,IAAI,CAAC;QACD,MAAM,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QACvC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC;IACxE,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,MAAM,KAAK,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACzD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC;IAChF,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACpC,SAAiB,EACjB,KAAa;IAEb,IAAI,QAAkB,CAAC;IACvB,IAAI,CAAC;QACD,QAAQ,GAAG,MAAM,KAAK,CAAC,SAAS,EAAE;YAC9B,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC;SAClC,CAAC,CAAC;IACP,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,MAAM,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACvD,MAAM,IAAI,KAAK,CACX,mCAAmC,GAAG,yDAAyD,CAClG,CAAC;IACN,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAC1B,IAAI,GAAY,CAAC;QACjB,IAAI,CAAC;YACD,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAChC,CAAC;QAAC,MAAM,CAAC;YACL,MAAM,IAAI,KAAK,CAAC,+EAA+E,CAAC,CAAC;QACrG,CAAC;QACD,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;QAChF,CAAC;QACD,MAAM,GAAG,GAAG,GAA8B,CAAC;QAC3C,MAAM,KAAK,GAAG,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;QACpE,MAAM,OAAO,GAAG,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;QAC5E,MAAM,aAAa,GAAG,OAAO,GAAG,CAAC,cAAc,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9F,IAAI,KAAK,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YAC9E,MAAM,IAAI,KAAK,CACX,+FAA+F,CAClG,CAAC;QACN,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;IAC7C,CAAC;IAED,kEAAkE;IAClE,IAAI,aAAiC,CAAC;IACtC,IAAI,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC5C,MAAM,CAAC,GAAI,IAAgC,CAAC,OAAO,CAAC;YACpD,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,EAAE;gBAAE,aAAa,GAAG,CAAC,CAAC;QAC7D,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACL,0BAA0B;IAC9B,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CACX,+HAA+H,CAClI,CAAC;IACN,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CACX,gKAAgK,CACnK,CAAC;IACN,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;IACnF,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CACX,2CAA2C,aAAa,CAAC,CAAC,CAAC,KAAK,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,6CAA6C,CACpI,CAAC;IACN,CAAC;IACD,MAAM,IAAI,KAAK,CACX,2BAA2B,QAAQ,CAAC,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,KAAK,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAC5F,CAAC;AACN,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAe;IAC3C,MAAM,EAAE,aAAa;IACrB,aAAa,EAAE,GAAG,EAAE,CAAC,sBAAsB,EAAE;IAC7C,WAAW,EAAE,kBAAkB;IAC/B,aAAa,EAAE,oBAAoB;IACnC,SAAS,EAAE,gBAAgB;IAC3B,eAAe,EAAE,sBAAsB;IACvC,WAAW,EAAE,kBAAkB;IAC/B,SAAS,EAAE,gBAAgB;IAC3B,WAAW,EAAE,kBAAkB;CAClC,CAAC"}
|