Reuse org-registered external connections without re-entering secrets - #625
Merged
Conversation
|
Warning Review limit reachedNext included review available in 56 minutes. View limit detailsLimit details: You’ve used the included review currently available. This review ran on the open-source allowance, not this organization's plan, because the pull request author doesn't have an assigned seat. Waiting won't change this — ask an organization admin to assign them a seat, or add seats in Billing if every seat is already assigned, then retry. Review configuration: ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (27)
Comment |
kaje94
force-pushed
the
marketplace/08-consume
branch
from
August 25, 2026 13:33
39badd9 to
96a579b
Compare
kaje94
marked this pull request as ready for review
August 25, 2026 13:43
kaje94
force-pushed
the
marketplace/08-consume
branch
2 times, most recently
from
August 25, 2026 14:08
ba33b5c to
9ae20ec
Compare
kaje94
force-pushed
the
marketplace/08-consume
branch
from
August 26, 2026 15:55
8958718 to
f0c3d02
Compare
xlight05
force-pushed
the
marketplace/08-consume
branch
from
August 26, 2026 16:45
f0c3d02 to
df99581
Compare
xlight05
force-pushed
the
marketplace/08-consume
branch
from
August 26, 2026 16:46
df99581 to
4283d88
Compare
xlight05
force-pushed
the
marketplace/08-consume
branch
from
August 26, 2026 16:46
4283d88 to
9c51f5a
Compare
xlight05
force-pushed
the
marketplace/08-consume
branch
from
August 26, 2026 16:47
9c51f5a to
a3739e3
Compare
Values live on the org record; the consuming project still authors a Resource instance at build.
Design-time list_external_resources includes unconsumed Registered records and org resource docs pointers.
Register now stores the OrgSecretWriter vault key on the value plane so consume authoring can set binding secretStorePath; Connections wait for the org catalog before offering Configure.
An error settle left registeredNames empty, so a Registered External could open the project values dialog. Fail closed and surface retry.
Preflight emitted external-config while project provision was still unknown, so Continue forced typing org secrets that POST /build ignores.
xlight05
force-pushed
the
marketplace/08-consume
branch
from
August 26, 2026 16:48
a3739e3 to
6f3a7ee
Compare
xlight05
approved these changes
Aug 26, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why this exists
Orgs can already register an external connection once (for example Stripe), with keys, docs, and environment values stored at the org. Until this PR, a project that needed that same connection still treated it like a brand-new project-local secret: the design agent would not prefer the org record, Deployments still offered Configure, and Build still opened a drawer asking for the same secrets.
This PR makes consume mean reuse. If a component depends on a name that is already registered for the org, the project uses that record. Nobody re-enters keys or secrets — not in Connections, and not in the Build drawer. OpenChoreo still gets a Resource instance in the project so the workload can bind to the type; the values stay on the org record and are templated per environment.
Two kinds of external resource (needed to read the rest)
A name is one kind or the other. You cannot convert
stripefrom Registered to Project External, and you cannot override the org's values under that name. If this project needs its own Stripe, it creates a new name (for exampleacme-stripe) as a Project External.What you will see
Design agent. When a component needs an external dependency that already exists in the org catalog, the agent prefers that Registered name. The user can still chat to pick a different Registered record, or create a Project External under a new name.
Deployments → Connections. A Registered name has no Configure button (the org already holds the values). A new-name Project External still has Configure and still saves into the project secret store. That save path never calls the org register API.
Build.
GET /projects/{project}/build/preflightdoes not emitexternal-configfor a Registered name, so the dependency drawer does not ask for those secrets. A Project External on the same build still collects as today.POST /buildstill authors a Resource instance from org cells (typed drawer values were already ignored).API.
POST /projects/{projectName}/dependencies/external-resources/{name}/valuesreturns 409 Conflict when{name}is Registered (“values live on the org record”). The same POST for a Project External still provisions as before.Agents (MCP).
list_external_resourceslists Registered records even before any project uses them, including consumption instructions and pointers to org resource docs — not only name +{key, secret}after provision.What this PR does not change
How to verify
external-configitem).Seams already covered in tests:
go testin aep-api:internal/delivery/build(Registered preflight skip),internal/dependencies/provisioning,internal/dependencies/mcpdiscovery,internal/organizationDeploymentsPage.test.tsxworkflow_skill.test.tsStack
Layer on the Resources stack. Base is
marketplace/05-chat(#624), notmain. Merge withgh stack merge 625 --yes, notgh pr merge.