Repository navigation
feat(projects): add list metadata expansions - #60
Merged
Merged
Conversation
marckong
force-pushed
the
marckong/project-list-expansions
branch
from
September 14, 2026 20:39
0e280e1 to
3b28560
Compare
|
|
swkeever
added a commit
that referenced
this pull request
Sep 17, 2026
* feat(auth): synchronize the local user after profile operations * fix(auth): preserve session identity during profile updates * feat(projects): add list metadata expansions (#60) * feat(projects): add list metadata expansions * fix(auth): handle raw OAuth provider responses * fix(openapi): regenerate project list expansions * chore(main): release 0.5.0 (#131) Co-authored-by: kong-volcano-app[bot] <305569927+kong-volcano-app[bot]@users.noreply.github.com> * feat(functions): cache name resolution and invoke the resolved endpoint (#132) * feat(functions): cache name resolution and invoke the resolved endpoint Every functions.invoke() resolved the name first, so each call paid two round trips even though the server tells us how long the mapping stays valid. Cache resolutions for the advertised cache_ttl_seconds, shared process-wide and keyed by credential so a mapping never crosses an identity. Invoke the resolved invoke_url when the server supplies one, which is how a call reaches the geo-routed endpoint instead of the API host. A deployment serving no public invocation domain omits it, and those callers keep using the API invoke path. A platform 404 means the cached identity is gone, so drop it and resolve once more. A function that answers 404 itself carries the version header and is returned as-is rather than invoked twice. Co-authored-by: Cursor <cursoragent@cursor.com> * fix(functions): collapse concurrent resolves and refuse plaintext endpoints A cold cache or an expiring TTL let every caller open its own /functions/resolve. Concurrent misses for one name now serialize on a striped lock, so one round trip serves them all. An https API is no longer downgraded: a resolve response may only name a plaintext invocation endpoint when the API itself is plaintext, since the request carries the caller's bearer token. Co-authored-by: Cursor <cursoragent@cursor.com> * fix(functions): treat a malformed invoke_url as unusable rather than raising urlsplit raises ValueError on an unclosed IPv6 literal or an out-of-range port, so a malformed resolve response escaped invoke() instead of falling back to the API path. JavaScript and Ruby already degrade for the same input; Python now matches them, including for a host containing whitespace, which it previously accepted. Reported by @shawnwu-kong in review. Co-authored-by: Cursor <cursoragent@cursor.com> --------- Co-authored-by: Cursor <cursoragent@cursor.com> * chore(main): release 0.6.0 (#134) Co-authored-by: kong-volcano-app[bot] <305569927+kong-volcano-app[bot]@users.noreply.github.com> * fix(realtime): drain presence replies after cancellation (#139) * chore(main): release 0.6.1 (#140) Co-authored-by: kong-volcano-app[bot] <305569927+kong-volcano-app[bot]@users.noreply.github.com> * fix(realtime): separate explicit pause from transport recovery (#141) * fix(realtime): separate explicit pause from transport recovery * fix(realtime): preserve presence messages and repeated pause state * chore(main): release 0.6.2 (#142) Co-authored-by: kong-volcano-app[bot] <305569927+kong-volcano-app[bot]@users.noreply.github.com> * fix(realtime): separate callback work from transport shutdown (#143) * fix(realtime): separate callback work from transport shutdown * fix(realtime): defer callbacks until worker registration completes * chore(main): release 0.6.3 (#144) Co-authored-by: kong-volcano-app[bot] <305569927+kong-volcano-app[bot]@users.noreply.github.com> * fix(realtime): await subscription readiness outside the connection lock (#138) * fix(realtime): await subscription readiness outside the connection lock * fix(realtime): invalidate readiness and finish local teardown * fix(realtime): preserve subscription intent across queued calls * fix(realtime): invalidate requests on every stop operation * chore(main): release 0.6.4 (#145) Co-authored-by: kong-volcano-app[bot] <305569927+kong-volcano-app[bot]@users.noreply.github.com> * fix(realtime): finish native unsubscribe before propagating cancellation (#146) * chore(main): release 0.6.5 (#147) Co-authored-by: kong-volcano-app[bot] <305569927+kong-volcano-app[bot]@users.noreply.github.com> * fix(functions): retry a stale mapping on the dispatch signal (#136) * fix(functions): retry a stale mapping on the dispatch signal The 404 retry was gated on X-Volcano-Version being absent, on the assumption that only a function runtime sets it. The server stamps it on every response, including platform errors raised before dispatch, so the branch never ran: a cached name->id mapping for a deleted function stayed until its TTL expired. X-Volcano-Function-Invoked is set only after the platform dispatched, so its absence is the signal that was wanted. The distinction still matters in the other direction — a function answering 404 itself must not be invoked twice — which is why this is not simply a retry on any 404. The tests missed it by manufacturing a headerless platform 404 the server never produces. The HTTP-level server now stamps the version header on every response the way the real one does, so keying off it again fails here. Co-authored-by: Cursor <cursoragent@cursor.com> * fix(functions): classify platform failures on the dispatch signal The stale-mapping retry was not the only thing keyed on the version header being absent. The same broken invariant decided whether a non-2xx was the platform refusing or the function answering, so every platform failure — a failed or provisioning deploy, a quota refusal — came back as though the function had returned it, instead of raising. The server stamps the version header on every response, so the branch that raises could never be taken. It keys on the dispatch marker now, which is set only after the function runs. The tests passed because they mocked a non-2xx without the version header, a shape the server does not produce. They carry both headers now, and a new case covers the platform refusal that nothing exercised. Co-authored-by: Cursor <cursoragent@cursor.com> --------- Co-authored-by: Cursor <cursoragent@cursor.com> * chore(main): release 0.6.6 (#148) Co-authored-by: kong-volcano-app[bot] <305569927+kong-volcano-app[bot]@users.noreply.github.com> * docs: say where a function invocation is sent (#135) invoke() no longer posts to api_url, and a reader restricting outbound requests has to know that the call goes to the function's own domain. Co-authored-by: Cursor <cursoragent@cursor.com> * test(contract): bind the function invocation scenario (#137) SDK-FUNCTIONS-001 covers invoking by name reaching the endpoint the platform resolved. The fixture deploys a function that echoes one field, so the assertion distinguishes the SDK returning something from the SDK reaching that function — the endpoint is on a domain the API URL does not name, and a client that built a host from its API URL would reach nothing. Co-authored-by: Cursor <cursoragent@cursor.com> * fix(packaging): publish Python releases as volcano-sdk-python (#149) * fix(packaging): publish Python releases as volcano-sdk-python * test(packaging): validate distribution metadata before upload * chore(main): release 0.6.7 (#150) Co-authored-by: kong-volcano-app[bot] <305569927+kong-volcano-app[bot]@users.noreply.github.com> --------- Co-authored-by: Mark Kim <103070941+marckong@users.noreply.github.com> Co-authored-by: kong-volcano-app[bot] <305569927+kong-volcano-app[bot]@users.noreply.github.com> Co-authored-by: Marco Palladino <88.marco@gmail.com> Co-authored-by: Cursor <cursoragent@cursor.com>
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.
Coordinates with Kong/volcano-hosting#959. Syncs the current public OpenAPI contract and generates support for optional project-list Git connection and health metadata.