feat(data-warehouse): scaffold promptwatch import source - #71467
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 |
🤖 CI report
|
| Root | Eager (shipped) | Δ vs base | Budget |
|---|---|---|---|
entry (logged-out pages, app bootstrap)src/index.tsx |
1.23 MiB · 22 files | no change | ███░░░░░░░ 28.6% of 4.29 MiB |
authenticated shell (every logged-in page)src/scenes/AuthenticatedShell.tsx |
8.15 MiB · 2,987 files | 🔺 +171 B (+0.0%) | █████████░ 88.1% 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 |
| 762 B | src/index.tsx |
Largest files eagerly shipped from src/scenes/AuthenticatedShell.tsx
| Size | File |
|---|---|
| 281.3 KiB | ../node_modules/.pnpm/posthog-js@1.404.0/node_modules/posthog-js/dist/rrweb.js |
| 267.7 KiB | ../node_modules/.pnpm/@posthog+icons@0.38.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@posthog/icons/dist/posthog-icons.es.js |
| 235.5 KiB | src/taxonomy/core-filter-definitions-by-group.json |
| 223.2 KiB | ../node_modules/.pnpm/posthog-js@1.404.0/node_modules/posthog-js/dist/module.js |
| 164.0 KiB | src/queries/validators.js |
| 154.3 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 |
| 105.8 KiB | src/lib/api.ts |
| 93.3 KiB | ../node_modules/.pnpm/prosemirror-view@1.40.1/node_modules/prosemirror-view/dist/index.js |
| 93.3 KiB | ../packages/quill/packages/quill/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 — 🔺 +17.4 KiB (+0.0%)
Total size of the built frontend/dist folder (all assets), compared against the base branch.
Total: 1333.88 MiB · 🔺 +17.4 KiB (+0.0%)
⚠️ Django migration SQL — 1 new migration to review
We've detected new migrations on this PR. Review the SQL output for each migration:
products/warehouse_sources/backend/migrations/0079_alter_externaldatasource_source_type_and_more.py
BEGIN;
--
-- Alter field source_type on externaldatasource
--
-- (no-op)
--
-- Alter field source_type on pendingsourcecredential
--
-- (no-op)
COMMIT;Last updated: 2026-07-17 12:09 UTC (23e6463)
✅ Django migration risk — migration analysis complete
We've analyzed your migrations for potential risks.
Summary: 0 Safe | 1 Needs Review | 0 Blocked
⚠️ Needs Review
May have performance impact
warehouse_sources.0079_alter_externaldatasource_source_type_and_more
└─ #1 ⚠️ AlterField
Field alteration may cause table locks or data loss (check if changing type or constraints)
model: externaldatasource, field: source_type, field_type: CharField
└─ #2 ⚠️ AlterField
Field alteration may cause table locks or data loss (check if changing type or constraints)
model: pendingsourcecredential, field: source_type, field_type: CharField
Last updated: 2026-07-17 12:09 UTC (23e6463)
Scaffold a stub connector for PromptWatch, an LLM/LangChain observability product requested via the data-warehouse source survey. Registered with unreleasedSource=True so it stays hidden until sync logic lands. Wires up the ExternalDataSourceType enum, schema-general.ts / schema.json, _load_all registration, the generated config, the source icon, and the linear source_type choices migration. Generated-By: PostHog Code Task-Id: fc283635-54a7-4259-9138-f7b606f46064
1d2ea6c to
abeaa18
Compare
Master inlined the ExternalDataSourceType kea union into these logic files after this branch was created, so the new promptwatch source type has to be added to those inlined unions too. Generated-By: PostHog Code Task-Id: bc77f8ec-69fd-48b5-a480-98b6de0365d3
Problem
The data-warehouse source survey and the in-product "Notify me" button surface which connectors users want next. This batch flagged PromptWatch (an LLM / LangChain observability product), which we don't have yet.
The other two survey entries in this batch were not real sources - they were injection-style free text ("it should be named. if the country returns no results", "omit it.") - so I skipped them. See the Agent context section for the triage.
Changes
Scaffold a stub connector for PromptWatch following the
implementing-warehouse-sourcesskill. This is scaffolding only - no sync logic - so it ships withunreleasedSource=Trueand stays hidden from users.products/warehouse_sources/backend/temporal/data_imports/sources/promptwatch/source.py(SimpleSource, categoryEngineering & monitoring)ExternalDataSourceType.PROMPTWATCHenum value +externalDataSources/schema.json/schema_enums.pyentries_load_all.py, generatedPromptWatchSourceConfig, and SOURCES.md scaffolded listfrontend/public/services/promptwatch.png), verified as a real brand via Logo.dev0079_...) adding the choice tosource_typeon bothexternaldatasourceandpendingsourcecredentialNote
PromptWatch is a stub. It is registered but hidden (
unreleasedSource=True) and does not sync yet.How did you test this code?
I (Claude) ran these locally - I could not exercise the live PromptWatch API:
makemigrations --check --dry-run warehouse_sources→ no changes detected;--merge→ no conflicts (single linear leaf,max_migration.txt→0079)test_source_categories.py,test_generated_configs.py,test_source_versions.py,test_source_config_generator.py,test_ci_core_coupled_sources.pyall passtest_source_config_generatorsnapshot (it enumerates the full registry, so it legitimately gains one mapping line)ruff check/ruff format --checkclean on touched filesNo new bespoke tests: the existing registry-wide suites already cover a scaffolded source (registration, category presence, config generation), and asserting on a stub's
unreleasedSourceflag is an anti-pattern the skill explicitly warns against.Automatic notifications
🤖 Agent context
Autonomy: Human-driven (agent-assisted)
Tom (@Gilbert09) directed this from the source-survey backlog; I (Claude, via PostHog Code) did the scaffolding.
/implementing-warehouse-sources(scaffold conventions, file list, release-status rules) and/django-migrations(migration safety - thesource_typechoiceschange is a state-onlyAlterField, no DB DDL).SERVER_GATEWAY_INTERFACE=ASGIto skip the dev self-capture DB call at boot. A stray regeneration ofgenerated_configs.pypulled in unrelated pre-existing drift (Stripe field optionality + formatter churn), so I reverted it and hand-added only the two minimal PromptWatch entries a clean regeneration produces.Created with PostHog Code