{"id":"@lssm-tech/module.integration-hub","slug":"module.integration-hub","name":"@lssm-tech/module.integration-hub","version":"2.0.5","path":"packages/platform/delivery/integration-hub","manifestPath":"packages/platform/delivery/integration-hub/package.json","manifestBlobSha":"d228f7c97cf38756d597d63cbfabdcd0286de5fb","layer":"platform","physicalArea":"delivery","primaryArea":"integrations-and-providers","classification":{"privateDeclared":null,"catalogFamily":"solutions","catalogKind":"module","catalogStatus":"active","adoptionMode":"adoptable","stability":"experimental"},"description":"Scoped integration-hub module — 3 genuinely reusable primitives (useIntegrationData, useCredentialSetup, renderIntegrationMarkdown) promoted from examples/integration-hub. RSC-directive boundaries are explicit.","descriptionOrigin":"package.json","catalog":{"family":"solutions","kind":"module","status":"active","adoptionMode":"adoptable","stability":"experimental","platforms":["server"],"runtimes":["node"],"entrypoints":[".","./hooks","./hooks/useCredentialSetup","./hooks/useIntegrationData","./hub","./hub/catalog","./hub/integration-hub","./hub/ports","./hub/presentation","./model","./model/credential-setup","./model/deployment-topology","./renderers","./renderers/integration.markdown"],"documentation":[{"title":"Module Integration Hub documentation","url":"https://www.npmjs.com/package/%40lssm-tech%2Fmodule.integration-hub","kind":"readme"}],"examples":[],"replacements":[],"capabilities":[{"id":"package.lssm.tech.module.integration.hub","title":"Module Integration Hub","description":"Scoped integration-hub module — 3 genuinely reusable primitives (useIntegrationData, useCredentialSetup, renderIntegrationMarkdown) promoted from examples/integration-hub. RSC-directive boundaries are explicit.","status":"active","useCases":["Adopt scoped integration-hub module — 3 genuinely reusable primitives (useintegrationdata, usecredentialsetup, renderintegrationmarkdown) promoted from examples/integration-hub. rsc-directive boundaries are explicit"],"aliases":["contractspec","integrations","hub","module","integration"],"pythonEquivalents":[],"canonicalImports":[{"from":"@lssm-tech/module.integration-hub","symbols":[]},{"from":"@lssm-tech/module.integration-hub/hooks","symbols":[]},{"from":"@lssm-tech/module.integration-hub/hooks/useCredentialSetup","symbols":[]},{"from":"@lssm-tech/module.integration-hub/hooks/useIntegrationData","symbols":[]},{"from":"@lssm-tech/module.integration-hub/hub","symbols":[]},{"from":"@lssm-tech/module.integration-hub/hub/catalog","symbols":[]},{"from":"@lssm-tech/module.integration-hub/hub/integration-hub","symbols":[]},{"from":"@lssm-tech/module.integration-hub/hub/ports","symbols":[]},{"from":"@lssm-tech/module.integration-hub/hub/presentation","symbols":[]},{"from":"@lssm-tech/module.integration-hub/model","symbols":[]},{"from":"@lssm-tech/module.integration-hub/model/credential-setup","symbols":[]},{"from":"@lssm-tech/module.integration-hub/model/deployment-topology","symbols":[]}],"constraints":{"platforms":["server"],"runtimes":["node"],"avoidWhen":["The @lssm-tech/module.integration-hub package constraints do not match the target runtime or platform."],"requires":["TypeScript"]},"alternatives":[],"relationships":[],"resolutionPriority":50}]},"canonicalImports":[{"capabilityId":"package.lssm.tech.module.integration.hub","from":"@lssm-tech/module.integration-hub","symbols":[]},{"capabilityId":"package.lssm.tech.module.integration.hub","from":"@lssm-tech/module.integration-hub/hooks","symbols":[]},{"capabilityId":"package.lssm.tech.module.integration.hub","from":"@lssm-tech/module.integration-hub/hooks/useCredentialSetup","symbols":[]},{"capabilityId":"package.lssm.tech.module.integration.hub","from":"@lssm-tech/module.integration-hub/hooks/useIntegrationData","symbols":[]},{"capabilityId":"package.lssm.tech.module.integration.hub","from":"@lssm-tech/module.integration-hub/hub","symbols":[]},{"capabilityId":"package.lssm.tech.module.integration.hub","from":"@lssm-tech/module.integration-hub/hub/catalog","symbols":[]},{"capabilityId":"package.lssm.tech.module.integration.hub","from":"@lssm-tech/module.integration-hub/hub/integration-hub","symbols":[]},{"capabilityId":"package.lssm.tech.module.integration.hub","from":"@lssm-tech/module.integration-hub/hub/ports","symbols":[]},{"capabilityId":"package.lssm.tech.module.integration.hub","from":"@lssm-tech/module.integration-hub/hub/presentation","symbols":[]},{"capabilityId":"package.lssm.tech.module.integration.hub","from":"@lssm-tech/module.integration-hub/model","symbols":[]},{"capabilityId":"package.lssm.tech.module.integration.hub","from":"@lssm-tech/module.integration-hub/model/credential-setup","symbols":[]},{"capabilityId":"package.lssm.tech.module.integration.hub","from":"@lssm-tech/module.integration-hub/model/deployment-topology","symbols":[]}],"scripts":{"publish:pkg":"bun publish --tolerate-republish --ignore-scripts --verbose","publish:pkg:canary":"bun publish:pkg --tag canary","build":"contractspec-bun-build build","build:bundle":"contractspec-bun-build transpile","build:types":"contractspec-bun-build types","dev":"contractspec-bun-build dev","clean":"rimraf dist .turbo","lint":"bun lint:fix","lint:fix":"node ../../../../scripts/biome.cjs check --write --unsafe --only=nursery/useSortedClasses . && node ../../../../scripts/biome.cjs check --write .","lint:check":"node ../../../../scripts/biome.cjs check .","test":"bun test --pass-with-no-tests","prebuild":"contractspec-bun-build prebuild","typecheck":"tsgo --noEmit"},"scriptStatus":"complete pinned manifest","dependencies":{"@lssm-tech/lib.contracts-integrations":"workspace:^","@lssm-tech/lib.contracts-spec-core":"workspace:^","@lssm-tech/lib.surface-runtime":"workspace:^","react":"catalog:"},"devDependencies":{"@lssm-tech/tool.bun":"workspace:*","@lssm-tech/tool.typescript":"workspace:*","@types/react":"catalog:types","typescript":"catalog:"},"peerDependencies":{},"optionalDependencies":{},"peerDependenciesMeta":{},"bundledDependencies":null,"dependencyStatus":"complete pinned manifest","exports":{".":"./src/index.ts","./hooks":"./src/hooks/index.ts","./hooks/useCredentialSetup":"./src/hooks/useCredentialSetup.ts","./hooks/useIntegrationData":"./src/hooks/useIntegrationData.ts","./hub":"./src/hub/index.ts","./hub/catalog":"./src/hub/catalog.ts","./hub/integration-hub":"./src/hub/integration-hub.ts","./hub/ports":"./src/hub/ports.ts","./hub/presentation":"./src/hub/presentation.ts","./model":"./src/model/index.ts","./model/credential-setup":"./src/model/credential-setup.ts","./model/deployment-topology":"./src/model/deployment-topology.ts","./renderers":"./src/renderers/index.ts","./renderers/integration.markdown":"./src/renderers/integration.markdown.ts"},"publishExports":{".":{"types":"./dist/index.d.ts","browser":"./dist/browser/index.js","bun":"./dist/index.js","node":"./dist/node/index.js","default":"./dist/index.js"},"./hooks":{"types":"./dist/hooks/index.d.ts","browser":"./dist/browser/hooks/index.js","bun":"./dist/hooks/index.js","node":"./dist/node/hooks/index.js","default":"./dist/hooks/index.js"},"./hooks/useCredentialSetup":{"types":"./dist/hooks/useCredentialSetup.d.ts","browser":"./dist/browser/hooks/useCredentialSetup.js","bun":"./dist/hooks/useCredentialSetup.js","node":"./dist/node/hooks/useCredentialSetup.js","default":"./dist/hooks/useCredentialSetup.js"},"./hooks/useIntegrationData":{"types":"./dist/hooks/useIntegrationData.d.ts","browser":"./dist/browser/hooks/useIntegrationData.js","bun":"./dist/hooks/useIntegrationData.js","node":"./dist/node/hooks/useIntegrationData.js","default":"./dist/hooks/useIntegrationData.js"},"./hub":{"types":"./dist/hub/index.d.ts","browser":"./dist/browser/hub/index.js","bun":"./dist/hub/index.js","node":"./dist/node/hub/index.js","default":"./dist/hub/index.js"},"./hub/catalog":{"types":"./dist/hub/catalog.d.ts","browser":"./dist/browser/hub/catalog.js","bun":"./dist/hub/catalog.js","node":"./dist/node/hub/catalog.js","default":"./dist/hub/catalog.js"},"./hub/integration-hub":{"types":"./dist/hub/integration-hub.d.ts","browser":"./dist/browser/hub/integration-hub.js","bun":"./dist/hub/integration-hub.js","node":"./dist/node/hub/integration-hub.js","default":"./dist/hub/integration-hub.js"},"./hub/ports":{"types":"./dist/hub/ports.d.ts","browser":"./dist/browser/hub/ports.js","bun":"./dist/hub/ports.js","node":"./dist/node/hub/ports.js","default":"./dist/hub/ports.js"},"./hub/presentation":{"types":"./dist/hub/presentation.d.ts","browser":"./dist/browser/hub/presentation.js","bun":"./dist/hub/presentation.js","node":"./dist/node/hub/presentation.js","default":"./dist/hub/presentation.js"},"./model":{"types":"./dist/model/index.d.ts","browser":"./dist/browser/model/index.js","bun":"./dist/model/index.js","node":"./dist/node/model/index.js","default":"./dist/model/index.js"},"./model/credential-setup":{"types":"./dist/model/credential-setup.d.ts","browser":"./dist/browser/model/credential-setup.js","bun":"./dist/model/credential-setup.js","node":"./dist/node/model/credential-setup.js","default":"./dist/model/credential-setup.js"},"./model/deployment-topology":{"types":"./dist/model/deployment-topology.d.ts","browser":"./dist/browser/model/deployment-topology.js","bun":"./dist/model/deployment-topology.js","node":"./dist/node/model/deployment-topology.js","default":"./dist/model/deployment-topology.js"},"./renderers":{"types":"./dist/renderers/index.d.ts","browser":"./dist/browser/renderers/index.js","bun":"./dist/renderers/index.js","node":"./dist/node/renderers/index.js","default":"./dist/renderers/index.js"},"./renderers/integration.markdown":{"types":"./dist/renderers/integration.markdown.d.ts","browser":"./dist/browser/renderers/integration.markdown.js","bun":"./dist/renderers/integration.markdown.js","node":"./dist/node/renderers/integration.markdown.js","default":"./dist/renderers/integration.markdown.js"}},"types":"./dist/index.d.ts","files":["dist","README.md","AGENTS.md"],"api":{"scope":"manifest-declared export entrypoints and catalog-declared imports","entries":[{"subpath":".","importPath":"@lssm-tech/module.integration-hub","target":"./src/index.ts","targets":[{"conditions":[],"target":"./src/index.ts","sourcePath":"packages/platform/delivery/integration-hub/src/index.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/platform/delivery/integration-hub/src/index.ts","sourceStatus":"verified source file"}]},{"subpath":"./hooks","importPath":"@lssm-tech/module.integration-hub/hooks","target":"./src/hooks/index.ts","targets":[{"conditions":[],"target":"./src/hooks/index.ts","sourcePath":"packages/platform/delivery/integration-hub/src/hooks/index.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/platform/delivery/integration-hub/src/hooks/index.ts","sourceStatus":"verified source file"}]},{"subpath":"./hooks/useCredentialSetup","importPath":"@lssm-tech/module.integration-hub/hooks/useCredentialSetup","target":"./src/hooks/useCredentialSetup.ts","targets":[{"conditions":[],"target":"./src/hooks/useCredentialSetup.ts","sourcePath":"packages/platform/delivery/integration-hub/src/hooks/useCredentialSetup.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/platform/delivery/integration-hub/src/hooks/useCredentialSetup.ts","sourceStatus":"verified source file"}]},{"subpath":"./hooks/useIntegrationData","importPath":"@lssm-tech/module.integration-hub/hooks/useIntegrationData","target":"./src/hooks/useIntegrationData.ts","targets":[{"conditions":[],"target":"./src/hooks/useIntegrationData.ts","sourcePath":"packages/platform/delivery/integration-hub/src/hooks/useIntegrationData.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/platform/delivery/integration-hub/src/hooks/useIntegrationData.ts","sourceStatus":"verified source file"}]},{"subpath":"./hub","importPath":"@lssm-tech/module.integration-hub/hub","target":"./src/hub/index.ts","targets":[{"conditions":[],"target":"./src/hub/index.ts","sourcePath":"packages/platform/delivery/integration-hub/src/hub/index.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/platform/delivery/integration-hub/src/hub/index.ts","sourceStatus":"verified source file"}]},{"subpath":"./hub/catalog","importPath":"@lssm-tech/module.integration-hub/hub/catalog","target":"./src/hub/catalog.ts","targets":[{"conditions":[],"target":"./src/hub/catalog.ts","sourcePath":"packages/platform/delivery/integration-hub/src/hub/catalog.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/platform/delivery/integration-hub/src/hub/catalog.ts","sourceStatus":"verified source file"}]},{"subpath":"./hub/integration-hub","importPath":"@lssm-tech/module.integration-hub/hub/integration-hub","target":"./src/hub/integration-hub.ts","targets":[{"conditions":[],"target":"./src/hub/integration-hub.ts","sourcePath":"packages/platform/delivery/integration-hub/src/hub/integration-hub.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/platform/delivery/integration-hub/src/hub/integration-hub.ts","sourceStatus":"verified source file"}]},{"subpath":"./hub/ports","importPath":"@lssm-tech/module.integration-hub/hub/ports","target":"./src/hub/ports.ts","targets":[{"conditions":[],"target":"./src/hub/ports.ts","sourcePath":"packages/platform/delivery/integration-hub/src/hub/ports.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/platform/delivery/integration-hub/src/hub/ports.ts","sourceStatus":"verified source file"}]},{"subpath":"./hub/presentation","importPath":"@lssm-tech/module.integration-hub/hub/presentation","target":"./src/hub/presentation.ts","targets":[{"conditions":[],"target":"./src/hub/presentation.ts","sourcePath":"packages/platform/delivery/integration-hub/src/hub/presentation.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/platform/delivery/integration-hub/src/hub/presentation.ts","sourceStatus":"verified source file"}]},{"subpath":"./model","importPath":"@lssm-tech/module.integration-hub/model","target":"./src/model/index.ts","targets":[{"conditions":[],"target":"./src/model/index.ts","sourcePath":"packages/platform/delivery/integration-hub/src/model/index.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/platform/delivery/integration-hub/src/model/index.ts","sourceStatus":"verified source file"}]},{"subpath":"./model/credential-setup","importPath":"@lssm-tech/module.integration-hub/model/credential-setup","target":"./src/model/credential-setup.ts","targets":[{"conditions":[],"target":"./src/model/credential-setup.ts","sourcePath":"packages/platform/delivery/integration-hub/src/model/credential-setup.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/platform/delivery/integration-hub/src/model/credential-setup.ts","sourceStatus":"verified source file"}]},{"subpath":"./model/deployment-topology","importPath":"@lssm-tech/module.integration-hub/model/deployment-topology","target":"./src/model/deployment-topology.ts","targets":[{"conditions":[],"target":"./src/model/deployment-topology.ts","sourcePath":"packages/platform/delivery/integration-hub/src/model/deployment-topology.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/platform/delivery/integration-hub/src/model/deployment-topology.ts","sourceStatus":"verified source file"}]},{"subpath":"./renderers","importPath":"@lssm-tech/module.integration-hub/renderers","target":"./src/renderers/index.ts","targets":[{"conditions":[],"target":"./src/renderers/index.ts","sourcePath":"packages/platform/delivery/integration-hub/src/renderers/index.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/platform/delivery/integration-hub/src/renderers/index.ts","sourceStatus":"verified source file"}]},{"subpath":"./renderers/integration.markdown","importPath":"@lssm-tech/module.integration-hub/renderers/integration.markdown","target":"./src/renderers/integration.markdown.ts","targets":[{"conditions":[],"target":"./src/renderers/integration.markdown.ts","sourcePath":"packages/platform/delivery/integration-hub/src/renderers/integration.markdown.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/platform/delivery/integration-hub/src/renderers/integration.markdown.ts","sourceStatus":"verified source file"}]}],"entryCount":14,"namedSymbolCoverage":"catalog declarations only; exhaustive TypeScript symbols not extracted","installationStatus":"not verified"},"docsLinks":[{"title":"Module Integration Hub documentation","url":"https://www.npmjs.com/package/%40lssm-tech%2Fmodule.integration-hub","kind":"readme","pinnedUrl":null,"sourceStatus":"declared link; destination not verified"}],"sourceUrls":{"package":"https://github.com/lssm-tech/contractspec/tree/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/platform/delivery/integration-hub","manifest":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/platform/delivery/integration-hub/package.json","readme":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/platform/delivery/integration-hub/README.md","guide":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/apps/web-landing/public/llms-packages/module.integration-hub.txt"},"readme":{"status":"available","body":"# @lssm-tech/module.integration-hub\n\nScoped module hosting four reusable integration-hub primitives. Intentionally\nnarrow — any new export requires a planning loop.\n\n## Installation\n\n```bash\nbun add @lssm-tech/module.integration-hub\n```\n\n## Exports\n\n| Import path | Exports | RSC-safe? |\n|---|---|---|\n| `@lssm-tech/module.integration-hub/hooks` | `useIntegrationData`, `useCredentialSetup` | No — use in client components only |\n| `@lssm-tech/module.integration-hub/model` | `buildCredentialSetupModel`, credential-setup types, deployment-topology types and validator | Yes |\n| `@lssm-tech/module.integration-hub/renderers` | `renderIntegrationMarkdown` | Yes |\n| `@lssm-tech/module.integration-hub` | All of the above | Use sub-paths to preserve RSC boundaries |\n\n## Quick start\n\n### Loading integration data (client component)\n\n```typescript\n'use client';\nimport { useIntegrationData, type IntegrationDataPort } from '@lssm-tech/module.integration-hub/hooks';\n\nconst port: IntegrationDataPort = {\n  listIntegrations: (input) => fetch(`/api/integrations?projectId=${input.projectId}`).then(r => r.json()),\n  listConnections:  () => fetch('/api/connections').then(r => r.json()),\n  listSyncConfigs:  () => fetch('/api/syncs').then(r => r.json()),\n};\n\nexport function IntegrationCatalog({ projectId }: { projectId: string }) {\n  const { integrations, loading, error, stats } = useIntegrationData({ projectId, port });\n\n  if (loading) return <p>Loading…</p>;\n  if (error)   return <p>Error: {error.message}</p>;\n\n  return (\n    <ul>\n      {integrations.map(i => <li key={i.id}>{i.name} — {i.status}</li>)}\n    </ul>\n  );\n}\n```\n\n### Credential setup wizard (client component)\n\n```typescript\n'use client';\nimport { useCredentialSetup } from '@lssm-tech/module.integration-hub/hooks';\nimport { buildCredentialSetupModel, type CredentialManifest } from '@lssm-tech/module.integration-hub/model';\n\nconst manifest: CredentialManifest = {\n  modes: {\n    managed: { secretFields: [{ key: 'API_KEY', required: true }] },\n    byok:    { configFields: [{ key: 'ENDPOINT', required: true }] },\n  },\n};\n\nexport function CredentialWizard() {\n  const { state, advance, reset, setMode } = useCredentialSetup();\n\n  const model = buildCredentialSetupModel({\n    mode: state.mode,\n    manifest,\n    environment: { variables: {}, targets: {} },\n    runtime: { configValues: {}, secretRefs: {}, targetIds: [] },\n  });\n\n  return (\n    <div>\n      <p>Step {state.step} / 3 — mode: {state.mode}</p>\n      <p>Missing secrets: {model.missingSecrets.length}</p>\n      <button onClick={advance}>Next</button>\n      <button onClick={reset}>Reset</button>\n    </div>\n  );\n}\n```\n\n### Rendering a markdown card (RSC-safe)\n\n```typescript\n// Works in React Server Components — no 'use client' needed\nimport { renderIntegrationMarkdown } from '@lssm-tech/module.integration-hub/renderers';\n\nexport async function IntegrationCard({ id }: { id: string }) {\n  const integration = await fetchIntegration(id);\n  const markdown = renderIntegrationMarkdown({\n    id: integration.id,\n    name: integration.name,\n    description: integration.description,\n    category: integration.category,\n    status: integration.status,\n    connectionCount: integration.connections.length,\n  });\n  return <MarkdownRenderer content={markdown} />;\n}\n```\n\n## RSC directive boundaries\n\nHooks carry `'use client'` — import them only in client components. Model types\nand the markdown renderer have no directive and are safe to import anywhere,\nincluding React Server Components. See `AGENTS.md` for the full boundary table\nand lint rules.\n\n## Deployment topology\n\n`validateIntegrationDeploymentTopology` models service operator, runtime and\ndata placement, credential custody, identity trust, API commercial mode,\nnetwork policy, residency, and evidence placement as independent axes. It is a\npure fail-closed validator: customer API keys cannot be assigned to an LSSM-only\nvault, and air-gapped profiles cannot depend on live central identity or remote\nmanaged data.\n\nThe model subpath re-exports the canonical provider-neutral topology contract\nfrom `@lssm-tech/lib.contracts-integrations`. The Hub accepts an optional\n`integration.topology-evidence` read port for a secret-free, freshness-bounded\nprovider receipt tied to an exact workspace or connection digest. Installing\nthe port does not verify the provider by itself; only an adapter that has\nverified its native durable receipt may project this evidence.\n\n## What this package does NOT include\n\n- CompanyOS-specific chrome or view-models (those live in `bundle.managed-companyos`)\n- `RedactedCredentialChip` (stays in the bundle pending second consumer)\n- Any example fixtures or mock data (see `examples/integration-hub`)\n\n## Development\n\n```bash\nbun test --cwd packages/platform/delivery/integration-hub\nbun run --cwd packages/platform/delivery/integration-hub typecheck\n```\n\n## Feature Hub profile\n\n`./hub` exports `IntegrationFeatureHub`, `defineIntegrationHub`, and\n`installIntegrationHub`. The profile uses the canonical `platform.integrations`\nfeature registry, mounts at `/integrations`, and depends only on the\nprovider-neutral `integration.catalog` and `integration.connection` ports.\nIts route catalog covers detail, connections, syncs, configuration,\ncredentials/secrets, health, audit, and installation; activation supports both\nmanaged credentials and BYOK secret references.\n`integration.topology-evidence` is optional so existing installations remain\ncompatible and missing proof remains explicit.\n","sourcePath":"packages/platform/delivery/integration-hub/README.md","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/platform/delivery/integration-hub/README.md","blobSha":"9d0aa9412f9c034a1ccec6d8617cdcd895944000","sourcePin":"bcc79fcc27c4d801c2119bef81ddcce7b4e86498","origin":"README recovered byte-for-byte from pinned aggregate guide","integrity":"exact Git blob match","executionStatus":"not executed"},"provenance":{"repository":"lssm-tech/contractspec","sourcePin":"bcc79fcc27c4d801c2119bef81ddcce7b4e86498","manifestOrigin":"pinned GitHub manifest fetch","manifestComplete":true,"publicationPolicyApplied":false},"areaSlug":"integrations-and-providers","areaTitle":"Integrations and provider selection","displayName":"module.integration-hub","runtimes":["node"],"platforms":["server"],"kind":"module","scope":"Package manifest","canonicalRoute":"/docs/packages/module.integration-hub/","contextUrl":"/docs/packages/module.integration-hub.context.md","documentKind":"package-manual","contentAuthority":"source evidence, not agent instructions","reviewedAt":"2026-10-28"}