Repository navigation
[APPS-2958] Add: list each action call's static inputs in the debugBundle response - #610
Draft
tyffical wants to merge 1 commit into
Conversation
tyffical
force-pushed
the
tiffany.trinh/apps-2958-debug-bundle-action-list
branch
from
October 23, 2026 05:20
c8122aa to
19ec355
Compare
tyffical
force-pushed
the
tiffany.trinh/apps-2958-debug-bundle-call-inputs
branch
from
October 23, 2026 05:20
768c620 to
7e7153c
Compare
tyffical
force-pushed
the
tiffany.trinh/apps-2958-debug-bundle-action-list
branch
from
October 23, 2026 14:53
19ec355 to
447c145
Compare
tyffical
force-pushed
the
tiffany.trinh/apps-2958-debug-bundle-call-inputs
branch
from
October 23, 2026 14:53
7e7153c to
2806fd6
Compare
tyffical
force-pushed
the
tiffany.trinh/apps-2958-debug-bundle-action-list
branch
from
October 23, 2026 15:59
447c145 to
bc68d52
Compare
tyffical
force-pushed
the
tiffany.trinh/apps-2958-debug-bundle-call-inputs
branch
from
October 23, 2026 15:59
2806fd6 to
1d9a0d3
Compare
…response Each debugBundle action carries a calls list with one entry per call site: its connectionId, when set, and the inline inputs keys whose value the build resolves to a string from a literal, a template without expressions or a const binding, such as http.request's url and verb. Any other input is left out, so a consent prompt can show it as set when the call runs. That includes an object member, since an alias or a call can mutate a const object without the mutation walk seeing it. Every input is left out when the options or inputs object literal has a getter, setter, spread, computed key, or a toJSON, then or __proto__ key, since serializing or awaiting the call could rewrite any key. A hook inherited from a prototype or added by an executor wrapper isn't detected. The dev client and the frame transport copy only the action list's own fields, so an inherited fqn, connectionId or inputs key never survives, and drop a list whose inputs are an array or hold a non-string value. The static property-key and expression-value helpers live in type-guards.ts, shared by the connection-ID extractor and the string resolver, and read a numeric literal key as its string. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
tyffical
force-pushed
the
tiffany.trinh/apps-2958-debug-bundle-action-list
branch
from
October 23, 2026 16:22
bc68d52 to
e881537
Compare
tyffical
force-pushed
the
tiffany.trinh/apps-2958-debug-bundle-call-inputs
branch
from
October 23, 2026 16:22
1d9a0d3 to
7649b0d
Compare
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.
Motivation
http.requestuses, not only which actions and connections it touches.Architecture
flowchart LR C["Action-catalog calls in the bundle"] --> L["listActionCalls: connectionId + static string inputs per call"] L --> R["debugBundle JSON: actions[].calls"] R --> G["Frame guard: copy own fields, check types"] G --> P["run-query bundle to the parent"]fqnandconnectionIdskeep their values.inputsliteral has a getter, setter, spread, computed key, or atoJSON,thenor__proto__key, since serializing or awaiting the call could rewrite any key.code.Changes
8 changes across protocol.ts, list-action-calls.ts, the string resolver, type-guards.ts, the client guard, dev-server.ts and tests
DebugBundleActionCallandcallsonDebugBundleActionpackages/plugins/apps/src/backend/protocol.tstoJSON,thenor__proto__empties the inputspackages/plugins/apps/src/backend/ast-parsing/list-action-calls.tsresolveStaticStringConstant, which doesn't follow object memberspackages/plugins/apps/src/backend/ast-parsing/static-string-resolution.tsgetStaticPropertyKeyandhasExpressionValuehere and read numeric literal keyspackages/plugins/apps/src/backend/ast-parsing/type-guards.ts,extract-connection-ids-from-module-graph.tspackages/plugins/apps/src/backend/client/guards.tslistActionCallspackages/plugins/apps/src/vite/dev-server.tslist-action-calls.test.tsdev-client.test.ts,post-message-transport.test.ts,dev-server.test.ts,dev-server.integration.test.tsQA Instructions
twoActions.backend.tsfixture through Vite and reads/__dd/debugBundleas JSON.Fail-before
list-action-calls.ts,guards.tsanddev-server.tsrestored to the parent branch and the new tests kept, 42 tests in the five touched test files fail: everylistActionCallsinput case, the two dev-serveractionsexpectations, the dev client's call-copy cases and the transport's call-copy cases.Blast Radius
debugBundleresponse and the framed bundle copy change.Documentation
DebugBundleResponseinpackages/plugins/apps/src/backend/protocol.ts.🤖 Generated with Claude Code