OUT-3977 | Platform layer: extend AssemblyClient for installs notificationConfig + notification appId - #218
Merged
Conversation
…ppId
Extend the platform layer so Client Home can discover Studio apps' action
labels and bucket notifications by app.
- AppInstallsDataSchema: add icon, disabled, isDraft, isInternalApp
- Add ActionLabelSchema + InstallNotificationSettingsSchema for
GET /v1/installs/{id}/notification-settings, plus isActionLabelRegistered
- NotificationsResponseSchema: add appId (nullish); relax event to nullish
- AssemblyClient.getInstalls() and getInstallNotificationSettings(installId),
the latter via a _manualFetch helper since the SDK exposes no method for
the notification-settings sub-resource
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Greptile SummaryThis PR adds platform-layer support for Assembly installs and notification metadata. The main changes are:
Confidence Score: 5/5This looks safe to merge.
Important Files Changed
Reviews (2): Last reviewed commit: "fix(OUT-3977): preserve HTTP status on m..." | Re-trigger Greptile |
…orks Check response.ok before parsing the body in _manualFetch. A transient 429/500 with a non-JSON body previously threw a statusless SyntaxError, which withRetry could not recognize as retryable. Now read the error body as text and throw APIError with the real status. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Collaborator
Author
|
please re review @greptile |
priosshrsth
requested changes
Jul 21, 2026
…var for API URL - Replace the manual isActionLabelRegistered checks with a strict RegisteredActionLabelSchema (trim + non-empty), per PR review - Use env.ASSEMBLY_API_URL (default prod) as the base URL in _manualFetch instead of the SDK's mutable OpenAPI.BASE global; drop the OpenAPI import Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
4 tasks
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.
Changes
Platform-layer (
src/lib/assembly) support so Client Home can discover Studio apps' registered action labels and bucket notifications by app. Client Home stays a pure consumer — no registration surface, no new stored state in this ticket.AppInstallsDataSchema— addedicon,disabled,isDraft,isInternalApp(all nullish; the SDK's generated types don't declare them). NonotificationConfig— it is not inlined onGET /v1/installs.GET /v1/installs/{id}/notification-settings:ActionLabelSchema(verb,singularNoun,pluralNoun) andInstallNotificationSettingsSchema, plus anisActionLabelRegisteredhelper that treats a label as registered only when all three parts are present and non-empty.NotificationsResponseSchema— addedappId(nullish), the bucketing key for custom-app notifications. Also relaxedeventto nullish (matches the SDK'sevent?: stringand avoids a parse throw if a custom-app notification omits it).AssemblyClient.getInstalls()— wraps the SDK'slistAppInstalls()(GET /v1/installsreturns a bare array with no pagination cursor, so a single fetch is complete).AssemblyClient.getInstallNotificationSettings(installId)— the SDK exposes no method for the notification-settings sub-resource, so this goes through a new private_manualFetchhelper (base URL from the SDK'sOpenAPI.BASE,X-API-KEYbuilt from workspaceId + api key). Both new methods are wrapped withwrapWithRetry._getAppIdnow reusesgetInstalls()instead of duplicating the parse.Deliberately out of scope for this PR:
nextTokenpagination on the notifications fetch. The notifications fetch stays on the existing single SDK call — the per-app count consumer (OUT-3980) will address pagination there if needed.Testing Criteria
pnpm typecheckpassespnpm lintpassesicon/disabled/isDraft/isInternalAppcome through on installs, thatappIdappears on notifications, and — highest risk — thatactionLabelsits at the top level of the notification-settings response rather than nested under a wrapper. If nested, it's a one-line schema adjustment. (Loom to follow after the staging check.)Notes
getInstalls()/getInstallNotificationSettings()and theappIdfield respectively.Impact & Surface Area of Change
getNotificationsbehavior is unchanged (same SDK call, same shape) — existing notification counts are unaffected. Only additive schema fields (appId, andeventrelaxed from required to nullish)._getAppIdwas refactored to delegate togetInstalls(); behavior is identical (same filter onappId).getInstalls,getInstallNotificationSettings,_manualFetch) have no callers yet in this PR, so no runtime surface changes for existing features.🤖 Generated with Claude Code