@thorprovider/medusa-extended 1.11.2 → 1.11.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +40 -2
- package/dist/index.d.ts +40 -2
- package/dist/index.js +139 -0
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +139 -0
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
- package/src/dropshipper.test.ts +92 -0
- package/src/dropshipper.ts +209 -0
- package/src/index.ts +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { GetChannelCustomersOptions, GetChannelCustomersResponse, GetChannelApiKeysResponse, GetChannelCategoriesOptions, GetChannelCategoriesResponse, GetCategorySalesChannelsResponse, AssignCategoriesToChannelsBody, AssignCategoriesToChannelsResponse, UnassignCategoriesFromChannelsBody, UnassignCategoriesFromChannelsResponse, GetCollectionSalesChannelsResponse, AssignCollectionsToChannelsBody, AssignCollectionsToChannelsResponse, UnassignCollectionsFromChannelsBody, UnassignCollectionsFromChannelsResponse, GetAdminStorefrontConfigResponse, UpdateStorefrontConfigBody, UpdateStorefrontConfigResponse, GetAdminSiteConfigResponse, UpdateSiteConfigBody, UpdateSiteConfigResponse, GetAdminSiteConfigHistoryOptions, GetAdminSiteConfigHistoryResponse, RestoreSiteConfigResponse, DropshipperDashboardCapabilities, GetMyProfileResponse, ChatRequest, ChatResponse, GetNotificationsOptions, GetNotificationsResponse, OnboardDropshipperBody, OnboardDropshipperResponse, GetDropshipperProductsOptions, GetDropshipperProductsResponse, ValidateCheckoutItemsRequest, ValidateCheckoutItemsResponse, CostPriceChangesCheckResponse, CostPriceChangesResponse, AcknowledgeCostPriceChangesResponse, UpdateDropshipperProductStatusBody, UpdateDropshipperProductStatusResponse, GetProductAttributesResponse, GetDropshipperAttributesResponse, UpdateDropshipperPricesBody, UpdateDropshipperPricesResponse, GetDropshipperOrdersOptions, GetDropshipperOrdersResponse, GetDropshipperOrderDetailResponse, GetDropshipperShippingOptionsParams, GetDropshipperShippingOptionsResponse, ExtendedCreateDropshipperOrderBody, ExtendedCreateDropshipperOrderResponse, SetPaymentCollectorBody, SetPaymentCollectorResponse, SetPaymentMethodBody, SetPaymentMethodResponse, CancelDropshipperOrderResponse, CreateOrderEditBody, CreateOrderEditResponse, AddOrderEditItemBody, AddOrderEditItemResponse, ConfirmOrderEditResponse, GetOrderNotesResponse, CreateOrderNoteBody, CreateOrderNoteResponse, DeleteOrderNoteResponse, GetProviderCategoriesResponse, GetDropshipperCategoriesOptions, GetDropshipperCategoriesResponse, CreateDropshipperCategoryBody, DropshipperCategory, UpdateDropshipperCategoryBody, DeleteDropshipperCategoryResponse, GetCategoryMappingsOptions, GetCategoryMappingsResponse, CreateCategoryMappingBody, CreateCategoryMappingResponse, DeleteCategoryMappingResponse, GetDropshipperCustomersOptions, GetDropshipperCustomersResponse, GetDropshipperCustomerDetailResponse, CreateDropshipperCustomerBody, CreateDropshipperCustomerResponse, UpdateDropshipperCustomerBody, UpdateDropshipperCustomerResponse, GetDropshipperAddressesResponse, DropshipperAddressBody, DropshipperAddressResponse, GetDropshipperAccountResponse, GetDropshipperPayableResponse, GetDropshipperReceivableResponse, GetSettlementsOptions, GetSettlementsResponse, GetSettlementDetailResponse, GetDropshipperAccountBalanceResponse, GetDropshipperAccountOrdersOptions, GetDropshipperAccountOrdersResponse, CreateSettlementBody, CreateSettlementResponse, ConfirmSettlementBody, UpdateSettlementStatusResponse, CancelSettlementBody, GetAdminDropshipperAccountsResponse, GetAdminAccountBalanceResponse, GetAdminPriceListsResponse, GetUserChannelResponse, GetAdminDropshipperAccountOrdersResponse, GetAdminDropshipperAccountSettlementsOptions, GetAdminDropshipperAccountSettlementsResponse, ResolveGuaranteeBody, ResolveGuaranteeResponse, CreateCompensacionBody, CreateCompensacionResponse, CreateAjusteBody, CreateAjusteResponse, CreateCobroBody, CreateCobroResponse, CreatePagoBody, CreatePagoResponse, CreateReversoBody, CreateReversoResponse, ConfirmMovementBody, ConfirmMovementResponse, CancelMovementBody, CancelMovementResponse, GetFinancialAnalysisResponse, RegisterPaymentBody, RegisterPaymentResponse, GetDropshipperPromotionsOptions, GetDropshipperPromotionsResponse, CreateDropshipperPromotionBody, DropshipperPromotion, UpdateDropshipperPromotionBody, DeleteDropshipperPromotionResponse, GetDashboardStatsOptions, GetDashboardStatsResponse, GetStorefrontDropshipperCategoriesResponse, GetDropshipperDraftOrdersOptions, GetDropshipperDraftOrdersResponse, GetDropshipperDraftOrderDetailResponse, CreateDropshipperDraftOrderBody, CreateDropshipperDraftOrderResponse, UpdateDropshipperDraftOrderBody, UpdateDropshipperDraftOrderResponse, ConvertDropshipperDraftOrderBody, ConvertDropshipperDraftOrderResponse, DeleteDropshipperDraftOrderResponse, GetGeoCountriesResponse, GetGeoProvincesResponse, GetGeoCitiesResponse } from '@thorprovider/types';
|
|
1
|
+
import { GetChannelCustomersOptions, GetChannelCustomersResponse, GetChannelApiKeysResponse, GetChannelCategoriesOptions, GetChannelCategoriesResponse, GetCategorySalesChannelsResponse, AssignCategoriesToChannelsBody, AssignCategoriesToChannelsResponse, UnassignCategoriesFromChannelsBody, UnassignCategoriesFromChannelsResponse, GetCollectionSalesChannelsResponse, AssignCollectionsToChannelsBody, AssignCollectionsToChannelsResponse, UnassignCollectionsFromChannelsBody, UnassignCollectionsFromChannelsResponse, GetAdminStorefrontConfigResponse, UpdateStorefrontConfigBody, UpdateStorefrontConfigResponse, GetAdminSiteConfigResponse, UpdateSiteConfigBody, UpdateSiteConfigResponse, GetAdminSiteConfigHistoryOptions, GetAdminSiteConfigHistoryResponse, RestoreSiteConfigResponse, ChatIntent, ChatSource, DropshipperDashboardCapabilities, GetMyProfileResponse, ChatRequest, ChatResponse, GetNotificationsOptions, GetNotificationsResponse, OnboardDropshipperBody, OnboardDropshipperResponse, GetDropshipperProductsOptions, GetDropshipperProductsResponse, ValidateCheckoutItemsRequest, ValidateCheckoutItemsResponse, CostPriceChangesCheckResponse, CostPriceChangesResponse, AcknowledgeCostPriceChangesResponse, UpdateDropshipperProductStatusBody, UpdateDropshipperProductStatusResponse, GetProductAttributesResponse, GetDropshipperAttributesResponse, UpdateDropshipperPricesBody, UpdateDropshipperPricesResponse, GetDropshipperOrdersOptions, GetDropshipperOrdersResponse, GetDropshipperOrderDetailResponse, GetDropshipperShippingOptionsParams, GetDropshipperShippingOptionsResponse, ExtendedCreateDropshipperOrderBody, ExtendedCreateDropshipperOrderResponse, SetPaymentCollectorBody, SetPaymentCollectorResponse, SetPaymentMethodBody, SetPaymentMethodResponse, CancelDropshipperOrderResponse, CreateOrderEditBody, CreateOrderEditResponse, AddOrderEditItemBody, AddOrderEditItemResponse, ConfirmOrderEditResponse, GetOrderNotesResponse, CreateOrderNoteBody, CreateOrderNoteResponse, DeleteOrderNoteResponse, GetProviderCategoriesResponse, GetDropshipperCategoriesOptions, GetDropshipperCategoriesResponse, CreateDropshipperCategoryBody, DropshipperCategory, UpdateDropshipperCategoryBody, DeleteDropshipperCategoryResponse, GetCategoryMappingsOptions, GetCategoryMappingsResponse, CreateCategoryMappingBody, CreateCategoryMappingResponse, DeleteCategoryMappingResponse, GetDropshipperCustomersOptions, GetDropshipperCustomersResponse, GetDropshipperCustomerDetailResponse, CreateDropshipperCustomerBody, CreateDropshipperCustomerResponse, UpdateDropshipperCustomerBody, UpdateDropshipperCustomerResponse, GetDropshipperAddressesResponse, DropshipperAddressBody, DropshipperAddressResponse, GetDropshipperAccountResponse, GetDropshipperPayableResponse, GetDropshipperReceivableResponse, GetSettlementsOptions, GetSettlementsResponse, GetSettlementDetailResponse, GetDropshipperAccountBalanceResponse, GetDropshipperAccountOrdersOptions, GetDropshipperAccountOrdersResponse, CreateSettlementBody, CreateSettlementResponse, ConfirmSettlementBody, UpdateSettlementStatusResponse, CancelSettlementBody, GetAdminDropshipperAccountsResponse, GetAdminAccountBalanceResponse, GetAdminPriceListsResponse, GetUserChannelResponse, GetAdminDropshipperAccountOrdersResponse, GetAdminDropshipperAccountSettlementsOptions, GetAdminDropshipperAccountSettlementsResponse, ResolveGuaranteeBody, ResolveGuaranteeResponse, CreateCompensacionBody, CreateCompensacionResponse, CreateAjusteBody, CreateAjusteResponse, CreateCobroBody, CreateCobroResponse, CreatePagoBody, CreatePagoResponse, CreateReversoBody, CreateReversoResponse, ConfirmMovementBody, ConfirmMovementResponse, CancelMovementBody, CancelMovementResponse, GetFinancialAnalysisResponse, RegisterPaymentBody, RegisterPaymentResponse, GetDropshipperPromotionsOptions, GetDropshipperPromotionsResponse, CreateDropshipperPromotionBody, DropshipperPromotion, UpdateDropshipperPromotionBody, DeleteDropshipperPromotionResponse, GetDashboardStatsOptions, GetDashboardStatsResponse, GetStorefrontDropshipperCategoriesResponse, GetDropshipperDraftOrdersOptions, GetDropshipperDraftOrdersResponse, GetDropshipperDraftOrderDetailResponse, CreateDropshipperDraftOrderBody, CreateDropshipperDraftOrderResponse, UpdateDropshipperDraftOrderBody, UpdateDropshipperDraftOrderResponse, ConvertDropshipperDraftOrderBody, ConvertDropshipperDraftOrderResponse, DeleteDropshipperDraftOrderResponse, GetGeoCountriesResponse, GetGeoProvincesResponse, GetGeoCitiesResponse } from '@thorprovider/types';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* @fileoverview Medusa Multi-Tenant Admin Client
|
|
@@ -163,6 +163,32 @@ declare class MedusaAdminClient {
|
|
|
163
163
|
* Endpoint reference: `dropshipping-api-contract.md`
|
|
164
164
|
*/
|
|
165
165
|
|
|
166
|
+
/**
|
|
167
|
+
* One event from the streamed AI assistant chat (`chatAssistantStream`).
|
|
168
|
+
*
|
|
169
|
+
* The backend returns a UI-message stream (SSE over `text/event-stream`) for
|
|
170
|
+
* catalog searches, and a plain JSON `ChatResponse` for greetings/other
|
|
171
|
+
* intents. `chatAssistantStream` normalizes both into this single event type so
|
|
172
|
+
* consumers can render incremental text and update the "thinking" label as the
|
|
173
|
+
* model progresses without knowing the transport details.
|
|
174
|
+
*/
|
|
175
|
+
type ChatStreamEvent = {
|
|
176
|
+
type: 'start';
|
|
177
|
+
/** Semantic intent as soon as the backend resolves it. */
|
|
178
|
+
intent?: ChatIntent;
|
|
179
|
+
} | {
|
|
180
|
+
type: 'text-delta';
|
|
181
|
+
/** A chunk of the assistant's answer, appended to the bubble. */
|
|
182
|
+
delta: string;
|
|
183
|
+
} | {
|
|
184
|
+
type: 'finish';
|
|
185
|
+
intent: ChatIntent;
|
|
186
|
+
/** Products referenced by the answer (empty for greetings/other). */
|
|
187
|
+
sources: ChatSource[];
|
|
188
|
+
} | {
|
|
189
|
+
type: 'error';
|
|
190
|
+
errorText: string;
|
|
191
|
+
};
|
|
166
192
|
/**
|
|
167
193
|
* Configuration required to instantiate the dropshipper client.
|
|
168
194
|
*/
|
|
@@ -230,6 +256,18 @@ declare class DropshipperClient {
|
|
|
230
256
|
* ```
|
|
231
257
|
*/
|
|
232
258
|
chatAssistant(body: ChatRequest): Promise<ChatResponse>;
|
|
259
|
+
/**
|
|
260
|
+
* Stream the AI assistant's reply.
|
|
261
|
+
*
|
|
262
|
+
* Unlike `chatAssistant`, this surfaces the model's progress: the backend
|
|
263
|
+
* resolves the intent first and then streams the answer token by token
|
|
264
|
+
* (catalog searches) or returns the full answer in one shot (greetings/other).
|
|
265
|
+
* The response is normalized into a single `ReadableStream<ChatStreamEvent>`
|
|
266
|
+
* so callers can show a live "thinking" label and render text incrementally.
|
|
267
|
+
*
|
|
268
|
+
* `POST /admin/thor/dropshipper/ai/chat`
|
|
269
|
+
*/
|
|
270
|
+
chatAssistantStream(body: ChatRequest): Promise<ReadableStream<ChatStreamEvent>>;
|
|
233
271
|
/**
|
|
234
272
|
* List feed notifications for the authenticated dropshipper.
|
|
235
273
|
*
|
|
@@ -753,4 +791,4 @@ declare class DropshipperClient {
|
|
|
753
791
|
getGeoCities(code: string): Promise<GetGeoCitiesResponse>;
|
|
754
792
|
}
|
|
755
793
|
|
|
756
|
-
export { DropshipperClient, type DropshipperClientConfig, MedusaAdminClient, type MedusaAdminClientConfig };
|
|
794
|
+
export { type ChatStreamEvent, DropshipperClient, type DropshipperClientConfig, MedusaAdminClient, type MedusaAdminClientConfig };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { GetChannelCustomersOptions, GetChannelCustomersResponse, GetChannelApiKeysResponse, GetChannelCategoriesOptions, GetChannelCategoriesResponse, GetCategorySalesChannelsResponse, AssignCategoriesToChannelsBody, AssignCategoriesToChannelsResponse, UnassignCategoriesFromChannelsBody, UnassignCategoriesFromChannelsResponse, GetCollectionSalesChannelsResponse, AssignCollectionsToChannelsBody, AssignCollectionsToChannelsResponse, UnassignCollectionsFromChannelsBody, UnassignCollectionsFromChannelsResponse, GetAdminStorefrontConfigResponse, UpdateStorefrontConfigBody, UpdateStorefrontConfigResponse, GetAdminSiteConfigResponse, UpdateSiteConfigBody, UpdateSiteConfigResponse, GetAdminSiteConfigHistoryOptions, GetAdminSiteConfigHistoryResponse, RestoreSiteConfigResponse, DropshipperDashboardCapabilities, GetMyProfileResponse, ChatRequest, ChatResponse, GetNotificationsOptions, GetNotificationsResponse, OnboardDropshipperBody, OnboardDropshipperResponse, GetDropshipperProductsOptions, GetDropshipperProductsResponse, ValidateCheckoutItemsRequest, ValidateCheckoutItemsResponse, CostPriceChangesCheckResponse, CostPriceChangesResponse, AcknowledgeCostPriceChangesResponse, UpdateDropshipperProductStatusBody, UpdateDropshipperProductStatusResponse, GetProductAttributesResponse, GetDropshipperAttributesResponse, UpdateDropshipperPricesBody, UpdateDropshipperPricesResponse, GetDropshipperOrdersOptions, GetDropshipperOrdersResponse, GetDropshipperOrderDetailResponse, GetDropshipperShippingOptionsParams, GetDropshipperShippingOptionsResponse, ExtendedCreateDropshipperOrderBody, ExtendedCreateDropshipperOrderResponse, SetPaymentCollectorBody, SetPaymentCollectorResponse, SetPaymentMethodBody, SetPaymentMethodResponse, CancelDropshipperOrderResponse, CreateOrderEditBody, CreateOrderEditResponse, AddOrderEditItemBody, AddOrderEditItemResponse, ConfirmOrderEditResponse, GetOrderNotesResponse, CreateOrderNoteBody, CreateOrderNoteResponse, DeleteOrderNoteResponse, GetProviderCategoriesResponse, GetDropshipperCategoriesOptions, GetDropshipperCategoriesResponse, CreateDropshipperCategoryBody, DropshipperCategory, UpdateDropshipperCategoryBody, DeleteDropshipperCategoryResponse, GetCategoryMappingsOptions, GetCategoryMappingsResponse, CreateCategoryMappingBody, CreateCategoryMappingResponse, DeleteCategoryMappingResponse, GetDropshipperCustomersOptions, GetDropshipperCustomersResponse, GetDropshipperCustomerDetailResponse, CreateDropshipperCustomerBody, CreateDropshipperCustomerResponse, UpdateDropshipperCustomerBody, UpdateDropshipperCustomerResponse, GetDropshipperAddressesResponse, DropshipperAddressBody, DropshipperAddressResponse, GetDropshipperAccountResponse, GetDropshipperPayableResponse, GetDropshipperReceivableResponse, GetSettlementsOptions, GetSettlementsResponse, GetSettlementDetailResponse, GetDropshipperAccountBalanceResponse, GetDropshipperAccountOrdersOptions, GetDropshipperAccountOrdersResponse, CreateSettlementBody, CreateSettlementResponse, ConfirmSettlementBody, UpdateSettlementStatusResponse, CancelSettlementBody, GetAdminDropshipperAccountsResponse, GetAdminAccountBalanceResponse, GetAdminPriceListsResponse, GetUserChannelResponse, GetAdminDropshipperAccountOrdersResponse, GetAdminDropshipperAccountSettlementsOptions, GetAdminDropshipperAccountSettlementsResponse, ResolveGuaranteeBody, ResolveGuaranteeResponse, CreateCompensacionBody, CreateCompensacionResponse, CreateAjusteBody, CreateAjusteResponse, CreateCobroBody, CreateCobroResponse, CreatePagoBody, CreatePagoResponse, CreateReversoBody, CreateReversoResponse, ConfirmMovementBody, ConfirmMovementResponse, CancelMovementBody, CancelMovementResponse, GetFinancialAnalysisResponse, RegisterPaymentBody, RegisterPaymentResponse, GetDropshipperPromotionsOptions, GetDropshipperPromotionsResponse, CreateDropshipperPromotionBody, DropshipperPromotion, UpdateDropshipperPromotionBody, DeleteDropshipperPromotionResponse, GetDashboardStatsOptions, GetDashboardStatsResponse, GetStorefrontDropshipperCategoriesResponse, GetDropshipperDraftOrdersOptions, GetDropshipperDraftOrdersResponse, GetDropshipperDraftOrderDetailResponse, CreateDropshipperDraftOrderBody, CreateDropshipperDraftOrderResponse, UpdateDropshipperDraftOrderBody, UpdateDropshipperDraftOrderResponse, ConvertDropshipperDraftOrderBody, ConvertDropshipperDraftOrderResponse, DeleteDropshipperDraftOrderResponse, GetGeoCountriesResponse, GetGeoProvincesResponse, GetGeoCitiesResponse } from '@thorprovider/types';
|
|
1
|
+
import { GetChannelCustomersOptions, GetChannelCustomersResponse, GetChannelApiKeysResponse, GetChannelCategoriesOptions, GetChannelCategoriesResponse, GetCategorySalesChannelsResponse, AssignCategoriesToChannelsBody, AssignCategoriesToChannelsResponse, UnassignCategoriesFromChannelsBody, UnassignCategoriesFromChannelsResponse, GetCollectionSalesChannelsResponse, AssignCollectionsToChannelsBody, AssignCollectionsToChannelsResponse, UnassignCollectionsFromChannelsBody, UnassignCollectionsFromChannelsResponse, GetAdminStorefrontConfigResponse, UpdateStorefrontConfigBody, UpdateStorefrontConfigResponse, GetAdminSiteConfigResponse, UpdateSiteConfigBody, UpdateSiteConfigResponse, GetAdminSiteConfigHistoryOptions, GetAdminSiteConfigHistoryResponse, RestoreSiteConfigResponse, ChatIntent, ChatSource, DropshipperDashboardCapabilities, GetMyProfileResponse, ChatRequest, ChatResponse, GetNotificationsOptions, GetNotificationsResponse, OnboardDropshipperBody, OnboardDropshipperResponse, GetDropshipperProductsOptions, GetDropshipperProductsResponse, ValidateCheckoutItemsRequest, ValidateCheckoutItemsResponse, CostPriceChangesCheckResponse, CostPriceChangesResponse, AcknowledgeCostPriceChangesResponse, UpdateDropshipperProductStatusBody, UpdateDropshipperProductStatusResponse, GetProductAttributesResponse, GetDropshipperAttributesResponse, UpdateDropshipperPricesBody, UpdateDropshipperPricesResponse, GetDropshipperOrdersOptions, GetDropshipperOrdersResponse, GetDropshipperOrderDetailResponse, GetDropshipperShippingOptionsParams, GetDropshipperShippingOptionsResponse, ExtendedCreateDropshipperOrderBody, ExtendedCreateDropshipperOrderResponse, SetPaymentCollectorBody, SetPaymentCollectorResponse, SetPaymentMethodBody, SetPaymentMethodResponse, CancelDropshipperOrderResponse, CreateOrderEditBody, CreateOrderEditResponse, AddOrderEditItemBody, AddOrderEditItemResponse, ConfirmOrderEditResponse, GetOrderNotesResponse, CreateOrderNoteBody, CreateOrderNoteResponse, DeleteOrderNoteResponse, GetProviderCategoriesResponse, GetDropshipperCategoriesOptions, GetDropshipperCategoriesResponse, CreateDropshipperCategoryBody, DropshipperCategory, UpdateDropshipperCategoryBody, DeleteDropshipperCategoryResponse, GetCategoryMappingsOptions, GetCategoryMappingsResponse, CreateCategoryMappingBody, CreateCategoryMappingResponse, DeleteCategoryMappingResponse, GetDropshipperCustomersOptions, GetDropshipperCustomersResponse, GetDropshipperCustomerDetailResponse, CreateDropshipperCustomerBody, CreateDropshipperCustomerResponse, UpdateDropshipperCustomerBody, UpdateDropshipperCustomerResponse, GetDropshipperAddressesResponse, DropshipperAddressBody, DropshipperAddressResponse, GetDropshipperAccountResponse, GetDropshipperPayableResponse, GetDropshipperReceivableResponse, GetSettlementsOptions, GetSettlementsResponse, GetSettlementDetailResponse, GetDropshipperAccountBalanceResponse, GetDropshipperAccountOrdersOptions, GetDropshipperAccountOrdersResponse, CreateSettlementBody, CreateSettlementResponse, ConfirmSettlementBody, UpdateSettlementStatusResponse, CancelSettlementBody, GetAdminDropshipperAccountsResponse, GetAdminAccountBalanceResponse, GetAdminPriceListsResponse, GetUserChannelResponse, GetAdminDropshipperAccountOrdersResponse, GetAdminDropshipperAccountSettlementsOptions, GetAdminDropshipperAccountSettlementsResponse, ResolveGuaranteeBody, ResolveGuaranteeResponse, CreateCompensacionBody, CreateCompensacionResponse, CreateAjusteBody, CreateAjusteResponse, CreateCobroBody, CreateCobroResponse, CreatePagoBody, CreatePagoResponse, CreateReversoBody, CreateReversoResponse, ConfirmMovementBody, ConfirmMovementResponse, CancelMovementBody, CancelMovementResponse, GetFinancialAnalysisResponse, RegisterPaymentBody, RegisterPaymentResponse, GetDropshipperPromotionsOptions, GetDropshipperPromotionsResponse, CreateDropshipperPromotionBody, DropshipperPromotion, UpdateDropshipperPromotionBody, DeleteDropshipperPromotionResponse, GetDashboardStatsOptions, GetDashboardStatsResponse, GetStorefrontDropshipperCategoriesResponse, GetDropshipperDraftOrdersOptions, GetDropshipperDraftOrdersResponse, GetDropshipperDraftOrderDetailResponse, CreateDropshipperDraftOrderBody, CreateDropshipperDraftOrderResponse, UpdateDropshipperDraftOrderBody, UpdateDropshipperDraftOrderResponse, ConvertDropshipperDraftOrderBody, ConvertDropshipperDraftOrderResponse, DeleteDropshipperDraftOrderResponse, GetGeoCountriesResponse, GetGeoProvincesResponse, GetGeoCitiesResponse } from '@thorprovider/types';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* @fileoverview Medusa Multi-Tenant Admin Client
|
|
@@ -163,6 +163,32 @@ declare class MedusaAdminClient {
|
|
|
163
163
|
* Endpoint reference: `dropshipping-api-contract.md`
|
|
164
164
|
*/
|
|
165
165
|
|
|
166
|
+
/**
|
|
167
|
+
* One event from the streamed AI assistant chat (`chatAssistantStream`).
|
|
168
|
+
*
|
|
169
|
+
* The backend returns a UI-message stream (SSE over `text/event-stream`) for
|
|
170
|
+
* catalog searches, and a plain JSON `ChatResponse` for greetings/other
|
|
171
|
+
* intents. `chatAssistantStream` normalizes both into this single event type so
|
|
172
|
+
* consumers can render incremental text and update the "thinking" label as the
|
|
173
|
+
* model progresses without knowing the transport details.
|
|
174
|
+
*/
|
|
175
|
+
type ChatStreamEvent = {
|
|
176
|
+
type: 'start';
|
|
177
|
+
/** Semantic intent as soon as the backend resolves it. */
|
|
178
|
+
intent?: ChatIntent;
|
|
179
|
+
} | {
|
|
180
|
+
type: 'text-delta';
|
|
181
|
+
/** A chunk of the assistant's answer, appended to the bubble. */
|
|
182
|
+
delta: string;
|
|
183
|
+
} | {
|
|
184
|
+
type: 'finish';
|
|
185
|
+
intent: ChatIntent;
|
|
186
|
+
/** Products referenced by the answer (empty for greetings/other). */
|
|
187
|
+
sources: ChatSource[];
|
|
188
|
+
} | {
|
|
189
|
+
type: 'error';
|
|
190
|
+
errorText: string;
|
|
191
|
+
};
|
|
166
192
|
/**
|
|
167
193
|
* Configuration required to instantiate the dropshipper client.
|
|
168
194
|
*/
|
|
@@ -230,6 +256,18 @@ declare class DropshipperClient {
|
|
|
230
256
|
* ```
|
|
231
257
|
*/
|
|
232
258
|
chatAssistant(body: ChatRequest): Promise<ChatResponse>;
|
|
259
|
+
/**
|
|
260
|
+
* Stream the AI assistant's reply.
|
|
261
|
+
*
|
|
262
|
+
* Unlike `chatAssistant`, this surfaces the model's progress: the backend
|
|
263
|
+
* resolves the intent first and then streams the answer token by token
|
|
264
|
+
* (catalog searches) or returns the full answer in one shot (greetings/other).
|
|
265
|
+
* The response is normalized into a single `ReadableStream<ChatStreamEvent>`
|
|
266
|
+
* so callers can show a live "thinking" label and render text incrementally.
|
|
267
|
+
*
|
|
268
|
+
* `POST /admin/thor/dropshipper/ai/chat`
|
|
269
|
+
*/
|
|
270
|
+
chatAssistantStream(body: ChatRequest): Promise<ReadableStream<ChatStreamEvent>>;
|
|
233
271
|
/**
|
|
234
272
|
* List feed notifications for the authenticated dropshipper.
|
|
235
273
|
*
|
|
@@ -753,4 +791,4 @@ declare class DropshipperClient {
|
|
|
753
791
|
getGeoCities(code: string): Promise<GetGeoCitiesResponse>;
|
|
754
792
|
}
|
|
755
793
|
|
|
756
|
-
export { DropshipperClient, type DropshipperClientConfig, MedusaAdminClient, type MedusaAdminClientConfig };
|
|
794
|
+
export { type ChatStreamEvent, DropshipperClient, type DropshipperClientConfig, MedusaAdminClient, type MedusaAdminClientConfig };
|
package/dist/index.js
CHANGED
|
@@ -476,6 +476,70 @@ var DropshipperClient = class {
|
|
|
476
476
|
body
|
|
477
477
|
);
|
|
478
478
|
}
|
|
479
|
+
/**
|
|
480
|
+
* Stream the AI assistant's reply.
|
|
481
|
+
*
|
|
482
|
+
* Unlike `chatAssistant`, this surfaces the model's progress: the backend
|
|
483
|
+
* resolves the intent first and then streams the answer token by token
|
|
484
|
+
* (catalog searches) or returns the full answer in one shot (greetings/other).
|
|
485
|
+
* The response is normalized into a single `ReadableStream<ChatStreamEvent>`
|
|
486
|
+
* so callers can show a live "thinking" label and render text incrementally.
|
|
487
|
+
*
|
|
488
|
+
* `POST /admin/thor/dropshipper/ai/chat`
|
|
489
|
+
*/
|
|
490
|
+
async chatAssistantStream(body) {
|
|
491
|
+
const url = `${this.baseUrl}/admin/thor/dropshipper/ai/chat`;
|
|
492
|
+
this.logger.debug("[dropshipper] POST /admin/thor/dropshipper/ai/chat (stream)");
|
|
493
|
+
const init = {
|
|
494
|
+
method: "POST",
|
|
495
|
+
headers: {
|
|
496
|
+
Authorization: `Bearer ${this.token}`,
|
|
497
|
+
"Content-Type": "application/json",
|
|
498
|
+
Accept: "text/event-stream"
|
|
499
|
+
},
|
|
500
|
+
body: JSON.stringify(body)
|
|
501
|
+
};
|
|
502
|
+
let response;
|
|
503
|
+
try {
|
|
504
|
+
response = await fetchBackendWithResilience(url, init);
|
|
505
|
+
} catch (networkError) {
|
|
506
|
+
throw new import_adapters3.ProviderAPIError(
|
|
507
|
+
`[dropshipper] Network error on POST /admin/thor/dropshipper/ai/chat: ${networkError.message}`,
|
|
508
|
+
"NETWORK_ERROR",
|
|
509
|
+
networkError
|
|
510
|
+
);
|
|
511
|
+
}
|
|
512
|
+
if (!response.ok) {
|
|
513
|
+
let message = `HTTP ${response.status}`;
|
|
514
|
+
try {
|
|
515
|
+
const json = await response.json();
|
|
516
|
+
message = json?.message ?? message;
|
|
517
|
+
} catch {
|
|
518
|
+
}
|
|
519
|
+
throw new import_adapters3.ProviderAPIError(
|
|
520
|
+
`[dropshipper] POST /admin/thor/dropshipper/ai/chat failed: ${message}`,
|
|
521
|
+
`DROPSHIPPER_API_${response.status}`,
|
|
522
|
+
response.status
|
|
523
|
+
);
|
|
524
|
+
}
|
|
525
|
+
const contentType = response.headers.get("content-type") ?? "";
|
|
526
|
+
if (contentType.includes("text/event-stream") && response.body) {
|
|
527
|
+
return mapUiMessageStreamToEvents(response.body);
|
|
528
|
+
}
|
|
529
|
+
const data = await response.json();
|
|
530
|
+
return new ReadableStream({
|
|
531
|
+
start(controller) {
|
|
532
|
+
controller.enqueue({ type: "start", intent: data.intent });
|
|
533
|
+
controller.enqueue({ type: "text-delta", delta: data.answer });
|
|
534
|
+
controller.enqueue({
|
|
535
|
+
type: "finish",
|
|
536
|
+
intent: data.intent,
|
|
537
|
+
sources: data.sources ?? []
|
|
538
|
+
});
|
|
539
|
+
controller.close();
|
|
540
|
+
}
|
|
541
|
+
});
|
|
542
|
+
}
|
|
479
543
|
// -------------------------------------------------------------------------
|
|
480
544
|
// Notifications
|
|
481
545
|
// -------------------------------------------------------------------------
|
|
@@ -1634,6 +1698,81 @@ var DropshipperClient = class {
|
|
|
1634
1698
|
);
|
|
1635
1699
|
}
|
|
1636
1700
|
};
|
|
1701
|
+
async function* parseSse(stream) {
|
|
1702
|
+
const reader = stream.getReader();
|
|
1703
|
+
const decoder = new TextDecoder();
|
|
1704
|
+
let buffer = "";
|
|
1705
|
+
try {
|
|
1706
|
+
while (true) {
|
|
1707
|
+
const { done, value } = await reader.read();
|
|
1708
|
+
if (done) break;
|
|
1709
|
+
buffer += decoder.decode(value, { stream: true });
|
|
1710
|
+
const lines = buffer.split(/\r?\n/);
|
|
1711
|
+
buffer = lines.pop() ?? "";
|
|
1712
|
+
for (const line of lines) {
|
|
1713
|
+
const trimmed = line.trim();
|
|
1714
|
+
if (!trimmed.startsWith("data:")) continue;
|
|
1715
|
+
const payload = trimmed.slice(5).trim();
|
|
1716
|
+
if (!payload || payload === "[DONE]") continue;
|
|
1717
|
+
try {
|
|
1718
|
+
yield JSON.parse(payload);
|
|
1719
|
+
} catch {
|
|
1720
|
+
}
|
|
1721
|
+
}
|
|
1722
|
+
}
|
|
1723
|
+
const tail = buffer.trim();
|
|
1724
|
+
if (tail.startsWith("data:")) {
|
|
1725
|
+
const payload = tail.slice(5).trim();
|
|
1726
|
+
if (payload && payload !== "[DONE]") {
|
|
1727
|
+
try {
|
|
1728
|
+
yield JSON.parse(payload);
|
|
1729
|
+
} catch {
|
|
1730
|
+
}
|
|
1731
|
+
}
|
|
1732
|
+
}
|
|
1733
|
+
} finally {
|
|
1734
|
+
reader.releaseLock();
|
|
1735
|
+
}
|
|
1736
|
+
}
|
|
1737
|
+
function mapUiMessageStreamToEvents(stream) {
|
|
1738
|
+
return new ReadableStream({
|
|
1739
|
+
async start(controller) {
|
|
1740
|
+
for await (const raw of parseSse(stream)) {
|
|
1741
|
+
const chunk = raw;
|
|
1742
|
+
switch (chunk.type) {
|
|
1743
|
+
case "start":
|
|
1744
|
+
controller.enqueue({
|
|
1745
|
+
type: "start",
|
|
1746
|
+
intent: chunk.messageMetadata?.intent
|
|
1747
|
+
});
|
|
1748
|
+
break;
|
|
1749
|
+
case "text-delta":
|
|
1750
|
+
if (chunk.delta !== void 0) {
|
|
1751
|
+
controller.enqueue({ type: "text-delta", delta: chunk.delta });
|
|
1752
|
+
}
|
|
1753
|
+
break;
|
|
1754
|
+
case "finish":
|
|
1755
|
+
controller.enqueue({
|
|
1756
|
+
type: "finish",
|
|
1757
|
+
intent: chunk.messageMetadata?.intent ?? "other",
|
|
1758
|
+
sources: chunk.messageMetadata?.sources ?? []
|
|
1759
|
+
});
|
|
1760
|
+
break;
|
|
1761
|
+
case "error":
|
|
1762
|
+
controller.enqueue({
|
|
1763
|
+
type: "error",
|
|
1764
|
+
errorText: chunk.errorText ?? "Error inesperado del asistente."
|
|
1765
|
+
});
|
|
1766
|
+
break;
|
|
1767
|
+
}
|
|
1768
|
+
}
|
|
1769
|
+
controller.close();
|
|
1770
|
+
},
|
|
1771
|
+
cancel() {
|
|
1772
|
+
stream.cancel?.();
|
|
1773
|
+
}
|
|
1774
|
+
});
|
|
1775
|
+
}
|
|
1637
1776
|
// Annotate the CommonJS export names for ESM import in node:
|
|
1638
1777
|
0 && (module.exports = {
|
|
1639
1778
|
DropshipperClient,
|