TypeScript SDK: Use generated types for model info and remove duplicates#1564
Draft
sergiou87 wants to merge 1 commit into
Draft
TypeScript SDK: Use generated types for model info and remove duplicates#1564sergiou87 wants to merge 1 commit into
sergiou87 wants to merge 1 commit into
Conversation
Replace local duplicate model/session types with imports/exported types from generated files. Reorder imports, re-export model, remote session and session-fs related types, and export SessionEvent. Remove redundant local interfaces (ModelCapabilities, ModelInfo, ModelPolicy, ModelBilling) to centralize type definitions in generated/rpc and generated/session-events.
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.
Replace local duplicate model info types (which need to be manually updated) with types from generated files.
I tried this approach since I see the same pattern used for
SessionEventandRemoteSessionMode:copilot-sdk/nodejs/src/types.ts
Lines 12 to 21 in afbebc7
According to Copilot, these are the effective changes in the API if we decided to go ahead with this approach:
ModelInfo
Now exported as generated
Modelaliased toModelInfo.interface ModelInfoModelre-exported asModelInfoModelInfo.idstringstringnamestringstringcapabilitiesModelCapabilitiesModelCapabilitiesModelCapabilities.policyModelPolicy | undefinedModelPolicy | undefinedModelPolicy.termschanged.billingModelBilling | undefinedModelBilling | undefinedModelBillingnow has optionaltokenPrices.supportedReasoningEffortsReasoningEffort[] | undefinedstring[] | undefinedReasoningEffort[]; now must validate or narrow strings manually.defaultReasoningEffortReasoningEffort | undefinedstring | undefinedReasoningEffort.modelPickerCategoryModelPickerCategory | undefinedmodelPickerPriceCategoryModelPickerPriceCategory | undefinedModelCapabilities
supports{ vision: boolean; reasoningEffort: boolean }ModelCapabilitiesSupports | undefinedcapabilities.supportscan now be absent. More permissive for providers.supports.visionbooleanboolean | undefinedsupports.reasoningEffortbooleanboolean | undefinedlimits{ max_prompt_tokens?: number; max_context_window_tokens: number; vision?: ... }ModelCapabilitiesLimits | undefinedcapabilities.limitscan now be absent.limits.max_prompt_tokensnumber | undefinednumber | undefinedlimits.max_context_window_tokensnumbernumber | undefinedlimits.max_output_tokensnumber | undefinedlimits.visionundefinedModelCapabilitiesLimitsVision | undefinedlimits.vision.supported_media_typesstring[]string[]visionexists.limits.vision.max_prompt_imagesnumbernumbervisionexists.limits.vision.max_prompt_image_sizenumbernumbervisionexists.ModelPolicy
state"enabled" | "disabled" | "unconfigured"ModelPolicyStatetermsstringstring | undefinedModelBilling
multipliernumber | undefinednumber | undefinedtokenPricesModelBillingTokenPrices | undefinedModelBilling; now accepted.ModelBillingTokenPrices
New generated nested type reachable through
ModelBilling.tokenPrices.inputPricenumber | undefinedoutputPricenumber | undefinedcachePricenumber | undefinedbatchSizenumber | undefinedcontextMaxnumber | undefinedlongContextModelBillingTokenPricesLongContext | undefinedModelBillingTokenPricesLongContext
New generated nested type reachable through
ModelBilling.tokenPrices.longContext.inputPricenumber | undefinedoutputPricenumber | undefinedcachePricenumber | undefinedcontextMaxnumber | undefinedModelCapabilitiesOverride
Not removed, but its expansion changes because it is still
DeepPartial<ModelCapabilities>andModelCapabilitiesnow comes from generated RPC types.supports.visionboolean | undefinedboolean | undefinedsupports.reasoningEffortboolean | undefinedboolean | undefinedlimits.max_prompt_tokensnumber | undefinednumber | undefinedlimits.max_context_window_tokensnumber | undefinednumber | undefinedlimits.max_output_tokensnumber | undefinedlimits.vision.supported_media_typesstring[] | undefinedstring[] | undefinedlimits.vision.max_prompt_imagesnumber | undefinednumber | undefinedlimits.vision.max_prompt_image_sizenumber | undefinednumber | undefined