Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
577 commits
Select commit Hold shift + click to select a range
8ab581c
fix(ci): exclude quill-charts from agent-console build filter
mendral-app[bot] Jun 8, 2026
0d4c956
refactor(ci): use `@posthog/quill...` instead of an explicit allowlist
benjackwhite Jun 8, 2026
e8c3129
feat(agents): slack BYO + concierge native writes + console history &…
benjackwhite Jun 8, 2026
4cf8d93
feat(agents): slack trigger gains mention_only, auto_resume_threads, …
benjackwhite Jun 8, 2026
c3b2623
fix(agents): breadcrumb 'Agents' link routes to /agents not /
benjackwhite Jun 8, 2026
c9b44a8
fix(agent-migrations): serialize migrate() across processes + survive…
benjackwhite Jun 8, 2026
46950ec
feat(agents): teach concierge about slack-trigger behavioral fields
benjackwhite Jun 8, 2026
b3dba7b
feat(agents): preview-token response describes endpoints + auth contract
benjackwhite Jun 8, 2026
101a6c9
feat(agents): structured logging for slack trigger ack_reaction path
benjackwhite Jun 8, 2026
d92b182
docs(agents): concierge skill flags reactions:write when ack_reaction…
benjackwhite Jun 8, 2026
9ffa23a
feat(agents): janitor validate surfaces non-blocking warnings for orp…
benjackwhite Jun 8, 2026
6f0ae23
refactor(agents): stop self-migrating; dedicated migrator owns the sc…
benjackwhite Jun 8, 2026
c9c8ca6
feat(agents): janitor compiles custom-tool source.ts at freeze
benjackwhite Jun 8, 2026
b9d0c01
feat(agent-runner): default sandboxHostImage to the local dev tag und…
benjackwhite Jun 8, 2026
0a1cb14
feat(agents): enforce custom-tool runtime shape at freeze + reject ha…
benjackwhite Jun 8, 2026
07bb960
feat(agents): notify slack thread on terminal session failure
benjackwhite Jun 8, 2026
a8d3c8d
feat(agents): replace live-now panel with per-agent stat rows on agen…
benjackwhite Jun 8, 2026
74e9ad3
feat(agents): typed bundle authoring API + AST tool shape check
benjackwhite Jun 8, 2026
99dc96f
chore(agents): upgrade agent-console storybook to v10 + navigable shell
benjackwhite Jun 8, 2026
b8a3200
feat(agents): redesign config panel + richer bundle file viewer
benjackwhite Jun 8, 2026
66d5371
fix(agents): freeze deadlock — janitor returns derived spec; Django s…
benjackwhite Jun 8, 2026
2c74a84
feat(agents): interactive client tools — park session + resume via /send
benjackwhite Jun 8, 2026
fd42c0f
fix(agents): stop leaking concierge fixture fallback into real sessions
benjackwhite Jun 8, 2026
330f07a
refactor(agents): keep fixture runner out of production code paths
benjackwhite Jun 8, 2026
4ba81e4
fix(agents): stop ConciergeDock from remounting on every agent naviga…
benjackwhite Jun 8, 2026
b53a3a9
refactor(agents): consolidate concierge dock header into fewer controls
benjackwhite Jun 8, 2026
a2d4648
refactor(agents): multi-line concierge dock header + focus indicator …
benjackwhite Jun 8, 2026
7b07f2d
refactor(agents): redesigned two-row dock header
benjackwhite Jun 8, 2026
e44c610
style(agents): add thin divider between dock header rows
benjackwhite Jun 8, 2026
a241fe8
style(agents): make dock header row divider full-width
benjackwhite Jun 8, 2026
56fb552
feat(agents): tab count badges + idle-listener-stop TODO
benjackwhite Jun 8, 2026
80e26fc
feat(agents): approvals UI + tab count badges + small fixes
benjackwhite Jun 8, 2026
5054c2f
feat(agents): approvals UI + tab count badges + small fixes
benjackwhite Jun 8, 2026
3af1696
feat(agents): paginate sessions tab with load-more
benjackwhite Jun 8, 2026
d1428ec
feat(agents): accept requires_approval on native + custom tools in sp…
benjackwhite Jun 8, 2026
f826945
feat(agents): minimal /healthz liveness server for agent-runner
benjackwhite Jun 9, 2026
95fb28e
chore(agents): line up local agent ports; runner health default 8083
benjackwhite Jun 9, 2026
1adda5d
feat(agents): slack thread participant control + rejection replies
benjackwhite Jun 9, 2026
4095f6f
chore(docs): move shipped plans to `plans/shipped/` and update roadma…
benjackwhite Jun 9, 2026
89e1574
feat(agents): move agent platform to a dedicated Django product DB
benjackwhite Jun 9, 2026
45e1a7b
fix(agents): concierge authors via native tools, drop the MCP server
benjackwhite Jun 9, 2026
821846d
fix(agents): slack manifest — PAT scope + console interactivity gate
benjackwhite Jun 10, 2026
746a691
fix(agents): persist derived spec on janitor freeze
benjackwhite Jun 10, 2026
0b6f02a
chore(agents): align concierge example with current tool surface
benjackwhite Jun 10, 2026
7937d0d
chore(agents): drop agent activity-log wiring; use get_from_env for s…
benjackwhite Jun 10, 2026
c0b37bd
chore: update OpenAPI generated types
tests-posthog[bot] Jun 10, 2026
1a41f74
chore: update OpenAPI generated types
tests-posthog[bot] Jun 10, 2026
a279bfa
feat(agents): sre bot runbook memory with approval-gated curation
benjackwhite Jun 10, 2026
9008809
test(mcp): update unit test snapshots
tests-posthog[bot] Jun 10, 2026
ad589e7
fix(agents): review fixes — janitor URL, freeze guard, MCP secret exp…
benjackwhite Jun 10, 2026
b641e28
feat(agents): gate agent-platform MCP tools behind agent-platform-mcp…
benjackwhite Jun 10, 2026
bb85df5
chore: update OpenAPI generated types
tests-posthog[bot] Jun 10, 2026
fddc342
chore: update OpenAPI generated types
tests-posthog[bot] Jun 10, 2026
43d3120
feat(agents): register agent-platform-mcp feature flag
benjackwhite Jun 10, 2026
8b3f631
fix(agents): restore agent-platform-mcp MCP gate
benjackwhite Jun 10, 2026
e16d474
chore: update OpenAPI generated types
tests-posthog[bot] Jun 10, 2026
f0a8c56
chore: update OpenAPI generated types
tests-posthog[bot] Jun 10, 2026
326544b
chore(agents): enable flag-gated MCP tools against a local API
benjackwhite Jun 10, 2026
a16d6b3
feat(agents): store skills as skills/<id>/SKILL.md, drop companion files
benjackwhite Jun 10, 2026
3dccbe3
test(mcp): update unit test snapshots
tests-posthog[bot] Jun 10, 2026
62d738f
chore: update OpenAPI generated types
tests-posthog[bot] Jun 10, 2026
18daa4f
chore(agents): fix agent_platform product:lint (package.json, tach, d…
benjackwhite Jun 10, 2026
a339974
fix(agents): constrain agent slug at model, serializer, and preview-p…
benjackwhite Jun 10, 2026
e5fac9a
chore(mcp): reconcile stale tool-schema snapshots
benjackwhite Jun 10, 2026
b210a2c
feat(agents): domain-mode aware agent-ingress URLs
benjackwhite Jun 10, 2026
31d462e
feat(agents): add agent platform Django product (models, API, config)
benjackwhite Jun 10, 2026
185b9bd
chore(agents): quiet agent-ingress boot log when no public url set
benjackwhite Jun 10, 2026
235e0d6
chore: update OpenAPI generated types
tests-posthog[bot] Jun 10, 2026
f4b8679
chore: update OpenAPI generated types
tests-posthog[bot] Jun 10, 2026
9433d3a
feat(agents): unify agent config into a filesystem explorer
benjackwhite Jun 10, 2026
b082837
fix(mcp): preserve category-level feature_flag through scaffold-yaml
benjackwhite Jun 10, 2026
a8fa446
fix(agents): add padding to agent.md viewer in config explorer
benjackwhite Jun 10, 2026
ce7e726
fix(mcp): gate agent-platform tools behind agent-platform-mcp flag
benjackwhite Jun 10, 2026
fd2d703
feat(agents): scope auth to triggers, enforce every auth mode
benjackwhite Jun 10, 2026
c53c1e3
fix(agents): repair broken tests across agent services
benjackwhite Jun 10, 2026
742cc1e
fix(agents): build MCP connect URL per routing mode
benjackwhite Jun 10, 2026
20ebd55
feat(agents): per-trigger auth + domain-mode ingress URLs
benjackwhite Jun 10, 2026
41b294e
fix(ci): register agent_platform models in IDOR semgrep rules
benjackwhite Jun 10, 2026
3fb81cd
fix(ci): register agent_platform models in IDOR semgrep rules
benjackwhite Jun 10, 2026
aae486d
feat(agents): mode-aware trigger usage URLs + fold limits into model
benjackwhite Jun 10, 2026
d4bc576
fix(agents): satisfy mypy in missing_required_secrets
benjackwhite Jun 10, 2026
6c684e6
fix(agents): satisfy mypy in missing_required_secrets
benjackwhite Jun 10, 2026
337061b
fix(agents): clarify selection and auto-expand in config explorer tree
benjackwhite Jun 10, 2026
ef16fbf
feat(agents): log every ingress HTTP request
benjackwhite Jun 10, 2026
40da5a6
fix(agents): log workspace when slack event rejected as untrusted
benjackwhite Jun 10, 2026
98bff73
fix(agents): resolve chat/mcp trigger config default for zod typecheck
benjackwhite Jun 10, 2026
2f59d5c
fix(agents): resolve chat/mcp trigger config default for zod typecheck
benjackwhite Jun 10, 2026
dd455bf
chore(agents): plan ingress decision logs surfaced to the agent
benjackwhite Jun 10, 2026
4112bde
feat(agents): add nightly fleet-audit cron to the concierge
benjackwhite Jun 10, 2026
87b486e
chore(agents): pull live sre-slack-bot spec (trusted workspace fix)
benjackwhite Jun 10, 2026
43f7f75
fix(agents): derive skill description from SKILL.md frontmatter
benjackwhite Jun 10, 2026
4c739b7
fix(agents): make approval store mandatory and fail-closed
benjackwhite Jun 10, 2026
fcc9b0e
fix(agents): record approval decider by user uuid, not integer pk
benjackwhite Jun 10, 2026
0821bd4
feat(agents): clickable console deep link for approval requests
benjackwhite Jun 10, 2026
79b511e
feat(agents): route LLM observability into each agent's own project
benjackwhite Jun 10, 2026
75d295e
feat(agents): link the console out to AI observability per agent + se…
benjackwhite Jun 10, 2026
8859303
feat(agents): AI observability dashboard in the console (fleet + per-…
benjackwhite Jun 10, 2026
243bd4a
Merge branch 'master' into agent-platform-django-base
benjackwhite Jun 11, 2026
d45f304
fix(agents): drop ai_gateway scope from console OAuth request (tempor…
benjackwhite Jun 11, 2026
4ecb76f
Merge agent-platform-django-base (master catch-up) into ass
benjackwhite Jun 11, 2026
a131161
fix(agents): post-merge fixups — tool-filtering count + console ai_ga…
benjackwhite Jun 11, 2026
5c39f2a
fix(agents): repair pre-existing CI breaks surfaced by the master merge
benjackwhite Jun 11, 2026
474d7de
fix(agents): unblock agent-console build (quill-charts + registry stub)
benjackwhite Jun 11, 2026
71bddec
fix(ci): build @posthog/quill-charts in agent-console CI jobs
benjackwhite Jun 11, 2026
dc24e1a
fix(ci): set AGENT_INTERNAL_SIGNING_KEY in the agent bundle smoke test
benjackwhite Jun 11, 2026
d792dec
fix(agents): restore dropped enum override + shim __filename in agent…
benjackwhite Jun 11, 2026
613faaa
chore(agents): ruff-format agent_platform 0002 migration
benjackwhite Jun 11, 2026
a4e5f91
fix(ci): drop the removed migrate entrypoint from the agents smoke test
benjackwhite Jun 11, 2026
c82675c
chore(agents): fix stale approval_url assertions in e2e tests
benjackwhite Jun 11, 2026
b0cd2f1
chore: update OpenAPI generated types
tests-posthog[bot] Jun 11, 2026
661346d
feat(agent_platform): apply opt-in SSL options to product-DB connections
claude Jun 11, 2026
93bccbd
refactor(agent_platform): scope product-DB SSL options per product
claude Jun 11, 2026
424efae
fix(agent_platform): bypass egress proxy for internal janitor/ingress…
claude Jun 11, 2026
c7045b0
fix(agents): console post-login redirect to CONSOLE_BASE_URL, not req…
benjackwhite Jun 11, 2026
263ded9
fix(agents): surface agents API scope in PAT UI behind platform flag
benjackwhite Jun 12, 2026
4ef58c6
fix(agents): surface agents API scope in PAT UI behind platform flag
benjackwhite Jun 12, 2026
33e7adc
chore(agents): restructure agent_platform into canonical product layo…
benjackwhite Jun 12, 2026
48a217a
chore(mcp): fix stale required-flags count in tool-filtering test
benjackwhite Jun 12, 2026
29d2a1e
refactor(agent_platform): scope product-DB sslmode to direct alias on…
benjackwhite Jun 12, 2026
702a0dd
chore(agents): allowlist agent_platform presentation imports in impor…
benjackwhite Jun 12, 2026
22fd3dc
chore(agents): move agent settings into posthog/settings/agents.py
benjackwhite Jun 12, 2026
579dfb3
chore(agents): colocate internal-jwt helpers in the agent_platform pr…
benjackwhite Jun 12, 2026
873f9b2
feat(agents): global agent slug namespace with server-minted slugs
benjackwhite Jun 12, 2026
e657d45
feat(agents): resolve ingress agents by slug globally, derive session…
benjackwhite Jun 12, 2026
0ac9d26
fix(agents): posthog data tools act as the calling user, not the agen…
benjackwhite Jun 12, 2026
73ee18e
fix(agents): domain-mode-aware console proxy + dock assumes concierge…
benjackwhite Jun 12, 2026
7aaf1e4
Merge remote-tracking branch 'origin/master' into agent-platform-djan…
benjackwhite Jun 12, 2026
d52c667
Merge remote-tracking branch 'origin/agent-platform-django-base' into…
benjackwhite Jun 12, 2026
feb3015
feat(agents): global agent slug namespace with server-minted slugs
benjackwhite Jun 12, 2026
fbe6d46
Merge remote-tracking branch 'origin/agent-platform-django-base' into…
benjackwhite Jun 12, 2026
dc5f3a0
chore(agents): drop duplicate slug-minting test (moved to backend/tes…
benjackwhite Jun 12, 2026
7bc4599
test(mcp): update unit test snapshots
tests-posthog[bot] Jun 12, 2026
33c9c2f
test(mcp): update unit test snapshots
tests-posthog[bot] Jun 12, 2026
7cd05ad
fix(agents): don't request client SSL for in-cluster pgbouncer DB hosts
benjackwhite Jun 12, 2026
9f7474c
fix(agents): console domain proxy dials agent public domain directly
benjackwhite Jun 12, 2026
e570c98
refactor(agents): inline DropdownMenuTrigger props in DockHeader
dmarticus Jun 11, 2026
efcc8b8
fix(agents): recover from drifted source spec in clone_from + put_bundle
dmarticus Jun 11, 2026
b94f43b
fix(agents): keep agent-console transcript in chat order on mid-strea…
dmarticus Jun 11, 2026
a940fc0
fix(mcp): bump required feature flag count to 17
dmarticus Jun 12, 2026
5aec048
test(snowflake): merge duplicate non-retryable test classes
dmarticus Jun 12, 2026
9ea12cf
Merge agent-platform-django-base into ass
dmarticus Jun 12, 2026
3aa818f
fix(agents): repair stale CI references on the PR branch
dmarticus Jun 12, 2026
c7201ef
fix(quill): restore ghost button variant
dmarticus Jun 12, 2026
ef5e005
fix(frontend): satisfy strict quill types in scene menu bar + taxonom…
dmarticus Jun 12, 2026
9cbd7af
fix(ci): don't fail storybook flake check when no main-storybook test…
dmarticus Jun 12, 2026
05bb6f4
test(agents): authenticate posthog principal for native-tool e2e cases
dmarticus Jun 14, 2026
ed7d561
test(snowflake): align non-retryable test order with master
dmarticus Jun 14, 2026
9f75a74
fix(agents): clear mypy + semgrep findings surfaced by the green pipe…
dmarticus Jun 14, 2026
ba13c92
chore(agents): drop design-plan docs and dead pointers from the PR
dmarticus Jun 14, 2026
5e5a4c6
chore(agents): describe agent-tunnel + start-ai-gateway hogli commands
dmarticus Jun 14, 2026
0603f1e
Merge branch 'master' into agent-platform-django-base
dmarticus Jun 15, 2026
2c2b509
Merge branch 'master' into agent-platform-django-base
benjackwhite Jun 15, 2026
b31f682
fix(agents): authenticate chat cancel/listen/client_tool_result + val…
benjackwhite Jun 15, 2026
7d08353
feat(agents): document agent endpoints in console overview + config
benjackwhite Jun 15, 2026
5d126ff
Merge remote-tracking branch 'origin/agent-platform-django-base' into…
benjackwhite Jun 15, 2026
7274b60
refactor(agents): drive ingress route auth from one declarative guard
benjackwhite Jun 15, 2026
e38c44e
Merge remote-tracking branch 'origin/master' into agent-platform-djan…
benjackwhite Jun 15, 2026
e7884c2
Merge remote-tracking branch 'origin/agent-platform-django-base' into…
benjackwhite Jun 15, 2026
87c6e6d
chore(agents): ruff-format data_stores.py after master merge
benjackwhite Jun 15, 2026
e63e8d9
chore(agents): ruff-format data_stores.py after master merge
benjackwhite Jun 15, 2026
21f196a
fix(agents): drop server-derived limits from sre-slack-bot example spec
benjackwhite Jun 15, 2026
308b685
Merge branch 'master' into agent-platform-django-base
benjackwhite Jun 15, 2026
0dfea5e
chore(agents): validate the concierge — catalog tool, drop cron, Slac…
benjackwhite Jun 15, 2026
8c72883
fix(agents): surface janitor structured errors in the API detail
benjackwhite Jun 15, 2026
ba56632
Merge agent-platform-django-base into ass
dmarticus Jun 15, 2026
68533e5
chore(agents): co-locate agent platform under products/agent_platform…
benjackwhite Jun 15, 2026
5d85922
Merge remote-tracking branch 'origin/master' into ass-merge-fix-v2
dmarticus Jun 15, 2026
edcc6bd
fix(agents): correct sync-api-schema REPO_ROOT walk-up after colocation
dmarticus Jun 15, 2026
cdde002
chore(agents): make agent_platform service CLAUDE.md files symlinks t…
dmarticus Jun 15, 2026
fae4770
Merge branch 'master' into ass
dmarticus Jun 16, 2026
3da55ca
feat(agents): relay slack-triggered agent replies into the thread (#6…
benjackwhite Jun 16, 2026
4d38442
chore(agents): drop dead agent-runtime-queue scope from migrate-entry
dmarticus Jun 16, 2026
a0ec771
chore(agents): colocate local-dev.md with the product
dmarticus Jun 16, 2026
7ba4f77
chore(agents): drop dead docs/agent-platform/plans/* pointers
dmarticus Jun 16, 2026
6edb4b0
test(backend): update query snapshots
tests-posthog[bot] Jun 16, 2026
25172f0
Merge remote-tracking branch 'origin/master' into ass-merge-fix-v2
dmarticus Jun 16, 2026
94633e8
test(backend): update query snapshots
tests-posthog[bot] Jun 16, 2026
e343f90
Merge branch 'master' into ass
dmarticus Jun 16, 2026
2cb4109
fix(agent-console): correct repo root path in setup-local-env
benjackwhite Jun 16, 2026
134f7a5
fix(agent-platform): fail closed at config-load for required service …
benjackwhite Jun 16, 2026
bf2014b
feat(agents): manual cron trigger + session trigger-source visibility…
benjackwhite Jun 16, 2026
573f48c
chore(ci): gate agent image build/deploy behind CD_DEPLOY_ENABLED (#6…
benjackwhite Jun 16, 2026
c3aab0e
chore(dev): exclude agent_platform node services from backend reload …
benjackwhite Jun 16, 2026
d4c55b3
chore(agent-platform): document why dev OAuth setup is hard (#63954)
benjackwhite Jun 16, 2026
5e68c7f
fix(agent-platform): reject PATs on approval-decide when agent approv…
benjackwhite Jun 16, 2026
a08847a
fix(agent-platform): require explicit console team allowlist in prod …
benjackwhite Jun 16, 2026
2e33b6e
fix(agent-platform): recompute bundle sha256 from bytes at freeze (#6…
benjackwhite Jun 16, 2026
ad61458
fix(agent-platform): require uuid application_id on janitor memory ro…
benjackwhite Jun 16, 2026
ee2b599
fix(agent-platform): add tenant-scoped reads for approval + revision …
benjackwhite Jun 16, 2026
50875c4
fix(agent-platform): redact token query params from ingress access lo…
benjackwhite Jun 16, 2026
c517398
fix(agent-platform): harden slack signature ts + make elevation decis…
benjackwhite Jun 16, 2026
8d53019
fix(agent-platform): pin http-request/web-fetch to http(s) schemes (#…
benjackwhite Jun 16, 2026
5d138c1
fix(agent-platform): add per-caller binding to shared_secret principa…
benjackwhite Jun 16, 2026
98520ca
fix(agent-platform): enforce team match in posthog auth verifier (#63…
benjackwhite Jun 16, 2026
1da5d1a
fix(agent-platform): lock down custom-tool sandbox egress (#63922)
benjackwhite Jun 16, 2026
b7c6d53
feat(agent-platform): add Slack DM support to agent triggers (#63921)
benjackwhite Jun 16, 2026
b5a1a5c
feat(agent-platform): approval detail panel with embedded session (#6…
benjackwhite Jun 16, 2026
4a20855
fix(agent-platform): bind chat session ownership to the resolved agen…
benjackwhite Jun 16, 2026
bc12dbb
feat(agents): surface refresh controls in console session + config vi…
benjackwhite Jun 16, 2026
d4d01fc
feat(agents): stop button interrupts in-flight inference (#62774)
benjackwhite Jun 16, 2026
a26db5c
test(mcp): update unit test snapshots
tests-posthog[bot] Jun 16, 2026
bccbc6d
chore(agent-platform): oxfmt the auto-merged files on the integration…
benjackwhite Jun 16, 2026
3beea6d
fix(agent-platform): authenticate posthog principal in real-inference…
benjackwhite Jun 16, 2026
08f81ab
Merge remote-tracking branch 'origin/master' into ass
dmarticus Jun 16, 2026
55adf99
Merge branch 'ass' into agent-platform
dmarticus Jun 16, 2026
1c17924
chore(agent-platform): scope PATs in approval-decide tests so they re…
dmarticus Jun 16, 2026
098f99e
fix(agent_platform): don't split emoji surrogate pairs in session pre…
benjackwhite Jun 16, 2026
002caeb
fix(agent-platform): address veria/greptile feedback on rollup securi…
dmarticus Jun 16, 2026
d95c9c1
fix(agent-platform): close consistency gaps from rollup-PR greptile r…
dmarticus Jun 16, 2026
1ed0bf6
chore(agent-platform): parameterize tests flagged by greptile across …
dmarticus Jun 16, 2026
2be4ca2
chore: update OpenAPI generated types
tests-posthog[bot] Jun 16, 2026
f13dc66
chore(agent-platform): regenerate openapi + MCP snapshots for sandbox…
dmarticus Jun 16, 2026
6c0eebd
Merge branch 'master' into agent-platform
dmarticus Jun 16, 2026
a55a0a4
fix(agent-platform): bind http-request secrets to per-secret host all…
dmarticus Jun 16, 2026
1825345
chore: update OpenAPI generated types
tests-posthog[bot] Jun 16, 2026
5bf0280
fix(agent-platform): drop self-asserted caller_id from shared_secret …
dmarticus Jun 16, 2026
38aeef2
test(mcp): update unit test snapshots
tests-posthog[bot] Jun 16, 2026
e77a3b8
fix(agent-platform): bind sre-slack-bot example secrets to host allow…
dmarticus Jun 16, 2026
94bca43
feat(agent-platform): catch unbound secret references at freeze
dmarticus Jun 16, 2026
5ebfbb9
Merge remote-tracking branch 'origin/master' into agent-platform
dmarticus Jun 16, 2026
52a0a55
Merge branch 'master' into agent-platform
dmarticus Jun 16, 2026
1166e15
fix(integrations): unblock typecheck on SlackIntegration story
dmarticus Jun 16, 2026
75ce7f4
chore(deps): dedupe pnpm-lock.yaml after master merge
dmarticus Jun 16, 2026
8bc58dd
Merge branch 'master' into agent-platform
dmarticus Jun 16, 2026
df18bcd
Merge branch 'master' into agent-platform
dmarticus Jun 16, 2026
7e0bbbc
Merge branch 'master' into agent-platform
dmarticus Jun 16, 2026
2bcdb7c
fix(agent-platform): default AGENT_INGRESS_PUBLIC_URL to localhost in…
dmarticus Jun 16, 2026
c166057
Merge branch 'master' into agent-platform
dmarticus Jun 16, 2026
a2e4069
feat(agent-platform): allow OAuth bearer with agent_approvals:write s…
dmarticus Jun 16, 2026
b355161
Merge branch 'master' into agent-platform
dmarticus Jun 17, 2026
cd769d1
feat(agent-platform): suppress approval-URL prose for posthog-code cl…
dmarticus Jun 17, 2026
eafae69
Merge remote-tracking branch 'origin/master' into agent-platform
benjackwhite Jun 17, 2026
6aa0610
fix(deps): pin @smithy/node-http-handler to 4.4.9
benjackwhite Jun 17, 2026
9e31f77
feat(agent_platform): rename feature flag agent-platform-mcp → agent-…
benjackwhite Jun 17, 2026
80f7dfc
fix(agent_platform): run @posthog/query as the connected user; drop t…
benjackwhite Jun 17, 2026
f1497e6
feat(agent-platform): remove agent-console + agent-chat (moved to Pos…
benjackwhite Jun 17, 2026
a6d5cab
fix(agent-platform): veria findings + consolidate HTTP tools
benjackwhite Jun 17, 2026
45fa591
Merge remote-tracking branch 'origin/agent-platform' into agent-platform
benjackwhite Jun 17, 2026
ccdbed2
feat(agent-platform): per-tool project_id + explicit posthog auth aud…
benjackwhite Jun 17, 2026
0a6d03d
fix(agent-platform): host-bind MCP secret substitution to prevent exfil
benjackwhite Jun 17, 2026
6bc485f
Merge remote-tracking branch 'origin/master' into agent-platform
benjackwhite Jun 17, 2026
f260d89
chore: update OpenAPI generated types
tests-posthog[bot] Jun 17, 2026
74cb724
test(agent-platform): sync tests with per-tool project_id + posthog a…
benjackwhite Jun 17, 2026
0279ecb
test(mcp): update unit test snapshots
tests-posthog[bot] Jun 17, 2026
6c8487c
revert(quill): drop agent-platform changes to the quill package
benjackwhite Jun 17, 2026
34e7fe2
Merge remote-tracking branch 'origin/agent-platform' into agent-platform
benjackwhite Jun 17, 2026
2d30727
chore: remove agent-platform migration comments from migrate scripts
benjackwhite Jun 17, 2026
368ef58
revert(frontend): drop incidental non-agent changes, restore to master
benjackwhite Jun 17, 2026
9ab1813
Merge branch 'master' into agent-platform
benjackwhite Jun 17, 2026
5ef5057
Merge remote-tracking branch 'origin/master' into agent-platform
benjackwhite Jun 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
14 changes: 14 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,20 @@
!services/mcp/types.d.ts
!services/mcp/worker-configuration.d.ts
!services/mcp/public
!services/agents
!services/agent-ingress
!services/agent-runner
!services/agent-janitor
!services/agent-shared
!services/agent-tools
!services/agent-sandbox-host
!packages/quill
services/agent-*/node_modules
services/agent-*/dist
services/agent-*/.next
services/agents/node_modules
services/agents/dist
services/agent-tests
!pnpm-lock.yaml
!pnpm-workspace.yaml
!pyproject.toml
Expand Down
7 changes: 7 additions & 0 deletions .env.development
Original file line number Diff line number Diff line change
Expand Up @@ -74,3 +74,10 @@ PERSONHOG_ROLLOUT_PERCENTAGE=100

# Debug
PYDEVD_DISABLE_FILE_VALIDATION=1

# Agent platform — shared HMAC signing key for trusted-service JWTs.
# Django mints audience-scoped tokens (agent-ingress.preview for draft
# previews, agent-janitor.rpc for authoring RPC); ingress + janitor verify
# against the same key. All three sides MUST agree. See
# services/agent-shared/src/runtime/internal-jwt.ts.
AGENT_INTERNAL_SIGNING_KEY=dev-internal-signing-key-do-not-use-in-prod
8 changes: 8 additions & 0 deletions .flox/env/manifest.toml
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,14 @@ watchman = { pkg-path = "watchman" } # Fast file watching for Django/Celery auto
DEBUG = "1"
POSTHOG_SKIP_MIGRATION_CHECKS = "1"
FLAGS_REDIS_URL = "redis://localhost:6379/1"
# CH client default DB. Matches docker-compose convention — without it,
# Django queries unqualified `events` / `log_entries` etc. resolve against
# the literal `default` DB (where PostHog has no tables) and 500.
CLICKHOUSE_DATABASE = "posthog"
# HMAC secret the agent_stack preview-proxy shares with agent-ingress so
# the JWT minted by Django on every non-live invoke can be verified by
# ingress. Same value on both sides → live JWT round-trip. Dev only.
AGENT_PREVIEW_SECRET = "dev-agent-preview-secret-not-for-prod"
DIRENV_LOG_FORMAT = "" # Disable direnv activation logging (in case direnv is present)
RUST_LOG = "flox=error,flox_rust_sdk=error,flox_watchdog=error" # Suppress Flox logs only (also set in .envrc for early activation)
OPENSSL_ROOT_DIR = "$FLOX_ENV"
Expand Down
16 changes: 13 additions & 3 deletions .github/actions/docker-meta/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,9 @@ inputs:
required: true
description: 'Image name without registry prefix (e.g., posthog-node, capture, llm-gateway)'
aws-role-to-assume:
required: true
description: 'AWS IAM role ARN for ECR access'
required: false
default: ''
description: 'AWS IAM role ARN for ECR access. Required when push-to-ecr=true (the default).'
github-token:
required: true
description: 'GitHub token for GHCR login'
Expand All @@ -33,6 +34,10 @@ inputs:
required: false
default: 'true'
description: 'Whether to push to ghcr.io. Set to false to skip GHCR publishing.'
push-to-ecr:
required: false
default: 'true'
description: 'Whether to push to AWS ECR (and assume the AWS role). Set to false for images consumed only via GHCR (e.g. sandbox-host images Modal pulls directly). When false, the AWS configure-credentials + ECR-login steps are skipped, the ECR tag is omitted from the images list, and ecr-registry output is empty.'

outputs:
tags:
Expand All @@ -49,12 +54,14 @@ runs:
using: 'composite'
steps:
- name: Configure AWS credentials
if: inputs.push-to-ecr == 'true'
uses: aws-actions/configure-aws-credentials@ec61189d14ec14c8efccab744f656cffd0e33f37 # v6.1.0
with:
role-to-assume: ${{ inputs.aws-role-to-assume }}
aws-region: us-east-1

- name: Login to Amazon ECR
if: inputs.push-to-ecr == 'true'
id: aws-ecr
uses: aws-actions/amazon-ecr-login@f2e9fc6c2b355c1890b65e6f6f0e2ac3e6e22f78 # v2.1.2

Expand Down Expand Up @@ -85,7 +92,9 @@ runs:
if [ "$PUSH_TO_DOCKERHUB" = "true" ]; then
echo "posthog/$IMAGE_NAME"
fi
echo "$ECR_REGISTRY/${ECR_IMAGE_NAME:-$IMAGE_NAME}"
if [ "$PUSH_TO_ECR" = "true" ]; then
echo "$ECR_REGISTRY/${ECR_IMAGE_NAME:-$IMAGE_NAME}"
fi
if [ -n "$LEGACY_IMAGES" ]; then
echo "$LEGACY_IMAGES"
fi
Expand All @@ -98,6 +107,7 @@ runs:
ECR_IMAGE_NAME: ${{ inputs.ecr-image-name }}
PUSH_TO_DOCKERHUB: ${{ inputs.push-to-dockerhub }}
PUSH_TO_GHCR: ${{ inputs.push-to-ghcr }}
PUSH_TO_ECR: ${{ inputs.push-to-ecr }}

- name: Docker meta
id: meta
Expand Down
79 changes: 79 additions & 0 deletions .github/scripts/smoke-test-agent-bundle.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
#!/usr/bin/env bash
#
# Smoke-test one entrypoint inside the posthog-agents image. Runs the bundle
# briefly with fake-but-valid env so config parsing succeeds, then expects
# the service to either reach an I/O dial-out (fine — bundle loaded) or
# exit on a known boot-time validation error (also fine).
#
# Fails the run when the bundle has a load-time problem (missing module,
# syntax error, wrong path in the build output, native-dep crash) — that's
# the failure mode local TS dev does NOT catch but the production bundle
# does, and the whole reason this script exists.
#
# Usage: smoke-test-agent-bundle.sh <image-ref> <entrypoint>
# <image-ref> — fully qualified image, e.g.
# 795637471508.dkr.ecr.us-east-1.amazonaws.com/posthog-agents@sha256:...
# <entrypoint> — bundle basename without .mjs (ingress, runner, janitor, migrate)

set -euo pipefail

IMAGE_REF="${1:?image-ref required}"
ENTRYPOINT="${2:?entrypoint required}"

LOG=$(mktemp)
trap 'rm -f "$LOG"' EXIT

# `--network=none` keeps the container from accidentally reaching anything real;
# 127.0.0.1:1 is unreachable inside that namespace so connect attempts fail fast
# with ECONNREFUSED / ENETUNREACH — the exact signal we want.
docker run --rm \
--network=none \
-e POSTHOG_DB_URL='postgres://x:x@127.0.0.1:1/x' \
-e AGENT_DB_URL='postgres://x:x@127.0.0.1:1/x' \
-e AGENT_BUNDLE_S3_BUCKET='smoke-test-bucket' \
-e AGENT_BUNDLE_S3_ENDPOINT='http://127.0.0.1:1' \
-e AGENT_BUNDLE_S3_ACCESS_KEY_ID='smoke' \
-e AGENT_BUNDLE_S3_SECRET_ACCESS_KEY='smoke' \
-e AGENT_MEMORY_S3_BUCKET='smoke-test-bucket' \
-e AGENT_MEMORY_S3_ENDPOINT='http://127.0.0.1:1' \
-e AGENT_MEMORY_S3_ACCESS_KEY_ID='smoke' \
-e AGENT_MEMORY_S3_SECRET_ACCESS_KEY='smoke' \
-e ENCRYPTION_SALT_KEYS='00beef0000beef0000beef0000beef00' \
-e INTERNAL_SECRET='smoke-test-internal-secret' \
-e AGENT_INTERNAL_SIGNING_KEY='smoke-test-signing-key' \
-e KAFKA_HOSTS='127.0.0.1:1' \
-e REDIS_URL='redis://127.0.0.1:1' \
-e SANDBOX_BACKEND='modal' \
-e MODAL_TOKEN_ID='smoke-modal-token-id' \
-e MODAL_TOKEN_SECRET='smoke-modal-token-secret' \
-e AGENT_USE_AI_GATEWAY='1' \
-e POSTHOG_AI_GATEWAY_URL='http://127.0.0.1:1/v1' \
-e POSTHOG_API_BASE_URL='http://127.0.0.1:1' \
-e HTTPS_PROXY='http://127.0.0.1:1' \
-e NODE_ENV='production' \
--entrypoint sh \
"$IMAGE_REF" \
-c "timeout 5 node products/agent_platform/services/agents/dist/${ENTRYPOINT}.mjs; exit 0" 2>&1 | tee "$LOG" || true

# Bundle-load failures: build is busted. Fail loud.
if grep -qE 'Cannot find (module|package)|SyntaxError|ReferenceError|TypeError: .* is not a function' "$LOG"; then
echo "::error::${ENTRYPOINT} bundle has a load-time error — see logs above"
exit 1
fi

# Bundle loaded fine if we see ANY of:
# - the service announced it bound an HTTP port (`"msg":"listening"`) — ingress
# and janitor get here without dialling out because they're lazy-connect
# - a network dial-out failure (the service got past config + tried to talk to PG/S3/Kafka) —
# runner / migrate hit this because they open pools / S3 at boot
# - a config-validation throw from zod (config schema rejected our fake values — fine, bundle loaded)
# - a clean shutdown after `timeout 5` (rare — most services keep retrying connections)
if grep -qE '"msg":"listening"|ECONNREFUSED|ETIMEDOUT|ENOTFOUND|ENETUNREACH|getaddrinfo|timed out|invalid_string|invalid_type|ZodError|connection|fetch failed' "$LOG"; then
echo "✓ ${ENTRYPOINT} bundle loads and reaches the network/I-O stage"
exit 0
fi

# Empty / immediate-exit logs are the suspicious case: bundle either died
# silently or never got far enough to log anything. Treat as failure.
echo "::error::${ENTRYPOINT} produced no recognisable boot output — see logs above"
exit 1
6 changes: 5 additions & 1 deletion .github/scripts/verify-storybook-new-stories.sh
Original file line number Diff line number Diff line change
Expand Up @@ -106,10 +106,14 @@ for run in $(seq 1 "$REPEAT_COUNT"); do
set +e
# Run test-storybook directly (tests a pre-built storybook dist served over http-server).
# pipefail is set at script level so tee preserves the exit code.
# --passWithNoTests: changed stories may live in a separate storybook
# (e.g. services/agent-console, packages/agent-chat) that the main runner's
# testMatch doesn't cover. Those are verified by their own CI, so finding no
# matching tests here is not a failure.
pnpm --filter=@posthog/storybook exec test-storybook \
$snapshot_flag --no-index-json --maxWorkers=1 \
--browsers chromium \
-- --testPathPattern "$pattern" 2>&1 | tee "/tmp/storybook-verify-run${run}.log"
-- --testPathPattern "$pattern" --passWithNoTests 2>&1 | tee "/tmp/storybook-verify-run${run}.log"
exit_code=${PIPESTATUS[0]}
set -e

Expand Down
Loading
Loading