{"id":"@lssm-tech/integration.provider-analytics","slug":"integration.provider-analytics","name":"@lssm-tech/integration.provider-analytics","version":"2.1.4","path":"packages/integrations/provider-analytics","manifestPath":"packages/integrations/provider-analytics/package.json","manifestBlobSha":"db262b5c983c89dfb9688be8c52f0cf4b0b83bbf","layer":"integrations","physicalArea":null,"primaryArea":"integrations-and-providers","classification":{"privateDeclared":null,"catalogFamily":"integrations","catalogKind":"integration","catalogStatus":"active","adoptionMode":"adoptable","stability":"experimental"},"description":"Analytics provider implementations for ContractSpec.","descriptionOrigin":"package.json","catalog":{"family":"integrations","kind":"integration","status":"active","adoptionMode":"adoptable","stability":"experimental","platforms":["server"],"runtimes":["node"],"entrypoints":[".","./analytics","./impls","./impls/posthog","./impls/posthog-fetch-client","./impls/posthog-lssm-capture","./impls/posthog-lssm-ports","./impls/posthog-lssm-transport","./impls/posthog-lssm-utils","./impls/posthog-reader","./impls/posthog-utils"],"documentation":[{"title":"Integration Provider Analytics documentation","url":"https://www.npmjs.com/package/%40lssm-tech%2Fintegration.provider-analytics","kind":"readme"}],"examples":[],"replacements":[],"capabilities":[{"id":"package.lssm.tech.integration.provider.analytics","title":"Integration Provider Analytics","description":"Analytics provider implementations for ContractSpec.","status":"active","useCases":["Adopt analytics provider implementations for contractspec"],"aliases":["integration","provider","analytics"],"pythonEquivalents":[],"canonicalImports":[{"from":"@lssm-tech/integration.provider-analytics","symbols":[]},{"from":"@lssm-tech/integration.provider-analytics/analytics","symbols":[]},{"from":"@lssm-tech/integration.provider-analytics/impls","symbols":[]},{"from":"@lssm-tech/integration.provider-analytics/impls/posthog","symbols":[]},{"from":"@lssm-tech/integration.provider-analytics/impls/posthog-fetch-client","symbols":[]},{"from":"@lssm-tech/integration.provider-analytics/impls/posthog-lssm-capture","symbols":[]},{"from":"@lssm-tech/integration.provider-analytics/impls/posthog-lssm-ports","symbols":[]},{"from":"@lssm-tech/integration.provider-analytics/impls/posthog-lssm-transport","symbols":[]},{"from":"@lssm-tech/integration.provider-analytics/impls/posthog-lssm-utils","symbols":[]},{"from":"@lssm-tech/integration.provider-analytics/impls/posthog-reader","symbols":[]},{"from":"@lssm-tech/integration.provider-analytics/impls/posthog-utils","symbols":[]}],"constraints":{"platforms":["server"],"runtimes":["node"],"avoidWhen":["The @lssm-tech/integration.provider-analytics package constraints do not match the target runtime or platform."],"requires":["TypeScript"]},"alternatives":[],"relationships":[],"resolutionPriority":50}]},"canonicalImports":[{"capabilityId":"package.lssm.tech.integration.provider.analytics","from":"@lssm-tech/integration.provider-analytics","symbols":[]},{"capabilityId":"package.lssm.tech.integration.provider.analytics","from":"@lssm-tech/integration.provider-analytics/analytics","symbols":[]},{"capabilityId":"package.lssm.tech.integration.provider.analytics","from":"@lssm-tech/integration.provider-analytics/impls","symbols":[]},{"capabilityId":"package.lssm.tech.integration.provider.analytics","from":"@lssm-tech/integration.provider-analytics/impls/posthog","symbols":[]},{"capabilityId":"package.lssm.tech.integration.provider.analytics","from":"@lssm-tech/integration.provider-analytics/impls/posthog-fetch-client","symbols":[]},{"capabilityId":"package.lssm.tech.integration.provider.analytics","from":"@lssm-tech/integration.provider-analytics/impls/posthog-lssm-capture","symbols":[]},{"capabilityId":"package.lssm.tech.integration.provider.analytics","from":"@lssm-tech/integration.provider-analytics/impls/posthog-lssm-ports","symbols":[]},{"capabilityId":"package.lssm.tech.integration.provider.analytics","from":"@lssm-tech/integration.provider-analytics/impls/posthog-lssm-transport","symbols":[]},{"capabilityId":"package.lssm.tech.integration.provider.analytics","from":"@lssm-tech/integration.provider-analytics/impls/posthog-lssm-utils","symbols":[]},{"capabilityId":"package.lssm.tech.integration.provider.analytics","from":"@lssm-tech/integration.provider-analytics/impls/posthog-reader","symbols":[]},{"capabilityId":"package.lssm.tech.integration.provider.analytics","from":"@lssm-tech/integration.provider-analytics/impls/posthog-utils","symbols":[]}],"scripts":{"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:check":"node ../../../scripts/biome.cjs check .","lint:fix":"node ../../../scripts/biome.cjs check --write --unsafe --only=nursery/useSortedClasses . && node ../../../scripts/biome.cjs check --write .","test":"bun test","prebuild":"contractspec-bun-build prebuild","typecheck":"tsgo --noEmit"},"scriptStatus":"complete pinned manifest","dependencies":{"@lssm-tech/integration.runtime":"workspace:^","@lssm-tech/lib.analytics":"workspace:^","@lssm-tech/lib.contracts-integrations":"workspace:^","@lssm-tech/lib.feature-flags":"workspace:^","@lssm-tech/lib.observability":"workspace:^","@lssm-tech/lib.growth-spec":"workspace:^"},"devDependencies":{"@lssm-tech/tool.bun":"workspace:*","@lssm-tech/tool.typescript":"workspace:*","@types/bun":"catalog:types","posthog-node":"catalog:integrations","typescript":"catalog:"},"peerDependencies":{},"optionalDependencies":{},"peerDependenciesMeta":{},"bundledDependencies":null,"dependencyStatus":"complete pinned manifest","exports":{".":"./src/index.ts","./analytics":"./src/analytics.ts","./impls":"./src/impls/index.ts","./impls/posthog":"./src/impls/posthog.ts","./impls/posthog-fetch-client":"./src/impls/posthog-fetch-client.ts","./impls/posthog-lssm-capture":"./src/impls/posthog-lssm-capture.ts","./impls/posthog-lssm-ports":"./src/impls/posthog-lssm-ports.ts","./impls/posthog-lssm-transport":"./src/impls/posthog-lssm-transport.ts","./impls/posthog-lssm-utils":"./src/impls/posthog-lssm-utils.ts","./impls/posthog-marketing-reports":"./src/impls/posthog-marketing-reports.ts","./impls/posthog-reader":"./src/impls/posthog-reader.ts","./impls/posthog-utils":"./src/impls/posthog-utils.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"},"./analytics":{"types":"./dist/analytics.d.ts","browser":"./dist/browser/analytics.js","bun":"./dist/analytics.js","node":"./dist/node/analytics.js","default":"./dist/analytics.js"},"./impls":{"types":"./dist/impls/index.d.ts","browser":"./dist/browser/impls/index.js","bun":"./dist/impls/index.js","node":"./dist/node/impls/index.js","default":"./dist/impls/index.js"},"./impls/posthog":{"types":"./dist/impls/posthog.d.ts","browser":"./dist/browser/impls/posthog.js","bun":"./dist/impls/posthog.js","node":"./dist/node/impls/posthog.js","default":"./dist/impls/posthog.js"},"./impls/posthog-fetch-client":{"types":"./dist/impls/posthog-fetch-client.d.ts","browser":"./dist/browser/impls/posthog-fetch-client.js","bun":"./dist/impls/posthog-fetch-client.js","node":"./dist/node/impls/posthog-fetch-client.js","default":"./dist/impls/posthog-fetch-client.js"},"./impls/posthog-lssm-capture":{"types":"./dist/impls/posthog-lssm-capture.d.ts","browser":"./dist/browser/impls/posthog-lssm-capture.js","bun":"./dist/impls/posthog-lssm-capture.js","node":"./dist/node/impls/posthog-lssm-capture.js","default":"./dist/impls/posthog-lssm-capture.js"},"./impls/posthog-lssm-ports":{"types":"./dist/impls/posthog-lssm-ports.d.ts","browser":"./dist/browser/impls/posthog-lssm-ports.js","bun":"./dist/impls/posthog-lssm-ports.js","node":"./dist/node/impls/posthog-lssm-ports.js","default":"./dist/impls/posthog-lssm-ports.js"},"./impls/posthog-lssm-transport":{"types":"./dist/impls/posthog-lssm-transport.d.ts","browser":"./dist/browser/impls/posthog-lssm-transport.js","bun":"./dist/impls/posthog-lssm-transport.js","node":"./dist/node/impls/posthog-lssm-transport.js","default":"./dist/impls/posthog-lssm-transport.js"},"./impls/posthog-lssm-utils":{"types":"./dist/impls/posthog-lssm-utils.d.ts","browser":"./dist/browser/impls/posthog-lssm-utils.js","bun":"./dist/impls/posthog-lssm-utils.js","node":"./dist/node/impls/posthog-lssm-utils.js","default":"./dist/impls/posthog-lssm-utils.js"},"./impls/posthog-marketing-reports":{"types":"./dist/impls/posthog-marketing-reports.d.ts","browser":"./dist/browser/impls/posthog-marketing-reports.js","bun":"./dist/impls/posthog-marketing-reports.js","node":"./dist/node/impls/posthog-marketing-reports.js","default":"./dist/impls/posthog-marketing-reports.js"},"./impls/posthog-reader":{"types":"./dist/impls/posthog-reader.d.ts","browser":"./dist/browser/impls/posthog-reader.js","bun":"./dist/impls/posthog-reader.js","node":"./dist/node/impls/posthog-reader.js","default":"./dist/impls/posthog-reader.js"},"./impls/posthog-utils":{"types":"./dist/impls/posthog-utils.d.ts","browser":"./dist/browser/impls/posthog-utils.js","bun":"./dist/impls/posthog-utils.js","node":"./dist/node/impls/posthog-utils.js","default":"./dist/impls/posthog-utils.js"}},"types":"./dist/index.d.ts","files":["dist","README.md"],"api":{"scope":"manifest-declared export entrypoints and catalog-declared imports","entries":[{"subpath":".","importPath":"@lssm-tech/integration.provider-analytics","target":"./src/index.ts","targets":[{"conditions":[],"target":"./src/index.ts","sourcePath":"packages/integrations/provider-analytics/src/index.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-analytics/src/index.ts","sourceStatus":"verified source file"}]},{"subpath":"./analytics","importPath":"@lssm-tech/integration.provider-analytics/analytics","target":"./src/analytics.ts","targets":[{"conditions":[],"target":"./src/analytics.ts","sourcePath":"packages/integrations/provider-analytics/src/analytics.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-analytics/src/analytics.ts","sourceStatus":"verified source file"}]},{"subpath":"./impls","importPath":"@lssm-tech/integration.provider-analytics/impls","target":"./src/impls/index.ts","targets":[{"conditions":[],"target":"./src/impls/index.ts","sourcePath":"packages/integrations/provider-analytics/src/impls/index.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-analytics/src/impls/index.ts","sourceStatus":"verified source file"}]},{"subpath":"./impls/posthog","importPath":"@lssm-tech/integration.provider-analytics/impls/posthog","target":"./src/impls/posthog.ts","targets":[{"conditions":[],"target":"./src/impls/posthog.ts","sourcePath":"packages/integrations/provider-analytics/src/impls/posthog.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-analytics/src/impls/posthog.ts","sourceStatus":"verified source file"}]},{"subpath":"./impls/posthog-fetch-client","importPath":"@lssm-tech/integration.provider-analytics/impls/posthog-fetch-client","target":"./src/impls/posthog-fetch-client.ts","targets":[{"conditions":[],"target":"./src/impls/posthog-fetch-client.ts","sourcePath":"packages/integrations/provider-analytics/src/impls/posthog-fetch-client.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-analytics/src/impls/posthog-fetch-client.ts","sourceStatus":"verified source file"}]},{"subpath":"./impls/posthog-lssm-capture","importPath":"@lssm-tech/integration.provider-analytics/impls/posthog-lssm-capture","target":"./src/impls/posthog-lssm-capture.ts","targets":[{"conditions":[],"target":"./src/impls/posthog-lssm-capture.ts","sourcePath":"packages/integrations/provider-analytics/src/impls/posthog-lssm-capture.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-analytics/src/impls/posthog-lssm-capture.ts","sourceStatus":"verified source file"}]},{"subpath":"./impls/posthog-lssm-ports","importPath":"@lssm-tech/integration.provider-analytics/impls/posthog-lssm-ports","target":"./src/impls/posthog-lssm-ports.ts","targets":[{"conditions":[],"target":"./src/impls/posthog-lssm-ports.ts","sourcePath":"packages/integrations/provider-analytics/src/impls/posthog-lssm-ports.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-analytics/src/impls/posthog-lssm-ports.ts","sourceStatus":"verified source file"}]},{"subpath":"./impls/posthog-lssm-transport","importPath":"@lssm-tech/integration.provider-analytics/impls/posthog-lssm-transport","target":"./src/impls/posthog-lssm-transport.ts","targets":[{"conditions":[],"target":"./src/impls/posthog-lssm-transport.ts","sourcePath":"packages/integrations/provider-analytics/src/impls/posthog-lssm-transport.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-analytics/src/impls/posthog-lssm-transport.ts","sourceStatus":"verified source file"}]},{"subpath":"./impls/posthog-lssm-utils","importPath":"@lssm-tech/integration.provider-analytics/impls/posthog-lssm-utils","target":"./src/impls/posthog-lssm-utils.ts","targets":[{"conditions":[],"target":"./src/impls/posthog-lssm-utils.ts","sourcePath":"packages/integrations/provider-analytics/src/impls/posthog-lssm-utils.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-analytics/src/impls/posthog-lssm-utils.ts","sourceStatus":"verified source file"}]},{"subpath":"./impls/posthog-marketing-reports","importPath":"@lssm-tech/integration.provider-analytics/impls/posthog-marketing-reports","target":"./src/impls/posthog-marketing-reports.ts","targets":[{"conditions":[],"target":"./src/impls/posthog-marketing-reports.ts","sourcePath":"packages/integrations/provider-analytics/src/impls/posthog-marketing-reports.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-analytics/src/impls/posthog-marketing-reports.ts","sourceStatus":"verified source file"}]},{"subpath":"./impls/posthog-reader","importPath":"@lssm-tech/integration.provider-analytics/impls/posthog-reader","target":"./src/impls/posthog-reader.ts","targets":[{"conditions":[],"target":"./src/impls/posthog-reader.ts","sourcePath":"packages/integrations/provider-analytics/src/impls/posthog-reader.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-analytics/src/impls/posthog-reader.ts","sourceStatus":"verified source file"}]},{"subpath":"./impls/posthog-utils","importPath":"@lssm-tech/integration.provider-analytics/impls/posthog-utils","target":"./src/impls/posthog-utils.ts","targets":[{"conditions":[],"target":"./src/impls/posthog-utils.ts","sourcePath":"packages/integrations/provider-analytics/src/impls/posthog-utils.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-analytics/src/impls/posthog-utils.ts","sourceStatus":"verified source file"}]}],"entryCount":12,"namedSymbolCoverage":"catalog declarations only; exhaustive TypeScript symbols not extracted","installationStatus":"not verified"},"docsLinks":[{"title":"Integration Provider Analytics documentation","url":"https://www.npmjs.com/package/%40lssm-tech%2Fintegration.provider-analytics","kind":"readme","pinnedUrl":null,"sourceStatus":"declared link; destination not verified"}],"sourceUrls":{"package":"https://github.com/lssm-tech/contractspec/tree/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-analytics","manifest":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-analytics/package.json","readme":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-analytics/README.md","guide":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/apps/web-landing/public/llms-packages/integration.provider-analytics.txt"},"readme":{"status":"available","body":"# @lssm-tech/integration.provider-analytics\n\nWebsite: https://contractspec.io\n\nAnalytics provider implementations for ContractSpec.\n\n## Usage\n\nImport the root entrypoint for the domain surface, or import a concrete implementation from the `./impls/*` subpaths.\n\n`PosthogLssmPorts` is the canonical initial adapter for the vendor-neutral\nanalytics, OTel observability, error-reporting, feature-flag, and experiment\nports. It defaults to PostHog EU, supports US and explicit self-hosted profiles,\nuses tenant/workspace groups, disables implicit flag exposure events, and\nbuffers capture behind bounded retries and a circuit breaker. Secret, prompt,\nbody, webhook/MCP payload, and personal fields are removed by default.\nTenant, workspace, and organization identifiers are omitted from event\nproperties; configured PostHog group keys remain available only as\nproject-scoped pseudonyms. Unknown-consent non-personal capture requires an\nexplicit property or targeting-attribute allowlist, normalizes sensitive-key\naliases with Unicode compatibility folding before redaction, and pseudonymizes\nfeature-flag subject keys before the provider boundary.\n\nManual errors now use PostHog's canonical `$exception_list` and\n`$exception_fingerprint` fields without transmitting raw messages or stacks.\nExperiment allocations emit the canonical `$feature_flag_called` exposure\nevent with `$feature_flag` and `$feature_flag_response`; the adapter no longer\nuses a legacy custom exposure event. PostHog remains an analysis projection and\nnever satisfies Connect or promotion authority by itself.\n\n## Compatibility\n\nThis package owns the analytics implementation slice split out of `@lssm-tech/integration.providers-impls`. The legacy package continues to re-export these subpaths for existing consumers.\n\n\n## Marketing warehouse reports\n\n`impls/posthog-marketing-reports` implements the library-owned metric report source.\nIts authority callback validates actor/brand/campaign access, authoritative metric source\nand freshness policy, then supplies a project-bound PosthogAnalyticsReader query method\nand a qualified projection name. All request values use HogQL placeholders.\n\nThe projection must expose `tenant_id`, `workspace_id`, `brand_id`, `campaign_ref`,\n`metric`, `grain`, `source`, `period_start`, `period_end` and `observation_json`. The last\ncolumn contains the complete MarketingObservation JSON contract, including attribution,\ncurrency, revision, coverage and evidence digest. Map native advertising imports into\nthis versioned projection; preserve one owner per metric grain and source-event identity.\nDo not combine platform and first-party attribution in the same rows.\n\nThe reader rejects foreign scope, malformed rows, schema drift, explicit truncation and\nresults above 10,000 rows. Split large reports into explicit qualified periods. Empty\nresults remain missing in the reporting runtime. Installation-specific warehouse view\ncreation, native-source mappings and live project qualification remain required.\n\nHogQL constant binding follows the [official query schema](https://github.com/PostHog/posthog/blob/master/frontend/src/queries/schema/schema-general.ts);\nthis adapter reuses the existing query API reader and does not copy warehouse ingestion.\n\n\nThe pure-fetch PostHog client binds requests to its configured origin, rejects credential\nheader overrides and redirects, and bounds response reads to 5 MB with a 30-second\ntimeout. API errors expose status only; malformed success JSON fails instead of being\nreturned as a typed result. HTTPS is required except for explicit loopback development.\n","sourcePath":"packages/integrations/provider-analytics/README.md","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-analytics/README.md","blobSha":"0b68a5a58513592de8fd00fa56f606fe3a008057","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":"integration.provider-analytics","runtimes":["node"],"platforms":["server"],"kind":"integration","scope":"Package manifest","canonicalRoute":"/docs/packages/integration.provider-analytics/","contextUrl":"/docs/packages/integration.provider-analytics.context.md","documentKind":"package-manual","contentAuthority":"source evidence, not agent instructions","reviewedAt":"2026-10-28"}