@wootsup/yt-builder-mcp 1.1.0 → 1.1.6
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 +56 -55
- package/manifest.json +15 -15
- package/package.json +2 -2
- package/skills/yt-builder-mcp/SKILL.md +130 -121
- package/dist/auth.d.ts +0 -119
- package/dist/auth.d.ts.map +0 -1
- package/dist/auth.js +0 -226
- package/dist/auth.js.map +0 -1
- package/dist/client.d.ts +0 -84
- package/dist/client.d.ts.map +0 -1
- package/dist/client.js +0 -151
- package/dist/client.js.map +0 -1
- package/dist/clients/claude-code.d.ts +0 -18
- package/dist/clients/claude-code.d.ts.map +0 -1
- package/dist/clients/claude-code.js +0 -53
- package/dist/clients/claude-code.js.map +0 -1
- package/dist/clients/claude-desktop.d.ts +0 -19
- package/dist/clients/claude-desktop.d.ts.map +0 -1
- package/dist/clients/claude-desktop.js +0 -56
- package/dist/clients/claude-desktop.js.map +0 -1
- package/dist/clients/cline.d.ts +0 -26
- package/dist/clients/cline.d.ts.map +0 -1
- package/dist/clients/cline.js +0 -80
- package/dist/clients/cline.js.map +0 -1
- package/dist/clients/codex-cli.d.ts +0 -42
- package/dist/clients/codex-cli.d.ts.map +0 -1
- package/dist/clients/codex-cli.js +0 -194
- package/dist/clients/codex-cli.js.map +0 -1
- package/dist/clients/continue.d.ts +0 -13
- package/dist/clients/continue.d.ts.map +0 -1
- package/dist/clients/continue.js +0 -52
- package/dist/clients/continue.js.map +0 -1
- package/dist/clients/cursor.d.ts +0 -12
- package/dist/clients/cursor.d.ts.map +0 -1
- package/dist/clients/cursor.js +0 -38
- package/dist/clients/cursor.js.map +0 -1
- package/dist/clients/gemini-cli.d.ts +0 -18
- package/dist/clients/gemini-cli.d.ts.map +0 -1
- package/dist/clients/gemini-cli.js +0 -44
- package/dist/clients/gemini-cli.js.map +0 -1
- package/dist/clients/home.d.ts +0 -14
- package/dist/clients/home.d.ts.map +0 -1
- package/dist/clients/home.js +0 -20
- package/dist/clients/home.js.map +0 -1
- package/dist/clients/index.d.ts +0 -52
- package/dist/clients/index.d.ts.map +0 -1
- package/dist/clients/index.js +0 -72
- package/dist/clients/index.js.map +0 -1
- package/dist/clients/roo-code.d.ts +0 -23
- package/dist/clients/roo-code.d.ts.map +0 -1
- package/dist/clients/roo-code.js +0 -69
- package/dist/clients/roo-code.js.map +0 -1
- package/dist/clients/zed.d.ts +0 -12
- package/dist/clients/zed.d.ts.map +0 -1
- package/dist/clients/zed.js +0 -41
- package/dist/clients/zed.js.map +0 -1
- package/dist/errors/hints.d.ts +0 -51
- package/dist/errors/hints.d.ts.map +0 -1
- package/dist/errors/hints.js +0 -95
- package/dist/errors/hints.js.map +0 -1
- package/dist/errors/mask.d.ts +0 -35
- package/dist/errors/mask.d.ts.map +0 -1
- package/dist/errors/mask.js +0 -49
- package/dist/errors/mask.js.map +0 -1
- package/dist/errors/sanitize.d.ts +0 -31
- package/dist/errors/sanitize.d.ts.map +0 -1
- package/dist/errors/sanitize.js +0 -100
- package/dist/errors/sanitize.js.map +0 -1
- package/dist/errors.d.ts +0 -42
- package/dist/errors.d.ts.map +0 -1
- package/dist/errors.js +0 -61
- package/dist/errors.js.map +0 -1
- package/dist/gateway/advanced-tool/discovery.d.ts +0 -19
- package/dist/gateway/advanced-tool/discovery.d.ts.map +0 -1
- package/dist/gateway/advanced-tool/discovery.js +0 -53
- package/dist/gateway/advanced-tool/discovery.js.map +0 -1
- package/dist/gateway/advanced-tool/domains.d.ts +0 -47
- package/dist/gateway/advanced-tool/domains.d.ts.map +0 -1
- package/dist/gateway/advanced-tool/domains.js +0 -94
- package/dist/gateway/advanced-tool/domains.js.map +0 -1
- package/dist/gateway/advanced-tool/execute.d.ts +0 -29
- package/dist/gateway/advanced-tool/execute.d.ts.map +0 -1
- package/dist/gateway/advanced-tool/execute.js +0 -54
- package/dist/gateway/advanced-tool/execute.js.map +0 -1
- package/dist/gateway/advanced-tool/index.d.ts +0 -36
- package/dist/gateway/advanced-tool/index.d.ts.map +0 -1
- package/dist/gateway/advanced-tool/index.js +0 -39
- package/dist/gateway/advanced-tool/index.js.map +0 -1
- package/dist/gateway/advanced-tool/register.d.ts +0 -18
- package/dist/gateway/advanced-tool/register.d.ts.map +0 -1
- package/dist/gateway/advanced-tool/register.js +0 -69
- package/dist/gateway/advanced-tool/register.js.map +0 -1
- package/dist/gateway/advanced-tool.d.ts +0 -13
- package/dist/gateway/advanced-tool.d.ts.map +0 -1
- package/dist/gateway/advanced-tool.js +0 -13
- package/dist/gateway/advanced-tool.js.map +0 -1
- package/dist/gateway/capturing-server.d.ts +0 -117
- package/dist/gateway/capturing-server.d.ts.map +0 -1
- package/dist/gateway/capturing-server.js +0 -103
- package/dist/gateway/capturing-server.js.map +0 -1
- package/dist/gateway/essentials.d.ts +0 -49
- package/dist/gateway/essentials.d.ts.map +0 -1
- package/dist/gateway/essentials.js +0 -92
- package/dist/gateway/essentials.js.map +0 -1
- package/dist/gateway/test-support.d.ts +0 -41
- package/dist/gateway/test-support.d.ts.map +0 -1
- package/dist/gateway/test-support.js +0 -60
- package/dist/gateway/test-support.js.map +0 -1
- package/dist/index.d.ts +0 -29
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -113
- package/dist/index.js.map +0 -1
- package/dist/install-skill.d.ts +0 -43
- package/dist/install-skill.d.ts.map +0 -1
- package/dist/install-skill.js +0 -118
- package/dist/install-skill.js.map +0 -1
- package/dist/platform/detect.d.ts +0 -64
- package/dist/platform/detect.d.ts.map +0 -1
- package/dist/platform/detect.js +0 -98
- package/dist/platform/detect.js.map +0 -1
- package/dist/platform/index.d.ts +0 -121
- package/dist/platform/index.d.ts.map +0 -1
- package/dist/platform/index.js +0 -176
- package/dist/platform/index.js.map +0 -1
- package/dist/platform/joomla.d.ts +0 -44
- package/dist/platform/joomla.d.ts.map +0 -1
- package/dist/platform/joomla.js +0 -46
- package/dist/platform/joomla.js.map +0 -1
- package/dist/server.d.ts +0 -109
- package/dist/server.d.ts.map +0 -1
- package/dist/server.js +0 -237
- package/dist/server.js.map +0 -1
- package/dist/setup-cli-confirm.d.ts +0 -36
- package/dist/setup-cli-confirm.d.ts.map +0 -1
- package/dist/setup-cli-confirm.js +0 -59
- package/dist/setup-cli-confirm.js.map +0 -1
- package/dist/setup-cli.d.ts +0 -152
- package/dist/setup-cli.d.ts.map +0 -1
- package/dist/setup-cli.js +0 -870
- package/dist/setup-cli.js.map +0 -1
- package/dist/setup-prompts.d.ts +0 -41
- package/dist/setup-prompts.d.ts.map +0 -1
- package/dist/setup-prompts.js +0 -146
- package/dist/setup-prompts.js.map +0 -1
- package/dist/setup-token.d.ts +0 -38
- package/dist/setup-token.d.ts.map +0 -1
- package/dist/setup-token.js +0 -106
- package/dist/setup-token.js.map +0 -1
- package/dist/setup-wizard-defaults.d.ts +0 -43
- package/dist/setup-wizard-defaults.d.ts.map +0 -1
- package/dist/setup-wizard-defaults.js +0 -160
- package/dist/setup-wizard-defaults.js.map +0 -1
- package/dist/setup-wizard-handshake.d.ts +0 -25
- package/dist/setup-wizard-handshake.d.ts.map +0 -1
- package/dist/setup-wizard-handshake.js +0 -103
- package/dist/setup-wizard-handshake.js.map +0 -1
- package/dist/setup-wizard-types.d.ts +0 -164
- package/dist/setup-wizard-types.d.ts.map +0 -1
- package/dist/setup-wizard-types.js +0 -11
- package/dist/setup-wizard-types.js.map +0 -1
- package/dist/setup-wizard.d.ts +0 -33
- package/dist/setup-wizard.d.ts.map +0 -1
- package/dist/setup-wizard.js +0 -199
- package/dist/setup-wizard.js.map +0 -1
- package/dist/setup.d.ts +0 -17
- package/dist/setup.d.ts.map +0 -1
- package/dist/setup.js +0 -33
- package/dist/setup.js.map +0 -1
- package/dist/sites/cli/add-site.d.ts +0 -106
- package/dist/sites/cli/add-site.d.ts.map +0 -1
- package/dist/sites/cli/add-site.js +0 -185
- package/dist/sites/cli/add-site.js.map +0 -1
- package/dist/sites/cli/list-sites.d.ts +0 -40
- package/dist/sites/cli/list-sites.d.ts.map +0 -1
- package/dist/sites/cli/list-sites.js +0 -117
- package/dist/sites/cli/list-sites.js.map +0 -1
- package/dist/sites/cli/remove-site.d.ts +0 -60
- package/dist/sites/cli/remove-site.d.ts.map +0 -1
- package/dist/sites/cli/remove-site.js +0 -120
- package/dist/sites/cli/remove-site.js.map +0 -1
- package/dist/sites/cli/set-default.d.ts +0 -47
- package/dist/sites/cli/set-default.d.ts.map +0 -1
- package/dist/sites/cli/set-default.js +0 -69
- package/dist/sites/cli/set-default.js.map +0 -1
- package/dist/sites/cli/test-site.d.ts +0 -77
- package/dist/sites/cli/test-site.d.ts.map +0 -1
- package/dist/sites/cli/test-site.js +0 -146
- package/dist/sites/cli/test-site.js.map +0 -1
- package/dist/sites/client-pool.d.ts +0 -124
- package/dist/sites/client-pool.d.ts.map +0 -1
- package/dist/sites/client-pool.js +0 -172
- package/dist/sites/client-pool.js.map +0 -1
- package/dist/sites/env-bridge.d.ts +0 -55
- package/dist/sites/env-bridge.d.ts.map +0 -1
- package/dist/sites/env-bridge.js +0 -94
- package/dist/sites/env-bridge.js.map +0 -1
- package/dist/sites/paths.d.ts +0 -21
- package/dist/sites/paths.d.ts.map +0 -1
- package/dist/sites/paths.js +0 -37
- package/dist/sites/paths.js.map +0 -1
- package/dist/sites/probe.d.ts +0 -60
- package/dist/sites/probe.d.ts.map +0 -1
- package/dist/sites/probe.js +0 -112
- package/dist/sites/probe.js.map +0 -1
- package/dist/sites/registry.d.ts +0 -142
- package/dist/sites/registry.d.ts.map +0 -1
- package/dist/sites/registry.js +0 -163
- package/dist/sites/registry.js.map +0 -1
- package/dist/sites/schema.d.ts +0 -90
- package/dist/sites/schema.d.ts.map +0 -1
- package/dist/sites/schema.js +0 -71
- package/dist/sites/schema.js.map +0 -1
- package/dist/sites/secret-resolver.d.ts +0 -109
- package/dist/sites/secret-resolver.d.ts.map +0 -1
- package/dist/sites/secret-resolver.js +0 -189
- package/dist/sites/secret-resolver.js.map +0 -1
- package/dist/sites/store.d.ts +0 -82
- package/dist/sites/store.d.ts.map +0 -1
- package/dist/sites/store.js +0 -198
- package/dist/sites/store.js.map +0 -1
- package/dist/sites/tools/index.d.ts +0 -28
- package/dist/sites/tools/index.d.ts.map +0 -1
- package/dist/sites/tools/index.js +0 -30
- package/dist/sites/tools/index.js.map +0 -1
- package/dist/sites/tools/sites-list.d.ts +0 -48
- package/dist/sites/tools/sites-list.d.ts.map +0 -1
- package/dist/sites/tools/sites-list.js +0 -135
- package/dist/sites/tools/sites-list.js.map +0 -1
- package/dist/sites/tools/sites-test.d.ts +0 -47
- package/dist/sites/tools/sites-test.d.ts.map +0 -1
- package/dist/sites/tools/sites-test.js +0 -148
- package/dist/sites/tools/sites-test.js.map +0 -1
- package/dist/skill-loader.d.ts +0 -111
- package/dist/skill-loader.d.ts.map +0 -1
- package/dist/skill-loader.js +0 -191
- package/dist/skill-loader.js.map +0 -1
- package/dist/tools/elements/builders.d.ts +0 -24
- package/dist/tools/elements/builders.d.ts.map +0 -1
- package/dist/tools/elements/builders.js +0 -199
- package/dist/tools/elements/builders.js.map +0 -1
- package/dist/tools/elements/handlers-write.d.ts +0 -49
- package/dist/tools/elements/handlers-write.d.ts.map +0 -1
- package/dist/tools/elements/handlers-write.js +0 -148
- package/dist/tools/elements/handlers-write.js.map +0 -1
- package/dist/tools/elements/handlers.d.ts +0 -68
- package/dist/tools/elements/handlers.d.ts.map +0 -1
- package/dist/tools/elements/handlers.js +0 -206
- package/dist/tools/elements/handlers.js.map +0 -1
- package/dist/tools/elements/index.d.ts +0 -28
- package/dist/tools/elements/index.d.ts.map +0 -1
- package/dist/tools/elements/index.js +0 -27
- package/dist/tools/elements/index.js.map +0 -1
- package/dist/tools/elements.d.ts +0 -13
- package/dist/tools/elements.d.ts.map +0 -1
- package/dist/tools/elements.js +0 -13
- package/dist/tools/elements.js.map +0 -1
- package/dist/tools/elicitation.d.ts +0 -87
- package/dist/tools/elicitation.d.ts.map +0 -1
- package/dist/tools/elicitation.js +0 -100
- package/dist/tools/elicitation.js.map +0 -1
- package/dist/tools/format/elements-format.d.ts +0 -40
- package/dist/tools/format/elements-format.d.ts.map +0 -1
- package/dist/tools/format/elements-format.js +0 -194
- package/dist/tools/format/elements-format.js.map +0 -1
- package/dist/tools/format/health-format.d.ts +0 -79
- package/dist/tools/format/health-format.d.ts.map +0 -1
- package/dist/tools/format/health-format.js +0 -181
- package/dist/tools/format/health-format.js.map +0 -1
- package/dist/tools/format/inspection-format.d.ts +0 -58
- package/dist/tools/format/inspection-format.d.ts.map +0 -1
- package/dist/tools/format/inspection-format.js +0 -164
- package/dist/tools/format/inspection-format.js.map +0 -1
- package/dist/tools/format/pages-format.d.ts +0 -48
- package/dist/tools/format/pages-format.d.ts.map +0 -1
- package/dist/tools/format/pages-format.js +0 -137
- package/dist/tools/format/pages-format.js.map +0 -1
- package/dist/tools/format/sources-format.d.ts +0 -25
- package/dist/tools/format/sources-format.d.ts.map +0 -1
- package/dist/tools/format/sources-format.js +0 -208
- package/dist/tools/format/sources-format.js.map +0 -1
- package/dist/tools/health.d.ts +0 -22
- package/dist/tools/health.d.ts.map +0 -1
- package/dist/tools/health.js +0 -220
- package/dist/tools/health.js.map +0 -1
- package/dist/tools/index.d.ts +0 -30
- package/dist/tools/index.d.ts.map +0 -1
- package/dist/tools/index.js +0 -39
- package/dist/tools/index.js.map +0 -1
- package/dist/tools/inspection.d.ts +0 -14
- package/dist/tools/inspection.d.ts.map +0 -1
- package/dist/tools/inspection.js +0 -170
- package/dist/tools/inspection.js.map +0 -1
- package/dist/tools/layout-flatten.d.ts +0 -75
- package/dist/tools/layout-flatten.d.ts.map +0 -1
- package/dist/tools/layout-flatten.js +0 -107
- package/dist/tools/layout-flatten.js.map +0 -1
- package/dist/tools/multi-items/builders.d.ts +0 -23
- package/dist/tools/multi-items/builders.d.ts.map +0 -1
- package/dist/tools/multi-items/builders.js +0 -69
- package/dist/tools/multi-items/builders.js.map +0 -1
- package/dist/tools/multi-items/clean-implode-handler.d.ts +0 -28
- package/dist/tools/multi-items/clean-implode-handler.d.ts.map +0 -1
- package/dist/tools/multi-items/clean-implode-handler.js +0 -40
- package/dist/tools/multi-items/clean-implode-handler.js.map +0 -1
- package/dist/tools/multi-items/index.d.ts +0 -18
- package/dist/tools/multi-items/index.d.ts.map +0 -1
- package/dist/tools/multi-items/index.js +0 -18
- package/dist/tools/multi-items/index.js.map +0 -1
- package/dist/tools/multi-items/inspect-handler.d.ts +0 -41
- package/dist/tools/multi-items/inspect-handler.d.ts.map +0 -1
- package/dist/tools/multi-items/inspect-handler.js +0 -50
- package/dist/tools/multi-items/inspect-handler.js.map +0 -1
- package/dist/tools/multi-items/item-container-map.d.ts +0 -41
- package/dist/tools/multi-items/item-container-map.d.ts.map +0 -1
- package/dist/tools/multi-items/item-container-map.js +0 -73
- package/dist/tools/multi-items/item-container-map.js.map +0 -1
- package/dist/tools/pages/builders.d.ts +0 -14
- package/dist/tools/pages/builders.d.ts.map +0 -1
- package/dist/tools/pages/builders.js +0 -127
- package/dist/tools/pages/builders.js.map +0 -1
- package/dist/tools/pages/handlers-read.d.ts +0 -33
- package/dist/tools/pages/handlers-read.d.ts.map +0 -1
- package/dist/tools/pages/handlers-read.js +0 -171
- package/dist/tools/pages/handlers-read.js.map +0 -1
- package/dist/tools/pages/handlers-write.d.ts +0 -21
- package/dist/tools/pages/handlers-write.d.ts.map +0 -1
- package/dist/tools/pages/handlers-write.js +0 -52
- package/dist/tools/pages/handlers-write.js.map +0 -1
- package/dist/tools/pages/index.d.ts +0 -17
- package/dist/tools/pages/index.d.ts.map +0 -1
- package/dist/tools/pages/index.js +0 -17
- package/dist/tools/pages/index.js.map +0 -1
- package/dist/tools/pages/schemas.d.ts +0 -30
- package/dist/tools/pages/schemas.d.ts.map +0 -1
- package/dist/tools/pages/schemas.js +0 -48
- package/dist/tools/pages/schemas.js.map +0 -1
- package/dist/tools/pages.d.ts +0 -13
- package/dist/tools/pages.d.ts.map +0 -1
- package/dist/tools/pages.js +0 -13
- package/dist/tools/pages.js.map +0 -1
- package/dist/tools/pool-resolve-helper.d.ts +0 -83
- package/dist/tools/pool-resolve-helper.d.ts.map +0 -1
- package/dist/tools/pool-resolve-helper.js +0 -148
- package/dist/tools/pool-resolve-helper.js.map +0 -1
- package/dist/tools/progress-phases.d.ts +0 -46
- package/dist/tools/progress-phases.d.ts.map +0 -1
- package/dist/tools/progress-phases.js +0 -48
- package/dist/tools/progress-phases.js.map +0 -1
- package/dist/tools/shared-schemas.d.ts +0 -25
- package/dist/tools/shared-schemas.d.ts.map +0 -1
- package/dist/tools/shared-schemas.js +0 -48
- package/dist/tools/shared-schemas.js.map +0 -1
- package/dist/tools/sources/builders.d.ts +0 -13
- package/dist/tools/sources/builders.d.ts.map +0 -1
- package/dist/tools/sources/builders.js +0 -115
- package/dist/tools/sources/builders.js.map +0 -1
- package/dist/tools/sources/handlers-bind.d.ts +0 -28
- package/dist/tools/sources/handlers-bind.d.ts.map +0 -1
- package/dist/tools/sources/handlers-bind.js +0 -129
- package/dist/tools/sources/handlers-bind.js.map +0 -1
- package/dist/tools/sources/handlers.d.ts +0 -45
- package/dist/tools/sources/handlers.d.ts.map +0 -1
- package/dist/tools/sources/handlers.js +0 -91
- package/dist/tools/sources/handlers.js.map +0 -1
- package/dist/tools/sources/index.d.ts +0 -19
- package/dist/tools/sources/index.d.ts.map +0 -1
- package/dist/tools/sources/index.js +0 -18
- package/dist/tools/sources/index.js.map +0 -1
- package/dist/tools/sources.d.ts +0 -14
- package/dist/tools/sources.d.ts.map +0 -1
- package/dist/tools/sources.js +0 -14
- package/dist/tools/sources.js.map +0 -1
- package/dist/tools/sparse-fields.d.ts +0 -80
- package/dist/tools/sparse-fields.d.ts.map +0 -1
- package/dist/tools/sparse-fields.js +0 -144
- package/dist/tools/sparse-fields.js.map +0 -1
- package/dist/tools/tool-builder/annotations.d.ts +0 -55
- package/dist/tools/tool-builder/annotations.d.ts.map +0 -1
- package/dist/tools/tool-builder/annotations.js +0 -86
- package/dist/tools/tool-builder/annotations.js.map +0 -1
- package/dist/tools/tool-builder/define.d.ts +0 -31
- package/dist/tools/tool-builder/define.d.ts.map +0 -1
- package/dist/tools/tool-builder/define.js +0 -31
- package/dist/tools/tool-builder/define.js.map +0 -1
- package/dist/tools/tool-builder/index.d.ts +0 -28
- package/dist/tools/tool-builder/index.d.ts.map +0 -1
- package/dist/tools/tool-builder/index.js +0 -27
- package/dist/tools/tool-builder/index.js.map +0 -1
- package/dist/tools/tool-builder/results.d.ts +0 -93
- package/dist/tools/tool-builder/results.d.ts.map +0 -1
- package/dist/tools/tool-builder/results.js +0 -211
- package/dist/tools/tool-builder/results.js.map +0 -1
- package/dist/tools/tool-builder/types.d.ts +0 -82
- package/dist/tools/tool-builder/types.d.ts.map +0 -1
- package/dist/tools/tool-builder/types.js +0 -9
- package/dist/tools/tool-builder/types.js.map +0 -1
- package/dist/tools/tool-builder.d.ts +0 -16
- package/dist/tools/tool-builder.d.ts.map +0 -1
- package/dist/tools/tool-builder.js +0 -16
- package/dist/tools/tool-builder.js.map +0 -1
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Setup-wizard REST-probe + handshake helpers.
|
|
3
|
-
*
|
|
4
|
-
* Split out of `setup-wizard-defaults.ts` (Round-2 R2-A2-IMP1) to
|
|
5
|
-
* give the defaults file headroom under the §11 150-LoC cap.
|
|
6
|
-
*
|
|
7
|
-
* @license MIT
|
|
8
|
-
*/
|
|
9
|
-
import type { AuthProbeResult, HandshakeResult, HealthProbeResult, IdentityProbeResult } from './setup-wizard-types.js';
|
|
10
|
-
export declare function defaultProbeHealth(wpUrl: string): Promise<HealthProbeResult>;
|
|
11
|
-
/**
|
|
12
|
-
* Probe `/v1/identity` — public endpoint introduced in plugin Wave 6.5.
|
|
13
|
-
* Returns ok=true ONLY when the response shape matches our plugin
|
|
14
|
-
* (product field === 'yt-builder-mcp'); a 200 OK from a different
|
|
15
|
-
* plugin at the same URL is treated as not-installed.
|
|
16
|
-
*
|
|
17
|
-
* Soft-failure on 404 keeps back-compat with pre-6.5 plugins — the
|
|
18
|
-
* wizard falls through to the existing /health-only probe path.
|
|
19
|
-
*/
|
|
20
|
-
export declare function defaultProbeIdentity(wpUrl: string): Promise<IdentityProbeResult>;
|
|
21
|
-
export declare function defaultProbeAuth(wpUrl: string, bearer: string): Promise<AuthProbeResult>;
|
|
22
|
-
/** Extract `major.minor` from a semver-like string (`0.1.0-alpha.1` → `0.1`); `''` on malformed input. */
|
|
23
|
-
export declare function majorMinor(version: string): string;
|
|
24
|
-
export declare function defaultHandshake(wpUrl: string, bearer: string, packageVersion: string): Promise<HandshakeResult>;
|
|
25
|
-
//# sourceMappingURL=setup-wizard-handshake.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"setup-wizard-handshake.d.ts","sourceRoot":"","sources":["../src/setup-wizard-handshake.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EACR,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACtB,MAAM,yBAAyB,CAAC;AAejC,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAQlF;AAED;;;;;;;;GAQG;AACH,wBAAsB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAuBtF;AAED,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAQ9F;AAED,0GAA0G;AAC1G,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGlD;AAED,wBAAsB,gBAAgB,CAClC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM,GACvB,OAAO,CAAC,eAAe,CAAC,CAgB1B"}
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Setup-wizard REST-probe + handshake helpers.
|
|
3
|
-
*
|
|
4
|
-
* Split out of `setup-wizard-defaults.ts` (Round-2 R2-A2-IMP1) to
|
|
5
|
-
* give the defaults file headroom under the §11 150-LoC cap.
|
|
6
|
-
*
|
|
7
|
-
* @license MIT
|
|
8
|
-
*/
|
|
9
|
-
import { RestClient } from './client.js';
|
|
10
|
-
// Placeholder Bearer used only for the unauthenticated /health probe;
|
|
11
|
-
// constructed dynamically so the secret-grep-gate doesn't flag the
|
|
12
|
-
// call-site as a hardcoded credential.
|
|
13
|
-
const HEALTH_PROBE_PLACEHOLDER_TOKEN = ['health', 'probe', 'no-auth'].join('-');
|
|
14
|
-
function extractPluginVersion(raw) {
|
|
15
|
-
if (raw === null || typeof raw !== 'object')
|
|
16
|
-
return undefined;
|
|
17
|
-
const obj = raw;
|
|
18
|
-
if (typeof obj.plugin_version === 'string')
|
|
19
|
-
return obj.plugin_version;
|
|
20
|
-
if (typeof obj.version === 'string')
|
|
21
|
-
return obj.version;
|
|
22
|
-
return undefined;
|
|
23
|
-
}
|
|
24
|
-
export async function defaultProbeHealth(wpUrl) {
|
|
25
|
-
try {
|
|
26
|
-
const client = new RestClient({ baseUrl: wpUrl, bearerToken: HEALTH_PROBE_PLACEHOLDER_TOKEN });
|
|
27
|
-
const pluginVersion = extractPluginVersion(await client.get('/health'));
|
|
28
|
-
return pluginVersion !== undefined ? { ok: true, pluginVersion } : { ok: true };
|
|
29
|
-
}
|
|
30
|
-
catch (e) {
|
|
31
|
-
return { ok: false, error: e instanceof Error ? e.message : String(e) };
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Probe `/v1/identity` — public endpoint introduced in plugin Wave 6.5.
|
|
36
|
-
* Returns ok=true ONLY when the response shape matches our plugin
|
|
37
|
-
* (product field === 'yt-builder-mcp'); a 200 OK from a different
|
|
38
|
-
* plugin at the same URL is treated as not-installed.
|
|
39
|
-
*
|
|
40
|
-
* Soft-failure on 404 keeps back-compat with pre-6.5 plugins — the
|
|
41
|
-
* wizard falls through to the existing /health-only probe path.
|
|
42
|
-
*/
|
|
43
|
-
export async function defaultProbeIdentity(wpUrl) {
|
|
44
|
-
try {
|
|
45
|
-
const client = new RestClient({ baseUrl: wpUrl, bearerToken: HEALTH_PROBE_PLACEHOLDER_TOKEN });
|
|
46
|
-
const raw = await client.get('/identity');
|
|
47
|
-
if (raw === null || typeof raw !== 'object') {
|
|
48
|
-
return { ok: false, error: 'unexpected response shape (not an object)' };
|
|
49
|
-
}
|
|
50
|
-
const obj = raw;
|
|
51
|
-
const product = typeof obj.product === 'string' ? obj.product : undefined;
|
|
52
|
-
if (product !== 'yt-builder-mcp') {
|
|
53
|
-
return { ok: false, error: `URL responds but is not a yt-builder-mcp install (product=${product ?? 'missing'})` };
|
|
54
|
-
}
|
|
55
|
-
const result = {
|
|
56
|
-
ok: true,
|
|
57
|
-
product,
|
|
58
|
-
...(typeof obj.siteurl === 'string' ? { siteurl: obj.siteurl.replace(/\/+$/, '') } : {}),
|
|
59
|
-
...(obj.platform === 'wordpress' || obj.platform === 'joomla' ? { platform: obj.platform } : {}),
|
|
60
|
-
...(typeof obj.plugin_version === 'string' ? { pluginVersion: obj.plugin_version } : {}),
|
|
61
|
-
};
|
|
62
|
-
return result;
|
|
63
|
-
}
|
|
64
|
-
catch (e) {
|
|
65
|
-
return { ok: false, error: e instanceof Error ? e.message : String(e) };
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
export async function defaultProbeAuth(wpUrl, bearer) {
|
|
69
|
-
try {
|
|
70
|
-
const client = new RestClient({ baseUrl: wpUrl, bearerToken: bearer });
|
|
71
|
-
await client.get('/etag');
|
|
72
|
-
return { ok: true };
|
|
73
|
-
}
|
|
74
|
-
catch (e) {
|
|
75
|
-
return { ok: false, error: e instanceof Error ? e.message : String(e) };
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
/** Extract `major.minor` from a semver-like string (`0.1.0-alpha.1` → `0.1`); `''` on malformed input. */
|
|
79
|
-
export function majorMinor(version) {
|
|
80
|
-
const m = version.match(/^(\d+)\.(\d+)/);
|
|
81
|
-
return m ? `${m[1]}.${m[2]}` : '';
|
|
82
|
-
}
|
|
83
|
-
export async function defaultHandshake(wpUrl, bearer, packageVersion) {
|
|
84
|
-
const health = await defaultProbeHealth(wpUrl);
|
|
85
|
-
if (!health.ok)
|
|
86
|
-
return { ok: false, error: health.error ?? 'health probe failed' };
|
|
87
|
-
const auth = await defaultProbeAuth(wpUrl, bearer);
|
|
88
|
-
if (!auth.ok)
|
|
89
|
-
return { ok: false, error: auth.error ?? 'auth probe failed' };
|
|
90
|
-
if (health.pluginVersion === undefined)
|
|
91
|
-
return { ok: true };
|
|
92
|
-
const enriched = { ok: true, pluginVersion: health.pluginVersion };
|
|
93
|
-
const pkgMm = majorMinor(packageVersion);
|
|
94
|
-
const plgMm = majorMinor(health.pluginVersion);
|
|
95
|
-
if (pkgMm !== '' && plgMm !== '' && pkgMm !== plgMm) {
|
|
96
|
-
return {
|
|
97
|
-
...enriched,
|
|
98
|
-
warning: `MCP package v${packageVersion} (${pkgMm}.x) ↔ plugin v${health.pluginVersion} (${plgMm}.x) — major/minor mismatch. Upgrade the plugin or pin the MCP package to match.`,
|
|
99
|
-
};
|
|
100
|
-
}
|
|
101
|
-
return enriched;
|
|
102
|
-
}
|
|
103
|
-
//# sourceMappingURL=setup-wizard-handshake.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"setup-wizard-handshake.js","sourceRoot":"","sources":["../src/setup-wizard-handshake.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,164 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Public types for the interactive setup wizard.
|
|
3
|
-
*
|
|
4
|
-
* Split out of `setup-wizard.ts` in the Round-1 audit I5 fix so the
|
|
5
|
-
* type surface is consumable without dragging in @clack/prompts or the
|
|
6
|
-
* RestClient. Tests and other modules import these types alone.
|
|
7
|
-
*
|
|
8
|
-
* @license MIT
|
|
9
|
-
*/
|
|
10
|
-
import type { DetectedClient, McpServerConfig } from './clients/index.js';
|
|
11
|
-
export interface WizardAnswers {
|
|
12
|
-
/** Trimmed, trailing-slash-stripped WordPress base URL. */
|
|
13
|
-
readonly wpUrl: string;
|
|
14
|
-
/** Trimmed Bearer key. */
|
|
15
|
-
readonly bearer: string;
|
|
16
|
-
/** IDs of clients the user wants wired up. */
|
|
17
|
-
readonly selectedClients: readonly string[];
|
|
18
|
-
/**
|
|
19
|
-
* Site ID (multi-site registry key). Optional for back-compat with
|
|
20
|
-
* non-interactive flag paths that don't ask for it; the wizard
|
|
21
|
-
* defaults missing/empty values to `'default'`. Renamed from
|
|
22
|
-
* `profileName` in W9 to align with the multi-site registry's
|
|
23
|
-
* `site_id` field (see `src/sites/schema.ts`).
|
|
24
|
-
*/
|
|
25
|
-
readonly siteId?: string;
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Decoded payload of a Bearer key. The plugin signs `kid`, `scope`, `iss`
|
|
29
|
-
* (issuer = WordPress `site_url`), and optionally `exp` into the token's
|
|
30
|
-
* base64url payload section. The wizard decodes this WITHOUT verifying the
|
|
31
|
-
* signature (verification requires the plugin's secret) — `iss` is used
|
|
32
|
-
* purely to pre-fill the URL prompt; the canonical auth check happens
|
|
33
|
-
* later when the wizard hits `/v1/health` with the token.
|
|
34
|
-
*/
|
|
35
|
-
export interface DecodedTokenPayload {
|
|
36
|
-
readonly kid: string;
|
|
37
|
-
readonly scope: readonly string[];
|
|
38
|
-
/** Issuer — canonical WordPress site URL the key was generated on. */
|
|
39
|
-
readonly iss: string;
|
|
40
|
-
/** Unix expiry timestamp, if the operator opted-in to expiry. */
|
|
41
|
-
readonly exp?: number;
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Result of the public `/v1/identity` probe — the wizard uses this to
|
|
45
|
-
* (a) confirm the plugin is installed at the URL the user typed and
|
|
46
|
-
* (b) cross-check the URL against the token's `iss` claim before writing
|
|
47
|
-
* any AI-client config.
|
|
48
|
-
*/
|
|
49
|
-
export interface IdentityProbeResult {
|
|
50
|
-
readonly ok: boolean;
|
|
51
|
-
/** Canonical site URL reported by the plugin. */
|
|
52
|
-
readonly siteurl?: string;
|
|
53
|
-
/** Platform discriminator: 'wordpress' today, 'joomla' later. */
|
|
54
|
-
readonly platform?: 'wordpress' | 'joomla';
|
|
55
|
-
/** Product discriminator (defends against another MCP at the same URL). */
|
|
56
|
-
readonly product?: string;
|
|
57
|
-
/** Plugin version (for diagnostic display). */
|
|
58
|
-
readonly pluginVersion?: string;
|
|
59
|
-
/** Failure message when ok=false. */
|
|
60
|
-
readonly error?: string;
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Result of a successful `/setup/pickup` POST — a one-shot, IP-bound,
|
|
64
|
-
* 5-minute-TTL retrieval of a freshly-minted Bearer token + the
|
|
65
|
-
* canonical site URL the plugin reports. The wizard treats this as
|
|
66
|
-
* "answers obtained" and skips the URL/token prompts.
|
|
67
|
-
*
|
|
68
|
-
* Failure modes (404 expired/consumed, 403 IP-mismatch, 429 rate-limit,
|
|
69
|
-
* 400 invalid) are signalled by `fetchPickup` rejecting with a thrown
|
|
70
|
-
* Error — there is no partial success shape.
|
|
71
|
-
*/
|
|
72
|
-
export interface PickupResult {
|
|
73
|
-
/** Bearer token in plugin format `ytb_(live|test)_<payload>.<sig>`. */
|
|
74
|
-
readonly token: string;
|
|
75
|
-
/** Canonical WordPress site URL reported by the plugin. */
|
|
76
|
-
readonly siteurl: string;
|
|
77
|
-
/** Plugin version string for diagnostic display. */
|
|
78
|
-
readonly pluginVersion: string;
|
|
79
|
-
}
|
|
80
|
-
export interface HealthProbeResult {
|
|
81
|
-
readonly ok: boolean;
|
|
82
|
-
/** Plugin version reported by the server (if any). */
|
|
83
|
-
readonly pluginVersion?: string;
|
|
84
|
-
/** Error message if `ok=false`. */
|
|
85
|
-
readonly error?: string;
|
|
86
|
-
}
|
|
87
|
-
export interface AuthProbeResult {
|
|
88
|
-
readonly ok: boolean;
|
|
89
|
-
readonly error?: string;
|
|
90
|
-
}
|
|
91
|
-
export interface HandshakeResult {
|
|
92
|
-
readonly ok: boolean;
|
|
93
|
-
readonly pluginVersion?: string;
|
|
94
|
-
/** Mismatch warning string when plugin version != NPM package version. */
|
|
95
|
-
readonly warning?: string;
|
|
96
|
-
readonly error?: string;
|
|
97
|
-
}
|
|
98
|
-
export interface WriteResult {
|
|
99
|
-
readonly id: string;
|
|
100
|
-
readonly label: string;
|
|
101
|
-
readonly ok: boolean;
|
|
102
|
-
readonly error?: string;
|
|
103
|
-
/** Path that was written. Empty string on failure. */
|
|
104
|
-
readonly path: string;
|
|
105
|
-
/** Snapshot of the file content BEFORE the write (for rollback). */
|
|
106
|
-
readonly previousContent: string | null;
|
|
107
|
-
}
|
|
108
|
-
export interface WizardDeps {
|
|
109
|
-
/** Collect answers from the user. Return `null` on cancel. */
|
|
110
|
-
prompt: (input: {
|
|
111
|
-
detected: readonly DetectedClient[];
|
|
112
|
-
}) => Promise<WizardAnswers | null>;
|
|
113
|
-
/** Detect installed AI clients. */
|
|
114
|
-
detectClients: () => readonly DetectedClient[];
|
|
115
|
-
/** Probe the plugin /health endpoint (no auth). */
|
|
116
|
-
probeHealth: (wpUrl: string) => Promise<HealthProbeResult>;
|
|
117
|
-
/**
|
|
118
|
-
* Probe the plugin /identity endpoint (no auth) — used to verify the
|
|
119
|
-
* URL belongs to a yt-builder-mcp install and cross-check it
|
|
120
|
-
* against the token's `iss` claim. Optional for back-compat: when the
|
|
121
|
-
* field is missing the wizard skips the identity check.
|
|
122
|
-
*/
|
|
123
|
-
probeIdentity?: (wpUrl: string) => Promise<IdentityProbeResult>;
|
|
124
|
-
/** Probe the plugin /etag endpoint (Bearer auth). */
|
|
125
|
-
probeAuth: (wpUrl: string, bearer: string) => Promise<AuthProbeResult>;
|
|
126
|
-
/** Confirm whether to continue when a probe fails. */
|
|
127
|
-
confirmContinue: (message: string) => Promise<boolean>;
|
|
128
|
-
/** Write the MCP server config for a single client. */
|
|
129
|
-
writeClient: (id: string, serverName: string, config: McpServerConfig) => Promise<WriteResult>;
|
|
130
|
-
/** Re-run the auth probe AFTER the configs were written and parse
|
|
131
|
-
* the plugin version. Used as the dist-tag handshake. */
|
|
132
|
-
handshake: (wpUrl: string, bearer: string, packageVersion: string) => Promise<HandshakeResult>;
|
|
133
|
-
/**
|
|
134
|
-
* POST `{ nonce }` to the pickup URL revealed by wp-admin and resolve
|
|
135
|
-
* to a `PickupResult` (token + canonical site URL + plugin version).
|
|
136
|
-
*
|
|
137
|
-
* Implementations MUST throw on any non-200 response (404 expired /
|
|
138
|
-
* consumed, 403 IP-mismatch, 429 rate-limited, 400 malformed) so the
|
|
139
|
-
* wizard's pickup branch can abort with a single error path. The
|
|
140
|
-
* thrown Error's `.message` is what gets shown to the user.
|
|
141
|
-
*
|
|
142
|
-
* Optional for back-compat with older WizardDeps bags constructed
|
|
143
|
-
* before Wave-C — when missing, callers that pass `--pickup` get a
|
|
144
|
-
* clear "pickup not supported by this WizardDeps" error.
|
|
145
|
-
*/
|
|
146
|
-
fetchPickup?: (pickupUrl: string, nonce: string) => Promise<PickupResult>;
|
|
147
|
-
/** Optional sink for human-facing status lines. */
|
|
148
|
-
log?: (line: string) => void;
|
|
149
|
-
/**
|
|
150
|
-
* W9 — invoked after both the health + auth probes have produced a
|
|
151
|
-
* decision (continue / aborted) so the wizard can persist the
|
|
152
|
-
* answers to the multi-site sites.json registry. Implementations
|
|
153
|
-
* MUST be idempotent: the wizard calls this exactly once on a
|
|
154
|
-
* successful run, but the dispatcher's overall retry policy may
|
|
155
|
-
* re-run the wizard.
|
|
156
|
-
*
|
|
157
|
-
* On failure the implementation should throw — the wizard treats
|
|
158
|
-
* the failure as a write-failure equivalent (rollback + exit 4).
|
|
159
|
-
* Optional for back-compat: when missing the wizard skips the
|
|
160
|
-
* sites.json write entirely (pre-W9 single-site env-var flow).
|
|
161
|
-
*/
|
|
162
|
-
persistSite?: (answers: WizardAnswers) => Promise<void>;
|
|
163
|
-
}
|
|
164
|
-
//# sourceMappingURL=setup-wizard-types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"setup-wizard-types.d.ts","sourceRoot":"","sources":["../src/setup-wizard-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Public types for the interactive setup wizard.
|
|
3
|
-
*
|
|
4
|
-
* Split out of `setup-wizard.ts` in the Round-1 audit I5 fix so the
|
|
5
|
-
* type surface is consumable without dragging in @clack/prompts or the
|
|
6
|
-
* RestClient. Tests and other modules import these types alone.
|
|
7
|
-
*
|
|
8
|
-
* @license MIT
|
|
9
|
-
*/
|
|
10
|
-
export {};
|
|
11
|
-
//# sourceMappingURL=setup-wizard-types.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"setup-wizard-types.js","sourceRoot":"","sources":["../src/setup-wizard-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
|
package/dist/setup-wizard.d.ts
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Interactive setup wizard for `@wootsup/yt-builder-mcp`.
|
|
3
|
-
*
|
|
4
|
-
* `runWizard()` accepts a {@link WizardDeps} bag so unit tests can drive
|
|
5
|
-
* a deterministic prompt → validate → probe → write → handshake sequence
|
|
6
|
-
* without touching real subprocesses or filesystems.
|
|
7
|
-
*
|
|
8
|
-
* After the Round-1 audit I5 fix, this file is the wizard ALGORITHM only:
|
|
9
|
-
* - `WizardDeps` and its result types live in `setup-wizard-types.ts`.
|
|
10
|
-
* - Default real-I/O implementations + `rollbackWrites` + `majorMinor`
|
|
11
|
-
* live in `setup-wizard-defaults.ts`.
|
|
12
|
-
* - The CLI dispatcher + main-guard live in `setup-cli.ts`.
|
|
13
|
-
*
|
|
14
|
-
* @license MIT
|
|
15
|
-
*/
|
|
16
|
-
import type { AuthProbeResult, HandshakeResult, HealthProbeResult, WizardAnswers, WizardDeps, WriteResult } from './setup-wizard-types.js';
|
|
17
|
-
export { DEFAULT_WIZARD_DEPS, majorMinor } from './setup-wizard-defaults.js';
|
|
18
|
-
export type { AuthProbeResult, HandshakeResult, HealthProbeResult, WizardAnswers, WizardDeps, WriteResult, };
|
|
19
|
-
/**
|
|
20
|
-
* Run the interactive setup wizard. Returns a process exit-code so the
|
|
21
|
-
* outer dispatcher can `process.exit(rc)` cleanly.
|
|
22
|
-
*
|
|
23
|
-
* Exit codes:
|
|
24
|
-
* 0 — success (configs written, handshake OK)
|
|
25
|
-
* 1 — invalid input that prevents proceeding
|
|
26
|
-
* 2 — health probe failed and user declined to continue
|
|
27
|
-
* 3 — auth probe failed and user declined to continue
|
|
28
|
-
* 4 — write failed; configs rolled back
|
|
29
|
-
* 5 — handshake failed; configs rolled back
|
|
30
|
-
* 130 — user cancelled (matches the SIGINT convention)
|
|
31
|
-
*/
|
|
32
|
-
export declare function runWizard(deps?: WizardDeps): Promise<number>;
|
|
33
|
-
//# sourceMappingURL=setup-wizard.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"setup-wizard.d.ts","sourceRoot":"","sources":["../src/setup-wizard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAUH,OAAO,KAAK,EACR,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,UAAU,EACV,WAAW,EACd,MAAM,yBAAyB,CAAC;AAIjC,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC7E,YAAY,EACR,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,UAAU,EACV,WAAW,GACd,CAAC;AAYF;;;;;;;;;;;;GAYG;AACH,wBAAsB,SAAS,CAC3B,IAAI,GAAE,UAAgC,GACvC,OAAO,CAAC,MAAM,CAAC,CAkLjB"}
|
package/dist/setup-wizard.js
DELETED
|
@@ -1,199 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Interactive setup wizard for `@wootsup/yt-builder-mcp`.
|
|
3
|
-
*
|
|
4
|
-
* `runWizard()` accepts a {@link WizardDeps} bag so unit tests can drive
|
|
5
|
-
* a deterministic prompt → validate → probe → write → handshake sequence
|
|
6
|
-
* without touching real subprocesses or filesystems.
|
|
7
|
-
*
|
|
8
|
-
* After the Round-1 audit I5 fix, this file is the wizard ALGORITHM only:
|
|
9
|
-
* - `WizardDeps` and its result types live in `setup-wizard-types.ts`.
|
|
10
|
-
* - Default real-I/O implementations + `rollbackWrites` + `majorMinor`
|
|
11
|
-
* live in `setup-wizard-defaults.ts`.
|
|
12
|
-
* - The CLI dispatcher + main-guard live in `setup-cli.ts`.
|
|
13
|
-
*
|
|
14
|
-
* @license MIT
|
|
15
|
-
*/
|
|
16
|
-
import { cancel, log, note, outro, spinner } from '@clack/prompts';
|
|
17
|
-
import { SERVER_NAME, SERVER_VERSION } from './server.js';
|
|
18
|
-
import { DEFAULT_WIZARD_DEPS, rollbackWrites, } from './setup-wizard-defaults.js';
|
|
19
|
-
// Re-export the public surface so `import { runWizard, WizardDeps } from
|
|
20
|
-
// './setup-wizard.js'` continues to work without touching the split files.
|
|
21
|
-
export { DEFAULT_WIZARD_DEPS, majorMinor } from './setup-wizard-defaults.js';
|
|
22
|
-
// 1.0.2 Wave-R Part 2: renamed `yootheme-builder` → `yt-builder-mcp`
|
|
23
|
-
// to match the package slug + REST namespace + GitHub repo + skill
|
|
24
|
-
// folder. Pre-1.0.1 installs (alpha-tester only, per Thomas 2026-05-23)
|
|
25
|
-
// would land their server under the old key; no migration logic is
|
|
26
|
-
// shipped because there were no production installs to migrate. If
|
|
27
|
-
// someone re-runs setup they'll get a fresh `yt-builder-mcp` entry +
|
|
28
|
-
// the legacy `yootheme-builder` entry stays dormant (harmless, points
|
|
29
|
-
// at the same npm package).
|
|
30
|
-
const SERVER_KEY = 'yt-builder-mcp';
|
|
31
|
-
/**
|
|
32
|
-
* Run the interactive setup wizard. Returns a process exit-code so the
|
|
33
|
-
* outer dispatcher can `process.exit(rc)` cleanly.
|
|
34
|
-
*
|
|
35
|
-
* Exit codes:
|
|
36
|
-
* 0 — success (configs written, handshake OK)
|
|
37
|
-
* 1 — invalid input that prevents proceeding
|
|
38
|
-
* 2 — health probe failed and user declined to continue
|
|
39
|
-
* 3 — auth probe failed and user declined to continue
|
|
40
|
-
* 4 — write failed; configs rolled back
|
|
41
|
-
* 5 — handshake failed; configs rolled back
|
|
42
|
-
* 130 — user cancelled (matches the SIGINT convention)
|
|
43
|
-
*/
|
|
44
|
-
export async function runWizard(deps = DEFAULT_WIZARD_DEPS) {
|
|
45
|
-
const logFn = deps.log ?? ((line) => process.stderr.write(`${line}\n`));
|
|
46
|
-
// 1. Detect clients + collect answers.
|
|
47
|
-
const detected = deps.detectClients();
|
|
48
|
-
const answers = await deps.prompt({ detected });
|
|
49
|
-
if (answers === null)
|
|
50
|
-
return 130;
|
|
51
|
-
if (answers.wpUrl === '' || answers.bearer === '') {
|
|
52
|
-
logFn('Both the WordPress URL and the Bearer key are required.');
|
|
53
|
-
return 1;
|
|
54
|
-
}
|
|
55
|
-
// 2a. Identity probe (no auth) — confirms the URL hosts our plugin
|
|
56
|
-
// and cross-checks against the URL the user entered. Optional
|
|
57
|
-
// dep for back-compat: missing field = skip (older WizardDeps
|
|
58
|
-
// bags + pre-6.5 plugins don't expose it).
|
|
59
|
-
if (deps.probeIdentity !== undefined) {
|
|
60
|
-
const idSpinner = spinner();
|
|
61
|
-
idSpinner.start('Verifying plugin identity…');
|
|
62
|
-
const identity = await deps.probeIdentity(answers.wpUrl);
|
|
63
|
-
if (identity.ok) {
|
|
64
|
-
const summary = identity.siteurl !== undefined
|
|
65
|
-
? `Plugin identified at ${identity.siteurl}.`
|
|
66
|
-
: 'Plugin identified.';
|
|
67
|
-
idSpinner.stop(summary);
|
|
68
|
-
if (identity.siteurl !== undefined && identity.siteurl !== answers.wpUrl) {
|
|
69
|
-
log.warn(`URL mismatch: you entered ${answers.wpUrl} but the plugin reports its canonical URL as ${identity.siteurl}. ` +
|
|
70
|
-
`Using the URL you entered — fix the mismatch if you get auth errors.`);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
else {
|
|
74
|
-
idSpinner.stop('Identity probe failed.');
|
|
75
|
-
log.warn(`Identity probe: ${identity.error ?? 'unknown'} (continuing — older plugins lack this endpoint).`);
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
// 2b. Health probe (no auth).
|
|
79
|
-
const healthSpinner = spinner();
|
|
80
|
-
healthSpinner.start('Probing plugin health…');
|
|
81
|
-
const health = await deps.probeHealth(answers.wpUrl);
|
|
82
|
-
if (health.ok) {
|
|
83
|
-
healthSpinner.stop(health.pluginVersion !== undefined
|
|
84
|
-
? `Plugin reachable (v${health.pluginVersion}).`
|
|
85
|
-
: 'Plugin reachable.');
|
|
86
|
-
}
|
|
87
|
-
else {
|
|
88
|
-
healthSpinner.stop('Plugin probe failed.');
|
|
89
|
-
log.error(`Could not reach the plugin: ${health.error ?? 'unknown'}`);
|
|
90
|
-
const cont = await deps.confirmContinue('Continue anyway and write the config? (You can fix this later.)');
|
|
91
|
-
if (!cont) {
|
|
92
|
-
cancel('Setup cancelled.');
|
|
93
|
-
return 2;
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
// 3. Auth probe (Bearer).
|
|
97
|
-
const authSpinner = spinner();
|
|
98
|
-
authSpinner.start('Verifying Bearer key…');
|
|
99
|
-
const auth = await deps.probeAuth(answers.wpUrl, answers.bearer);
|
|
100
|
-
const authOk = auth.ok;
|
|
101
|
-
if (authOk) {
|
|
102
|
-
authSpinner.stop('Bearer key accepted.');
|
|
103
|
-
}
|
|
104
|
-
else {
|
|
105
|
-
authSpinner.stop('Bearer probe failed.');
|
|
106
|
-
log.warn(`Auth probe failed: ${auth.error ?? 'unknown'}`);
|
|
107
|
-
const cont = await deps.confirmContinue('Continue anyway and write the config?');
|
|
108
|
-
if (!cont) {
|
|
109
|
-
cancel('Setup cancelled.');
|
|
110
|
-
return 3;
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
// 4. Write configs. Track previous content for rollback.
|
|
114
|
-
//
|
|
115
|
-
// Wave 7 (2026-05-24): write BOTH env-var names so the config works
|
|
116
|
-
// with every release line — pre-Wave-7 servers only know
|
|
117
|
-
// YTB_MCP_WP_URL; Wave-7+ servers prefer YTB_MCP_SITE_URL but still
|
|
118
|
-
// honour the legacy alias. The wizard intentionally writes both so a
|
|
119
|
-
// wizard-rendered config never needs editing after an npm upgrade.
|
|
120
|
-
const serverConfig = {
|
|
121
|
-
command: 'npx',
|
|
122
|
-
args: ['-y', SERVER_NAME],
|
|
123
|
-
env: {
|
|
124
|
-
YTB_MCP_SITE_URL: answers.wpUrl,
|
|
125
|
-
YTB_MCP_WP_URL: answers.wpUrl,
|
|
126
|
-
YTB_MCP_BEARER_TOKEN: answers.bearer,
|
|
127
|
-
},
|
|
128
|
-
};
|
|
129
|
-
const writes = [];
|
|
130
|
-
let writeFailed = false;
|
|
131
|
-
for (const id of answers.selectedClients) {
|
|
132
|
-
const result = await deps.writeClient(id, SERVER_KEY, serverConfig);
|
|
133
|
-
writes.push(result);
|
|
134
|
-
if (!result.ok) {
|
|
135
|
-
writeFailed = true;
|
|
136
|
-
break;
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
const summary = writes
|
|
140
|
-
.map((r) => r.ok
|
|
141
|
-
? ` ✓ ${r.label}: configured`
|
|
142
|
-
: ` ✗ ${r.label}: FAILED (${r.error ?? 'unknown'})`)
|
|
143
|
-
.join('\n');
|
|
144
|
-
note(summary, 'Results');
|
|
145
|
-
if (writeFailed) {
|
|
146
|
-
log.error('Write failed — rolling back any partial writes.');
|
|
147
|
-
await rollbackWrites(writes, logFn);
|
|
148
|
-
return 4;
|
|
149
|
-
}
|
|
150
|
-
// 5. Dist-tag handshake (only when auth probe succeeded — there's
|
|
151
|
-
// no point handshaking with a known-bad token).
|
|
152
|
-
if (authOk) {
|
|
153
|
-
const hsSpinner = spinner();
|
|
154
|
-
hsSpinner.start('Verifying dist-tag handshake…');
|
|
155
|
-
const hs = await deps.handshake(answers.wpUrl, answers.bearer, SERVER_VERSION);
|
|
156
|
-
if (!hs.ok) {
|
|
157
|
-
hsSpinner.stop('Handshake failed.');
|
|
158
|
-
log.error(`Handshake failed after writing configs: ${hs.error ?? 'unknown'}. Rolling back.`);
|
|
159
|
-
await rollbackWrites(writes, logFn);
|
|
160
|
-
return 5;
|
|
161
|
-
}
|
|
162
|
-
if (hs.warning !== undefined) {
|
|
163
|
-
hsSpinner.stop('Handshake OK (with warning).');
|
|
164
|
-
log.warn(hs.warning);
|
|
165
|
-
}
|
|
166
|
-
else {
|
|
167
|
-
hsSpinner.stop('Handshake OK.');
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
else {
|
|
171
|
-
log.warn('Skipping handshake because the Bearer probe failed.');
|
|
172
|
-
}
|
|
173
|
-
// W9 — persist the answers to the multi-site sites.json registry
|
|
174
|
-
// when the dispatcher wired a `persistSite` callback. We do this
|
|
175
|
-
// AFTER the handshake passes so the sites.json never contains a
|
|
176
|
-
// site that failed the probe. Optional hook so pre-W9 callers
|
|
177
|
-
// (and tests that drive the wizard without sites.json) skip the
|
|
178
|
-
// write transparently.
|
|
179
|
-
if (deps.persistSite !== undefined && writes.every((r) => r.ok)) {
|
|
180
|
-
try {
|
|
181
|
-
await deps.persistSite(answers);
|
|
182
|
-
}
|
|
183
|
-
catch (e) {
|
|
184
|
-
const msg = e instanceof Error ? e.message : String(e);
|
|
185
|
-
log.error(`Failed to persist site to sites.json: ${msg}`);
|
|
186
|
-
// Don't rollback the client configs — the env-var path
|
|
187
|
-
// still works; the sites.json file is an additive surface.
|
|
188
|
-
// Operator just sees the warning + can retry with `add-site`.
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
if (writes.every((r) => r.ok) && authOk) {
|
|
192
|
-
outro('Done — restart your AI client to load the new MCP server.');
|
|
193
|
-
}
|
|
194
|
-
else {
|
|
195
|
-
outro('Setup finished with warnings. See the messages above.');
|
|
196
|
-
}
|
|
197
|
-
return 0;
|
|
198
|
-
}
|
|
199
|
-
//# sourceMappingURL=setup-wizard.js.map
|
package/dist/setup-wizard.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"setup-wizard.js","sourceRoot":"","sources":["../src/setup-wizard.ts"],"names":[],"mappings":"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"}
|
package/dist/setup.d.ts
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Backwards-compat entry point for `npx -y @wootsup/yt-builder-mcp setup`.
|
|
3
|
-
*
|
|
4
|
-
* The Wave G.7 refactor moved the wizard implementation into
|
|
5
|
-
* {@link runWizard} (with dependency injection so it's unit-testable)
|
|
6
|
-
* and the subcommand dispatcher into {@link runCli}, both in
|
|
7
|
-
* `./setup-cli.ts`. This file remains so the published `bin/`
|
|
8
|
-
* shim that does `import('../dist/setup.js')` still works after a
|
|
9
|
-
* partial deploy where only the published tarball is updated; it
|
|
10
|
-
* simply forwards to `runWizard()`.
|
|
11
|
-
*
|
|
12
|
-
* `YTB_MCP_TEST_MODE=1` short-circuits the wizard for smoke tests.
|
|
13
|
-
*
|
|
14
|
-
* @license MIT
|
|
15
|
-
*/
|
|
16
|
-
export {};
|
|
17
|
-
//# sourceMappingURL=setup.d.ts.map
|
package/dist/setup.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG"}
|
package/dist/setup.js
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Backwards-compat entry point for `npx -y @wootsup/yt-builder-mcp setup`.
|
|
3
|
-
*
|
|
4
|
-
* The Wave G.7 refactor moved the wizard implementation into
|
|
5
|
-
* {@link runWizard} (with dependency injection so it's unit-testable)
|
|
6
|
-
* and the subcommand dispatcher into {@link runCli}, both in
|
|
7
|
-
* `./setup-cli.ts`. This file remains so the published `bin/`
|
|
8
|
-
* shim that does `import('../dist/setup.js')` still works after a
|
|
9
|
-
* partial deploy where only the published tarball is updated; it
|
|
10
|
-
* simply forwards to `runWizard()`.
|
|
11
|
-
*
|
|
12
|
-
* `YTB_MCP_TEST_MODE=1` short-circuits the wizard for smoke tests.
|
|
13
|
-
*
|
|
14
|
-
* @license MIT
|
|
15
|
-
*/
|
|
16
|
-
import { runWizard } from './setup-cli.js';
|
|
17
|
-
const TEST_MODE = process.env.YTB_MCP_TEST_MODE === '1';
|
|
18
|
-
async function run() {
|
|
19
|
-
if (TEST_MODE) {
|
|
20
|
-
process.stderr.write('[yt-builder-mcp setup] Test mode — exiting after banner.\n');
|
|
21
|
-
return;
|
|
22
|
-
}
|
|
23
|
-
const code = await runWizard();
|
|
24
|
-
if (code !== 0) {
|
|
25
|
-
process.exit(code);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
run().catch((e) => {
|
|
29
|
-
const message = e instanceof Error ? e.message : String(e);
|
|
30
|
-
process.stderr.write(`[yt-builder-mcp setup] fatal: ${message}\n`);
|
|
31
|
-
process.exit(1);
|
|
32
|
-
});
|
|
33
|
-
//# sourceMappingURL=setup.js.map
|
package/dist/setup.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,KAAK,GAAG,CAAC;AAExD,KAAK,UAAU,GAAG;IACd,IAAI,SAAS,EAAE,CAAC;QACZ,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,4DAA4D,CAAC,CAAC;QACnF,OAAO;IACX,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,SAAS,EAAE,CAAC;IAC/B,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;AACL,CAAC;AAED,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAU,EAAE,EAAE;IACvB,MAAM,OAAO,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC3D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iCAAiC,OAAO,IAAI,CAAC,CAAC;IACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC,CAAC,CAAC"}
|