{"_id":"@bernierllc/onboarding-plugin-website-builder","_rev":"5-7564bdd75159b8db38f5866085cb86a8","name":"@bernierllc/onboarding-plugin-website-builder","dist-tags":{"latest":"0.1.3"},"versions":{"0.0.1":{"name":"@bernierllc/onboarding-plugin-website-builder","version":"0.0.1","keywords":["oidc","trusted-publishing","setup"],"_id":"@bernierllc/onboarding-plugin-website-builder@0.0.1","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"15011cdbc4d6b43e16bcd98d03a50c0bedd2211b","tarball":"https://registry.npmjs.org/@bernierllc/onboarding-plugin-website-builder/-/onboarding-plugin-website-builder-0.0.1.tgz","fileCount":2,"integrity":"sha512-YrEIsTwY2HaZALIFZ2Hczrne6XbYFhQwCyYnC5klSo/cRE67SI/yQVbFGc++PEvl05DWXzEcgIxbH2VNhQLWgQ==","signatures":[{"sig":"MEUCIBanLDZSAmTxaA1aDTm01syK96rSpFW9zrlZ0rTGckqTAiEAtfnAC4y2HSG+s9Sj6EupDxBJ7zQ3GTFYrK8HpPyKD3w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2143},"_npmUser":{"name":"mkbernier","email":"mkbernier@gmail.com"},"_npmVersion":"11.12.1","description":"OIDC trusted publishing setup package for @bernierllc/onboarding-plugin-website-builder","directories":{},"_nodeVersion":"25.9.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/onboarding-plugin-website-builder_0.0.1_1781976407904_0.899517182136033","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@bernierllc/onboarding-plugin-website-builder","version":"0.1.0","keywords":["onboarding","website-builder","plugin","ai-agent","service","bernierllc"],"author":{"name":"Bernier LLC"},"license":"Bernier LLC","_id":"@bernierllc/onboarding-plugin-website-builder@0.1.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernier-llc/tools#readme","bugs":{"url":"https://github.com/bernier-llc/tools/issues"},"dist":{"shasum":"9b8976dbaa03d33b57fdc9b9a0de9217f4ec5734","tarball":"https://registry.npmjs.org/@bernierllc/onboarding-plugin-website-builder/-/onboarding-plugin-website-builder-0.1.0.tgz","fileCount":30,"integrity":"sha512-kU4aY/qG3Wm9jHMJT5EGh/VPXKJr+4pxvZk1cBF/Fxqd+uV6vaB8kvn2ybfcESgFUQtSpdZa9FTIlX0Rkycqmg==","signatures":[{"sig":"MEYCIQDDdNYLY8hV+Uu623DSzNsc6VFFI1QFEq/lM7Ktj5edMwIhAJhI/QzJR996ByDJHb/WjKhelRqei9/QhSg5OKebgyiS","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84029},"main":"dist/index.js","_from":"file:bernierllc-onboarding-plugin-website-builder-0.1.0.tgz","types":"dist/index.d.ts","browser":false,"engines":{"node":">=18.0.0"},"scripts":{"dev":"tsc --watch","lint":"eslint src/**/*.ts","test":"jest","build":"tsc","clean":"rimraf dist","prebuild":"npm run clean","test:run":"jest","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d16f0ceb-76e3-4acd-abee-cb963bbc176b"}},"_resolved":"/home/runner/work/tools/tools/packages/service/onboarding-plugin-website-builder/bernierllc-onboarding-plugin-website-builder-0.1.0.tgz","_integrity":"sha512-kU4aY/qG3Wm9jHMJT5EGh/VPXKJr+4pxvZk1cBF/Fxqd+uV6vaB8kvn2ybfcESgFUQtSpdZa9FTIlX0Rkycqmg==","bernierllc":{"runtime":"node","category":"service","integration":{"logger":"integrated","neverhub":"optional","neveradmin":"not-applicable"}},"repository":{"url":"git+https://github.com/bernier-llc/tools.git","type":"git"},"_npmVersion":"11.17.0","description":"Onboarding feature plugin implementing the website builder conversation flow: goals, questions, tools, panel, and handoffs.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"@bernierllc/logger":"1.7.0","@bernierllc/site-config-core":"0.2.0","@bernierllc/agent-tool-registry":"0.2.0","@bernierllc/site-builder-service":"0.1.0","@bernierllc/onboarding-config-core":"0.2.0","@bernierllc/onboarding-feature-plugin":"0.2.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.6.4","rimraf":"^5.0.1","ts-jest":"^29.1.1","typescript":"^5.2.2","@types/jest":"^29.5.5","@types/node":"^20.6.0"},"_npmOperationalInternal":{"tmp":"tmp/onboarding-plugin-website-builder_0.1.0_1781977298025_0.6864779522148394","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@bernierllc/onboarding-plugin-website-builder","version":"0.1.1","keywords":["onboarding","website-builder","plugin","ai-agent","service","bernierllc"],"author":{"name":"Bernier LLC"},"license":"Bernier LLC","_id":"@bernierllc/onboarding-plugin-website-builder@0.1.1","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernier-llc/tools#readme","bugs":{"url":"https://github.com/bernier-llc/tools/issues"},"dist":{"shasum":"98e3af5a240926bde24459444a52eee85d9f0f6b","tarball":"https://registry.npmjs.org/@bernierllc/onboarding-plugin-website-builder/-/onboarding-plugin-website-builder-0.1.1.tgz","fileCount":30,"integrity":"sha512-rfwqPBC1uaymxOSfTJaFzG2dV+Omg54amQNkQN247FNt/SH1qadlfnN6bEcdn2MbQN3juiwcbjsT1ZZbqoVrag==","signatures":[{"sig":"MEUCIAG1Ywg9+8rrhudpi/mM0WFnJAcQB60dT6bZZk3diNnoAiEAvCXuyCmaOYshzpbZl+NMeIT/LzBkNXOhhjG/1JroGd0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84029},"main":"dist/index.js","_from":"file:bernierllc-onboarding-plugin-website-builder-0.1.1.tgz","types":"dist/index.d.ts","browser":false,"engines":{"node":">=18.0.0"},"scripts":{"dev":"tsc --watch","lint":"eslint src/**/*.ts","test":"jest","build":"tsc","clean":"rimraf dist","prebuild":"npm run clean","test:run":"jest","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d16f0ceb-76e3-4acd-abee-cb963bbc176b"}},"_resolved":"/home/runner/work/tools/tools/packages/service/onboarding-plugin-website-builder/bernierllc-onboarding-plugin-website-builder-0.1.1.tgz","_integrity":"sha512-rfwqPBC1uaymxOSfTJaFzG2dV+Omg54amQNkQN247FNt/SH1qadlfnN6bEcdn2MbQN3juiwcbjsT1ZZbqoVrag==","bernierllc":{"runtime":"node","category":"service","integration":{"logger":"integrated","neverhub":"optional","neveradmin":"not-applicable"}},"repository":{"url":"git+https://github.com/bernier-llc/tools.git","type":"git"},"_npmVersion":"11.17.0","description":"Onboarding feature plugin implementing the website builder conversation flow: goals, questions, tools, panel, and handoffs.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"@bernierllc/logger":"1.7.0","@bernierllc/site-config-core":"0.3.0","@bernierllc/agent-tool-registry":"0.2.0","@bernierllc/site-builder-service":"0.1.1","@bernierllc/onboarding-config-core":"0.2.0","@bernierllc/onboarding-feature-plugin":"0.2.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.6.4","rimraf":"^5.0.1","ts-jest":"^29.1.1","typescript":"^5.2.2","@types/jest":"^29.5.5","@types/node":"^20.6.0"},"_npmOperationalInternal":{"tmp":"tmp/onboarding-plugin-website-builder_0.1.1_1781985947249_0.31307229945805304","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@bernierllc/onboarding-plugin-website-builder","version":"0.1.2","keywords":["onboarding","website-builder","plugin","ai-agent","service","bernierllc"],"author":{"name":"Bernier LLC"},"license":"Bernier LLC","_id":"@bernierllc/onboarding-plugin-website-builder@0.1.2","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernier-llc/tools#readme","bugs":{"url":"https://github.com/bernier-llc/tools/issues"},"dist":{"shasum":"d4e4b01e1e3a0371ad9a5c4d3c285a93bbb9e841","tarball":"https://registry.npmjs.org/@bernierllc/onboarding-plugin-website-builder/-/onboarding-plugin-website-builder-0.1.2.tgz","fileCount":30,"integrity":"sha512-93eKd9rh3VNbFmrDM5HF97EuO7M9akqV/dNq/swbOjzb1Tb7HFB+RRshNBDKqNJtYhV0YDjR0hrEA6guHsdO1g==","signatures":[{"sig":"MEUCIQCs1bpXnG6fCppfwc4sDArRfM9qcJQHHbKKP5nsJ8A2AwIgcZc9h0Bs3C4rsQ9GHEAuHLcjVJkKfQHJSyOfXPgjT6Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84029},"main":"dist/index.js","_from":"file:bernierllc-onboarding-plugin-website-builder-0.1.2.tgz","types":"dist/index.d.ts","browser":false,"engines":{"node":">=18.0.0"},"scripts":{"dev":"tsc --watch","lint":"eslint src/**/*.ts","test":"jest","build":"tsc","clean":"rimraf dist","prebuild":"npm run clean","test:run":"jest","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d16f0ceb-76e3-4acd-abee-cb963bbc176b"}},"_resolved":"/home/runner/work/tools/tools/packages/service/onboarding-plugin-website-builder/bernierllc-onboarding-plugin-website-builder-0.1.2.tgz","_integrity":"sha512-93eKd9rh3VNbFmrDM5HF97EuO7M9akqV/dNq/swbOjzb1Tb7HFB+RRshNBDKqNJtYhV0YDjR0hrEA6guHsdO1g==","bernierllc":{"runtime":"node","category":"service","integration":{"logger":"integrated","neverhub":"optional","neveradmin":"not-applicable"}},"repository":{"url":"git+https://github.com/bernier-llc/tools.git","type":"git"},"_npmVersion":"12.0.1","description":"Onboarding feature plugin implementing the website builder conversation flow: goals, questions, tools, panel, and handoffs.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@bernierllc/logger":"1.7.1","@bernierllc/site-config-core":"0.3.1","@bernierllc/agent-tool-registry":"0.2.1","@bernierllc/site-builder-service":"0.1.2","@bernierllc/onboarding-config-core":"0.2.1","@bernierllc/onboarding-feature-plugin":"0.2.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.6.4","rimraf":"^5.0.1","ts-jest":"^29.1.1","typescript":"^5.2.2","@types/jest":"^29.5.5","@types/node":"^20.6.0"},"_npmOperationalInternal":{"tmp":"tmp/onboarding-plugin-website-builder_0.1.2_1784015963643_0.121275616377015","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"_id":"@bernierllc/onboarding-plugin-website-builder@0.1.3","bugs":{"url":"https://github.com/bernier-llc/tools/issues"},"dist":{"shasum":"1b7068996ce3a59918e1c88ef79946a18c5d79b3","tarball":"https://registry.npmjs.org/@bernierllc/onboarding-plugin-website-builder/-/onboarding-plugin-website-builder-0.1.3.tgz","fileCount":30,"integrity":"sha512-dRqt4HJkVIxHRcpbAmTy5MGsxqhU8gnahDspy/QvqLv6mBDDT3f7i+oa1LOqQCbtv/ag4mVhGnV+Nyo2V8qsig==","signatures":[{"sig":"MEUCIBJsmQvzBnlO7+yx2KBipe4lIkzdGnDfQQprn0sw3EutAiEAprYP/xS4es6Wzio+A2thAYpd4725i+liIAYxPPu90O0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIBplIpG6XYqH92xHNk7T/s1T024rnfYvMstkYaBumGBZAiEAijVqtr3vhQ7VCuVBcQ/j+jNHP6qYLgBWdy2Fjk9G6cM="}],"unpackedSize":84035},"main":"dist/index.js","name":"@bernierllc/onboarding-plugin-website-builder","_from":"file:bernierllc-onboarding-plugin-website-builder-0.1.3.tgz","types":"dist/index.d.ts","author":{"name":"Bernier LLC"},"browser":false,"engines":{"node":">=18.0.0"},"license":"Bernier LLC","scripts":{"dev":"tsc --watch","lint":"eslint src/**/*.ts","test":"jest","build":"tsc","clean":"rimraf dist","prebuild":"npm run clean","test:run":"jest","test:watch":"jest --watch","test:coverage":"jest --coverage"},"version":"0.1.3","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"d16f0ceb-76e3-4acd-abee-cb963bbc176b"}},"homepage":"https://github.com/bernier-llc/tools#readme","keywords":["onboarding","website-builder","plugin","ai-agent","service","bernierllc"],"_resolved":"/home/runner/work/tools/tools/packages/service/onboarding-plugin-website-builder/bernierllc-onboarding-plugin-website-builder-0.1.3.tgz","_integrity":"sha512-dRqt4HJkVIxHRcpbAmTy5MGsxqhU8gnahDspy/QvqLv6mBDDT3f7i+oa1LOqQCbtv/ag4mVhGnV+Nyo2V8qsig==","bernierllc":{"runtime":"node","category":"service","integration":{"logger":"integrated","neverhub":"optional","neveradmin":"not-applicable"}},"repository":{"url":"git+https://github.com/bernier-llc/tools.git","type":"git"},"_npmVersion":"12.2.0","description":"Onboarding feature plugin implementing the website builder conversation flow: goals, questions, tools, panel, and handoffs.","directories":{},"maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"_nodeVersion":"24.21.0","dependencies":{"@bernierllc/logger":"^1.7.1","@bernierllc/site-config-core":"^0.3.1","@bernierllc/agent-tool-registry":"^0.2.1","@bernierllc/site-builder-service":"^0.1.3","@bernierllc/onboarding-config-core":"^0.2.1","@bernierllc/onboarding-feature-plugin":"^0.2.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.6.4","rimraf":"^5.0.1","ts-jest":"^29.1.1","typescript":"^5.2.2","@types/jest":"^29.5.5","@types/node":"^20.6.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/onboarding-plugin-website-builder_0.1.3_1790884454299_0.8532955115156191"}}},"time":{"created":"2026-06-20T17:26:47.647Z","modified":"2026-10-01T19:54:14.603Z","0.0.1":"2026-06-20T17:26:48.052Z","0.1.0":"2026-06-20T17:41:38.160Z","0.1.1":"2026-06-20T20:05:47.399Z","0.1.2":"2026-07-14T07:59:23.768Z","0.1.3":"2026-10-01T19:54:14.413Z"},"bugs":{"url":"https://github.com/bernier-llc/tools/issues"},"author":{"name":"Bernier LLC"},"license":"Bernier LLC","homepage":"https://github.com/bernier-llc/tools#readme","keywords":["onboarding","website-builder","plugin","ai-agent","service","bernierllc"],"repository":{"url":"git+https://github.com/bernier-llc/tools.git","type":"git"},"description":"Onboarding feature plugin implementing the website builder conversation flow: goals, questions, tools, panel, and handoffs.","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"readme":"# @bernierllc/onboarding-plugin-website-builder\n\nOnboarding feature plugin that builds a site config conversationally — the first concrete implementation of the `onboarding-feature-plugin` contract.\n\n## Overview\n\n`WebsiteBuilderPlugin` implements `OnboardingFeaturePlugin` to wire the Website Builder cluster into an AI onboarding agent session. It contributes:\n\n- **Goals** — branding set, theme configured, at least one content section added, site marked ready\n- **Questions** — phase-organized: business identity, logo & colors (with vision-guided color extraction), content sections\n- **Tools** — `wb_updateBranding`, `wb_updateTheme`, `wb_upsertSection`, `wb_getSiteStatus`, `wb_markSiteReady` (all in `agent-tool-registry` format, calling into an injected `SiteBuilder`)\n- **Panel** — side-panel descriptor pointing to `SitePreviewCard` from `@bernierllc/site-preview-ui`\n- **Handoffs** — \"View your live site\" (route) and \"Review your site settings\" (task)\n\n## Installation\n\n```bash\nnpm install @bernierllc/onboarding-plugin-website-builder\n```\n\n## Usage\n\n```typescript\nimport { SiteBuilder, InMemorySiteConfigStore } from '@bernierllc/site-builder-service';\nimport { mergePluginContributions } from '@bernierllc/onboarding-feature-plugin';\nimport { ToolRegistry } from '@bernierllc/agent-tool-registry';\nimport {\n  WebsiteBuilderPlugin,\n  buildAgentToolDefinitions,\n  WEBSITE_BUILDER_EVALUATORS,\n} from '@bernierllc/onboarding-plugin-website-builder';\n\n// Create the site builder with a store adapter\nconst siteBuilder = new SiteBuilder({ store: new InMemorySiteConfigStore() });\n\n// Instantiate the plugin\nconst plugin = new WebsiteBuilderPlugin({\n  siteBuilder,\n  tenantId: 'tenant-123',\n  slug: 'acme-co',\n  offeredSections: ['services', 'contact', 'hours'],\n  defaults: { heroStyle: 'minimal' },\n});\n\n// Contribute goals, phases, questions, and tools to an onboarding session\nconst goals = plugin.contributeGoals();\nconst phases = plugin.contributePhases({ baseConfig: onboardingConfig, pluginConfig: {} });\nconst questions = plugin.contributeQuestions();\nconst tools = plugin.contributeTools();\nconst panel = plugin.contributePanel({ baseConfig: onboardingConfig, pluginConfig: {} });\nconst handoffs = plugin.contributeHandoffs();\n\n// Register executable tools with agent-tool-registry\nconst toolRegistry = new ToolRegistry();\nfor (const tool of buildAgentToolDefinitions(siteBuilder, 'tenant-123', 'acme-co')) {\n  toolRegistry.register(tool);\n}\n\n// Merge plugin contributions into a base onboarding config\nconst merged = mergePluginContributions(baseOnboardingConfig, [{ plugin, config: {} }]);\n```\n\n## API Reference\n\n### `WebsiteBuilderPlugin`\n\nThe main plugin class implementing `OnboardingFeaturePlugin`.\n\n**Constructor**\n\n```typescript\nnew WebsiteBuilderPlugin(config: WebsiteBuilderPluginConfig)\n```\n\n| Parameter | Type | Description |\n|-----------|------|-------------|\n| `siteBuilder` | `SiteBuilder` | Site builder service instance |\n| `tenantId` | `string` | Tenant identifier |\n| `slug` | `string` | Site slug |\n| `offeredSections` | `SiteSectionType[]` | Optional list of offered section types |\n| `defaults` | `Partial<SiteTheme>` | Optional default theme overrides |\n\n**Methods**\n\n| Method | Returns | Description |\n|--------|---------|-------------|\n| `contributeGoals()` | `GoalDefinition[]` | Returns the 4 website builder goals |\n| `contributeQuestions()` | `PhaseQuestion[]` | Returns all onboarding questions |\n| `contributeTools()` | `PluginToolDefinition[]` | Returns 5 schema-only tool definitions |\n| `contributePhases(ctx)` | `OnboardingPhase[]` | Returns 3 onboarding phases |\n| `contributePanel(ctx)` | `PanelDescriptor` | Returns side-panel descriptor |\n| `contributeHandoffs()` | `Handoff[]` | Returns 2 completion handoffs |\n\n### `buildAgentToolDefinitions`\n\nBuilds `ToolDefinition` objects with executable handlers for registration with `@bernierllc/agent-tool-registry`.\n\n```typescript\nfunction buildAgentToolDefinitions(\n  siteBuilder: SiteBuilder,\n  tenantId: string,\n  slug: string,\n  logger?: Logger\n): ToolDefinition[]\n```\n\nReturns definitions for: `wb_updateBranding`, `wb_updateTheme`, `wb_upsertSection`, `wb_getSiteStatus`, `wb_markSiteReady`.\n\n### `GOALS`\n\nArray of 4 `GoalDefinition` objects: `wb.branding`, `wb.theme`, `wb.sections`, `wb.ready`.\n\n### `WEBSITE_BUILDER_EVALUATORS`\n\nCustom goal evaluator map for use with `evaluateGoals` from `@bernierllc/onboarding-config-core`.\n\n### `PLUGIN_TOOL_DEFINITIONS`\n\nSchema-only `PluginToolDefinition[]` for the 5 website builder tools.\n\n## Error Classes\n\nAll errors extend `OnboardingPluginWebsiteBuilderError` which extends `Error`.\n\n| Class | Code | Usage |\n|-------|------|-------|\n| `OnboardingPluginWebsiteBuilderError` | `ONBOARDING_PLUGIN_WB_ERROR` | Base error class |\n| `WebsiteBuilderConfigError` | `WB_CONFIG_INVALID` | Invalid plugin configuration |\n| `WebsiteBuilderToolError` | `WB_TOOL_ERROR` | Tool execution failure |\n\n```typescript\nimport {\n  WebsiteBuilderConfigError,\n  WebsiteBuilderToolError,\n} from '@bernierllc/onboarding-plugin-website-builder';\n\ntry {\n  await toolDef.execute(input);\n} catch (err) {\n  if (err instanceof WebsiteBuilderToolError) {\n    console.error(err.code, err.context, err.cause);\n  }\n}\n```\n\n## Integration Status\n\n| Integration | Status | Notes |\n|-------------|--------|-------|\n| Logger: | integrated | Uses `@bernierllc/logger` for tool execution events |\n| NeverHub: | optional | Pass `neverhub` option to `SiteBuilder` constructor |\n\n### Logger integration\n\nThe plugin uses `@bernierllc/logger` inside `buildAgentToolDefinitions`. Pass an external logger instance to share log context:\n\n```typescript\nimport { Logger, LogLevel } from '@bernierllc/logger';\n\nconst logger = new Logger({ level: LogLevel.INFO, transports: [consoleTransport] });\nconst tools = buildAgentToolDefinitions(siteBuilder, tenantId, slug, logger);\n```\n\n### NeverHub integration\n\nNeverHub integration is handled at the `SiteBuilder` level (via `@bernierllc/site-builder-service`), not this plugin directly. Configure it when constructing `SiteBuilder`:\n\n```typescript\nconst siteBuilder = new SiteBuilder({\n  store: myStore,\n  neverhub: { enabled: true },\n});\n```\n\nGraceful degradation: if NeverHub is unavailable, `SiteBuilder` continues operating with core functionality intact.\n\n## License\n\nCopyright (c) 2025 Bernier LLC. Limited-use license — see LICENSE for details.\n","readmeFilename":"README.md"}