@wootsup/yt-builder-mcp 1.12.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +128 -30
- package/bin/node-floor.d.ts +28 -0
- package/bin/node-floor.js +123 -0
- package/bin/yt-builder-mcp.js +51 -10
- package/dist/auth.d.ts +3 -121
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +40 -170
- package/dist/auth.js.map +1 -1
- package/dist/catalog/build-catalog.d.ts +4 -49
- package/dist/catalog/build-catalog.d.ts.map +1 -1
- package/dist/catalog/build-catalog.js +15 -126
- package/dist/catalog/build-catalog.js.map +1 -1
- package/dist/catalog/json-schema.d.ts +3 -0
- package/dist/catalog/json-schema.d.ts.map +1 -0
- package/dist/catalog/json-schema.js +68 -0
- package/dist/catalog/json-schema.js.map +1 -0
- package/dist/catalog/output-shapes.d.ts +6 -0
- package/dist/catalog/output-shapes.d.ts.map +1 -0
- package/dist/catalog/output-shapes.js +89 -0
- package/dist/catalog/output-shapes.js.map +1 -0
- package/dist/catalog/tool-catalog-markdown.d.ts +1 -37
- package/dist/catalog/tool-catalog-markdown.d.ts.map +1 -1
- package/dist/catalog/tool-catalog-markdown.js +8 -52
- package/dist/catalog/tool-catalog-markdown.js.map +1 -1
- package/dist/cli/doctor-command.d.ts +2 -7
- package/dist/cli/doctor-command.d.ts.map +1 -1
- package/dist/cli/doctor-command.js +21 -62
- package/dist/cli/doctor-command.js.map +1 -1
- package/dist/cli/invocation-decision.d.ts +4 -52
- package/dist/cli/invocation-decision.d.ts.map +1 -1
- package/dist/cli/invocation-decision.js +45 -54
- package/dist/cli/invocation-decision.js.map +1 -1
- package/dist/client.d.ts +3 -107
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +34 -115
- package/dist/client.js.map +1 -1
- package/dist/clients/claude-code.d.ts +0 -15
- package/dist/clients/claude-code.d.ts.map +1 -1
- package/dist/clients/claude-code.js +0 -22
- package/dist/clients/claude-code.js.map +1 -1
- package/dist/clients/claude-desktop.d.ts +0 -16
- package/dist/clients/claude-desktop.d.ts.map +1 -1
- package/dist/clients/claude-desktop.js +0 -18
- package/dist/clients/claude-desktop.js.map +1 -1
- package/dist/clients/cline.d.ts +0 -23
- package/dist/clients/cline.d.ts.map +1 -1
- package/dist/clients/cline.js +0 -33
- package/dist/clients/cline.js.map +1 -1
- package/dist/clients/codex-cli.d.ts +0 -39
- package/dist/clients/codex-cli.d.ts.map +1 -1
- package/dist/clients/codex-cli.js +0 -137
- package/dist/clients/codex-cli.js.map +1 -1
- package/dist/clients/continue.d.ts +0 -10
- package/dist/clients/continue.d.ts.map +1 -1
- package/dist/clients/continue.js +0 -26
- package/dist/clients/continue.js.map +1 -1
- package/dist/clients/cursor.d.ts +0 -9
- package/dist/clients/cursor.d.ts.map +1 -1
- package/dist/clients/cursor.js +0 -11
- package/dist/clients/cursor.js.map +1 -1
- package/dist/clients/gemini-cli.d.ts +0 -15
- package/dist/clients/gemini-cli.d.ts.map +1 -1
- package/dist/clients/gemini-cli.js +0 -17
- package/dist/clients/gemini-cli.js.map +1 -1
- package/dist/clients/home.d.ts +0 -12
- package/dist/clients/home.d.ts.map +1 -1
- package/dist/clients/home.js +0 -12
- package/dist/clients/home.js.map +1 -1
- package/dist/clients/index.d.ts +0 -150
- package/dist/clients/index.d.ts.map +1 -1
- package/dist/clients/index.js +0 -112
- package/dist/clients/index.js.map +1 -1
- package/dist/clients/roo-code.d.ts +0 -20
- package/dist/clients/roo-code.d.ts.map +1 -1
- package/dist/clients/roo-code.js +0 -22
- package/dist/clients/roo-code.js.map +1 -1
- package/dist/clients/zed.d.ts +0 -9
- package/dist/clients/zed.d.ts.map +1 -1
- package/dist/clients/zed.js +0 -18
- package/dist/clients/zed.js.map +1 -1
- package/dist/compat-floor.d.ts +35 -0
- package/dist/compat-floor.d.ts.map +1 -0
- package/dist/compat-floor.js +84 -0
- package/dist/compat-floor.js.map +1 -0
- package/dist/compat-probe.d.ts +6 -0
- package/dist/compat-probe.d.ts.map +1 -0
- package/dist/compat-probe.js +20 -0
- package/dist/compat-probe.js.map +1 -0
- package/dist/diagnostics/ca-reexec.d.ts +0 -30
- package/dist/diagnostics/ca-reexec.d.ts.map +1 -1
- package/dist/diagnostics/ca-reexec.js +0 -62
- package/dist/diagnostics/ca-reexec.js.map +1 -1
- package/dist/diagnostics/ca-trust.d.ts +0 -22
- package/dist/diagnostics/ca-trust.d.ts.map +1 -1
- package/dist/diagnostics/ca-trust.js +3 -42
- package/dist/diagnostics/ca-trust.js.map +1 -1
- package/dist/diagnostics/diagnose-network-error.d.ts +1 -38
- package/dist/diagnostics/diagnose-network-error.d.ts.map +1 -1
- package/dist/diagnostics/diagnose-network-error.js +26 -37
- package/dist/diagnostics/diagnose-network-error.js.map +1 -1
- package/dist/diagnostics/doctor.d.ts +1 -85
- package/dist/diagnostics/doctor.d.ts.map +1 -1
- package/dist/diagnostics/doctor.js +5 -90
- package/dist/diagnostics/doctor.js.map +1 -1
- package/dist/diagnostics/startup-self-probe.d.ts +3 -25
- package/dist/diagnostics/startup-self-probe.d.ts.map +1 -1
- package/dist/diagnostics/startup-self-probe.js +11 -48
- package/dist/diagnostics/startup-self-probe.js.map +1 -1
- package/dist/errors/hints.d.ts +0 -44
- package/dist/errors/hints.d.ts.map +1 -1
- package/dist/errors/hints.js +0 -32
- package/dist/errors/hints.js.map +1 -1
- package/dist/errors/mask.d.ts +0 -31
- package/dist/errors/mask.d.ts.map +1 -1
- package/dist/errors/mask.js +0 -32
- package/dist/errors/mask.js.map +1 -1
- package/dist/errors/redact-credentials.d.ts +2 -0
- package/dist/errors/redact-credentials.d.ts.map +1 -0
- package/dist/errors/redact-credentials.js +13 -0
- package/dist/errors/redact-credentials.js.map +1 -0
- package/dist/errors/sanitize.d.ts +0 -29
- package/dist/errors/sanitize.d.ts.map +1 -1
- package/dist/errors/sanitize.js +0 -40
- package/dist/errors/sanitize.js.map +1 -1
- package/dist/errors.d.ts +6 -17
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +16 -21
- package/dist/errors.js.map +1 -1
- package/dist/gateway/advanced-read-tool.d.ts +0 -32
- package/dist/gateway/advanced-read-tool.d.ts.map +1 -1
- package/dist/gateway/advanced-read-tool.js +43 -111
- package/dist/gateway/advanced-read-tool.js.map +1 -1
- package/dist/gateway/advanced-tool/discovery.d.ts +1 -12
- package/dist/gateway/advanced-tool/discovery.d.ts.map +1 -1
- package/dist/gateway/advanced-tool/discovery.js +15 -24
- package/dist/gateway/advanced-tool/discovery.js.map +1 -1
- package/dist/gateway/advanced-tool/domains.d.ts +7 -66
- package/dist/gateway/advanced-tool/domains.d.ts.map +1 -1
- package/dist/gateway/advanced-tool/domains.js +36 -80
- package/dist/gateway/advanced-tool/domains.js.map +1 -1
- package/dist/gateway/advanced-tool/execute.d.ts +0 -25
- package/dist/gateway/advanced-tool/execute.d.ts.map +1 -1
- package/dist/gateway/advanced-tool/execute.js +13 -49
- package/dist/gateway/advanced-tool/execute.js.map +1 -1
- package/dist/gateway/advanced-tool/index.d.ts +1 -32
- package/dist/gateway/advanced-tool/index.d.ts.map +1 -1
- package/dist/gateway/advanced-tool/index.js +1 -35
- package/dist/gateway/advanced-tool/index.js.map +1 -1
- package/dist/gateway/advanced-tool/register.d.ts +0 -14
- package/dist/gateway/advanced-tool/register.d.ts.map +1 -1
- package/dist/gateway/advanced-tool/register.js +22 -58
- package/dist/gateway/advanced-tool/register.js.map +1 -1
- package/dist/gateway/advanced-tool.d.ts +0 -11
- package/dist/gateway/advanced-tool.d.ts.map +1 -1
- package/dist/gateway/advanced-tool.js +0 -11
- package/dist/gateway/advanced-tool.js.map +1 -1
- package/dist/gateway/capturing-server.d.ts +3 -88
- package/dist/gateway/capturing-server.d.ts.map +1 -1
- package/dist/gateway/capturing-server.js +0 -77
- package/dist/gateway/capturing-server.js.map +1 -1
- package/dist/gateway/essentials.d.ts +1 -63
- package/dist/gateway/essentials.d.ts.map +1 -1
- package/dist/gateway/essentials.js +9 -178
- package/dist/gateway/essentials.js.map +1 -1
- package/dist/gateway/test-support.d.ts +0 -28
- package/dist/gateway/test-support.d.ts.map +1 -1
- package/dist/gateway/test-support.js +0 -29
- package/dist/gateway/test-support.js.map +1 -1
- package/dist/health-response.d.ts +2 -0
- package/dist/health-response.d.ts.map +1 -0
- package/dist/health-response.js +7 -0
- package/dist/health-response.js.map +1 -0
- package/dist/icon-data.js +0 -3
- package/dist/icon-data.js.map +1 -1
- package/dist/index.d.ts +7 -23
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +46 -130
- package/dist/index.js.map +1 -1
- package/dist/install-skill.d.ts +0 -44
- package/dist/install-skill.d.ts.map +1 -1
- package/dist/install-skill.js +5 -46
- package/dist/install-skill.js.map +1 -1
- package/dist/net/extra-headers.d.ts +0 -58
- package/dist/net/extra-headers.d.ts.map +1 -1
- package/dist/net/extra-headers.js +0 -67
- package/dist/net/extra-headers.js.map +1 -1
- package/dist/net/internal-host.d.ts +0 -31
- package/dist/net/internal-host.d.ts.map +1 -1
- package/dist/net/internal-host.js +7 -65
- package/dist/net/internal-host.js.map +1 -1
- package/dist/net/proxy-dispatcher.d.ts +0 -37
- package/dist/net/proxy-dispatcher.d.ts.map +1 -1
- package/dist/net/proxy-dispatcher.js +0 -40
- package/dist/net/proxy-dispatcher.js.map +1 -1
- package/dist/net/public-fetch.d.ts +53 -0
- package/dist/net/public-fetch.d.ts.map +1 -0
- package/dist/net/public-fetch.js +143 -0
- package/dist/net/public-fetch.js.map +1 -0
- package/dist/net/public-page-report.d.ts +26 -0
- package/dist/net/public-page-report.d.ts.map +1 -0
- package/dist/net/public-page-report.js +145 -0
- package/dist/net/public-page-report.js.map +1 -0
- package/dist/net/redirect-safe-fetch.d.ts +14 -0
- package/dist/net/redirect-safe-fetch.d.ts.map +1 -0
- package/dist/net/redirect-safe-fetch.js +61 -0
- package/dist/net/redirect-safe-fetch.js.map +1 -0
- package/dist/net/session-recovery-fetch.d.ts +7 -0
- package/dist/net/session-recovery-fetch.d.ts.map +1 -0
- package/dist/net/session-recovery-fetch.js +139 -0
- package/dist/net/session-recovery-fetch.js.map +1 -0
- package/dist/net/site-basic-auth.d.ts +1 -59
- package/dist/net/site-basic-auth.d.ts.map +1 -1
- package/dist/net/site-basic-auth.js +5 -94
- package/dist/net/site-basic-auth.js.map +1 -1
- package/dist/package-version.d.ts +2 -0
- package/dist/package-version.d.ts.map +1 -0
- package/dist/package-version.js +15 -0
- package/dist/package-version.js.map +1 -0
- package/dist/platform/detect.d.ts +0 -54
- package/dist/platform/detect.d.ts.map +1 -1
- package/dist/platform/detect.js +0 -53
- package/dist/platform/detect.js.map +1 -1
- package/dist/platform/index.d.ts +0 -100
- package/dist/platform/index.d.ts.map +1 -1
- package/dist/platform/index.js +0 -106
- package/dist/platform/index.js.map +1 -1
- package/dist/platform/joomla.d.ts +0 -35
- package/dist/platform/joomla.d.ts.map +1 -1
- package/dist/platform/joomla.js +0 -35
- package/dist/platform/joomla.js.map +1 -1
- package/dist/proxy/bridge.d.ts +36 -76
- package/dist/proxy/bridge.d.ts.map +1 -1
- package/dist/proxy/bridge.js +443 -136
- package/dist/proxy/bridge.js.map +1 -1
- package/dist/proxy/confirm-elicitation.d.ts +22 -0
- package/dist/proxy/confirm-elicitation.d.ts.map +1 -0
- package/dist/proxy/confirm-elicitation.js +170 -0
- package/dist/proxy/confirm-elicitation.js.map +1 -0
- package/dist/proxy/confirm-question-contract.d.ts +6 -0
- package/dist/proxy/confirm-question-contract.d.ts.map +1 -0
- package/dist/proxy/confirm-question-contract.js +9 -0
- package/dist/proxy/confirm-question-contract.js.map +1 -0
- package/dist/proxy/confirm-question.d.ts +2 -0
- package/dist/proxy/confirm-question.d.ts.map +1 -0
- package/dist/proxy/confirm-question.js +125 -0
- package/dist/proxy/confirm-question.js.map +1 -0
- package/dist/proxy/instructions.d.ts +4 -0
- package/dist/proxy/instructions.d.ts.map +1 -0
- package/dist/proxy/instructions.js +12 -0
- package/dist/proxy/instructions.js.map +1 -0
- package/dist/proxy/mode.d.ts +14 -9
- package/dist/proxy/mode.d.ts.map +1 -1
- package/dist/proxy/mode.js +58 -34
- package/dist/proxy/mode.js.map +1 -1
- package/dist/proxy/multi-site.d.ts +42 -0
- package/dist/proxy/multi-site.d.ts.map +1 -0
- package/dist/proxy/multi-site.js +134 -0
- package/dist/proxy/multi-site.js.map +1 -0
- package/dist/proxy/request-headers.d.ts +9 -0
- package/dist/proxy/request-headers.d.ts.map +1 -0
- package/dist/proxy/request-headers.js +17 -0
- package/dist/proxy/request-headers.js.map +1 -0
- package/dist/proxy/shadow-tools.d.ts +9 -0
- package/dist/proxy/shadow-tools.d.ts.map +1 -0
- package/dist/proxy/shadow-tools.js +42 -0
- package/dist/proxy/shadow-tools.js.map +1 -0
- package/dist/proxy/tools-list-cap.d.ts +7 -0
- package/dist/proxy/tools-list-cap.d.ts.map +1 -0
- package/dist/proxy/tools-list-cap.js +14 -0
- package/dist/proxy/tools-list-cap.js.map +1 -0
- package/dist/proxy/transport-uncertainty.d.ts +2 -0
- package/dist/proxy/transport-uncertainty.d.ts.map +1 -0
- package/dist/proxy/transport-uncertainty.js +8 -0
- package/dist/proxy/transport-uncertainty.js.map +1 -0
- package/dist/proxy/upstream-error.d.ts +7 -0
- package/dist/proxy/upstream-error.d.ts.map +1 -0
- package/dist/proxy/upstream-error.js +35 -0
- package/dist/proxy/upstream-error.js.map +1 -0
- package/dist/proxy/wire-dialect.d.ts +5 -0
- package/dist/proxy/wire-dialect.d.ts.map +1 -0
- package/dist/proxy/wire-dialect.js +33 -0
- package/dist/proxy/wire-dialect.js.map +1 -0
- package/dist/server.d.ts +14 -82
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +107 -203
- package/dist/server.js.map +1 -1
- package/dist/setup/banner-color.d.ts +13 -0
- package/dist/setup/banner-color.d.ts.map +1 -0
- package/dist/setup/banner-color.js +93 -0
- package/dist/setup/banner-color.js.map +1 -0
- package/dist/setup/banner.d.ts +22 -0
- package/dist/setup/banner.d.ts.map +1 -0
- package/dist/setup/banner.js +119 -0
- package/dist/setup/banner.js.map +1 -0
- package/dist/setup/ca-recovery.d.ts +20 -0
- package/dist/setup/ca-recovery.d.ts.map +1 -0
- package/dist/setup/ca-recovery.js +92 -0
- package/dist/setup/ca-recovery.js.map +1 -0
- package/dist/setup/closing.d.ts +15 -0
- package/dist/setup/closing.d.ts.map +1 -0
- package/dist/setup/closing.js +43 -0
- package/dist/setup/closing.js.map +1 -0
- package/dist/setup/corporate-ca.d.ts +16 -0
- package/dist/setup/corporate-ca.d.ts.map +1 -0
- package/dist/setup/corporate-ca.js +32 -0
- package/dist/setup/corporate-ca.js.map +1 -0
- package/dist/setup/host-platform.d.ts +8 -0
- package/dist/setup/host-platform.d.ts.map +1 -0
- package/dist/setup/host-platform.js +21 -0
- package/dist/setup/host-platform.js.map +1 -0
- package/dist/setup/install-configs.d.ts +18 -0
- package/dist/setup/install-configs.d.ts.map +1 -0
- package/dist/setup/install-configs.js +70 -0
- package/dist/setup/install-configs.js.map +1 -0
- package/dist/setup/multi-site-loop.d.ts +14 -0
- package/dist/setup/multi-site-loop.d.ts.map +1 -0
- package/dist/setup/multi-site-loop.js +20 -0
- package/dist/setup/multi-site-loop.js.map +1 -0
- package/dist/setup/phases.d.ts +18 -0
- package/dist/setup/phases.d.ts.map +1 -0
- package/dist/setup/phases.js +55 -0
- package/dist/setup/phases.js.map +1 -0
- package/dist/setup/registry-remedy.d.ts +12 -0
- package/dist/setup/registry-remedy.d.ts.map +1 -0
- package/dist/setup/registry-remedy.js +37 -0
- package/dist/setup/registry-remedy.js.map +1 -0
- package/dist/setup/resume.d.ts +28 -0
- package/dist/setup/resume.d.ts.map +1 -0
- package/dist/setup/resume.js +99 -0
- package/dist/setup/resume.js.map +1 -0
- package/dist/setup-ca-env.d.ts +0 -30
- package/dist/setup-ca-env.d.ts.map +1 -1
- package/dist/setup-ca-env.js +0 -28
- package/dist/setup-ca-env.js.map +1 -1
- package/dist/setup-ca-reprobe.d.ts +0 -25
- package/dist/setup-ca-reprobe.d.ts.map +1 -1
- package/dist/setup-ca-reprobe.js +0 -34
- package/dist/setup-ca-reprobe.js.map +1 -1
- package/dist/setup-cli-confirm.d.ts +0 -34
- package/dist/setup-cli-confirm.d.ts.map +1 -1
- package/dist/setup-cli-confirm.js +0 -36
- package/dist/setup-cli-confirm.js.map +1 -1
- package/dist/setup-cli.d.ts +6 -167
- package/dist/setup-cli.d.ts.map +1 -1
- package/dist/setup-cli.js +161 -173
- package/dist/setup-cli.js.map +1 -1
- package/dist/setup-npx-spec.d.ts +0 -36
- package/dist/setup-npx-spec.d.ts.map +1 -1
- package/dist/setup-npx-spec.js +0 -38
- package/dist/setup-npx-spec.js.map +1 -1
- package/dist/setup-prompts.d.ts +5 -70
- package/dist/setup-prompts.d.ts.map +1 -1
- package/dist/setup-prompts.js +67 -107
- package/dist/setup-prompts.js.map +1 -1
- package/dist/setup-token.d.ts +0 -34
- package/dist/setup-token.d.ts.map +1 -1
- package/dist/setup-token.js +0 -40
- package/dist/setup-token.js.map +1 -1
- package/dist/setup-wizard-defaults.d.ts +0 -36
- package/dist/setup-wizard-defaults.d.ts.map +1 -1
- package/dist/setup-wizard-defaults.js +0 -75
- package/dist/setup-wizard-defaults.js.map +1 -1
- package/dist/setup-wizard-handshake.d.ts +1 -19
- package/dist/setup-wizard-handshake.d.ts.map +1 -1
- package/dist/setup-wizard-handshake.js +8 -45
- package/dist/setup-wizard-handshake.js.map +1 -1
- package/dist/setup-wizard-types.d.ts +16 -209
- package/dist/setup-wizard-types.d.ts.map +1 -1
- package/dist/setup-wizard-types.js +0 -9
- package/dist/setup-wizard-types.js.map +1 -1
- package/dist/setup-wizard.d.ts +0 -28
- package/dist/setup-wizard.d.ts.map +1 -1
- package/dist/setup-wizard.js +167 -412
- package/dist/setup-wizard.js.map +1 -1
- package/dist/setup.d.ts +0 -15
- package/dist/setup.d.ts.map +1 -1
- package/dist/setup.js +0 -15
- package/dist/setup.js.map +1 -1
- package/dist/sites/bootstrap.d.ts +0 -38
- package/dist/sites/bootstrap.d.ts.map +1 -1
- package/dist/sites/bootstrap.js +0 -44
- package/dist/sites/bootstrap.js.map +1 -1
- package/dist/sites/cli/add-site.d.ts +0 -76
- package/dist/sites/cli/add-site.d.ts.map +1 -1
- package/dist/sites/cli/add-site.js +0 -71
- package/dist/sites/cli/add-site.js.map +1 -1
- package/dist/sites/cli/list-sites.d.ts +0 -31
- package/dist/sites/cli/list-sites.d.ts.map +1 -1
- package/dist/sites/cli/list-sites.js +0 -45
- package/dist/sites/cli/list-sites.js.map +1 -1
- package/dist/sites/cli/remove-site.d.ts +0 -37
- package/dist/sites/cli/remove-site.d.ts.map +1 -1
- package/dist/sites/cli/remove-site.js +0 -37
- package/dist/sites/cli/remove-site.js.map +1 -1
- package/dist/sites/cli/set-default.d.ts +0 -25
- package/dist/sites/cli/set-default.d.ts.map +1 -1
- package/dist/sites/cli/set-default.js +0 -22
- package/dist/sites/cli/set-default.js.map +1 -1
- package/dist/sites/cli/test-site.d.ts +0 -44
- package/dist/sites/cli/test-site.d.ts.map +1 -1
- package/dist/sites/cli/test-site.js +0 -39
- package/dist/sites/cli/test-site.js.map +1 -1
- package/dist/sites/client-pool.d.ts +11 -164
- package/dist/sites/client-pool.d.ts.map +1 -1
- package/dist/sites/client-pool.js +73 -194
- package/dist/sites/client-pool.js.map +1 -1
- package/dist/sites/config-problem.d.ts +2 -0
- package/dist/sites/config-problem.d.ts.map +1 -0
- package/dist/sites/config-problem.js +13 -0
- package/dist/sites/config-problem.js.map +1 -0
- package/dist/sites/env-bridge.d.ts +0 -69
- package/dist/sites/env-bridge.d.ts.map +1 -1
- package/dist/sites/env-bridge.js +2 -71
- package/dist/sites/env-bridge.js.map +1 -1
- package/dist/sites/op-inject.d.ts +23 -0
- package/dist/sites/op-inject.d.ts.map +1 -0
- package/dist/sites/op-inject.js +131 -0
- package/dist/sites/op-inject.js.map +1 -0
- package/dist/sites/paths.d.ts +0 -19
- package/dist/sites/paths.d.ts.map +1 -1
- package/dist/sites/paths.js +0 -19
- package/dist/sites/paths.js.map +1 -1
- package/dist/sites/probe.d.ts +1 -47
- package/dist/sites/probe.d.ts.map +1 -1
- package/dist/sites/probe.js +4 -46
- package/dist/sites/probe.js.map +1 -1
- package/dist/sites/registry.d.ts +4 -135
- package/dist/sites/registry.d.ts.map +1 -1
- package/dist/sites/registry.js +4 -98
- package/dist/sites/registry.js.map +1 -1
- package/dist/sites/schema.d.ts +3 -51
- package/dist/sites/schema.d.ts.map +1 -1
- package/dist/sites/schema.js +6 -52
- package/dist/sites/schema.js.map +1 -1
- package/dist/sites/secret-resolver.d.ts +6 -76
- package/dist/sites/secret-resolver.d.ts.map +1 -1
- package/dist/sites/secret-resolver.js +39 -104
- package/dist/sites/secret-resolver.js.map +1 -1
- package/dist/sites/store.d.ts +12 -69
- package/dist/sites/store.d.ts.map +1 -1
- package/dist/sites/store.js +37 -86
- package/dist/sites/store.js.map +1 -1
- package/dist/sites/substituted-registry.d.ts +11 -0
- package/dist/sites/substituted-registry.d.ts.map +1 -0
- package/dist/sites/substituted-registry.js +13 -0
- package/dist/sites/substituted-registry.js.map +1 -0
- package/dist/sites/tools/fetch-public-url.d.ts +4 -0
- package/dist/sites/tools/fetch-public-url.d.ts.map +1 -0
- package/dist/sites/tools/fetch-public-url.js +231 -0
- package/dist/sites/tools/fetch-public-url.js.map +1 -0
- package/dist/sites/tools/index.d.ts +2 -26
- package/dist/sites/tools/index.d.ts.map +1 -1
- package/dist/sites/tools/index.js +5 -28
- package/dist/sites/tools/index.js.map +1 -1
- package/dist/sites/tools/sites-list.d.ts +3 -47
- package/dist/sites/tools/sites-list.d.ts.map +1 -1
- package/dist/sites/tools/sites-list.js +65 -79
- package/dist/sites/tools/sites-list.js.map +1 -1
- package/dist/sites/tools/sites-overview.d.ts +4 -0
- package/dist/sites/tools/sites-overview.d.ts.map +1 -0
- package/dist/sites/tools/sites-overview.js +209 -0
- package/dist/sites/tools/sites-overview.js.map +1 -0
- package/dist/sites/tools/sites-test.d.ts +2 -45
- package/dist/sites/tools/sites-test.d.ts.map +1 -1
- package/dist/sites/tools/sites-test.js +0 -55
- package/dist/sites/tools/sites-test.js.map +1 -1
- package/dist/sites/tools/use-site.d.ts +2 -45
- package/dist/sites/tools/use-site.d.ts.map +1 -1
- package/dist/sites/tools/use-site.js +29 -78
- package/dist/sites/tools/use-site.js.map +1 -1
- package/dist/sites/unknown-name-result.d.ts +10 -0
- package/dist/sites/unknown-name-result.d.ts.map +1 -0
- package/dist/sites/unknown-name-result.js +13 -0
- package/dist/sites/unknown-name-result.js.map +1 -0
- package/dist/skill-instructions.d.ts +7 -0
- package/dist/skill-instructions.d.ts.map +1 -0
- package/dist/skill-instructions.js +84 -0
- package/dist/skill-instructions.js.map +1 -0
- package/dist/skill-loader.d.ts +0 -102
- package/dist/skill-loader.d.ts.map +1 -1
- package/dist/skill-loader.js +4 -142
- package/dist/skill-loader.js.map +1 -1
- package/dist/skill-manifest.d.ts +0 -20
- package/dist/skill-manifest.d.ts.map +1 -1
- package/dist/skill-manifest.js +1 -21
- package/dist/skill-manifest.js.map +1 -1
- package/dist/skill-topics.d.ts +19 -0
- package/dist/skill-topics.d.ts.map +1 -0
- package/dist/skill-topics.js +181 -0
- package/dist/skill-topics.js.map +1 -0
- package/dist/tools/active-site.d.ts +16 -0
- package/dist/tools/active-site.d.ts.map +1 -0
- package/dist/tools/active-site.js +55 -0
- package/dist/tools/active-site.js.map +1 -0
- package/dist/tools/bind-guidance.d.ts +2 -72
- package/dist/tools/bind-guidance.d.ts.map +1 -1
- package/dist/tools/bind-guidance.js +2 -72
- package/dist/tools/bind-guidance.js.map +1 -1
- package/dist/tools/budgeted-table.d.ts +14 -19
- package/dist/tools/budgeted-table.d.ts.map +1 -1
- package/dist/tools/budgeted-table.js +171 -105
- package/dist/tools/budgeted-table.js.map +1 -1
- package/dist/tools/elements/bind-output-schema.d.ts +69 -0
- package/dist/tools/elements/bind-output-schema.d.ts.map +1 -0
- package/dist/tools/elements/bind-output-schema.js +64 -0
- package/dist/tools/elements/bind-output-schema.js.map +1 -0
- package/dist/tools/elements/builders.d.ts +1 -22
- package/dist/tools/elements/builders.d.ts.map +1 -1
- package/dist/tools/elements/builders.js +147 -133
- package/dist/tools/elements/builders.js.map +1 -1
- package/dist/tools/elements/index.d.ts +0 -26
- package/dist/tools/elements/index.d.ts.map +1 -1
- package/dist/tools/elements/index.js +0 -25
- package/dist/tools/elements/index.js.map +1 -1
- package/dist/tools/elements/read-output-schemas.d.ts +121 -0
- package/dist/tools/elements/read-output-schemas.d.ts.map +1 -0
- package/dist/tools/elements/read-output-schemas.js +225 -0
- package/dist/tools/elements/read-output-schemas.js.map +1 -0
- package/dist/tools/elements/write-output-schemas.d.ts +185 -0
- package/dist/tools/elements/write-output-schemas.d.ts.map +1 -0
- package/dist/tools/elements/write-output-schemas.js +98 -0
- package/dist/tools/elements/write-output-schemas.js.map +1 -0
- package/dist/tools/elements.d.ts +0 -11
- package/dist/tools/elements.d.ts.map +1 -1
- package/dist/tools/elements.js +0 -11
- package/dist/tools/elements.js.map +1 -1
- package/dist/tools/format/health-format.d.ts +26 -43
- package/dist/tools/format/health-format.d.ts.map +1 -1
- package/dist/tools/format/health-format.js +28 -60
- package/dist/tools/format/health-format.js.map +1 -1
- package/dist/tools/format/inspection-format.d.ts +2 -54
- package/dist/tools/format/inspection-format.d.ts.map +1 -1
- package/dist/tools/format/inspection-format.js +33 -119
- package/dist/tools/format/inspection-format.js.map +1 -1
- package/dist/tools/format/pages-format.d.ts +32 -69
- package/dist/tools/format/pages-format.d.ts.map +1 -1
- package/dist/tools/format/pages-format.js +114 -139
- package/dist/tools/format/pages-format.js.map +1 -1
- package/dist/tools/format/sources-format.d.ts +5 -39
- package/dist/tools/format/sources-format.d.ts.map +1 -1
- package/dist/tools/format/sources-format.js +57 -87
- package/dist/tools/format/sources-format.js.map +1 -1
- package/dist/tools/health-output-schemas.d.ts +82 -0
- package/dist/tools/health-output-schemas.d.ts.map +1 -0
- package/dist/tools/health-output-schemas.js +130 -0
- package/dist/tools/health-output-schemas.js.map +1 -0
- package/dist/tools/health.d.ts +2 -20
- package/dist/tools/health.d.ts.map +1 -1
- package/dist/tools/health.js +46 -232
- package/dist/tools/health.js.map +1 -1
- package/dist/tools/index.d.ts +1 -26
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +12 -39
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/inspection.d.ts +4 -34
- package/dist/tools/inspection.d.ts.map +1 -1
- package/dist/tools/inspection.js +164 -536
- package/dist/tools/inspection.js.map +1 -1
- package/dist/tools/library.d.ts +115 -127
- package/dist/tools/library.d.ts.map +1 -1
- package/dist/tools/library.js +706 -454
- package/dist/tools/library.js.map +1 -1
- package/dist/tools/local-content/builders.d.ts +1 -17
- package/dist/tools/local-content/builders.d.ts.map +1 -1
- package/dist/tools/local-content/builders.js +103 -46
- package/dist/tools/local-content/builders.js.map +1 -1
- package/dist/tools/local-content/index.d.ts +0 -15
- package/dist/tools/local-content/index.d.ts.map +1 -1
- package/dist/tools/local-content/index.js +0 -14
- package/dist/tools/local-content/index.js.map +1 -1
- package/dist/tools/local-content/schemas.d.ts +31 -47
- package/dist/tools/local-content/schemas.d.ts.map +1 -1
- package/dist/tools/local-content/schemas.js +33 -62
- package/dist/tools/local-content/schemas.js.map +1 -1
- package/dist/tools/modules/builders.d.ts +4 -0
- package/dist/tools/modules/builders.d.ts.map +1 -0
- package/dist/tools/modules/builders.js +58 -0
- package/dist/tools/modules/builders.js.map +1 -0
- package/dist/tools/modules/index.d.ts +2 -0
- package/dist/tools/modules/index.d.ts.map +1 -0
- package/dist/tools/modules/index.js +2 -0
- package/dist/tools/modules/index.js.map +1 -0
- package/dist/tools/modules/module-id-schema.d.ts +4 -0
- package/dist/tools/modules/module-id-schema.d.ts.map +1 -0
- package/dist/tools/modules/module-id-schema.js +14 -0
- package/dist/tools/modules/module-id-schema.js.map +1 -0
- package/dist/tools/modules/module-type-fields.d.ts +10 -0
- package/dist/tools/modules/module-type-fields.d.ts.map +1 -0
- package/dist/tools/modules/module-type-fields.js +34 -0
- package/dist/tools/modules/module-type-fields.js.map +1 -0
- package/dist/tools/modules/modules-create.d.ts +59 -0
- package/dist/tools/modules/modules-create.d.ts.map +1 -0
- package/dist/tools/modules/modules-create.js +154 -0
- package/dist/tools/modules/modules-create.js.map +1 -0
- package/dist/tools/modules/modules-delete.d.ts +51 -0
- package/dist/tools/modules/modules-delete.d.ts.map +1 -0
- package/dist/tools/modules/modules-delete.js +180 -0
- package/dist/tools/modules/modules-delete.js.map +1 -0
- package/dist/tools/modules/modules-update.d.ts +43 -0
- package/dist/tools/modules/modules-update.d.ts.map +1 -0
- package/dist/tools/modules/modules-update.js +177 -0
- package/dist/tools/modules/modules-update.js.map +1 -0
- package/dist/tools/modules/placement-hints.d.ts +5 -0
- package/dist/tools/modules/placement-hints.d.ts.map +1 -0
- package/dist/tools/modules/placement-hints.js +90 -0
- package/dist/tools/modules/placement-hints.js.map +1 -0
- package/dist/tools/modules/placement-ways.d.ts +13 -0
- package/dist/tools/modules/placement-ways.d.ts.map +1 -0
- package/dist/tools/modules/placement-ways.js +61 -0
- package/dist/tools/modules/placement-ways.js.map +1 -0
- package/dist/tools/multi-items/builders.d.ts +1 -21
- package/dist/tools/multi-items/builders.d.ts.map +1 -1
- package/dist/tools/multi-items/builders.js +22 -65
- package/dist/tools/multi-items/builders.js.map +1 -1
- package/dist/tools/multi-items/index.d.ts +0 -15
- package/dist/tools/multi-items/index.d.ts.map +1 -1
- package/dist/tools/multi-items/index.js +0 -15
- package/dist/tools/multi-items/index.js.map +1 -1
- package/dist/tools/multi-items/item-container-map.d.ts +0 -35
- package/dist/tools/multi-items/item-container-map.d.ts.map +1 -1
- package/dist/tools/multi-items/item-container-map.js +0 -35
- package/dist/tools/multi-items/item-container-map.js.map +1 -1
- package/dist/tools/multi-items/output-schemas.d.ts +101 -0
- package/dist/tools/multi-items/output-schemas.d.ts.map +1 -0
- package/dist/tools/multi-items/output-schemas.js +74 -0
- package/dist/tools/multi-items/output-schemas.js.map +1 -0
- package/dist/tools/navigation/builders.d.ts +1 -16
- package/dist/tools/navigation/builders.d.ts.map +1 -1
- package/dist/tools/navigation/builders.js +5 -27
- package/dist/tools/navigation/builders.js.map +1 -1
- package/dist/tools/navigation/index.d.ts +0 -13
- package/dist/tools/navigation/index.d.ts.map +1 -1
- package/dist/tools/navigation/index.js +0 -12
- package/dist/tools/navigation/index.js.map +1 -1
- package/dist/tools/navigation/schemas.d.ts +0 -30
- package/dist/tools/navigation/schemas.d.ts.map +1 -1
- package/dist/tools/navigation/schemas.js +0 -30
- package/dist/tools/navigation/schemas.js.map +1 -1
- package/dist/tools/output-schema-metadata.d.ts +5 -0
- package/dist/tools/output-schema-metadata.d.ts.map +1 -0
- package/dist/tools/output-schema-metadata.js +83 -0
- package/dist/tools/output-schema-metadata.js.map +1 -0
- package/dist/tools/pages/builders.d.ts +1 -41
- package/dist/tools/pages/builders.d.ts.map +1 -1
- package/dist/tools/pages/builders.js +320 -405
- package/dist/tools/pages/builders.js.map +1 -1
- package/dist/tools/pages/header-transparency.d.ts +2 -32
- package/dist/tools/pages/header-transparency.d.ts.map +1 -1
- package/dist/tools/pages/header-transparency.js +9 -43
- package/dist/tools/pages/header-transparency.js.map +1 -1
- package/dist/tools/pages/index.d.ts +1 -19
- package/dist/tools/pages/index.d.ts.map +1 -1
- package/dist/tools/pages/index.js +1 -19
- package/dist/tools/pages/index.js.map +1 -1
- package/dist/tools/pages/schemas.d.ts +323 -241
- package/dist/tools/pages/schemas.d.ts.map +1 -1
- package/dist/tools/pages/schemas.js +514 -549
- package/dist/tools/pages/schemas.js.map +1 -1
- package/dist/tools/pages/write-output-schemas.d.ts +139 -0
- package/dist/tools/pages/write-output-schemas.d.ts.map +1 -0
- package/dist/tools/pages/write-output-schemas.js +138 -0
- package/dist/tools/pages/write-output-schemas.js.map +1 -0
- package/dist/tools/pages.d.ts +0 -11
- package/dist/tools/pages.d.ts.map +1 -1
- package/dist/tools/pages.js +0 -11
- package/dist/tools/pages.js.map +1 -1
- package/dist/tools/pool-resolve-helper.d.ts +0 -52
- package/dist/tools/pool-resolve-helper.d.ts.map +1 -1
- package/dist/tools/pool-resolve-helper.js +29 -104
- package/dist/tools/pool-resolve-helper.js.map +1 -1
- package/dist/tools/progress-phases.d.ts +0 -42
- package/dist/tools/progress-phases.d.ts.map +1 -1
- package/dist/tools/progress-phases.js +0 -44
- package/dist/tools/progress-phases.js.map +1 -1
- package/dist/tools/response-budget.d.ts +0 -69
- package/dist/tools/response-budget.d.ts.map +1 -1
- package/dist/tools/response-budget.js +0 -127
- package/dist/tools/response-budget.js.map +1 -1
- package/dist/tools/shared-schemas.d.ts +11 -65
- package/dist/tools/shared-schemas.d.ts.map +1 -1
- package/dist/tools/shared-schemas.js +40 -123
- package/dist/tools/shared-schemas.js.map +1 -1
- package/dist/tools/skill/builders.d.ts +3 -0
- package/dist/tools/skill/builders.d.ts.map +1 -0
- package/dist/tools/skill/builders.js +81 -0
- package/dist/tools/skill/builders.js.map +1 -0
- package/dist/tools/sources/builders.d.ts +1 -11
- package/dist/tools/sources/builders.d.ts.map +1 -1
- package/dist/tools/sources/builders.js +194 -170
- package/dist/tools/sources/builders.js.map +1 -1
- package/dist/tools/sources/index.d.ts +0 -17
- package/dist/tools/sources/index.d.ts.map +1 -1
- package/dist/tools/sources/index.js +0 -16
- package/dist/tools/sources/index.js.map +1 -1
- package/dist/tools/sources/read-output-schemas.d.ts +101 -0
- package/dist/tools/sources/read-output-schemas.d.ts.map +1 -0
- package/dist/tools/sources/read-output-schemas.js +105 -0
- package/dist/tools/sources/read-output-schemas.js.map +1 -0
- package/dist/tools/sources/source-name-argument.d.ts +17 -0
- package/dist/tools/sources/source-name-argument.d.ts.map +1 -0
- package/dist/tools/sources/source-name-argument.js +64 -0
- package/dist/tools/sources/source-name-argument.js.map +1 -0
- package/dist/tools/sources/write-output-schemas.d.ts +100 -0
- package/dist/tools/sources/write-output-schemas.d.ts.map +1 -0
- package/dist/tools/sources/write-output-schemas.js +61 -0
- package/dist/tools/sources/write-output-schemas.js.map +1 -0
- package/dist/tools/sources.d.ts +0 -12
- package/dist/tools/sources.d.ts.map +1 -1
- package/dist/tools/sources.js +0 -12
- package/dist/tools/sources.js.map +1 -1
- package/dist/tools/sparse-fields.d.ts +16 -232
- package/dist/tools/sparse-fields.d.ts.map +1 -1
- package/dist/tools/sparse-fields.js +178 -242
- package/dist/tools/sparse-fields.js.map +1 -1
- package/dist/tools/strict-input.d.ts +5 -0
- package/dist/tools/strict-input.d.ts.map +1 -0
- package/dist/tools/strict-input.js +55 -0
- package/dist/tools/strict-input.js.map +1 -0
- package/dist/tools/sublayout/builders.d.ts +1 -21
- package/dist/tools/sublayout/builders.d.ts.map +1 -1
- package/dist/tools/sublayout/builders.js +10 -39
- package/dist/tools/sublayout/builders.js.map +1 -1
- package/dist/tools/sublayout/index.d.ts +1 -11
- package/dist/tools/sublayout/index.d.ts.map +1 -1
- package/dist/tools/sublayout/index.js +1 -11
- package/dist/tools/sublayout/index.js.map +1 -1
- package/dist/tools/sublayout/output-schemas.d.ts +57 -0
- package/dist/tools/sublayout/output-schemas.d.ts.map +1 -0
- package/dist/tools/sublayout/output-schemas.js +51 -0
- package/dist/tools/sublayout/output-schemas.js.map +1 -0
- package/dist/tools/tool-builder/annotations.d.ts +1 -49
- package/dist/tools/tool-builder/annotations.d.ts.map +1 -1
- package/dist/tools/tool-builder/annotations.js +9 -49
- package/dist/tools/tool-builder/annotations.js.map +1 -1
- package/dist/tools/tool-builder/confirm-preview.d.ts +24 -0
- package/dist/tools/tool-builder/confirm-preview.d.ts.map +1 -0
- package/dist/tools/tool-builder/confirm-preview.js +37 -0
- package/dist/tools/tool-builder/confirm-preview.js.map +1 -0
- package/dist/tools/tool-builder/define.d.ts +6 -26
- package/dist/tools/tool-builder/define.d.ts.map +1 -1
- package/dist/tools/tool-builder/define.js +0 -25
- package/dist/tools/tool-builder/define.js.map +1 -1
- package/dist/tools/tool-builder/index.d.ts +3 -26
- package/dist/tools/tool-builder/index.d.ts.map +1 -1
- package/dist/tools/tool-builder/index.js +2 -25
- package/dist/tools/tool-builder/index.js.map +1 -1
- package/dist/tools/tool-builder/results.d.ts +4 -124
- package/dist/tools/tool-builder/results.d.ts.map +1 -1
- package/dist/tools/tool-builder/results.js +258 -263
- package/dist/tools/tool-builder/results.js.map +1 -1
- package/dist/tools/tool-builder/types.d.ts +5 -59
- package/dist/tools/tool-builder/types.d.ts.map +1 -1
- package/dist/tools/tool-builder/types.js +0 -7
- package/dist/tools/tool-builder/types.js.map +1 -1
- package/dist/tools/tool-builder.d.ts +0 -14
- package/dist/tools/tool-builder.d.ts.map +1 -1
- package/dist/tools/tool-builder.js +0 -14
- package/dist/tools/tool-builder.js.map +1 -1
- package/dist/uninstall-skill.d.ts +0 -41
- package/dist/uninstall-skill.d.ts.map +1 -1
- package/dist/uninstall-skill.js +0 -49
- package/dist/uninstall-skill.js.map +1 -1
- package/dist/uninstall.d.ts +0 -41
- package/dist/uninstall.d.ts.map +1 -1
- package/dist/uninstall.js +1 -29
- package/dist/uninstall.js.map +1 -1
- package/dist/update/update-check.d.ts +0 -26
- package/dist/update/update-check.d.ts.map +1 -1
- package/dist/update/update-check.js +0 -25
- package/dist/update/update-check.js.map +1 -1
- package/manifest.json +4 -5
- package/package.json +4 -4
- package/skills/yt-builder-mcp/SKILL.md +1857 -400
- package/dist/tools/elements/handlers-write.d.ts +0 -89
- package/dist/tools/elements/handlers-write.d.ts.map +0 -1
- package/dist/tools/elements/handlers-write.js +0 -797
- package/dist/tools/elements/handlers-write.js.map +0 -1
- package/dist/tools/elements/handlers.d.ts +0 -130
- package/dist/tools/elements/handlers.d.ts.map +0 -1
- package/dist/tools/elements/handlers.js +0 -581
- package/dist/tools/elements/handlers.js.map +0 -1
- package/dist/tools/elements/layout-hierarchy-rules.d.ts +0 -62
- package/dist/tools/elements/layout-hierarchy-rules.d.ts.map +0 -1
- package/dist/tools/elements/layout-hierarchy-rules.js +0 -154
- package/dist/tools/elements/layout-hierarchy-rules.js.map +0 -1
- package/dist/tools/elements/schema-validation.d.ts +0 -218
- package/dist/tools/elements/schema-validation.d.ts.map +0 -1
- package/dist/tools/elements/schema-validation.js +0 -685
- package/dist/tools/elements/schema-validation.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 -75
- package/dist/tools/format/elements-format.d.ts.map +0 -1
- package/dist/tools/format/elements-format.js +0 -368
- package/dist/tools/format/elements-format.js.map +0 -1
- package/dist/tools/format/source-schema-format.d.ts +0 -74
- package/dist/tools/format/source-schema-format.d.ts.map +0 -1
- package/dist/tools/format/source-schema-format.js +0 -208
- package/dist/tools/format/source-schema-format.js.map +0 -1
- package/dist/tools/layout-flatten.d.ts +0 -84
- package/dist/tools/layout-flatten.d.ts.map +0 -1
- package/dist/tools/layout-flatten.js +0 -129
- package/dist/tools/layout-flatten.js.map +0 -1
- package/dist/tools/local-content/handlers.d.ts +0 -56
- package/dist/tools/local-content/handlers.d.ts.map +0 -1
- package/dist/tools/local-content/handlers.js +0 -320
- package/dist/tools/local-content/handlers.js.map +0 -1
- package/dist/tools/multi-items/clean-implode-handler.d.ts +0 -37
- package/dist/tools/multi-items/clean-implode-handler.d.ts.map +0 -1
- package/dist/tools/multi-items/clean-implode-handler.js +0 -65
- package/dist/tools/multi-items/clean-implode-handler.js.map +0 -1
- package/dist/tools/multi-items/format/inspection-format.d.ts +0 -41
- package/dist/tools/multi-items/format/inspection-format.d.ts.map +0 -1
- package/dist/tools/multi-items/format/inspection-format.js +0 -64
- package/dist/tools/multi-items/format/inspection-format.js.map +0 -1
- package/dist/tools/multi-items/inspect-handler.d.ts +0 -97
- package/dist/tools/multi-items/inspect-handler.d.ts.map +0 -1
- package/dist/tools/multi-items/inspect-handler.js +0 -323
- package/dist/tools/multi-items/inspect-handler.js.map +0 -1
- package/dist/tools/multi-items/inspection-cache.d.ts +0 -85
- package/dist/tools/multi-items/inspection-cache.d.ts.map +0 -1
- package/dist/tools/multi-items/inspection-cache.js +0 -126
- package/dist/tools/multi-items/inspection-cache.js.map +0 -1
- package/dist/tools/navigation/handlers.d.ts +0 -30
- package/dist/tools/navigation/handlers.d.ts.map +0 -1
- package/dist/tools/navigation/handlers.js +0 -41
- package/dist/tools/navigation/handlers.js.map +0 -1
- package/dist/tools/pages/handlers-audit.d.ts +0 -140
- package/dist/tools/pages/handlers-audit.d.ts.map +0 -1
- package/dist/tools/pages/handlers-audit.js +0 -714
- package/dist/tools/pages/handlers-audit.js.map +0 -1
- package/dist/tools/pages/handlers-read.d.ts +0 -133
- package/dist/tools/pages/handlers-read.d.ts.map +0 -1
- package/dist/tools/pages/handlers-read.js +0 -1061
- package/dist/tools/pages/handlers-read.js.map +0 -1
- package/dist/tools/pages/handlers-write.d.ts +0 -212
- package/dist/tools/pages/handlers-write.d.ts.map +0 -1
- package/dist/tools/pages/handlers-write.js +0 -419
- package/dist/tools/pages/handlers-write.js.map +0 -1
- package/dist/tools/pages/target.d.ts +0 -162
- package/dist/tools/pages/target.d.ts.map +0 -1
- package/dist/tools/pages/target.js +0 -239
- package/dist/tools/pages/target.js.map +0 -1
- package/dist/tools/sources/handlers-bind.d.ts +0 -148
- package/dist/tools/sources/handlers-bind.d.ts.map +0 -1
- package/dist/tools/sources/handlers-bind.js +0 -657
- package/dist/tools/sources/handlers-bind.js.map +0 -1
- package/dist/tools/sources/handlers.d.ts +0 -116
- package/dist/tools/sources/handlers.d.ts.map +0 -1
- package/dist/tools/sources/handlers.js +0 -289
- package/dist/tools/sources/handlers.js.map +0 -1
- package/dist/tools/sublayout/inspect-sublayout-handler.d.ts +0 -95
- package/dist/tools/sublayout/inspect-sublayout-handler.d.ts.map +0 -1
- package/dist/tools/sublayout/inspect-sublayout-handler.js +0 -181
- package/dist/tools/sublayout/inspect-sublayout-handler.js.map +0 -1
|
@@ -1,49 +1,13 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* W2 — Secret-Resolver: produce a bearer-token for a `SiteEntryT` at call
|
|
3
|
-
* time, supporting either a plain in-file token (`bearer`) or a 1Password
|
|
4
|
-
* Secret Reference (`bearer_ref`) resolved through the `op` CLI.
|
|
5
|
-
*
|
|
6
|
-
* Design choices (per plan §W2):
|
|
7
|
-
* - **`execFile`, never `exec`/`spawn` with `shell:true`.** `op read <ref>`
|
|
8
|
-
* must run as a direct `execve` with an argv array — no shell, no
|
|
9
|
-
* metacharacter expansion. The W1 schema already enforces
|
|
10
|
-
* {@link OP_REF_REGEX}; this module re-enforces it at the call site as
|
|
11
|
-
* defence-in-depth (a hand-edited sites.json could otherwise sneak a
|
|
12
|
-
* payload past validation).
|
|
13
|
-
* - **5-second hard timeout.** `op` is interactive in some failure modes
|
|
14
|
-
* (Touch-ID, biometric retry). We cap with a real timer + `kill()` to
|
|
15
|
-
* avoid agent-loop wedging on a stalled subprocess.
|
|
16
|
-
* - **Pluggable for testing.** The OpSecretResolver accepts an injected
|
|
17
|
-
* `execFile` callback so tests can mock subprocess invocation without
|
|
18
|
-
* monkey-patching the global `node:child_process` module.
|
|
19
|
-
*
|
|
20
|
-
* @license MIT
|
|
21
|
-
*/
|
|
22
1
|
import { execFile as nodeExecFile } from 'node:child_process';
|
|
23
2
|
import { existsSync } from 'node:fs';
|
|
24
3
|
import { OP_REF_REGEX } from './schema.js';
|
|
25
|
-
|
|
26
|
-
const OP_TIMEOUT_MS =
|
|
27
|
-
/**
|
|
28
|
-
* Common absolute install locations for the 1Password CLI. GUI-spawned
|
|
29
|
-
* MCP hosts (Claude Desktop, etc.) launch the server subprocess with a
|
|
30
|
-
* minimal PATH that usually omits `/opt/homebrew/bin` and `/usr/local/bin`,
|
|
31
|
-
* so a bare `op` resolves to ENOENT even when the user has `op` working in
|
|
32
|
-
* their shell. We probe these absolute paths before falling back to PATH.
|
|
33
|
-
*
|
|
34
|
-
* Order: Homebrew (Apple Silicon) → Homebrew/manual (Intel + /usr/local) →
|
|
35
|
-
* Linux package managers → PATH.
|
|
36
|
-
*/
|
|
4
|
+
import { redactCredentials } from '../errors/redact-credentials.js';
|
|
5
|
+
export const OP_TIMEOUT_MS = 60_000;
|
|
37
6
|
const OP_BINARY_CANDIDATES = [
|
|
38
7
|
'/opt/homebrew/bin/op',
|
|
39
8
|
'/usr/local/bin/op',
|
|
40
9
|
'/usr/bin/op',
|
|
41
10
|
];
|
|
42
|
-
/**
|
|
43
|
-
* Resolve the `op` binary to an absolute path so it works under a
|
|
44
|
-
* stripped-down GUI PATH. Precedence: explicit `YTB_MCP_OP_BINARY` env
|
|
45
|
-
* override → first existing well-known absolute path → bare `op` (PATH).
|
|
46
|
-
*/
|
|
47
11
|
export function resolveOpBinary(env = process.env) {
|
|
48
12
|
const override = (env.YTB_MCP_OP_BINARY ?? '').trim();
|
|
49
13
|
if (override.length > 0)
|
|
@@ -54,17 +18,17 @@ export function resolveOpBinary(env = process.env) {
|
|
|
54
18
|
return candidate;
|
|
55
19
|
}
|
|
56
20
|
catch {
|
|
57
|
-
// ignore stat errors and keep probing
|
|
58
21
|
}
|
|
59
22
|
}
|
|
60
23
|
return 'op';
|
|
61
24
|
}
|
|
62
|
-
|
|
25
|
+
export function hasServiceAccountToken(env = process.env) {
|
|
26
|
+
return (env.OP_SERVICE_ACCOUNT_TOKEN ?? '').trim().length > 0;
|
|
27
|
+
}
|
|
63
28
|
const OP_EXIT_CODE_HINTS = {
|
|
64
29
|
6: 'Not signed in to 1Password CLI. Run `op signin` and retry.',
|
|
65
30
|
1: 'Generic op CLI error — verify the secret reference exists and the vault is accessible.',
|
|
66
31
|
};
|
|
67
|
-
/** Domain-tagged error so callers (auth, client) can branch on `code`. */
|
|
68
32
|
export class SecretResolverError extends Error {
|
|
69
33
|
code;
|
|
70
34
|
constructor(code, message) {
|
|
@@ -73,19 +37,11 @@ export class SecretResolverError extends Error {
|
|
|
73
37
|
this.name = 'SecretResolverError';
|
|
74
38
|
}
|
|
75
39
|
}
|
|
76
|
-
/** Default factory wrapping Node's real `execFile`. Adapter for type-shape. */
|
|
77
40
|
const defaultExecFile = (file, args, options, callback) => {
|
|
78
|
-
// Pass `encoding: 'utf8'` explicitly so stdout/stderr are guaranteed
|
|
79
|
-
// strings, not Buffers. The execFile overload resolution returns `string`
|
|
80
|
-
// for both when `encoding` is set.
|
|
81
41
|
nodeExecFile(file, args, { ...options, encoding: 'utf8' }, (err, stdout, stderr) => {
|
|
82
42
|
callback(err, stdout, stderr);
|
|
83
43
|
});
|
|
84
44
|
};
|
|
85
|
-
/**
|
|
86
|
-
* Plain in-file bearer — used when `site.bearer` is populated. Returns the
|
|
87
|
-
* stored token verbatim, with `source:'plain'`.
|
|
88
|
-
*/
|
|
89
45
|
export class PlainSecretResolver {
|
|
90
46
|
async resolve(site) {
|
|
91
47
|
const token = site.bearer;
|
|
@@ -98,18 +54,19 @@ export class PlainSecretResolver {
|
|
|
98
54
|
};
|
|
99
55
|
}
|
|
100
56
|
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
57
|
+
function buildTimeoutMessage(ref, timeoutMs) {
|
|
58
|
+
if (hasServiceAccountToken()) {
|
|
59
|
+
return (`op read '${ref}' exceeded ${timeoutMs}ms while using `
|
|
60
|
+
+ 'OP_SERVICE_ACCOUNT_TOKEN — a service account never shows a '
|
|
61
|
+
+ 'biometric prompt, so this is not a stalled confirmation. '
|
|
62
|
+
+ 'Check network connectivity to 1Password and that the token '
|
|
63
|
+
+ 'is still valid.');
|
|
64
|
+
}
|
|
65
|
+
return (`op read '${ref}' exceeded ${timeoutMs}ms — is 1Password CLI hung `
|
|
66
|
+
+ 'on a biometric prompt? If no confirmation dialog appeared, '
|
|
67
|
+
+ 'verify the 1Password desktop app is running and its CLI '
|
|
68
|
+
+ 'integration is enabled, or run `op signin`.');
|
|
69
|
+
}
|
|
113
70
|
export class OpSecretResolver {
|
|
114
71
|
opBinary;
|
|
115
72
|
execFile;
|
|
@@ -124,10 +81,6 @@ export class OpSecretResolver {
|
|
|
124
81
|
if (ref === undefined || ref.length === 0) {
|
|
125
82
|
throw new SecretResolverError('OP_REF_MISSING', `Site '${site.site_id}' has no 'bearer_ref' — OpSecretResolver requires one.`);
|
|
126
83
|
}
|
|
127
|
-
// Defence-in-depth: re-validate the ref shape at the call site,
|
|
128
|
-
// BEFORE we hand the string to a subprocess. The W1 schema also
|
|
129
|
-
// enforces this on load/save, but a hand-edited or hot-loaded
|
|
130
|
-
// sites.json could in theory bypass that.
|
|
131
84
|
if (!OP_REF_REGEX.test(ref)) {
|
|
132
85
|
throw new SecretResolverError('OP_REF_INVALID', `Site '${site.site_id}' has an invalid 'bearer_ref' shape — must match op://<vault>/<item>/<field>.`);
|
|
133
86
|
}
|
|
@@ -141,11 +94,6 @@ export class OpSecretResolver {
|
|
|
141
94
|
source: 'op',
|
|
142
95
|
};
|
|
143
96
|
}
|
|
144
|
-
/**
|
|
145
|
-
* Invokes `op read <ref>` with a hard timeout. The promise is wrapped
|
|
146
|
-
* so a stalled subprocess (e.g. waiting on biometric prompt) cannot
|
|
147
|
-
* outlive {@link timeoutMs}.
|
|
148
|
-
*/
|
|
149
97
|
runOpRead(ref) {
|
|
150
98
|
return new Promise((resolve, reject) => {
|
|
151
99
|
let settled = false;
|
|
@@ -153,9 +101,8 @@ export class OpSecretResolver {
|
|
|
153
101
|
if (settled)
|
|
154
102
|
return;
|
|
155
103
|
settled = true;
|
|
156
|
-
reject(new SecretResolverError('OP_TIMEOUT',
|
|
104
|
+
reject(new SecretResolverError('OP_TIMEOUT', buildTimeoutMessage(ref, this.timeoutMs)));
|
|
157
105
|
}, this.timeoutMs);
|
|
158
|
-
// Allow the test process to exit even if `op` is still pending.
|
|
159
106
|
if (typeof timer.unref === 'function')
|
|
160
107
|
timer.unref();
|
|
161
108
|
this.execFile(this.opBinary, ['read', ref], { timeout: this.timeoutMs, maxBuffer: 1024 * 64 }, (err, stdout, stderr) => {
|
|
@@ -164,46 +111,35 @@ export class OpSecretResolver {
|
|
|
164
111
|
settled = true;
|
|
165
112
|
clearTimeout(timer);
|
|
166
113
|
if (err) {
|
|
167
|
-
reject(
|
|
114
|
+
reject(mapOpExecError(err, stderr, ref));
|
|
168
115
|
return;
|
|
169
116
|
}
|
|
170
117
|
resolve(stdout);
|
|
171
118
|
});
|
|
172
119
|
});
|
|
173
120
|
}
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
}
|
|
192
|
-
if (Number.isFinite(codeNum)) {
|
|
193
|
-
const hint = OP_EXIT_CODE_HINTS[codeNum];
|
|
194
|
-
if (codeNum === 6) {
|
|
195
|
-
return new SecretResolverError('OP_NOT_SIGNED_IN', hint ?? `op exited 6 — not signed in.`);
|
|
196
|
-
}
|
|
197
|
-
return new SecretResolverError('OP_EXEC_FAILED', `op read '${ref}' failed with exit ${codeNum}: ${(stderr || '').trim() || (hint ?? 'no stderr')}`);
|
|
121
|
+
}
|
|
122
|
+
export function mapOpExecError(err, stderr, ref) {
|
|
123
|
+
const codeStr = typeof err.code === 'string' ? err.code : '';
|
|
124
|
+
const codeNum = typeof err.code === 'number' ? err.code : NaN;
|
|
125
|
+
if (codeStr === 'ENOENT') {
|
|
126
|
+
return new SecretResolverError('OP_CLI_MISSING', `op CLI not found in PATH — install 1Password CLI or use plain bearer field instead of bearer_ref.`);
|
|
127
|
+
}
|
|
128
|
+
const stderrLower = (stderr || '').toLowerCase();
|
|
129
|
+
if (stderrLower.includes(`isn't an item`)
|
|
130
|
+
|| stderrLower.includes('item not found')) {
|
|
131
|
+
return new SecretResolverError('OP_ITEM_NOT_FOUND', `1Password item not found at '${redactCredentials(ref)}'. `
|
|
132
|
+
+ 'Verify the ref points to an existing item, or update sites.json bearer_ref.');
|
|
133
|
+
}
|
|
134
|
+
if (Number.isFinite(codeNum)) {
|
|
135
|
+
const hint = OP_EXIT_CODE_HINTS[codeNum];
|
|
136
|
+
if (codeNum === 6) {
|
|
137
|
+
return new SecretResolverError('OP_NOT_SIGNED_IN', hint ?? `op exited 6 — not signed in.`);
|
|
198
138
|
}
|
|
199
|
-
return new SecretResolverError('OP_EXEC_FAILED', `op read '${ref}' failed: ${
|
|
139
|
+
return new SecretResolverError('OP_EXEC_FAILED', `op read '${redactCredentials(ref)}' failed with exit ${codeNum}: ${(stderr || '').trim() || (hint ?? 'no stderr')}`);
|
|
200
140
|
}
|
|
141
|
+
return new SecretResolverError('OP_EXEC_FAILED', `op read '${redactCredentials(ref)}' failed: ${redactCredentials(err.message)}`);
|
|
201
142
|
}
|
|
202
|
-
/**
|
|
203
|
-
* Composite resolver — chooses Plain/Op per site at resolve-time. This is
|
|
204
|
-
* the resolver wired into the registry in W4; W2 ships it standalone so
|
|
205
|
-
* unit tests cover the routing logic in isolation from any caching.
|
|
206
|
-
*/
|
|
207
143
|
export class CompositeSecretResolver {
|
|
208
144
|
plain;
|
|
209
145
|
op;
|
|
@@ -218,7 +154,6 @@ export class CompositeSecretResolver {
|
|
|
218
154
|
return this.plain.resolve(site);
|
|
219
155
|
}
|
|
220
156
|
}
|
|
221
|
-
/** Default factory consumed by the W4 registry / W5 auth pipeline. */
|
|
222
157
|
export function defaultSecretResolver() {
|
|
223
158
|
return new CompositeSecretResolver();
|
|
224
159
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"secret-resolver.js","sourceRoot":"","sources":["../../src/sites/secret-resolver.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"secret-resolver.js","sourceRoot":"","sources":["../../src/sites/secret-resolver.ts"],"names":[],"mappings":"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"}
|
package/dist/sites/store.d.ts
CHANGED
|
@@ -1,89 +1,32 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* W1 — Sites-Storage Foundation: load/save the sites file.
|
|
3
|
-
*
|
|
4
|
-
* Guarantees:
|
|
5
|
-
* - **Atomic replace.** Writes go to a sibling `*.tmp.<rand>` file, are
|
|
6
|
-
* fsynced, chmod'd to 0600, and then `rename(2)`d over the target.
|
|
7
|
-
* A SIGINT/SIGKILL between any two of these steps leaves either the
|
|
8
|
-
* old file intact or the new file fully written — never a torn write.
|
|
9
|
-
* - **Lock for concurrent writers.** `proper-lockfile` acquires an
|
|
10
|
-
* advisory lockfile (`<file>.lock`) before any read/modify/write
|
|
11
|
-
* cycle. Default `stale: 10000` ms; second concurrent save retries
|
|
12
|
-
* with exponential back-off (`retries: 10, minTimeout: 50`).
|
|
13
|
-
* - **0600 mode on write.** The temp file is opened/chmod'd to 0600
|
|
14
|
-
* BEFORE the rename so the new inode never exists with looser perms,
|
|
15
|
-
* even for one fsync window.
|
|
16
|
-
* - **Schema-version gate.** Refuses to load a file with a version we
|
|
17
|
-
* don't understand — explicit error, never silent migration.
|
|
18
|
-
*
|
|
19
|
-
* @license MIT
|
|
20
|
-
*/
|
|
21
1
|
import { type SitesFileT } from './schema.js';
|
|
22
|
-
/** Base class for any sites-file IO/format failure. */
|
|
23
2
|
export declare class SitesFileError extends Error {
|
|
24
3
|
readonly cause?: unknown | undefined;
|
|
25
4
|
constructor(message: string, cause?: unknown | undefined);
|
|
26
5
|
}
|
|
27
|
-
/** Thrown when the on-disk file declares a `schema_version` we don't know. */
|
|
28
6
|
export declare class SchemaVersionError extends SitesFileError {
|
|
29
7
|
readonly found: unknown;
|
|
30
8
|
constructor(found: unknown);
|
|
31
9
|
}
|
|
32
|
-
/**
|
|
33
|
-
* Discriminated lock-acquisition failure. W12-R1.2 (A4-F1): the
|
|
34
|
-
* pre-W12 `SitesFileError` collapsed three distinct failure modes into
|
|
35
|
-
* one opaque "lock not acquired" string. Operators triaging a stuck
|
|
36
|
-
* setup wizard need to distinguish them to choose the right recovery:
|
|
37
|
-
*
|
|
38
|
-
* - LOCK_TIMEOUT → another setup process is currently writing.
|
|
39
|
-
* Wait + retry; do NOT touch the lockfile.
|
|
40
|
-
* - LOCK_ORPHAN → stale lock from a crashed prior process.
|
|
41
|
-
* Manual `rm <lockfilePath>` is the only fix.
|
|
42
|
-
* - LOCK_PERMISSION → the lock dir itself is not writable. Fix
|
|
43
|
-
* file-system permissions.
|
|
44
|
-
*
|
|
45
|
-
* The `lockCode` discriminant + `lockfilePath` field let CLI surfaces
|
|
46
|
-
* (and pre-flight automation) emit precise hints.
|
|
47
|
-
*/
|
|
48
10
|
export type SitesFileLockCode = 'LOCK_TIMEOUT' | 'LOCK_ORPHAN' | 'LOCK_PERMISSION';
|
|
49
11
|
export declare class SitesFileLockError extends SitesFileError {
|
|
50
12
|
readonly lockCode: SitesFileLockCode;
|
|
51
13
|
readonly lockfilePath: string;
|
|
52
14
|
constructor(lockCode: SitesFileLockCode, lockfilePath: string, message: string, cause?: unknown);
|
|
53
15
|
}
|
|
54
|
-
/**
|
|
55
|
-
* Returns the empty seed used when a sites file does not yet exist.
|
|
56
|
-
* Callers (W3 registry) detect "no file → run env-bridge fallback".
|
|
57
|
-
*/
|
|
58
16
|
export declare function emptySitesFile(): SitesFileT;
|
|
59
|
-
/**
|
|
60
|
-
* Load + validate a sites file.
|
|
61
|
-
*
|
|
62
|
-
* Returns {@link emptySitesFile} when the path does not exist (no error).
|
|
63
|
-
* Throws {@link SchemaVersionError} for a known-unknown version and
|
|
64
|
-
* {@link SitesFileError} for JSON-parse or Zod-validation failures.
|
|
65
|
-
*/
|
|
66
|
-
/**
|
|
67
|
-
* F190 (2026-06-12): expand a leading `~` to the user's home directory.
|
|
68
|
-
* Node's fs does NOT do this — a `~/...` path typed into the Claude Desktop
|
|
69
|
-
* MCPB settings silently yielded "0 sites" (existsSync false → emptySitesFile).
|
|
70
|
-
* Only `~` and `~/...` are expanded; `~user/...` is left untouched.
|
|
71
|
-
*/
|
|
72
17
|
export declare function expandTilde(p: string): string;
|
|
73
18
|
export declare function loadSitesFile(rawPath: string): Promise<SitesFileT>;
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
* Tmp-file cleanup on any failure path.
|
|
87
|
-
*/
|
|
19
|
+
export interface AtomicWriteDetail {
|
|
20
|
+
readonly message: string;
|
|
21
|
+
readonly cause: unknown;
|
|
22
|
+
}
|
|
23
|
+
export interface AtomicLockDetail extends AtomicWriteDetail {
|
|
24
|
+
readonly lockCode: SitesFileLockCode;
|
|
25
|
+
readonly lockfilePath: string;
|
|
26
|
+
}
|
|
27
|
+
export declare function writeFileAtomic0600(path: string, payload: string, opts: {
|
|
28
|
+
readonly label: string;
|
|
29
|
+
readonly wrapError: (kind: 'write' | 'lock', detail: AtomicLockDetail | AtomicWriteDetail) => Error;
|
|
30
|
+
}): Promise<void>;
|
|
88
31
|
export declare function saveSitesFile(path: string, data: SitesFileT): Promise<void>;
|
|
89
32
|
//# sourceMappingURL=store.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/sites/store.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/sites/store.ts"],"names":[],"mappings":"AAsCA,OAAO,EAAa,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzD,qBAAa,cAAe,SAAQ,KAAK;aACQ,KAAK,CAAC,EAAE,OAAO;gBAAhD,OAAO,EAAE,MAAM,EAAkB,KAAK,CAAC,EAAE,OAAO,YAAA;CAI/D;AAGD,qBAAa,kBAAmB,SAAQ,cAAc;aACtB,KAAK,EAAE,OAAO;gBAAd,KAAK,EAAE,OAAO;CAQ7C;AAkBD,MAAM,MAAM,iBAAiB,GAAG,cAAc,GAAG,aAAa,GAAG,iBAAiB,CAAC;AAEnF,qBAAa,kBAAmB,SAAQ,cAAc;aAE9B,QAAQ,EAAE,iBAAiB;aAC3B,YAAY,EAAE,MAAM;gBADpB,QAAQ,EAAE,iBAAiB,EAC3B,YAAY,EAAE,MAAM,EACpC,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,OAAO;CAKtB;AAMD,wBAAgB,cAAc,IAAI,UAAU,CAE3C;AA+BD,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAI7C;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAkCxE;AASD,MAAM,WAAW,iBAAiB;IAE9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CAC3B;AAUD,MAAM,WAAW,gBAAiB,SAAQ,iBAAiB;IACvD,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IACrC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CACjC;AA6BD,wBAAsB,mBAAmB,CACrC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,IAAI,EAAE;IACF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,CAChB,IAAI,EAAE,OAAO,GAAG,MAAM,EACtB,MAAM,EAAE,gBAAgB,GAAG,iBAAiB,KAC3C,KAAK,CAAC;CACd,GACF,OAAO,CAAC,IAAI,CAAC,CA6Ff;AAWD,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAwBjF"}
|
package/dist/sites/store.js
CHANGED
|
@@ -1,29 +1,8 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* W1 — Sites-Storage Foundation: load/save the sites file.
|
|
3
|
-
*
|
|
4
|
-
* Guarantees:
|
|
5
|
-
* - **Atomic replace.** Writes go to a sibling `*.tmp.<rand>` file, are
|
|
6
|
-
* fsynced, chmod'd to 0600, and then `rename(2)`d over the target.
|
|
7
|
-
* A SIGINT/SIGKILL between any two of these steps leaves either the
|
|
8
|
-
* old file intact or the new file fully written — never a torn write.
|
|
9
|
-
* - **Lock for concurrent writers.** `proper-lockfile` acquires an
|
|
10
|
-
* advisory lockfile (`<file>.lock`) before any read/modify/write
|
|
11
|
-
* cycle. Default `stale: 10000` ms; second concurrent save retries
|
|
12
|
-
* with exponential back-off (`retries: 10, minTimeout: 50`).
|
|
13
|
-
* - **0600 mode on write.** The temp file is opened/chmod'd to 0600
|
|
14
|
-
* BEFORE the rename so the new inode never exists with looser perms,
|
|
15
|
-
* even for one fsync window.
|
|
16
|
-
* - **Schema-version gate.** Refuses to load a file with a version we
|
|
17
|
-
* don't understand — explicit error, never silent migration.
|
|
18
|
-
*
|
|
19
|
-
* @license MIT
|
|
20
|
-
*/
|
|
21
1
|
import { chmodSync, closeSync, existsSync, fsyncSync, mkdirSync, openSync, readFileSync, renameSync, unlinkSync, writeSync, } from 'node:fs';
|
|
22
2
|
import { homedir } from 'node:os';
|
|
23
3
|
import { dirname, join } from 'node:path';
|
|
24
4
|
import lockfile from 'proper-lockfile';
|
|
25
5
|
import { SitesFile } from './schema.js';
|
|
26
|
-
/** Base class for any sites-file IO/format failure. */
|
|
27
6
|
export class SitesFileError extends Error {
|
|
28
7
|
cause;
|
|
29
8
|
constructor(message, cause) {
|
|
@@ -32,7 +11,6 @@ export class SitesFileError extends Error {
|
|
|
32
11
|
this.name = 'SitesFileError';
|
|
33
12
|
}
|
|
34
13
|
}
|
|
35
|
-
/** Thrown when the on-disk file declares a `schema_version` we don't know. */
|
|
36
14
|
export class SchemaVersionError extends SitesFileError {
|
|
37
15
|
found;
|
|
38
16
|
constructor(found) {
|
|
@@ -53,26 +31,9 @@ export class SitesFileLockError extends SitesFileError {
|
|
|
53
31
|
this.name = 'SitesFileLockError';
|
|
54
32
|
}
|
|
55
33
|
}
|
|
56
|
-
/**
|
|
57
|
-
* Returns the empty seed used when a sites file does not yet exist.
|
|
58
|
-
* Callers (W3 registry) detect "no file → run env-bridge fallback".
|
|
59
|
-
*/
|
|
60
34
|
export function emptySitesFile() {
|
|
61
35
|
return { schema_version: 1, default_site_id: null, sites: [] };
|
|
62
36
|
}
|
|
63
|
-
/**
|
|
64
|
-
* Load + validate a sites file.
|
|
65
|
-
*
|
|
66
|
-
* Returns {@link emptySitesFile} when the path does not exist (no error).
|
|
67
|
-
* Throws {@link SchemaVersionError} for a known-unknown version and
|
|
68
|
-
* {@link SitesFileError} for JSON-parse or Zod-validation failures.
|
|
69
|
-
*/
|
|
70
|
-
/**
|
|
71
|
-
* F190 (2026-06-12): expand a leading `~` to the user's home directory.
|
|
72
|
-
* Node's fs does NOT do this — a `~/...` path typed into the Claude Desktop
|
|
73
|
-
* MCPB settings silently yielded "0 sites" (existsSync false → emptySitesFile).
|
|
74
|
-
* Only `~` and `~/...` are expanded; `~user/...` is left untouched.
|
|
75
|
-
*/
|
|
76
37
|
export function expandTilde(p) {
|
|
77
38
|
if (p === '~')
|
|
78
39
|
return homedir();
|
|
@@ -82,14 +43,14 @@ export function expandTilde(p) {
|
|
|
82
43
|
}
|
|
83
44
|
export async function loadSitesFile(rawPath) {
|
|
84
45
|
const path = expandTilde(rawPath);
|
|
85
|
-
if (!existsSync(path)) {
|
|
86
|
-
return emptySitesFile();
|
|
87
|
-
}
|
|
88
46
|
let raw;
|
|
89
47
|
try {
|
|
90
48
|
raw = readFileSync(path, 'utf-8');
|
|
91
49
|
}
|
|
92
50
|
catch (e) {
|
|
51
|
+
if (e.code === 'ENOENT') {
|
|
52
|
+
return emptySitesFile();
|
|
53
|
+
}
|
|
93
54
|
throw new SitesFileError(`Failed to read sites file at ${path}`, e);
|
|
94
55
|
}
|
|
95
56
|
let parsed;
|
|
@@ -111,40 +72,17 @@ export async function loadSitesFile(rawPath) {
|
|
|
111
72
|
}
|
|
112
73
|
return result.data;
|
|
113
74
|
}
|
|
114
|
-
|
|
115
|
-
* Persist + validate a sites file atomically with chmod 0600.
|
|
116
|
-
*
|
|
117
|
-
* Pipeline:
|
|
118
|
-
* 1. Acquire `<path>.lock` via proper-lockfile (with retries).
|
|
119
|
-
* 2. Validate `data` through {@link SitesFile} (rejects bad input
|
|
120
|
-
* before touching the filesystem).
|
|
121
|
-
* 3. Ensure parent directory exists.
|
|
122
|
-
* 4. Write JSON to `<path>.tmp.<pid>.<rand>`, fsync, chmod 0600.
|
|
123
|
-
* 5. `renameSync` over `<path>`.
|
|
124
|
-
* 6. Release lock.
|
|
125
|
-
*
|
|
126
|
-
* Tmp-file cleanup on any failure path.
|
|
127
|
-
*/
|
|
128
|
-
export async function saveSitesFile(path, data) {
|
|
129
|
-
const validated = SitesFile.safeParse(data);
|
|
130
|
-
if (!validated.success) {
|
|
131
|
-
throw new SitesFileError(`Refusing to write invalid sites file: ` +
|
|
132
|
-
validated.error.issues.map((i) => `${i.path.join('.')}: ${i.message}`).join('; '));
|
|
133
|
-
}
|
|
75
|
+
export async function writeFileAtomic0600(path, payload, opts) {
|
|
134
76
|
const dir = dirname(path);
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
mkdirSync(dir, { recursive: true, mode: 0o700 });
|
|
145
|
-
// proper-lockfile defaults to realpath:true, which throws ENOENT for
|
|
146
|
-
// a not-yet-existing target. Disable realpath + steer the lock at an
|
|
147
|
-
// explicit sibling path. The lock dir always exists (mkdirSync above).
|
|
77
|
+
try {
|
|
78
|
+
mkdirSync(dir, { recursive: true, mode: 0o700 });
|
|
79
|
+
}
|
|
80
|
+
catch (e) {
|
|
81
|
+
throw opts.wrapError('write', {
|
|
82
|
+
message: `Failed to create the directory for the ${opts.label} at ${dir}`,
|
|
83
|
+
cause: e,
|
|
84
|
+
});
|
|
85
|
+
}
|
|
148
86
|
const lockfilePath = `${path}.lock`;
|
|
149
87
|
let release;
|
|
150
88
|
try {
|
|
@@ -156,10 +94,6 @@ export async function saveSitesFile(path, data) {
|
|
|
156
94
|
});
|
|
157
95
|
}
|
|
158
96
|
catch (e) {
|
|
159
|
-
// W12-R1.2 (A4-F1): map the underlying error code into a
|
|
160
|
-
// discriminated lock-failure so callers can render the right
|
|
161
|
-
// recovery hint instead of telling the user three possible
|
|
162
|
-
// causes at once.
|
|
163
97
|
const errCode = e !== null && typeof e === 'object' && 'code' in e
|
|
164
98
|
? e.code
|
|
165
99
|
: undefined;
|
|
@@ -179,35 +113,52 @@ export async function saveSitesFile(path, data) {
|
|
|
179
113
|
hint =
|
|
180
114
|
`Stale lock from prior crashed process. Remove with: rm ${lockfilePath}`;
|
|
181
115
|
}
|
|
182
|
-
throw
|
|
116
|
+
throw opts.wrapError('lock', {
|
|
117
|
+
lockCode,
|
|
118
|
+
lockfilePath,
|
|
119
|
+
message: `Could not acquire lock on ${lockfilePath}. ${hint}`,
|
|
120
|
+
cause: e,
|
|
121
|
+
});
|
|
183
122
|
}
|
|
184
123
|
const tmpPath = `${path}.tmp.${process.pid}.${Math.random().toString(36).slice(2, 10)}`;
|
|
185
124
|
try {
|
|
186
125
|
const fd = openSync(tmpPath, 'w', 0o600);
|
|
187
126
|
try {
|
|
188
|
-
const payload = JSON.stringify(validated.data, null, 2) + '\n';
|
|
189
127
|
writeSync(fd, payload);
|
|
190
128
|
fsyncSync(fd);
|
|
191
129
|
}
|
|
192
130
|
finally {
|
|
193
131
|
closeSync(fd);
|
|
194
132
|
}
|
|
195
|
-
// Belt-and-braces: openSync's mode arg may be umask-clamped on
|
|
196
|
-
// some platforms; the explicit chmod guarantees 0600 regardless.
|
|
197
133
|
chmodSync(tmpPath, 0o600);
|
|
198
134
|
renameSync(tmpPath, path);
|
|
199
135
|
}
|
|
200
136
|
catch (e) {
|
|
201
|
-
// Best-effort tmp cleanup; ignore failures.
|
|
202
137
|
try {
|
|
203
138
|
if (existsSync(tmpPath))
|
|
204
139
|
unlinkSync(tmpPath);
|
|
205
140
|
}
|
|
206
|
-
catch {
|
|
207
|
-
throw
|
|
141
|
+
catch { }
|
|
142
|
+
throw opts.wrapError('write', {
|
|
143
|
+
message: `Failed to write ${opts.label} at ${path}`,
|
|
144
|
+
cause: e,
|
|
145
|
+
});
|
|
208
146
|
}
|
|
209
147
|
finally {
|
|
210
148
|
await release().catch(() => { });
|
|
211
149
|
}
|
|
212
150
|
}
|
|
151
|
+
export async function saveSitesFile(path, data) {
|
|
152
|
+
const validated = SitesFile.safeParse(data);
|
|
153
|
+
if (!validated.success) {
|
|
154
|
+
throw new SitesFileError(`Refusing to write invalid sites file: ` +
|
|
155
|
+
validated.error.issues.map((i) => `${i.path.join('.')}: ${i.message}`).join('; '));
|
|
156
|
+
}
|
|
157
|
+
await writeFileAtomic0600(path, JSON.stringify(validated.data, null, 2) + '\n', {
|
|
158
|
+
label: 'sites file',
|
|
159
|
+
wrapError: (kind, detail) => kind === 'lock' && 'lockCode' in detail
|
|
160
|
+
? new SitesFileLockError(detail.lockCode, detail.lockfilePath, detail.message, detail.cause)
|
|
161
|
+
: new SitesFileError(detail.message, detail.cause),
|
|
162
|
+
});
|
|
163
|
+
}
|
|
213
164
|
//# sourceMappingURL=store.js.map
|
package/dist/sites/store.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/sites/store.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/sites/store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export type SubstitutedRegistryRefusal = Record<string, unknown> & {
|
|
2
|
+
readonly error: string;
|
|
3
|
+
readonly code: 'site_registry_substituted';
|
|
4
|
+
readonly config_problem: string;
|
|
5
|
+
readonly context: {
|
|
6
|
+
readonly site_id: string;
|
|
7
|
+
};
|
|
8
|
+
readonly hint: string;
|
|
9
|
+
};
|
|
10
|
+
export declare function substitutedRegistryRefusal(siteId: string, configProblem: string): SubstitutedRegistryRefusal;
|
|
11
|
+
//# sourceMappingURL=substituted-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"substituted-registry.d.ts","sourceRoot":"","sources":["../../src/sites/substituted-registry.ts"],"names":[],"mappings":"AAkEA,MAAM,MAAM,0BAA0B,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAC/D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,2BAA2B,CAAC;IAC3C,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE;QAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACzB,CAAC;AASF,wBAAgB,0BAA0B,CACtC,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,GACtB,0BAA0B,CAa5B"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export function substitutedRegistryRefusal(siteId, configProblem) {
|
|
2
|
+
return {
|
|
3
|
+
error: `Refusing to target site_id "${siteId}": the configured site registry was rejected at startup, `
|
|
4
|
+
+ 'so this session is running on a substitute site and the name may not mean what it did before.',
|
|
5
|
+
code: 'site_registry_substituted',
|
|
6
|
+
config_problem: configProblem,
|
|
7
|
+
context: { site_id: siteId },
|
|
8
|
+
hint: 'Repair the registry named in config_problem and restart this server. '
|
|
9
|
+
+ 'Until then, calls WITHOUT site_id still run, against the substitute site — '
|
|
10
|
+
+ 'yootheme_builder_sites_list shows which one that is.',
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=substituted-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"substituted-registry.js","sourceRoot":"","sources":["../../src/sites/substituted-registry.ts"],"names":[],"mappings":"AAiFA,MAAM,UAAU,0BAA0B,CACtC,MAAc,EACd,aAAqB;IAErB,OAAO;QACH,KAAK,EACD,+BAA+B,MAAM,2DAA2D;cAC9F,+FAA+F;QACrG,IAAI,EAAE,2BAA2B;QACjC,cAAc,EAAE,aAAa;QAC7B,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;QAC5B,IAAI,EACA,uEAAuE;cACrE,6EAA6E;cAC7E,sDAAsD;KAC/D,CAAC;AACN,CAAC"}
|