feat(data-warehouse): scaffold 25 new saas/ai source stubs - #69517
Conversation
|
Hey @Gilbert09! 👋 It looks like your git author email on this PR isn't your
You can fix it for this repo with: git config user.email "you@posthog.com"Or set it globally with |
🦔 Hogbox preview · ✅ ready▶ Open the preview
commit |
|
Reviews (1): Last reviewed commit: "feat(data-warehouse): scaffold 25 new sa..." | Re-trigger Greptile |
Migration SQL ChangesHey 👋, we've detected some migrations on this PR. Here's the SQL output for each migration, make sure they make sense:
|
🔍 Migration Risk AnalysisWe've analyzed your migrations for potential risks. Summary: 0 Safe | 1 Needs Review | 0 Blocked
|
🤖 CI report
|
| Root | Eager (shipped) | Δ vs base | Budget |
|---|---|---|---|
entry (logged-out pages, app bootstrap)src/index.tsx |
1.20 MiB · 22 files | no change | ███░░░░░░░ 27.9% of 4.29 MiB |
authenticated shell (every logged-in page)src/scenes/AuthenticatedShell.tsx |
8.05 MiB · 2,948 files | 🔺 +269 B (+0.0%) | █████████░ 87.0% of 9.25 MiB |
🟢 node_modules/monaco-editor/ stays out of src/index.tsx
🟢 src/lib/components/ActivityLog/describers stays out of src/index.tsx
🟢 [object Object] stays out of src/index.tsx
🟢 [object Object] stays out of src/index.tsx
🟢 node_modules/monaco-editor/ stays out of src/scenes/AuthenticatedShell.tsx
🟢 src/lib/components/ActivityLog/describers stays out of src/scenes/AuthenticatedShell.tsx
🟢 [object Object] stays out of src/scenes/AuthenticatedShell.tsx
🟢 [object Object] stays out of src/scenes/AuthenticatedShell.tsx
Largest files eagerly shipped from src/index.tsx
| Size | File |
|---|---|
| 126.8 KiB | ../node_modules/.pnpm/react-dom@18.3.1_react@18.3.1/node_modules/react-dom/cjs/react-dom.production.min.js |
| 24.6 KiB | ../node_modules/.pnpm/buffer@6.0.3/node_modules/buffer/index.js |
| 6.3 KiB | ../node_modules/.pnpm/react@18.3.1/node_modules/react/cjs/react.production.min.js |
| 4.5 KiB | ../node_modules/.pnpm/@jspm+core@2.1.0/node_modules/@jspm/core/nodelibs/browser/process.js |
| 3.9 KiB | ../node_modules/.pnpm/scheduler@0.23.2/node_modules/scheduler/cjs/scheduler.production.min.js |
| 1.4 KiB | ../node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.js |
| 1.3 KiB | src/RootErrorBoundary.tsx |
| 912 B | ../node_modules/.pnpm/ieee754@1.2.1/node_modules/ieee754/index.js |
| 789 B | src/scenes/ChunkLoadErrorBoundary.tsx |
| 668 B | src/index.tsx |
Largest files eagerly shipped from src/scenes/AuthenticatedShell.tsx
| Size | File |
|---|---|
| 277.1 KiB | ../node_modules/.pnpm/posthog-js@1.398.2/node_modules/posthog-js/dist/rrweb.js |
| 266.9 KiB | ../node_modules/.pnpm/@posthog+icons@0.37.4_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@posthog/icons/dist/posthog-icons.es.js |
| 224.6 KiB | src/taxonomy/core-filter-definitions-by-group.json |
| 213.6 KiB | ../node_modules/.pnpm/posthog-js@1.398.2/node_modules/posthog-js/dist/module.js |
| 160.9 KiB | src/queries/validators.js |
| 154.0 KiB | ../node_modules/.pnpm/re2js@0.4.1/node_modules/re2js/build/index.esm.js |
| 126.8 KiB | ../node_modules/.pnpm/react-dom@18.3.1_react@18.3.1/node_modules/react-dom/cjs/react-dom.production.min.js |
| 106.1 KiB | src/lib/api.ts |
| 93.3 KiB | ../node_modules/.pnpm/prosemirror-view@1.40.1/node_modules/prosemirror-view/dist/index.js |
| 90.5 KiB | ../node_modules/.pnpm/@tiptap+core@3.20.1_@tiptap+pm@3.20.1/node_modules/@tiptap/core/dist/index.js |
Posted automatically by check-eager-graph · sizes are eager output bytes (shipped, post-tree-shake) from the esbuild metafile · part of #32479
⚠️ Dist folder size — 🔺 +8.0 KiB (+0.0%)
Total size of the built frontend/dist folder (all assets), compared against the base branch.
Total: 1423.09 MiB · 🔺 +8.0 KiB (+0.0%)
|
👋 Visual changes detected for this PR. Review and approve in PostHog Visual Review If these changes are unexpected, they may be caused by a flaky test or a broken snapshot on master. Don't approve — rerun the job or wait for a fix. |
|
ReviewHog Alpha 🦔 If you find any issues helpful - please reply "valid", "invalid", etc., for evaluation purposes 🙏 |
There was a problem hiding this comment.
ReviewHog Report
Business logic
Files: products/warehouse_sources/backend/temporal/data_imports/sources/generated_configs.py, products/warehouse_sources/backend/temporal/data_imports/sources/_load_all.py, products/warehouse_sources/backend/temporal/data_imports/sources/SOURCES.md
What were the main changes
- Adds empty placeholder *SourceConfig classes for all 25 new sources plus corresponding SOURCE_CONFIG_MAP entries in generated_configs.py
- Registers the 25 new source modules in _load_all.py and lists them in SOURCES.md's scaffolded-sources list
- Flagged regression: StripeAuthMethodConfig's stripe_secret_key/stripe_integration_id were unintentionally changed from optional (None-default) to required, which will break existing API-key or OAuth Stripe connections when parsing their nested auth config — appears to be unrelated drift pulled in by re-running the config generator, should be reverted
Feature
Files: products/warehouse_sources/backend/temporal/data_imports/sources/aikido_security/source.py, products/warehouse_sources/backend/temporal/data_imports/sources/alguna/source.py, products/warehouse_sources/backend/temporal/data_imports/sources/anthropic/source.py, products/warehouse_sources/backend/temporal/data_imports/sources/appwrite/source.py, products/warehouse_sources/backend/temporal/data_imports/sources/bland_ai/source.py, products/warehouse_sources/backend/temporal/data_imports/sources/browse_ai/source.py, products/warehouse_sources/backend/temporal/data_imports/sources/browser_use/source.py, products/warehouse_sources/backend/temporal/data_imports/sources/charthop/source.py, products/warehouse_sources/backend/temporal/data_imports/sources/cody/source.py, products/warehouse_sources/backend/temporal/data_imports/sources/cursor/source.py, products/warehouse_sources/backend/temporal/data_imports/sources/decagon/source.py, products/warehouse_sources/backend/temporal/data_imports/sources/deepgram/source.py, products/warehouse_sources/backend/temporal/data_imports/sources/elevenlabs/source.py
Issues: 1 issue
What were the main changes
- Adds 13 stub source.py implementations (Aikido Security, Alguna, Anthropic, Appwrite, Bland AI, Browse AI, Browser Use, ChartHop, Cody, Cursor, Decagon, Deepgram, ElevenLabs) registered via SourceRegistry
- Each source is unreleasedSource=True with empty fields, so nothing is user-visible yet — icons/config fields land in follow-up per-source PRs
…k on missing source icons The regenerated StripeAuthMethodConfig incorrectly made both stripe_secret_key and stripe_integration_id required, breaking Config.from_dict() for every existing Stripe source (API-key connections lack an integration id and OAuth connections lack a secret key). Restore both to optional to match the generator output on master. The 25 new scaffolded sources reference icon PNGs that aren't shipped yet, which would render as broken images in the "coming soon" source picker. Add an onError fallback in SourceIcon so a missing icon degrades to the placeholder hedgehog. Generated-By: PostHog Code Task-Id: 65c6cedb-aadf-4f89-914d-de1c069bbe3c
7c9b3c1 to
d549e7e
Compare
User-facing doc for the new bland_ai import source (PostHog/posthog#69517 scaffold batch). Follows the canonical source-doc template with SourceParameters and SourceTables. Generated-By: PostHog Code Task-Id: 1178b870-65b2-4a27-bd23-4c260aa64789
User-facing doc for the new bland_ai import source (PostHog/posthog#69517 scaffold batch). Follows the canonical source-doc template with SourceParameters and SourceTables. Generated-By: PostHog Code Task-Id: 1178b870-65b2-4a27-bd23-4c260aa64789
Problem
Users increasingly want warehouse imports from fast-growing SaaS and AI platforms (AI coding tools, voice agents, LLM observability, usage billing). We researched a batch of high-demand vendors with confirmed public data APIs and want them scaffolded so per-source implementation PRs stay small and conflict-free on the shared enum/schema files.
Changes
Scaffolds 25 new import sources, following the same pattern as previous scaffold batches (for example #68376):
ExternalDataSourceTypeenum values plus the matchingexternalDataSourcesschema entries and regenerated schema/OpenAPI typessource.pyper source, registered withunreleasedSource=Trueand empty fields, so nothing is user-visible yet_load_all.pyimports, andSOURCES.mdscaffolded-list entries0060(choices-onlyAlterField, no DDL)Sources: Aikido Security, Alguna, Anthropic, Appwrite, Bland AI, Browse AI, Browser Use, ChartHop, Cody, Cursor, Decagon, Deepgram, ElevenLabs, Harvey, Hyperspell, Langfuse, Lingo.dev, m3ter, Maxio, Metorial, OpenRouter, Together AI, Vapi, Vespa, Writesonic.
Icons are intentionally not included; each implementation PR adds its own icon alongside the real config fields.
How did you test this code?
pytest products/warehouse_sources/backend/temporal/data_imports/sources/common/test/test_source_config_generator.py(15 passed, snapshot updated) — exercises the source registry, so all 25 stubs import and register correctlypnpm schema:build,pnpm generate:source-configs, andhogli build:openapiall run clean with no drifthogli ci:preflight --fixpasses (lint, format, migration conflict checks)No behavior change: every source is behind
unreleasedSource=Truewith empty fields.Automatic notifications
Docs update
No docs update needed: sources are unreleased stubs; user-facing docs land with each implementation PR.