@yoryoboy/bi-mcp 1.14.3 → 1.16.0

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.
Files changed (29) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/index.js +12 -1
  3. package/dist/index.js.map +2 -2
  4. package/dist/mcp-use.json +2 -2
  5. package/dist/src/services/mercadolibre/mercadolibre-billing.js +99 -1
  6. package/dist/src/services/mercadolibre/mercadolibre-billing.js.map +2 -2
  7. package/dist/src/tools/mercadolibre/get-billing-provisions-summary.js +391 -0
  8. package/dist/src/tools/mercadolibre/get-billing-provisions-summary.js.map +7 -0
  9. package/dist/src/tools/mercadolibre/get-order-details.js +18 -4
  10. package/dist/src/tools/mercadolibre/get-order-details.js.map +2 -2
  11. package/dist/src/tools/mercadolibre/get-orders-summary.js +6 -2
  12. package/dist/src/tools/mercadolibre/get-orders-summary.js.map +2 -2
  13. package/dist/src/tools/mercadolibre/get-shipping-summary.js +50 -14
  14. package/dist/src/tools/mercadolibre/get-shipping-summary.js.map +2 -2
  15. package/dist/src/tools/mercadolibre/index.js +1 -0
  16. package/dist/src/tools/mercadolibre/index.js.map +2 -2
  17. package/dist/tests/meli/mercadolibre-billing-provisions.test.js +940 -0
  18. package/dist/tests/meli/mercadolibre-billing-provisions.test.js.map +7 -0
  19. package/dist/tests/meli/mercadolibre-tool-handlers-medium-batch4.test.js +16 -4
  20. package/dist/tests/meli/mercadolibre-tool-handlers-medium-batch4.test.js.map +2 -2
  21. package/dist/tests/meli/mercadolibre-tool-handlers-monster-batch5.test.js +25 -3
  22. package/dist/tests/meli/mercadolibre-tool-handlers-monster-batch5.test.js.map +2 -2
  23. package/dist/tests/meli/mercadolibre-tool-handlers-monster-batch6.test.js +141 -5
  24. package/dist/tests/meli/mercadolibre-tool-handlers-monster-batch6.test.js.map +2 -2
  25. package/dist/tests/meli/mercadolibre-tool-handlers-monster-batch7.test.js +3 -2
  26. package/dist/tests/meli/mercadolibre-tool-handlers-monster-batch7.test.js.map +2 -2
  27. package/dist/vitest.config.js +3 -1
  28. package/dist/vitest.config.js.map +2 -2
  29. package/package.json +1 -1
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../tests/meli/mercadolibre-billing-provisions.test.ts"],
4
+ "sourcesContent": ["import { beforeEach, describe, expect, it, vi } from \"vitest\";\n\n// \u2500\u2500 Hoisted mocks (named functions avoid hoist issues) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nconst { axiosGetMock, errorMock, objectMock, resolveProfileMock, formatErrorMock, apiContextMock } = vi.hoisted(() => ({\n axiosGetMock: vi.fn(),\n errorMock: vi.fn((message: string) => ({ kind: \"error\", message })),\n objectMock: vi.fn((payload: unknown) => ({ kind: \"object\", payload })),\n resolveProfileMock: vi.fn(),\n formatErrorMock: vi.fn(\n (err: unknown, fallback: string) =>\n `formatted:${fallback}:${err instanceof Error ? err.message : String(err)}`\n ),\n apiContextMock: vi.fn((profileId: string) =>\n Promise.resolve({\n sellerId: `seller-${profileId}`,\n scopes: [\"read\"],\n expiresAt: \"2026-12-31T00:00:00.000Z\",\n api: { get: axiosGetMock },\n })\n ),\n}));\n\nvi.mock(\"mcp-use/server\", () => ({\n object: objectMock,\n error: errorMock,\n}));\n\nvi.mock(\"../../src/services/mercadolibre/mercadolibre-api.js\", () => ({\n getMercadoLibreApiContext: apiContextMock,\n formatMercadoLibreError: formatErrorMock,\n}));\n\nvi.mock(\"../../src/tools/mercadolibre/profile-resolution.js\", () => ({\n resolveMercadoLibreProfileOrSelection: resolveProfileMock,\n}));\n\n// \u2500\u2500 Imports after mocks \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nimport {\n getMercadoLibreBillingProvisionPage,\n getMercadoLibreBillingProvisions,\n scopeToGroupPath,\n} from \"../../src/services/mercadolibre/mercadolibre-billing.js\";\nimport {\n meliGetBillingProvisionsSummaryHandler,\n meliGetBillingProvisionsSummarySchema,\n detailsSchema,\n detailsSalesSchema,\n detailsItemsSchema,\n} from \"../../src/tools/mercadolibre/get-billing-provisions-summary.js\";\n\n// \u2500\u2500 Real MELI nested row factory \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/** Creates a row matching the real MELI Billing provisioning payload shape. */\nfunction nestedRow(overrides: Record<string, unknown> = {}): Record<string, unknown> {\n const chargeInfo = (overrides.charge_info as Record<string, unknown>) ?? {};\n const currencyInfo = (overrides.currency_info as Record<string, unknown>) ?? {};\n const salesInfo = overrides.sales_info as Array<Record<string, unknown>> | undefined;\n const itemsInfo = overrides.items_info as Array<Record<string, unknown>> | undefined;\n const marketplaceInfo = overrides.marketplace_info as Record<string, unknown> | undefined;\n\n return {\n charge_info: {\n detail_id: chargeInfo.detail_id ?? `id-${Math.random().toString(36).slice(2, 8)}`,\n detail_amount: chargeInfo.detail_amount ?? 0,\n detail_sub_type: chargeInfo.detail_sub_type ?? \"\",\n concept_type: chargeInfo.concept_type ?? \"\",\n transaction_detail: chargeInfo.transaction_detail ?? \"\",\n detail_type: chargeInfo.detail_type ?? \"\",\n creation_date_time: chargeInfo.creation_date_time ?? \"\",\n ...chargeInfo,\n },\n currency_info: {\n currency_id: currencyInfo.currency_id ?? \"ARS\",\n ...currencyInfo,\n },\n sales_info: salesInfo ?? [],\n items_info: itemsInfo ?? [],\n marketplace_info: marketplaceInfo ?? {},\n ...overrides,\n };\n}\n\n// \u2500\u2500 Service-level unit tests \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\ndescribe(\"scopeToGroupPath\", () => {\n it(\"maps ml to ML\", () => {\n expect(scopeToGroupPath(\"ml\")).toBe(\"ML\");\n });\n it(\"maps mp to MP\", () => {\n expect(scopeToGroupPath(\"mp\")).toBe(\"MP\");\n });\n it(\"maps flex to ML/flex\", () => {\n expect(scopeToGroupPath(\"flex\")).toBe(\"ML/flex\");\n });\n it(\"maps full to ML/full\", () => {\n expect(scopeToGroupPath(\"full\")).toBe(\"ML/full\");\n });\n});\n\ndescribe(\"getMercadoLibreBillingProvisionPage\", () => {\n beforeEach(() => {\n vi.clearAllMocks();\n });\n\n function mockApiResponse(results: Record<string, unknown>[] = [], overrides: Record<string, unknown> = {}) {\n const total = overrides.total ?? results.length;\n const limit = overrides.limit ?? 1000;\n const last_id = overrides.last_id ?? (results.length > 0 ? \"last-99\" : null);\n return {\n data: { results, last_id, total, limit },\n };\n }\n\n it(\"builds correct URL for flex scope\", async () => {\n axiosGetMock.mockResolvedValue(mockApiResponse());\n\n await getMercadoLibreBillingProvisionPage(\"profile-1\", {\n periodKey: \"2026-06-01\",\n scope: \"flex\",\n documentType: \"BILL\",\n limit: 1000,\n });\n\n const call = axiosGetMock.mock.calls[0];\n expect(call[0]).toContain(\"/group/ML/flex/details\");\n expect(call[1].params.document_type).toBe(\"BILL\");\n expect(call[1].params.limit).toBe(1000);\n });\n\n it(\"builds correct URL for mp scope\", async () => {\n axiosGetMock.mockResolvedValue(mockApiResponse());\n\n await getMercadoLibreBillingProvisionPage(\"profile-1\", {\n periodKey: \"2026-06-01\",\n scope: \"mp\",\n documentType: \"BILL\",\n limit: 1000,\n });\n\n expect(axiosGetMock.mock.calls[0][0]).toContain(\"/group/MP/details\");\n });\n\n it(\"passes from_id when provided\", async () => {\n axiosGetMock.mockResolvedValue(mockApiResponse());\n\n await getMercadoLibreBillingProvisionPage(\"profile-1\", {\n periodKey: \"2026-06-01\",\n scope: \"ml\",\n documentType: \"BILL\",\n limit: 1000,\n fromId: \"abc-123\",\n });\n\n expect(axiosGetMock.mock.calls[0][1].params.from_id).toBe(\"abc-123\");\n });\n\n it(\"passes optional filter params\", async () => {\n axiosGetMock.mockResolvedValue(mockApiResponse());\n\n await getMercadoLibreBillingProvisionPage(\"profile-1\", {\n periodKey: \"2026-06-01\",\n scope: \"ml\",\n documentType: \"BILL\",\n limit: 1000,\n detailType: \"sale\",\n detailSubTypes: [\"commission\"],\n marketplaceType: \"classic\",\n orderIds: [\"O1\"],\n itemIds: [\"I1\"],\n });\n\n const p = axiosGetMock.mock.calls[0][1].params;\n expect(p.detail_type).toBe(\"sale\");\n expect(p.detail_sub_types).toBe(\"commission\");\n expect(p.marketplace_type).toBe(\"classic\");\n expect(p.order_ids).toBe(\"O1\");\n expect(p.item_ids).toBe(\"I1\");\n });\n\n it(\"reads flat total/limit from real MELI envelope (no paging nesting)\", async () => {\n axiosGetMock.mockResolvedValue({\n data: {\n results: [nestedRow({ charge_info: { detail_id: \"d1\", detail_amount: 10 } })],\n last_id: \"last-1\",\n total: 42,\n limit: 500,\n },\n });\n\n const page = await getMercadoLibreBillingProvisionPage(\"profile-1\", {\n periodKey: \"2026-06-01\",\n scope: \"ml\",\n documentType: \"BILL\",\n limit: 1000,\n });\n\n expect(page.total).toBe(42);\n expect(page.limit).toBe(500);\n expect((page as unknown as Record<string, unknown>).paging).toBeUndefined();\n });\n});\n\ndescribe(\"getMercadoLibreBillingProvisions\", () => {\n beforeEach(() => {\n vi.clearAllMocks();\n });\n\n function mockApi(results: Record<string, unknown>[], last_id: string | null, total: number, limit = 1000) {\n return { data: { results, last_id, total, limit } };\n }\n\n it(\"deduplicates by charge_info.detail_id across pages\", async () => {\n axiosGetMock\n .mockResolvedValueOnce(mockApi([\n nestedRow({ charge_info: { detail_id: \"a\", detail_amount: 10 } }),\n nestedRow({ charge_info: { detail_id: \"b\", detail_amount: 20 } }),\n ], \"last-1\", 3))\n .mockResolvedValueOnce(mockApi([\n nestedRow({ charge_info: { detail_id: \"b\", detail_amount: 20 } }), // duplicate\n nestedRow({ charge_info: { detail_id: \"c\", detail_amount: 30 } }),\n ], null, 3));\n\n const result = await getMercadoLibreBillingProvisions(\"profile-1\", {\n periodKey: \"2026-06-01\",\n scope: \"ml\",\n documentType: \"BILL\",\n });\n\n expect(result.detail_count_total).toBe(3);\n expect(result.coverage_complete).toBe(true);\n expect(result.rows.length).toBe(3);\n });\n\n it(\"stops when last_id does not advance\", async () => {\n axiosGetMock\n .mockResolvedValueOnce(mockApi([\n nestedRow({ charge_info: { detail_id: \"a\", detail_amount: 10 } }),\n ], \"stuck-id\", 1))\n .mockResolvedValueOnce(mockApi([\n nestedRow({ charge_info: { detail_id: \"b\", detail_amount: 20 } }),\n ], \"stuck-id\", 2));\n\n const result = await getMercadoLibreBillingProvisions(\"profile-1\", {\n periodKey: \"2026-06-01\",\n scope: \"ml\",\n documentType: \"BILL\",\n });\n\n expect(result.pages_requested).toBe(2);\n expect(result.detail_count_total).toBe(2);\n expect(result.coverage_complete).toBe(false);\n });\n\n it(\"returns coverage_complete=false with failures and breaks on error\", async () => {\n axiosGetMock\n .mockResolvedValueOnce(mockApi([\n nestedRow({ charge_info: { detail_id: \"a\", detail_amount: 10 } }),\n ], \"page-1-last\", 10))\n .mockRejectedValueOnce(new Error(\"Network error\"));\n\n const result = await getMercadoLibreBillingProvisions(\"profile-1\", {\n periodKey: \"2026-06-01\",\n scope: \"mp\",\n documentType: \"BILL\",\n });\n\n expect(result.pages_requested).toBe(2);\n expect(result.pages_succeeded).toBe(1);\n expect(result.pages_failed).toBe(1);\n expect(result.coverage_complete).toBe(false);\n expect(result.failures).toHaveLength(1);\n expect(result.failures[0].page).toBe(2);\n expect(result.rows.length).toBe(1);\n });\n\n it(\"handles empty results gracefully\", async () => {\n axiosGetMock.mockResolvedValueOnce(mockApi([], null, 0));\n\n const result = await getMercadoLibreBillingProvisions(\"profile-1\", {\n periodKey: \"2026-06-01\",\n scope: \"full\",\n documentType: \"BILL\",\n });\n\n expect(result.pages_requested).toBe(1);\n expect(result.detail_count_total).toBe(0);\n expect(result.coverage_complete).toBe(true);\n });\n});\n\n// \u2500\u2500 Tool handler unit tests \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\ndescribe(\"meliGetBillingProvisionsSummaryHandler\", () => {\n beforeEach(() => {\n vi.clearAllMocks();\n vi.mocked(resolveProfileMock).mockResolvedValue({\n ok: true,\n value: { profileId: \"meli-profile-1\" },\n } as never);\n });\n\n function mockApi(results: Record<string, unknown>[], last_id: string | null = null, total?: number) {\n return { data: { results, last_id, total: total ?? results.length, limit: 1000 } };\n }\n\n it(\"validates schema: periodKey must be YYYY-MM-01 format\", () => {\n const valid = \"2026-06-01\";\n const invalid = \"2026-06-15\";\n\n expect(() => meliGetBillingProvisionsSummarySchema.parse({ periodKey: valid, scope: \"ml\" })).not.toThrow();\n expect(() => meliGetBillingProvisionsSummarySchema.parse({ periodKey: invalid, scope: \"ml\" })).toThrow();\n });\n\n it(\"validates schema: scope must be valid enum\", () => {\n expect(() =>\n meliGetBillingProvisionsSummarySchema.parse({ periodKey: \"2026-06-01\", scope: \"ml\" })\n ).not.toThrow();\n expect(() =>\n meliGetBillingProvisionsSummarySchema.parse({ periodKey: \"2026-06-01\", scope: \"invalid\" })\n ).toThrow();\n });\n\n it(\"aggregates single scope with currency totals using nested payload shape\", async () => {\n axiosGetMock.mockResolvedValue(mockApi([\n nestedRow({\n charge_info: { detail_id: \"d1\", detail_amount: 100, detail_sub_type: \"CVFV\", transaction_detail: \"Cargo por vender\" },\n sales_info: [{ order_id: \"O1\" }],\n items_info: [{ item_id: \"I1\" }],\n }),\n nestedRow({\n charge_info: { detail_id: \"d2\", detail_amount: 25, detail_sub_type: \"CFF\", transaction_detail: \"Cargo por env\u00EDos de Mercado Libre\" },\n sales_info: [{ order_id: \"O2\" }],\n }),\n nestedRow({\n charge_info: { detail_id: \"d3\", detail_amount: 150, detail_sub_type: \"CVFV\", transaction_detail: \"Cargo por vender\" },\n currency_info: { currency_id: \"USD\" },\n sales_info: [{ order_id: \"O3\" }],\n }),\n ]));\n\n const result = await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\",\n scope: \"ml\",\n documentType: \"BILL\",\n });\n\n expect(result).toHaveProperty(\"kind\", \"object\");\n const payload = (result as unknown as { kind: string; payload: Record<string, unknown> }).payload;\n\n expect(payload.profile_id).toBe(\"meli-profile-1\");\n expect(payload.scope).toBe(\"ml\");\n\n // \u2500\u2500 details_schema \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n expect(payload.details_schema).toEqual(detailsSchema);\n\n // \u2500\u2500 details (compact rows) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n const details = payload.details as unknown[][];\n expect(details).toHaveLength(3);\n // Each row must be an array\n for (const row of details) {\n expect(Array.isArray(row)).toBe(true);\n expect(row).toHaveLength(detailsSchema.length);\n }\n // Row 0: detail_id=\"d1\", amount=100, currency=\"ARS\"\n expect(details[0][0]).toBe(\"d1\"); // detail_id\n expect(details[0][4]).toBe(100); // detail_amount\n expect(details[0][5]).toBe(\"ARS\"); // currency_id\n expect(details[0][8]).toBe(\"O1\"); // order_id\n expect(details[0][10]).toBe(\"I1\"); // item_id\n\n // Row 2: currency_id=\"USD\"\n expect(details[2][5]).toBe(\"USD\");\n\n // \u2500\u2500 summary \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n const summary = payload.summary as Record<string, unknown>;\n expect(summary.detail_count).toBe(3);\n expect(summary.order_count_detected).toBe(3);\n expect(summary.item_count_detected).toBe(1);\n\n const currTotals = summary.currency_totals as Record<string, Record<string, unknown>>;\n expect(currTotals).toHaveProperty(\"ARS\");\n expect(currTotals).toHaveProperty(\"USD\");\n\n // Verify monetary field names (only the four aggregate fields)\n const arsBucket = currTotals.ARS;\n expect(Object.keys(arsBucket).sort()).toEqual([\n \"bonus_amount_total\", \"charge_amount_total\", \"discount_amount_total\", \"net_effect_total\",\n ]);\n expect(arsBucket.charge_amount_total).toBe(125);\n expect(arsBucket.bonus_amount_total).toBe(0);\n expect(arsBucket.discount_amount_total).toBe(0);\n expect(arsBucket.net_effect_total).toBe(125);\n\n expect(currTotals.USD.charge_amount_total).toBe(150);\n\n // Verify OLD fields are absent\n expect(summary.totals_by_concept).toBeUndefined();\n expect(summary.totals_by_concept_by_currency).toBeUndefined();\n expect(payload.raw_sections).toBeUndefined();\n expect(payload.enriched_sections).toBeUndefined();\n expect(payload.classification_diagnostics).toBeUndefined();\n expect(payload.summary_by_scope).toBeUndefined();\n\n // \u2500\u2500 diagnostics \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n const diag = payload.diagnostics as Record<string, unknown>;\n expect(diag).toHaveProperty(\"detail_sub_types_observed\");\n expect(diag).toHaveProperty(\"marketplaces_observed\");\n expect(diag).toHaveProperty(\"concept_types_observed\");\n expect(Array.isArray(diag.detail_sub_types_observed)).toBe(true);\n\n // \u2500\u2500 metadata \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n const metadata = payload.metadata as Record<string, unknown>;\n expect(metadata.coverage_complete).toBe(true);\n expect(metadata.coverage_by_scope).toBeDefined();\n });\n\n it(\"handles scope=all by calling all four scopes with nested payload\", async () => {\n axiosGetMock.mockResolvedValue(mockApi([\n nestedRow({\n charge_info: { detail_id: \"shared-1\", detail_amount: 50, detail_sub_type: \"sale\" },\n sales_info: [{ order_id: \"O-COMMON\" }],\n items_info: [{ item_id: \"I-COMMON\" }],\n }),\n ]));\n\n const result = await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\",\n scope: \"all\",\n documentType: \"BILL\",\n });\n\n const payload = (result as unknown as { kind: string; payload: Record<string, unknown> }).payload;\n expect(payload.scope).toBe(\"all\");\n\n const summary = payload.summary as Record<string, unknown>;\n expect(summary.detail_count).toBe(4);\n expect(summary.order_count_detected).toBe(1);\n expect(summary.item_count_detected).toBe(1);\n\n const details = payload.details as unknown[][];\n expect(details).toHaveLength(4);\n\n const metadata = payload.metadata as Record<string, unknown>;\n expect(metadata.sources_called).toBe(4);\n expect(metadata.pages_succeeded).toBe(4);\n expect(metadata.coverage_complete).toBe(true);\n expect(metadata.coverage_by_scope).toBeDefined();\n });\n\n it(\"handles credit notes with negative amounts \u2014 nested shape\", async () => {\n axiosGetMock.mockResolvedValue(mockApi([\n nestedRow({ charge_info: { detail_id: \"d1\", detail_amount: 500, detail_sub_type: \"CVFV\", transaction_detail: \"Cargo por vender\" } }),\n nestedRow({ charge_info: { detail_id: \"d2\", detail_amount: -150, detail_sub_type: \"BVFV\", transaction_detail: \"Anulaci\u00F3n del cargo por vender\" } }),\n nestedRow({ charge_info: { detail_id: \"d3\", detail_amount: -50, detail_sub_type: \"BFF\", transaction_detail: \"Anulaci\u00F3n del cargo por env\u00EDos\" } }),\n ]));\n\n const result = await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\",\n scope: \"ml\",\n documentType: \"CREDIT_NOTE\",\n });\n\n const payload = (result as unknown as { kind: string; payload: Record<string, unknown> }).payload;\n expect(payload.document_type).toBe(\"CREDIT_NOTE\");\n\n const currTotals = (payload.summary as Record<string, unknown>).currency_totals as Record<string, Record<string, unknown>>;\n expect(currTotals.ARS.charge_amount_total).toBe(500);\n expect(currTotals.ARS.bonus_amount_total).toBe(-200);\n expect(currTotals.ARS.discount_amount_total).toBe(0);\n expect(currTotals.ARS.net_effect_total).toBe(300);\n });\n\n it(\"handles mixed positive and negative amounts within same concept (nested)\", async () => {\n axiosGetMock.mockResolvedValue(mockApi([\n nestedRow({ charge_info: { detail_id: \"d1\", detail_amount: 200, detail_sub_type: \"CVFV\", transaction_detail: \"Cargo por vender\" } }),\n nestedRow({ charge_info: { detail_id: \"d2\", detail_amount: -80, detail_sub_type: \"BVFF\", transaction_detail: \"Anulaci\u00F3n del costo por unidad vendida\" } }),\n nestedRow({ charge_info: { detail_id: \"d3\", detail_amount: 50, detail_sub_type: \"CFF\", transaction_detail: \"Cargo por env\u00EDos de Mercado Libre\" } }),\n nestedRow({ charge_info: { detail_id: \"d4\", detail_amount: -20, detail_sub_type: \"BXD\", transaction_detail: \"Anulaci\u00F3n del cargo por env\u00EDos\" } }),\n ]));\n\n const result = await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\",\n scope: \"ml\",\n documentType: \"BILL\",\n });\n\n const payload = (result as unknown as { kind: string; payload: Record<string, unknown> }).payload;\n const currTotals = (payload.summary as Record<string, unknown>).currency_totals as Record<string, Record<string, unknown>>;\n\n expect(currTotals.ARS.charge_amount_total).toBe(250);\n expect(currTotals.ARS.bonus_amount_total).toBe(-100);\n expect(currTotals.ARS.discount_amount_total).toBe(0);\n expect(currTotals.ARS.net_effect_total).toBe(150);\n });\n\n it(\"deduplicates order and item counts globally across scopes\", async () => {\n let callCount = 0;\n axiosGetMock.mockImplementation(() => {\n callCount++;\n const scopeIndex = callCount - 1;\n const scopes = [\"ml\", \"mp\", \"flex\", \"full\"];\n const isPayment = scopes[scopeIndex] === \"mp\";\n return Promise.resolve(mockApi([\n nestedRow({\n charge_info: {\n detail_id: `d-${scopes[scopeIndex]}`,\n detail_amount: 50,\n detail_sub_type: isPayment ? \"payment\" : \"sale\",\n },\n sales_info: [{ order_id: \"ORDER-1\" }],\n items_info: [{ item_id: scopeIndex < 2 ? \"ITEM-A\" : \"ITEM-B\" }],\n }),\n ]));\n });\n\n const result = await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\",\n scope: \"all\",\n documentType: \"BILL\",\n });\n\n const payload = (result as unknown as { kind: string; payload: Record<string, unknown> }).payload;\n const summary = payload.summary as Record<string, unknown>;\n expect(summary.detail_count).toBe(4);\n expect(summary.order_count_detected).toBe(1);\n expect(summary.item_count_detected).toBe(2);\n });\n\n it(\"includes coverage_by_scope with per-scope operational metadata\", async () => {\n axiosGetMock.mockResolvedValue(mockApi([\n nestedRow({ charge_info: { detail_id: \"d1\", detail_amount: 10 } }),\n ]));\n\n const result = await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\",\n scope: \"ml\",\n documentType: \"BILL\",\n });\n\n const payload = (result as unknown as { kind: string; payload: Record<string, unknown> }).payload;\n const covByScope = (payload.metadata as Record<string, unknown>).coverage_by_scope as Record<string, Record<string, unknown>>;\n\n expect(covByScope).toHaveProperty(\"ml\");\n expect(covByScope.ml.coverage_complete).toBe(true);\n expect(covByScope.ml.last_id_seen).toBeUndefined();\n expect(typeof covByScope.ml.pages_requested).toBe(\"number\");\n expect(typeof covByScope.ml.pages_succeeded).toBe(\"number\");\n expect(typeof covByScope.ml.pages_failed).toBe(\"number\");\n expect(typeof covByScope.ml.detail_count).toBe(\"number\");\n });\n\n it(\"continuation_by_scope is absent when coverage is complete\", async () => {\n axiosGetMock.mockResolvedValue(mockApi([\n nestedRow({ charge_info: { detail_id: \"d1\", detail_amount: 10 } }),\n ]));\n\n const result = await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\",\n scope: \"ml\",\n documentType: \"BILL\",\n });\n\n const payload = (result as unknown as { kind: string; payload: Record<string, unknown> }).payload;\n expect((payload.metadata as Record<string, unknown>).continuation_by_scope).toBeUndefined();\n });\n\n it(\"reports coverage_complete=false and continuation_by_scope when a scope has partial coverage\", async () => {\n axiosGetMock\n .mockResolvedValueOnce(mockApi([\n nestedRow({ charge_info: { detail_id: \"a\", detail_amount: 10 } }),\n ], \"page-1-last\", 10))\n .mockRejectedValueOnce(new Error(\"Network error\"));\n\n const result = await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\",\n scope: \"ml\",\n documentType: \"BILL\",\n });\n\n const payload = (result as unknown as { kind: string; payload: Record<string, unknown> }).payload;\n const metadata = payload.metadata as Record<string, unknown>;\n expect(metadata.coverage_complete).toBe(false);\n expect(metadata.pages_succeeded).toBe(1);\n expect(metadata.pages_failed).toBe(1);\n expect(metadata.coverage_by_scope).toBeDefined();\n\n const covByScope = metadata.coverage_by_scope as Record<string, Record<string, unknown>>;\n expect(covByScope.ml.coverage_complete).toBe(false);\n expect(covByScope.ml.last_id_seen).toBe(\"page-1-last\");\n\n expect(metadata.continuation_by_scope).toBeDefined();\n const continuation = metadata.continuation_by_scope as Record<string, Record<string, unknown>>;\n expect(continuation.ml.last_id).toBe(\"page-1-last\");\n expect(typeof continuation.ml.hint).toBe(\"string\");\n expect(continuation.ml.hint).toContain(\"fromIdByScope\");\n expect(continuation.ml.hint).toContain(\"page-1-last\");\n });\n\n it(\"multi-currency: totals_by_concept is absent \u2014 only currency_totals with four fields\", async () => {\n axiosGetMock.mockResolvedValue(mockApi([\n nestedRow({ charge_info: { detail_id: \"d1\", detail_amount: 1000, detail_sub_type: \"CVFV\", transaction_detail: \"Cargo por vender\" } }),\n nestedRow({ charge_info: { detail_id: \"d2\", detail_amount: 200, detail_sub_type: \"CFF\", transaction_detail: \"Cargo por env\u00EDos de Mercado Libre\" } }),\n nestedRow({\n charge_info: { detail_id: \"d3\", detail_amount: 50, detail_sub_type: \"CVFV\", transaction_detail: \"Cargo por vender\" },\n currency_info: { currency_id: \"USD\" },\n }),\n nestedRow({\n charge_info: { detail_id: \"d4\", detail_amount: 10, detail_sub_type: \"CVFN\", transaction_detail: \"Costo por ofrecer cuotas\" },\n currency_info: { currency_id: \"USD\" },\n }),\n nestedRow({\n charge_info: { detail_id: \"d5\", detail_amount: -5, detail_sub_type: \"BVFV\", transaction_detail: \"Anulaci\u00F3n del cargo por vender\" },\n currency_info: { currency_id: \"USD\" },\n }),\n ]));\n\n const result = await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\",\n scope: \"ml\",\n documentType: \"BILL\",\n });\n\n const payload = (result as unknown as { kind: string; payload: Record<string, unknown> }).payload;\n const summary = payload.summary as Record<string, unknown>;\n\n // OLD fields must be absent\n expect(summary.totals_by_concept).toBeUndefined();\n expect(summary.totals_by_concept_by_currency).toBeUndefined();\n\n // currency_totals should have only the four aggregate fields\n const currTotals = summary.currency_totals as Record<string, Record<string, unknown>>;\n expect(currTotals.ARS.charge_amount_total).toBe(1200);\n expect(currTotals.ARS.bonus_amount_total).toBe(0);\n expect(currTotals.ARS.net_effect_total).toBe(1200);\n expect(currTotals.USD.charge_amount_total).toBe(60);\n expect(currTotals.USD.bonus_amount_total).toBe(-5);\n expect(currTotals.USD.net_effect_total).toBe(55);\n // No by_concept in currency buckets\n expect(currTotals.ARS.by_concept).toBeUndefined();\n expect(currTotals.USD.by_concept).toBeUndefined();\n });\n\n it(\"details rows are reversible with compact schema\", async () => {\n axiosGetMock.mockResolvedValue(mockApi([\n nestedRow({\n charge_info: {\n detail_id: \"rev-1\",\n detail_amount: 500,\n detail_sub_type: \"CVFV\",\n transaction_detail: \"Cargo por vender\",\n detail_type: \"CHARGE\",\n concept_type: \"sale\",\n creation_date_time: \"2026-06-15T10:30:00Z\",\n },\n currency_info: { currency_id: \"ARS\" },\n marketplace_info: { marketplace: \"MCLICS\" },\n sales_info: [{ order_id: \"ORD-100\", operation_id: \"OP-200\", shipping_id: \"SH-300\", pack_id: \"PK-400\" }],\n items_info: [{ item_id: \"MLB-500\", item_title: \"Zapatillas Nike\" }],\n document_id: \"DOC-999\",\n }),\n ]));\n\n const result = await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\",\n scope: \"ml\",\n documentType: \"BILL\",\n });\n\n const payload = (result as unknown as { kind: string; payload: Record<string, unknown> }).payload;\n const schema = payload.details_schema as string[];\n const details = payload.details as unknown[][];\n\n // Reconstruct: index each row by schema\n const row = details[0];\n const reconstructed: Record<string, unknown> = {};\n schema.forEach((key, i) => { reconstructed[key] = row[i]; });\n\n expect(reconstructed.detail_id).toBe(\"rev-1\");\n expect(reconstructed.detail_type).toBe(\"CHARGE\");\n expect(reconstructed.detail_sub_type).toBe(\"CVFV\");\n expect(reconstructed.transaction_detail).toBe(\"Cargo por vender\");\n expect(reconstructed.detail_amount).toBe(500);\n expect(reconstructed.currency_id).toBe(\"ARS\");\n expect(reconstructed.marketplace).toBe(\"MCLICS\");\n expect(reconstructed.concept_type).toBe(\"sale\");\n expect(reconstructed.order_id).toBe(\"ORD-100\");\n expect(reconstructed.operation_id).toBe(\"OP-200\");\n expect(reconstructed.item_id).toBe(\"MLB-500\");\n expect(reconstructed.item_title).toBe(\"Zapatillas Nike\");\n expect(reconstructed.shipping_id).toBe(\"SH-300\");\n expect(reconstructed.pack_id).toBe(\"PK-400\");\n expect(reconstructed.document_id).toBe(\"DOC-999\");\n expect(reconstructed.creation_date_time).toBe(\"2026-06-15T10:30:00Z\");\n expect(reconstructed.sales_info_count).toBe(1);\n expect(reconstructed.items_info_count).toBe(1);\n });\n\n it(\"returns profile selection when profileId is missing\", async () => {\n vi.mocked(resolveProfileMock).mockResolvedValue({\n ok: false,\n response: { selection_required: true },\n } as never);\n\n const result = await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\",\n scope: \"ml\",\n documentType: \"BILL\",\n });\n\n expect(result).toEqual({ selection_required: true });\n });\n\n it(\"defaults documentType to BILL when omitted\", async () => {\n axiosGetMock.mockResolvedValue(mockApi([\n nestedRow({ charge_info: { detail_id: \"d1\", detail_amount: 10 } }),\n ]));\n\n await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\",\n scope: \"ml\",\n });\n\n const call = axiosGetMock.mock.calls[0];\n expect(call[1].params.document_type).toBe(\"BILL\");\n });\n\n it(\"passes fromIdByScope cursor to the service layer\", async () => {\n axiosGetMock.mockResolvedValue(mockApi([\n nestedRow({ charge_info: { detail_id: \"d1\", detail_amount: 10 } }),\n ]));\n\n await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\",\n scope: \"ml\",\n documentType: \"BILL\",\n fromIdByScope: { ml: \"cursor-ml-99\" },\n });\n\n const call = axiosGetMock.mock.calls[0];\n expect(call[1].params.from_id).toBe(\"cursor-ml-99\");\n });\n\n it(\"passes fromIdByScope for scope=all with per-scope cursors\", async () => {\n axiosGetMock.mockResolvedValue(mockApi([\n nestedRow({ charge_info: { detail_id: \"d1\", detail_amount: 10 } }),\n ]));\n\n await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\",\n scope: \"all\",\n documentType: \"BILL\",\n fromIdByScope: {\n ml: \"ml-cursor-1\",\n mp: \"mp-cursor-2\",\n },\n });\n\n const allCalls = axiosGetMock.mock.calls;\n expect(allCalls[0][1].params.from_id).toBe(\"ml-cursor-1\");\n expect(allCalls[1][1].params.from_id).toBe(\"mp-cursor-2\");\n expect(allCalls[2][1].params.from_id).toBeUndefined();\n expect(allCalls[3][1].params.from_id).toBeUndefined();\n });\n\n // \u2500\u2500 Diagnostics tests \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n it(\"diagnostics reports observed detail_sub_types\", async () => {\n axiosGetMock.mockResolvedValue(mockApi([\n nestedRow({ charge_info: { detail_id: \"1\", detail_amount: 100, detail_sub_type: \"CVFV\" } }),\n nestedRow({ charge_info: { detail_id: \"2\", detail_amount: 50, detail_sub_type: \"CFF\" } }),\n nestedRow({ charge_info: { detail_id: \"3\", detail_amount: 30, detail_sub_type: \"PADS\" } }),\n ]));\n\n const result = await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\", scope: \"ml\", documentType: \"BILL\",\n });\n\n const payload = (result as unknown as { kind: string; payload: Record<string, unknown> }).payload;\n const diag = payload.diagnostics as Record<string, string[]>;\n expect(diag.detail_sub_types_observed).toContain(\"CVFV\");\n expect(diag.detail_sub_types_observed).toContain(\"CFF\");\n expect(diag.detail_sub_types_observed).toContain(\"PADS\");\n expect(diag.detail_sub_types_observed).toHaveLength(3);\n });\n\n it(\"diagnostics reports observed marketplaces\", async () => {\n axiosGetMock.mockResolvedValue(mockApi([\n nestedRow({\n charge_info: { detail_id: \"1\", detail_amount: 100, detail_sub_type: \"CVFV\" },\n marketplace_info: { marketplace: \"MCLICS\" },\n }),\n nestedRow({\n charge_info: { detail_id: \"2\", detail_amount: 50, detail_sub_type: \"CFF\" },\n marketplace_info: { marketplace: \"TAXES\" },\n }),\n ]));\n\n const result = await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\", scope: \"mp\", documentType: \"BILL\",\n });\n\n const payload = (result as unknown as { kind: string; payload: Record<string, unknown> }).payload;\n const diag = payload.diagnostics as Record<string, string[]>;\n expect(diag.marketplaces_observed).toContain(\"MCLICS\");\n expect(diag.marketplaces_observed).toContain(\"TAXES\");\n expect(diag.marketplaces_observed).toHaveLength(2);\n });\n\n it(\"diagnostics reports observed concept_types\", async () => {\n axiosGetMock.mockResolvedValue(mockApi([\n nestedRow({ charge_info: { detail_id: \"1\", detail_amount: 100, detail_sub_type: \"CVFV\", concept_type: \"sale\" } }),\n nestedRow({ charge_info: { detail_id: \"2\", detail_amount: 50, detail_sub_type: \"CFF\", concept_type: \"shipping\" } }),\n ]));\n\n const result = await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\", scope: \"ml\", documentType: \"BILL\",\n });\n\n const payload = (result as unknown as { kind: string; payload: Record<string, unknown> }).payload;\n const diag = payload.diagnostics as Record<string, string[]>;\n expect(diag.concept_types_observed).toContain(\"sale\");\n expect(diag.concept_types_observed).toContain(\"shipping\");\n expect(diag.concept_types_observed).toHaveLength(2);\n });\n\n it(\"details_schema is exact and in correct order\", async () => {\n axiosGetMock.mockResolvedValue(mockApi([\n nestedRow({ charge_info: { detail_id: \"d1\", detail_amount: 10 } }),\n ]));\n\n const result = await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\", scope: \"ml\", documentType: \"BILL\",\n });\n\n const payload = (result as unknown as { kind: string; payload: Record<string, unknown> }).payload;\n\n expect(payload.details_schema).toEqual([\n \"detail_id\",\n \"detail_type\",\n \"detail_sub_type\",\n \"transaction_detail\",\n \"detail_amount\",\n \"currency_id\",\n \"marketplace\",\n \"concept_type\",\n \"order_id\",\n \"operation_id\",\n \"item_id\",\n \"item_title\",\n \"shipping_id\",\n \"pack_id\",\n \"document_id\",\n \"creation_date_time\",\n \"sales_info_count\",\n \"items_info_count\",\n ]);\n });\n\n it(\"empty details produces empty details array and zero summary with currency_totals and secondary blocks\", async () => {\n axiosGetMock.mockResolvedValue(mockApi([], null, 0));\n\n const result = await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\", scope: \"ml\", documentType: \"BILL\",\n });\n\n const payload = (result as unknown as { kind: string; payload: Record<string, unknown> }).payload;\n const details = payload.details as unknown[];\n expect(details).toHaveLength(0);\n\n const summary = payload.summary as Record<string, unknown>;\n expect(summary.detail_count).toBe(0);\n expect(summary.order_count_detected).toBe(0);\n expect(summary.item_count_detected).toBe(0);\n\n // currency_totals MUST be present even when empty (contract stability)\n expect(summary.currency_totals).toBeDefined();\n expect(summary.currency_totals).toEqual({});\n\n // Secondary multiplicity blocks MUST be present even when empty\n expect(payload.details_sales).toEqual([]);\n expect(payload.details_items).toEqual([]);\n expect(payload.details_sales_schema).toEqual(detailsSalesSchema);\n expect(payload.details_items_schema).toEqual(detailsItemsSchema);\n\n const diag = payload.diagnostics as Record<string, string[]>;\n expect(diag.detail_sub_types_observed).toHaveLength(0);\n expect(diag.marketplaces_observed).toHaveLength(0);\n expect(diag.concept_types_observed).toHaveLength(0);\n });\n\n // \u2500\u2500 TDD: Multiplicity and null preservation \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n it(\"details_schema includes sales_info_count and items_info_count\", async () => {\n axiosGetMock.mockResolvedValue(mockApi([\n nestedRow({\n charge_info: { detail_id: \"d1\", detail_amount: 10 },\n sales_info: [{ order_id: \"O1\" }, { order_id: \"O2\" }, { order_id: \"O3\" }],\n items_info: [{ item_id: \"I1\" }, { item_id: \"I2\" }],\n }),\n ]));\n\n const result = await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\", scope: \"ml\", documentType: \"BILL\",\n });\n\n const payload = (result as unknown as { kind: string; payload: Record<string, unknown> }).payload;\n const details = payload.details as unknown[][];\n const row = details[0];\n\n // Column 16: sales_info_count\n expect(row[16]).toBe(3);\n // Column 17: items_info_count\n expect(row[17]).toBe(2);\n // First sale/item still accessible as forward-compat shortcut\n expect(row[8]).toBe(\"O1\"); // order_id from first sale\n expect(row[10]).toBe(\"I1\"); // item_id from first item\n });\n\n it(\"multiple sales_info produces secondary details_sales block with all entries\", async () => {\n axiosGetMock.mockResolvedValue(mockApi([\n nestedRow({\n charge_info: { detail_id: \"multi-sale\", detail_amount: 100, detail_sub_type: \"CVFV\" },\n sales_info: [\n { order_id: \"ORD-A\", operation_id: \"OP-A\" },\n { order_id: \"ORD-B\", operation_id: \"OP-B\" },\n { order_id: \"ORD-C\" },\n ],\n }),\n ]));\n\n const result = await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\", scope: \"ml\", documentType: \"BILL\",\n });\n\n const payload = (result as unknown as { kind: string; payload: Record<string, unknown> }).payload;\n\n // Secondary schema present\n expect(payload.details_sales_schema).toEqual(detailsSalesSchema);\n\n const salesRows = payload.details_sales as unknown[][];\n expect(salesRows).toHaveLength(3);\n\n // Each row references the same detail_id\n for (const sr of salesRows) {\n expect(sr[0]).toBe(\"multi-sale\"); // detail_id\n }\n\n // Row 0: ORD-A / OP-A\n expect(salesRows[0][1]).toBe(\"ORD-A\");\n expect(salesRows[0][2]).toBe(\"OP-A\");\n // Row 1: ORD-B / OP-B\n expect(salesRows[1][1]).toBe(\"ORD-B\");\n expect(salesRows[1][2]).toBe(\"OP-B\");\n // Row 2: ORD-C, operation_id null\n expect(salesRows[2][1]).toBe(\"ORD-C\");\n expect(salesRows[2][2]).toBeNull();\n\n // Summary still correct\n const summary = payload.summary as Record<string, unknown>;\n expect(summary.order_count_detected).toBe(3);\n });\n\n it(\"multiple items_info produces secondary details_items block with all entries\", async () => {\n axiosGetMock.mockResolvedValue(mockApi([\n nestedRow({\n charge_info: { detail_id: \"multi-item\", detail_amount: 200, detail_sub_type: \"CVFV\" },\n items_info: [\n { item_id: \"ITEM-1\", item_title: \"Producto A\" },\n { item_id: \"ITEM-2\", item_title: \"Producto B\" },\n { item_id: \"ITEM-3\", item_title: \"Producto C\" },\n { item_id: \"ITEM-4\" },\n ],\n }),\n ]));\n\n const result = await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\", scope: \"ml\", documentType: \"BILL\",\n });\n\n const payload = (result as unknown as { kind: string; payload: Record<string, unknown> }).payload;\n\n // Secondary schema present\n expect(payload.details_items_schema).toEqual(detailsItemsSchema);\n\n const itemsRows = payload.details_items as unknown[][];\n expect(itemsRows).toHaveLength(4);\n\n // Each row references the same detail_id\n for (const ir of itemsRows) {\n expect(ir[0]).toBe(\"multi-item\"); // detail_id\n }\n\n // Row 0\n expect(itemsRows[0][1]).toBe(\"ITEM-1\");\n expect(itemsRows[0][2]).toBe(\"Producto A\");\n // Row 3: item_title null\n expect(itemsRows[3][1]).toBe(\"ITEM-4\");\n expect(itemsRows[3][2]).toBeNull();\n\n // Summary still correct\n const summary = payload.summary as Record<string, unknown>;\n expect(summary.item_count_detected).toBe(4);\n });\n\n it(\"preserves null values at correct positions without column shift\", async () => {\n // Row with many missing fields should keep nulls in the right places\n axiosGetMock.mockResolvedValue(mockApi([\n nestedRow({\n charge_info: {\n detail_id: \"null-test\",\n detail_amount: 0,\n // detail_type, detail_sub_type, transaction_detail, concept_type, creation_date_time all missing\n },\n currency_info: {}, // no currency_id\n marketplace_info: {}, // no marketplace\n sales_info: [], // no sales\n items_info: [], // no items\n // document_id missing\n }),\n ]));\n\n const result = await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\", scope: \"ml\", documentType: \"BILL\",\n });\n\n const payload = (result as unknown as { kind: string; payload: Record<string, unknown> }).payload;\n const details = payload.details as unknown[][];\n const row = details[0];\n\n // Verify null positions: schema index \u2192 expected null\n // 0: detail_id \u2192 \"null-test\" (not null)\n expect(row[0]).toBe(\"null-test\");\n // 1: detail_type \u2192 null (missing)\n expect(row[1]).toBeNull();\n // 2: detail_sub_type \u2192 null\n expect(row[2]).toBeNull();\n // 3: transaction_detail \u2192 null\n expect(row[3]).toBeNull();\n // 4: detail_amount \u2192 0\n expect(row[4]).toBe(0);\n // 5: currency_id \u2192 null\n expect(row[5]).toBeNull();\n // 6: marketplace \u2192 null\n expect(row[6]).toBeNull();\n // 7: concept_type \u2192 null\n expect(row[7]).toBeNull();\n // 8-13: order_id, operation_id, item_id, item_title, shipping_id, pack_id \u2192 null (no sales/items)\n expect(row[8]).toBeNull();\n expect(row[9]).toBeNull();\n expect(row[10]).toBeNull();\n expect(row[11]).toBeNull();\n expect(row[12]).toBeNull();\n expect(row[13]).toBeNull();\n // 14: document_id \u2192 null\n expect(row[14]).toBeNull();\n // 15: creation_date_time \u2192 null\n expect(row[15]).toBeNull();\n // 16: sales_info_count \u2192 0\n expect(row[16]).toBe(0);\n // 17: items_info_count \u2192 0\n expect(row[17]).toBe(0);\n\n // No column shift: total length matches schema\n expect(row).toHaveLength(detailsSchema.length);\n\n // Secondary blocks should be empty\n const salesRows = payload.details_sales as unknown[];\n const itemsRows = payload.details_items as unknown[];\n expect(salesRows).toHaveLength(0);\n expect(itemsRows).toHaveLength(0);\n });\n\n it(\"secondary blocks populated even with single sale/item (contract stability)\", async () => {\n axiosGetMock.mockResolvedValue(mockApi([\n nestedRow({\n charge_info: { detail_id: \"single-1\", detail_amount: 50, detail_sub_type: \"CVFV\" },\n sales_info: [{ order_id: \"O-SINGLE\" }],\n items_info: [{ item_id: \"I-SINGLE\", item_title: \"Solo\" }],\n }),\n ]));\n\n const result = await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\", scope: \"ml\", documentType: \"BILL\",\n });\n\n const payload = (result as unknown as { kind: string; payload: Record<string, unknown> }).payload;\n\n // Secondary blocks should always exist\n const salesRows = payload.details_sales as unknown[][];\n const itemsRows = payload.details_items as unknown[][];\n expect(salesRows).toHaveLength(1);\n expect(itemsRows).toHaveLength(1);\n\n expect(salesRows[0][0]).toBe(\"single-1\");\n expect(salesRows[0][1]).toBe(\"O-SINGLE\");\n expect(itemsRows[0][0]).toBe(\"single-1\");\n expect(itemsRows[0][1]).toBe(\"I-SINGLE\");\n expect(itemsRows[0][2]).toBe(\"Solo\");\n });\n});\n\n// \u2500\u2500 Schema validation \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\ndescribe(\"meliGetBillingProvisionsSummarySchema validation\", () => {\n it(\"requires profileId and periodKey and scope\", () => {\n const result = meliGetBillingProvisionsSummarySchema.safeParse({});\n expect(result.success).toBe(false);\n expect(result.error?.issues.length).toBeGreaterThanOrEqual(2);\n });\n\n it(\"accepts full valid payload including fromIdByScope\", () => {\n const result = meliGetBillingProvisionsSummarySchema.safeParse({\n profileId: \"my-profile\",\n periodKey: \"2025-01-01\",\n scope: \"all\",\n documentType: \"CREDIT_NOTE\",\n detailType: \"sale\",\n detailSubTypes: [\"commission\"],\n orderIds: [\"O123\"],\n itemIds: [\"I456\"],\n fromIdByScope: { ml: \"abc-123\", mp: \"def-456\" },\n });\n expect(result.success).toBe(true);\n });\n\n it(\"rejects non-string values in fromIdByScope keys\", () => {\n const result = meliGetBillingProvisionsSummarySchema.safeParse({\n profileId: \"my-profile\",\n periodKey: \"2025-01-01\",\n scope: \"ml\",\n fromIdByScope: { ml: 123 },\n });\n expect(result.success).toBe(false);\n });\n\n it(\"accepts empty fromIdByScope\", () => {\n const result = meliGetBillingProvisionsSummarySchema.safeParse({\n profileId: \"my-profile\",\n periodKey: \"2025-01-01\",\n scope: \"ml\",\n fromIdByScope: {},\n });\n expect(result.success).toBe(true);\n });\n});\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -525,9 +525,15 @@ describe("MercadoLibre medium tool handlers batch 4", () => {
525
525
  {
526
526
  id: 999,
527
527
  status: "approved",
528
+ status_detail: "accredited",
529
+ payment_method_id: "visa",
528
530
  payment_type: "credit_card",
529
531
  installments: 3,
530
- total_paid_amount: 200
532
+ total_paid_amount: 200,
533
+ transaction_amount: 210,
534
+ transaction_amount_refunded: 10,
535
+ shipping_cost: 15,
536
+ coupon_amount: 5
531
537
  }
532
538
  ],
533
539
  tags: ["packed"]
@@ -568,16 +574,22 @@ describe("MercadoLibre medium tool handlers batch 4", () => {
568
574
  paid_amount: 200,
569
575
  payments: [
570
576
  {
571
- id: "",
577
+ id: "999",
572
578
  status: "approved",
579
+ status_detail: "accredited",
580
+ payment_method_id: "visa",
573
581
  payment_type: "credit_card",
574
582
  installments: 3,
575
- total_paid_amount: 200
583
+ total_paid_amount: 200,
584
+ transaction_amount: 210,
585
+ transaction_amount_refunded: 10,
586
+ shipping_cost: 15,
587
+ coupon_amount: 5
576
588
  }
577
589
  ],
578
590
  seller: { id: "", nickname: "seller-1" },
579
591
  shipping: {
580
- id: "",
592
+ id: "1",
581
593
  status: "ready_to_ship",
582
594
  substatus: "",
583
595
  mode: "",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../tests/meli/mercadolibre-tool-handlers-medium-batch4.test.ts"],
4
- "sourcesContent": ["import { beforeEach, describe, expect, it, vi } from \"vitest\";\n\nimport { meliSearchItemsHandler } from \"../../src/tools/mercadolibre/search-items.js\";\nimport { meliGetStorePerformanceHandler } from \"../../src/tools/mercadolibre/get-store-performance.js\";\nimport { meliGetSalesByItemHandler } from \"../../src/tools/mercadolibre/get-sales-by-item.js\";\nimport { meliGetSalesTrendHandler } from \"../../src/tools/mercadolibre/get-sales-trend.js\";\nimport { meliGetOrderDetailsHandler } from \"../../src/tools/mercadolibre/get-order-details.js\";\nimport { resolveMercadoLibreProfileOrSelection } from \"../../src/tools/mercadolibre/profile-resolution.js\";\nimport { getMercadoLibreAccessForProfile } from \"../../src/config/mercadolibre.js\";\nimport {\n formatMercadoLibreError,\n normalizeMercadoLibrePaging,\n} from \"../../src/services/mercadolibre/mercadolibre-api.js\";\nimport {\n getMercadoLibreItemDetailsBatch,\n getMercadoLibreItemDetailsWithFallbackBatch,\n getMercadoLibreUserItemsVisits,\n searchMercadoLibreItems,\n searchMercadoLibreItemsBatch,\n} from \"../../src/services/mercadolibre/mercadolibre-items.js\";\nimport {\n getMercadoLibreOrder,\n getMercadoLibreOrderDetailsBatch,\n searchMercadoLibreOrders,\n searchMercadoLibreOrdersBatch,\n} from \"../../src/services/mercadolibre/mercadolibre-orders.js\";\n\nvi.mock(\"mcp-use/server\", () => ({\n object: vi.fn((payload: unknown) => ({ kind: \"object\", payload })),\n error: vi.fn((message: string) => ({ kind: \"error\", message })),\n}));\n\nvi.mock(\"../../src/tools/mercadolibre/profile-resolution.js\", () => ({\n resolveMercadoLibreProfileOrSelection: vi.fn(),\n}));\n\nvi.mock(\"../../src/config/mercadolibre.js\", () => ({\n getMercadoLibreAccessForProfile: vi.fn(),\n}));\n\nvi.mock(\"../../src/services/mercadolibre/mercadolibre-api.js\", () => ({\n formatMercadoLibreError: vi.fn(\n (err: unknown, fallback: string) =>\n `formatted:${fallback}:${err instanceof Error ? err.message : String(err)}`\n ),\n normalizeMercadoLibrePaging: vi.fn((paging: unknown) => paging),\n}));\n\nvi.mock(\"../../src/services/mercadolibre/mercadolibre-items.js\", () => ({\n searchMercadoLibreItems: vi.fn(),\n searchMercadoLibreItemsBatch: vi.fn(),\n getMercadoLibreItemDetailsBatch: vi.fn(),\n getMercadoLibreItemDetailsWithFallbackBatch: vi.fn(),\n getMercadoLibreUserItemsVisits: vi.fn(),\n}));\n\nvi.mock(\"../../src/services/mercadolibre/mercadolibre-orders.js\", () => ({\n searchMercadoLibreOrders: vi.fn(),\n searchMercadoLibreOrdersBatch: vi.fn(),\n getMercadoLibreOrder: vi.fn(),\n getMercadoLibreOrderDetailsBatch: vi.fn(),\n}));\n\ndescribe(\"MercadoLibre medium tool handlers batch 4\", () => {\n beforeEach(() => {\n vi.clearAllMocks();\n\n vi.mocked(resolveMercadoLibreProfileOrSelection).mockResolvedValue({\n ok: true,\n value: { profileId: \"meli-profile-1\" },\n });\n\n vi.mocked(getMercadoLibreAccessForProfile).mockResolvedValue({\n sellerId: \"seller-99\",\n scopes: [\"read\"],\n expiresAt: \"2026-07-01T00:00:00.000Z\",\n } as never);\n\n vi.mocked(normalizeMercadoLibrePaging).mockImplementation((paging) => paging as never);\n });\n\n it(\"searches items with the default active status and compact item rows\", async () => {\n vi.mocked(searchMercadoLibreItems).mockResolvedValue({\n results: [\"MLA1\", \"MLA2\"],\n paging: { total: 2, limit: 50, offset: 0 },\n } as never);\n vi.mocked(getMercadoLibreItemDetailsBatch).mockResolvedValue([\n {\n id: \"MLA1\",\n title: \"Boots\",\n status: \"active\",\n price: 100,\n currency_id: \"ARS\",\n available_quantity: 3,\n sold_quantity: 8,\n listing_type_id: \"gold_special\",\n category_id: \"MLA123\",\n },\n {\n id: \"MLA2\",\n title: \"Sneakers\",\n status: \"paused\",\n price: 250,\n currency_id: \"USD\",\n available_quantity: 1,\n sold_quantity: 2,\n listing_type_id: \"gold_pro\",\n category_id: \"MLA456\",\n },\n ] as never);\n vi.mocked(getMercadoLibreItemDetailsWithFallbackBatch).mockResolvedValue({\n successful: [],\n failed: [],\n } as never);\n\n const result = await meliSearchItemsHandler({ profileId: \"meli-profile-1\" });\n\n expect(searchMercadoLibreItems).toHaveBeenCalledWith(\"meli-profile-1\", {\n sellerId: \"seller-99\",\n status: \"active\",\n q: undefined,\n category: undefined,\n listingTypeId: undefined,\n orders: undefined,\n limit: 50,\n offset: 0,\n });\n expect(getMercadoLibreItemDetailsBatch).toHaveBeenCalledWith(\"meli-profile-1\", [\"MLA1\", \"MLA2\"], [\n \"id\",\n \"title\",\n \"status\",\n \"price\",\n \"currency_id\",\n \"available_quantity\",\n \"sold_quantity\",\n \"listing_type_id\",\n \"category_id\",\n ]);\n expect(result).toEqual({\n kind: \"object\",\n payload: {\n profile_id: \"meli-profile-1\",\n metadata: {\n total: 2,\n limit: 2,\n offset: 0,\n returned: 2,\n has_more: false,\n continuation: \"No more pages for this query.\",\n applied_status: \"active\",\n default_status_notice:\n \"Solo se devolvieron publicaciones active por default. Tambi\u00E9n se puede pedir status expl\u00EDcito como paused, closed, under_review, inactive, not_yet_active, payment_required o deleted.\",\n available_status_filters: [\n \"active\",\n \"paused\",\n \"closed\",\n \"under_review\",\n \"inactive\",\n \"not_yet_active\",\n \"payment_required\",\n \"deleted\",\n ],\n detail_coverage: {\n detail_failures: 0,\n details_complete: true,\n },\n pages_requested: 1,\n pages_succeeded: 1,\n pages_failed: 0,\n universe_fully_fetched: true,\n },\n items_schema: [\n \"item_id\",\n \"title\",\n \"status\",\n \"price\",\n \"currency_id\",\n \"available_quantity\",\n \"sold_quantity\",\n \"listing_type_id\",\n \"category_id\",\n ],\n items: [\n [\"MLA1\", \"Boots\", \"active\", 100, \"ARS\", 3, 8, \"gold_special\", \"MLA123\"],\n [\"MLA2\", \"Sneakers\", \"paused\", 250, \"USD\", 1, 2, \"gold_pro\", \"MLA456\"],\n ],\n },\n });\n });\n\n it(\"reports partial item detail coverage when fallback misses items\", async () => {\n vi.mocked(searchMercadoLibreItems).mockResolvedValue({\n results: [\"MLA1\", \"MLA2\", \"MLA3\"],\n paging: { total: 3, limit: 50, offset: 0 },\n } as never);\n vi.mocked(getMercadoLibreItemDetailsBatch).mockResolvedValue([{ id: \"MLA1\", title: \"Boots\" }] as never);\n vi.mocked(getMercadoLibreItemDetailsWithFallbackBatch).mockResolvedValue({\n successful: [{ id: \"MLA2\", document: { id: \"MLA2\", title: \"Sneakers\" } }],\n failed: [{ id: \"MLA3\", message: \"missing\", attempts: 2, retryable: false, statusCode: 404 }],\n } as never);\n\n const result = await meliSearchItemsHandler({\n profileId: \"meli-profile-1\",\n status: \"paused\",\n limit: 3,\n offset: 0,\n });\n\n expect(getMercadoLibreItemDetailsWithFallbackBatch).toHaveBeenCalledWith(\"meli-profile-1\", [\"MLA2\", \"MLA3\"], {\n maxConcurrency: 10,\n maxRetries: 1,\n });\n expect(result).toEqual({\n kind: \"object\",\n payload: {\n profile_id: \"meli-profile-1\",\n metadata: {\n total: 3,\n limit: 3,\n offset: 0,\n returned: 2,\n has_more: true,\n next_offset: 2,\n continuation:\n \"Se recuper\u00F3 cobertura parcial. Reintentar la misma tool con offset=0 y limit=3. Luego continuar con offset=2 si hace falta.\",\n applied_status: \"paused\",\n available_status_filters: [\n \"active\",\n \"paused\",\n \"closed\",\n \"under_review\",\n \"inactive\",\n \"not_yet_active\",\n \"payment_required\",\n \"deleted\",\n ],\n detail_coverage: {\n detail_failures: 1,\n details_complete: false,\n },\n pages_requested: 1,\n pages_succeeded: 1,\n pages_failed: 0,\n universe_fully_fetched: true,\n },\n items_schema: [\n \"item_id\",\n \"title\",\n \"status\",\n \"price\",\n \"currency_id\",\n \"available_quantity\",\n \"sold_quantity\",\n \"listing_type_id\",\n \"category_id\",\n ],\n items: [\n [\"MLA1\", \"Boots\", \"\", 0, \"UNKNOWN\", 0, 0, \"\", \"\"],\n [\"MLA2\", \"Sneakers\", \"\", 0, \"UNKNOWN\", 0, 0, \"\", \"\"],\n ],\n },\n });\n });\n\n it(\"builds store performance summaries with service wiring, ordering, and warnings\", async () => {\n vi.mocked(searchMercadoLibreOrders).mockResolvedValue({\n results: [\n {\n currency_id: \"ARS\",\n total_amount: 200.5,\n order_items: [\n {\n quantity: 2,\n unit_price: 50.25,\n item: { id: \"MLA1\", title: \"Boots\" },\n },\n ],\n },\n {\n currency_id: \"USD\",\n total_amount: 75.255,\n order_items: [\n {\n quantity: 1,\n unit_price: 75.255,\n item: { id: \"MLA2\", title: \"Sneakers\" },\n },\n ],\n },\n ],\n } as never);\n vi.mocked(searchMercadoLibreItems).mockResolvedValue({\n results: [\"MLA1\", \"MLA2\", \"MLA3\"],\n } as never);\n vi.mocked(getMercadoLibreUserItemsVisits).mockResolvedValue({ results: [] } as never);\n\n const result = await meliGetStorePerformanceHandler({\n profileId: \"meli-profile-1\",\n startDate: \"2026-03-01\",\n endDate: \"2026-03-31\",\n ordersLimit: 2,\n itemsLimit: 5,\n });\n\n expect(searchMercadoLibreOrders).toHaveBeenCalledWith(\"meli-profile-1\", {\n seller: \"seller-99\",\n from: \"2026-03-01\",\n to: \"2026-03-31\",\n limit: 2,\n offset: 0,\n });\n expect(searchMercadoLibreItems).toHaveBeenCalledWith(\"meli-profile-1\", {\n sellerId: \"seller-99\",\n limit: 5,\n offset: 0,\n });\n expect(getMercadoLibreUserItemsVisits).toHaveBeenCalledWith(\n \"meli-profile-1\",\n \"seller-99\",\n \"2026-03-01\",\n \"2026-03-31\"\n );\n expect(result).toEqual({\n kind: \"object\",\n payload: {\n profile_id: \"meli-profile-1\",\n seller_id: \"seller-99\",\n executive_summary: {\n orders_sampled: 2,\n active_items_sampled: 3,\n total_visits: 0,\n revenue_by_currency: {\n ARS: { orders: 1, revenue: 200.5 },\n USD: { orders: 1, revenue: 75.25 },\n },\n },\n top_items: [\n { item_id: \"MLA1\", title: \"Boots\", units: 2, revenue: 100.5 },\n { item_id: \"MLA2\", title: \"Sneakers\", units: 1, revenue: 75.25 },\n ],\n warnings: [\n \"La muestra de \u00F3rdenes puede ser parcial. Si necesit\u00E1s totales completos, reenviar con mayor rango paginado.\",\n \"MercadoLibre no devolvi\u00F3 filas de visitas para el rango indicado.\",\n ],\n },\n });\n });\n\n it(\"aggregates sales by item across paginated order batches\", async () => {\n vi.mocked(searchMercadoLibreOrders).mockResolvedValue({\n paging: { total: 3, limit: 2, offset: 0 },\n results: [\n {\n currency_id: \"ARS\",\n date_created: \"2026-03-10T14:45:55.000Z\",\n order_items: [\n {\n quantity: 2,\n unit_price: 100,\n item: { id: \"MLA1\", title: \"Boots\", variation_id: \"V1\" },\n },\n ],\n },\n {\n currency_id: \"USD\",\n date_created: \"2026-03-11T08:10:00.000Z\",\n order_items: [\n {\n quantity: 1,\n unit_price: 50,\n item: { id: \"MLA2\", title: \"Sneakers\" },\n },\n ],\n },\n ],\n } as never);\n vi.mocked(searchMercadoLibreOrdersBatch).mockResolvedValue({\n successful: [\n {\n id: \"2\",\n document: {\n results: [\n {\n currency_id: \"ARS\",\n date_created: \"2026-03-12T09:15:00.000Z\",\n order_items: [\n {\n quantity: 1,\n unit_price: 120,\n item: { id: \"MLA1\", title: \"Boots\", variation_id: \"V1\" },\n },\n ],\n },\n ],\n },\n },\n ],\n failed: [],\n } as never);\n\n const result = await meliGetSalesByItemHandler({\n profileId: \"meli-profile-1\",\n startDate: \"2026-03-01\",\n endDate: \"2026-03-31\",\n status: \"paid\",\n limit: 2,\n offset: 0,\n });\n\n expect(searchMercadoLibreOrders).toHaveBeenCalledWith(\"meli-profile-1\", {\n seller: \"\",\n from: \"2026-03-01\",\n to: \"2026-03-31\",\n status: \"paid\",\n limit: 2,\n offset: 0,\n });\n expect(searchMercadoLibreOrdersBatch).toHaveBeenCalledWith(\n \"meli-profile-1\",\n {\n seller: \"\",\n from: \"2026-03-01\",\n to: \"2026-03-31\",\n status: \"paid\",\n limit: 2,\n },\n [2],\n {\n maxConcurrency: 15,\n maxRetries: 2,\n }\n );\n expect(result).toEqual({\n kind: \"object\",\n payload: {\n profile_id: \"meli-profile-1\",\n metadata: {\n total: 3,\n limit: 2,\n offset: 0,\n returned: 3,\n orders_aggregated: 3,\n has_more: false,\n continuation: \"Agregado completo. No more pages for this query.\",\n fetch_mode: \"full_aggregate\",\n pages_requested: 2,\n pages_succeeded: 2,\n pages_failed: 0,\n universe_fully_fetched: true,\n },\n sales_by_item_schema: [\n \"item_id\",\n \"title\",\n \"variation_id\",\n \"orders\",\n \"units\",\n \"revenue\",\n \"last_order_date\",\n ],\n sales_by_currency: {\n ARS: [[\"MLA1\", \"Boots\", \"V1\", 2, 3, 320, \"2026-03-12 09:15\"]],\n USD: [[\"MLA2\", \"Sneakers\", \"\", 1, 1, 50, \"2026-03-11 08:10\"]],\n },\n },\n });\n });\n\n it(\"reports partial weekly sales trends when follow-up pages fail\", async () => {\n vi.mocked(searchMercadoLibreOrders).mockResolvedValue({\n paging: { total: 3, limit: 2, offset: 0 },\n results: [\n {\n currency_id: \"ARS\",\n total_amount: 100,\n date_created: \"2026-03-10T23:30:00.000Z\",\n },\n {\n currency_id: \"ARS\",\n total_amount: 50,\n date_created: \"2026-03-13T03:00:00.000Z\",\n },\n ],\n } as never);\n vi.mocked(searchMercadoLibreOrdersBatch).mockResolvedValue({\n successful: [],\n failed: [{ id: \"2\", message: \"timeout\", attempts: 2, retryable: true, statusCode: 504 }],\n } as never);\n\n const result = await meliGetSalesTrendHandler({\n profileId: \"meli-profile-1\",\n startDate: \"2026-03-01\",\n endDate: \"2026-03-31\",\n granularity: \"week\",\n limit: 2,\n offset: 0,\n });\n\n expect(result).toEqual({\n kind: \"object\",\n payload: {\n profile_id: \"meli-profile-1\",\n granularity: \"week\",\n trend_by_currency: {\n ARS: [{ bucket: \"2026-03-09\", orders: 2, revenue: 150 }],\n },\n metadata: {\n total_matching_orders: 3,\n limit: 2,\n offset: 0,\n returned: 2,\n orders_aggregated: 2,\n continuation:\n \"Agregado parcial por paginas fallidas. Reintentar la misma tool con los mismos filtros para recomputar el trend completo. Offsets fallidos: 2.\",\n fetch_mode: \"full_aggregate\",\n pages_requested: 2,\n pages_succeeded: 1,\n pages_failed: 1,\n universe_fully_fetched: false,\n },\n failed_pages: [\n {\n offset: 2,\n limit: 2,\n page_number: 2,\n message: \"timeout\",\n status_code: 504,\n attempts: 2,\n retryable: true,\n },\n ],\n },\n });\n });\n\n it(\"uses the single-order path when all requested order ids collapse to one unique id\", async () => {\n vi.mocked(getMercadoLibreOrder).mockResolvedValue({\n id: 100,\n status: \"paid\",\n status_detail: \"accredited\",\n date_created: \"2026-03-10T14:45:55.000Z\",\n date_closed: \"2026-03-10T15:00:00.000Z\",\n currency_id: \"ARS\",\n total_amount: 200,\n paid_amount: 200,\n shipping: { id: 1, status: \"ready_to_ship\", logistic_type: \"drop_off\" },\n buyer: { id: 10, nickname: \"buyer-1\" },\n seller: { id: 20, nickname: \"seller-1\" },\n order_items: [\n {\n quantity: 2,\n unit_price: 100,\n full_unit_price: 120,\n item: { id: \"MLA1\", title: \"Boots\", variation_id: \"V1\" },\n },\n ],\n payments: [\n {\n id: 999,\n status: \"approved\",\n payment_type: \"credit_card\",\n installments: 3,\n total_paid_amount: 200,\n },\n ],\n tags: [\"packed\"],\n } as never);\n\n const result = await meliGetOrderDetailsHandler({\n profileId: \"meli-profile-1\",\n orderIds: [\"100\", \"100\"],\n });\n\n expect(getMercadoLibreOrder).toHaveBeenCalledWith(\"meli-profile-1\", \"100\");\n expect(getMercadoLibreOrderDetailsBatch).not.toHaveBeenCalled();\n expect(result).toEqual({\n kind: \"object\",\n payload: {\n metadata: {\n profile_id: \"meli-profile-1\",\n requested: 1,\n successful: 1,\n failed: 0,\n },\n orders: [\n {\n buyer: { id: \"\", nickname: \"buyer-1\" },\n currency_id: \"ARS\",\n date_closed: \"2026-03-10 15:00\",\n date_created: \"2026-03-10 14:45\",\n items: [\n {\n item_id: \"MLA1\",\n title: \"Boots\",\n variation_id: \"V1\",\n quantity: 2,\n unit_price: 100,\n full_unit_price: 120,\n },\n ],\n order_id: \"\",\n total_amount: 200,\n paid_amount: 200,\n payments: [\n {\n id: \"\",\n status: \"approved\",\n payment_type: \"credit_card\",\n installments: 3,\n total_paid_amount: 200,\n },\n ],\n seller: { id: \"\", nickname: \"seller-1\" },\n shipping: {\n id: \"\",\n status: \"ready_to_ship\",\n substatus: \"\",\n mode: \"\",\n logistic_type: \"drop_off\",\n },\n status: \"paid\",\n status_detail: \"accredited\",\n tags: [\"packed\"],\n },\n ],\n },\n });\n });\n\n it(\"returns batch order details with normalized failures\", async () => {\n vi.mocked(getMercadoLibreOrderDetailsBatch).mockResolvedValue({\n successful: [\n {\n id: \"100\",\n document: {\n id: \"100\",\n status: \"paid\",\n currency_id: \"ARS\",\n total_amount: 100,\n paid_amount: 100,\n order_items: [],\n payments: [],\n },\n },\n ],\n failed: [{ id: \"101\", message: \"not found\", statusCode: 404, attempts: 2, retryable: false }],\n } as never);\n\n const result = await meliGetOrderDetailsHandler({\n profileId: \"meli-profile-1\",\n orderIds: [\"100\", \"101\", \"100\"],\n });\n\n expect(getMercadoLibreOrderDetailsBatch).toHaveBeenCalledWith(\"meli-profile-1\", [\"100\", \"101\"], {\n maxConcurrency: 10,\n maxRetries: 2,\n });\n expect(result).toEqual({\n kind: \"object\",\n payload: {\n metadata: {\n profile_id: \"meli-profile-1\",\n requested: 2,\n successful: 1,\n failed: 1,\n has_failures: true,\n },\n orders: [\n {\n buyer: { id: \"\", nickname: \"\" },\n order_id: \"100\",\n status: \"paid\",\n status_detail: \"\",\n currency_id: \"ARS\",\n total_amount: 100,\n paid_amount: 100,\n shipping: {\n id: \"\",\n status: \"\",\n substatus: \"\",\n mode: \"\",\n logistic_type: \"\",\n },\n seller: { id: \"\", nickname: \"\" },\n },\n ],\n failures: [\n {\n order_id: \"101\",\n message: \"not found\",\n status_code: 404,\n attempts: 2,\n retryable: false,\n },\n ],\n },\n });\n });\n\n it(\"formats medium-handler failures through MercadoLibre error helpers\", async () => {\n vi.mocked(searchMercadoLibreOrders).mockRejectedValue(new Error(\"orders-boom\"));\n\n const result = await meliGetSalesTrendHandler({\n profileId: \"meli-profile-1\",\n startDate: \"2026-03-01\",\n endDate: \"2026-03-31\",\n });\n\n expect(formatMercadoLibreError).toHaveBeenCalledWith(\n expect.any(Error),\n \"Failed to build MercadoLibre sales trend\"\n );\n expect(result).toEqual({\n kind: \"error\",\n message: \"formatted:Failed to build MercadoLibre sales trend:orders-boom\",\n });\n });\n});\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { beforeEach, describe, expect, it, vi } from \"vitest\";\n\nimport { meliSearchItemsHandler } from \"../../src/tools/mercadolibre/search-items.js\";\nimport { meliGetStorePerformanceHandler } from \"../../src/tools/mercadolibre/get-store-performance.js\";\nimport { meliGetSalesByItemHandler } from \"../../src/tools/mercadolibre/get-sales-by-item.js\";\nimport { meliGetSalesTrendHandler } from \"../../src/tools/mercadolibre/get-sales-trend.js\";\nimport { meliGetOrderDetailsHandler } from \"../../src/tools/mercadolibre/get-order-details.js\";\nimport { resolveMercadoLibreProfileOrSelection } from \"../../src/tools/mercadolibre/profile-resolution.js\";\nimport { getMercadoLibreAccessForProfile } from \"../../src/config/mercadolibre.js\";\nimport {\n formatMercadoLibreError,\n normalizeMercadoLibrePaging,\n} from \"../../src/services/mercadolibre/mercadolibre-api.js\";\nimport {\n getMercadoLibreItemDetailsBatch,\n getMercadoLibreItemDetailsWithFallbackBatch,\n getMercadoLibreUserItemsVisits,\n searchMercadoLibreItems,\n searchMercadoLibreItemsBatch,\n} from \"../../src/services/mercadolibre/mercadolibre-items.js\";\nimport {\n getMercadoLibreOrder,\n getMercadoLibreOrderDetailsBatch,\n searchMercadoLibreOrders,\n searchMercadoLibreOrdersBatch,\n} from \"../../src/services/mercadolibre/mercadolibre-orders.js\";\n\nvi.mock(\"mcp-use/server\", () => ({\n object: vi.fn((payload: unknown) => ({ kind: \"object\", payload })),\n error: vi.fn((message: string) => ({ kind: \"error\", message })),\n}));\n\nvi.mock(\"../../src/tools/mercadolibre/profile-resolution.js\", () => ({\n resolveMercadoLibreProfileOrSelection: vi.fn(),\n}));\n\nvi.mock(\"../../src/config/mercadolibre.js\", () => ({\n getMercadoLibreAccessForProfile: vi.fn(),\n}));\n\nvi.mock(\"../../src/services/mercadolibre/mercadolibre-api.js\", () => ({\n formatMercadoLibreError: vi.fn(\n (err: unknown, fallback: string) =>\n `formatted:${fallback}:${err instanceof Error ? err.message : String(err)}`\n ),\n normalizeMercadoLibrePaging: vi.fn((paging: unknown) => paging),\n}));\n\nvi.mock(\"../../src/services/mercadolibre/mercadolibre-items.js\", () => ({\n searchMercadoLibreItems: vi.fn(),\n searchMercadoLibreItemsBatch: vi.fn(),\n getMercadoLibreItemDetailsBatch: vi.fn(),\n getMercadoLibreItemDetailsWithFallbackBatch: vi.fn(),\n getMercadoLibreUserItemsVisits: vi.fn(),\n}));\n\nvi.mock(\"../../src/services/mercadolibre/mercadolibre-orders.js\", () => ({\n searchMercadoLibreOrders: vi.fn(),\n searchMercadoLibreOrdersBatch: vi.fn(),\n getMercadoLibreOrder: vi.fn(),\n getMercadoLibreOrderDetailsBatch: vi.fn(),\n}));\n\ndescribe(\"MercadoLibre medium tool handlers batch 4\", () => {\n beforeEach(() => {\n vi.clearAllMocks();\n\n vi.mocked(resolveMercadoLibreProfileOrSelection).mockResolvedValue({\n ok: true,\n value: { profileId: \"meli-profile-1\" },\n });\n\n vi.mocked(getMercadoLibreAccessForProfile).mockResolvedValue({\n sellerId: \"seller-99\",\n scopes: [\"read\"],\n expiresAt: \"2026-07-01T00:00:00.000Z\",\n } as never);\n\n vi.mocked(normalizeMercadoLibrePaging).mockImplementation((paging) => paging as never);\n });\n\n it(\"searches items with the default active status and compact item rows\", async () => {\n vi.mocked(searchMercadoLibreItems).mockResolvedValue({\n results: [\"MLA1\", \"MLA2\"],\n paging: { total: 2, limit: 50, offset: 0 },\n } as never);\n vi.mocked(getMercadoLibreItemDetailsBatch).mockResolvedValue([\n {\n id: \"MLA1\",\n title: \"Boots\",\n status: \"active\",\n price: 100,\n currency_id: \"ARS\",\n available_quantity: 3,\n sold_quantity: 8,\n listing_type_id: \"gold_special\",\n category_id: \"MLA123\",\n },\n {\n id: \"MLA2\",\n title: \"Sneakers\",\n status: \"paused\",\n price: 250,\n currency_id: \"USD\",\n available_quantity: 1,\n sold_quantity: 2,\n listing_type_id: \"gold_pro\",\n category_id: \"MLA456\",\n },\n ] as never);\n vi.mocked(getMercadoLibreItemDetailsWithFallbackBatch).mockResolvedValue({\n successful: [],\n failed: [],\n } as never);\n\n const result = await meliSearchItemsHandler({ profileId: \"meli-profile-1\" });\n\n expect(searchMercadoLibreItems).toHaveBeenCalledWith(\"meli-profile-1\", {\n sellerId: \"seller-99\",\n status: \"active\",\n q: undefined,\n category: undefined,\n listingTypeId: undefined,\n orders: undefined,\n limit: 50,\n offset: 0,\n });\n expect(getMercadoLibreItemDetailsBatch).toHaveBeenCalledWith(\"meli-profile-1\", [\"MLA1\", \"MLA2\"], [\n \"id\",\n \"title\",\n \"status\",\n \"price\",\n \"currency_id\",\n \"available_quantity\",\n \"sold_quantity\",\n \"listing_type_id\",\n \"category_id\",\n ]);\n expect(result).toEqual({\n kind: \"object\",\n payload: {\n profile_id: \"meli-profile-1\",\n metadata: {\n total: 2,\n limit: 2,\n offset: 0,\n returned: 2,\n has_more: false,\n continuation: \"No more pages for this query.\",\n applied_status: \"active\",\n default_status_notice:\n \"Solo se devolvieron publicaciones active por default. Tambi\u00E9n se puede pedir status expl\u00EDcito como paused, closed, under_review, inactive, not_yet_active, payment_required o deleted.\",\n available_status_filters: [\n \"active\",\n \"paused\",\n \"closed\",\n \"under_review\",\n \"inactive\",\n \"not_yet_active\",\n \"payment_required\",\n \"deleted\",\n ],\n detail_coverage: {\n detail_failures: 0,\n details_complete: true,\n },\n pages_requested: 1,\n pages_succeeded: 1,\n pages_failed: 0,\n universe_fully_fetched: true,\n },\n items_schema: [\n \"item_id\",\n \"title\",\n \"status\",\n \"price\",\n \"currency_id\",\n \"available_quantity\",\n \"sold_quantity\",\n \"listing_type_id\",\n \"category_id\",\n ],\n items: [\n [\"MLA1\", \"Boots\", \"active\", 100, \"ARS\", 3, 8, \"gold_special\", \"MLA123\"],\n [\"MLA2\", \"Sneakers\", \"paused\", 250, \"USD\", 1, 2, \"gold_pro\", \"MLA456\"],\n ],\n },\n });\n });\n\n it(\"reports partial item detail coverage when fallback misses items\", async () => {\n vi.mocked(searchMercadoLibreItems).mockResolvedValue({\n results: [\"MLA1\", \"MLA2\", \"MLA3\"],\n paging: { total: 3, limit: 50, offset: 0 },\n } as never);\n vi.mocked(getMercadoLibreItemDetailsBatch).mockResolvedValue([{ id: \"MLA1\", title: \"Boots\" }] as never);\n vi.mocked(getMercadoLibreItemDetailsWithFallbackBatch).mockResolvedValue({\n successful: [{ id: \"MLA2\", document: { id: \"MLA2\", title: \"Sneakers\" } }],\n failed: [{ id: \"MLA3\", message: \"missing\", attempts: 2, retryable: false, statusCode: 404 }],\n } as never);\n\n const result = await meliSearchItemsHandler({\n profileId: \"meli-profile-1\",\n status: \"paused\",\n limit: 3,\n offset: 0,\n });\n\n expect(getMercadoLibreItemDetailsWithFallbackBatch).toHaveBeenCalledWith(\"meli-profile-1\", [\"MLA2\", \"MLA3\"], {\n maxConcurrency: 10,\n maxRetries: 1,\n });\n expect(result).toEqual({\n kind: \"object\",\n payload: {\n profile_id: \"meli-profile-1\",\n metadata: {\n total: 3,\n limit: 3,\n offset: 0,\n returned: 2,\n has_more: true,\n next_offset: 2,\n continuation:\n \"Se recuper\u00F3 cobertura parcial. Reintentar la misma tool con offset=0 y limit=3. Luego continuar con offset=2 si hace falta.\",\n applied_status: \"paused\",\n available_status_filters: [\n \"active\",\n \"paused\",\n \"closed\",\n \"under_review\",\n \"inactive\",\n \"not_yet_active\",\n \"payment_required\",\n \"deleted\",\n ],\n detail_coverage: {\n detail_failures: 1,\n details_complete: false,\n },\n pages_requested: 1,\n pages_succeeded: 1,\n pages_failed: 0,\n universe_fully_fetched: true,\n },\n items_schema: [\n \"item_id\",\n \"title\",\n \"status\",\n \"price\",\n \"currency_id\",\n \"available_quantity\",\n \"sold_quantity\",\n \"listing_type_id\",\n \"category_id\",\n ],\n items: [\n [\"MLA1\", \"Boots\", \"\", 0, \"UNKNOWN\", 0, 0, \"\", \"\"],\n [\"MLA2\", \"Sneakers\", \"\", 0, \"UNKNOWN\", 0, 0, \"\", \"\"],\n ],\n },\n });\n });\n\n it(\"builds store performance summaries with service wiring, ordering, and warnings\", async () => {\n vi.mocked(searchMercadoLibreOrders).mockResolvedValue({\n results: [\n {\n currency_id: \"ARS\",\n total_amount: 200.5,\n order_items: [\n {\n quantity: 2,\n unit_price: 50.25,\n item: { id: \"MLA1\", title: \"Boots\" },\n },\n ],\n },\n {\n currency_id: \"USD\",\n total_amount: 75.255,\n order_items: [\n {\n quantity: 1,\n unit_price: 75.255,\n item: { id: \"MLA2\", title: \"Sneakers\" },\n },\n ],\n },\n ],\n } as never);\n vi.mocked(searchMercadoLibreItems).mockResolvedValue({\n results: [\"MLA1\", \"MLA2\", \"MLA3\"],\n } as never);\n vi.mocked(getMercadoLibreUserItemsVisits).mockResolvedValue({ results: [] } as never);\n\n const result = await meliGetStorePerformanceHandler({\n profileId: \"meli-profile-1\",\n startDate: \"2026-03-01\",\n endDate: \"2026-03-31\",\n ordersLimit: 2,\n itemsLimit: 5,\n });\n\n expect(searchMercadoLibreOrders).toHaveBeenCalledWith(\"meli-profile-1\", {\n seller: \"seller-99\",\n from: \"2026-03-01\",\n to: \"2026-03-31\",\n limit: 2,\n offset: 0,\n });\n expect(searchMercadoLibreItems).toHaveBeenCalledWith(\"meli-profile-1\", {\n sellerId: \"seller-99\",\n limit: 5,\n offset: 0,\n });\n expect(getMercadoLibreUserItemsVisits).toHaveBeenCalledWith(\n \"meli-profile-1\",\n \"seller-99\",\n \"2026-03-01\",\n \"2026-03-31\"\n );\n expect(result).toEqual({\n kind: \"object\",\n payload: {\n profile_id: \"meli-profile-1\",\n seller_id: \"seller-99\",\n executive_summary: {\n orders_sampled: 2,\n active_items_sampled: 3,\n total_visits: 0,\n revenue_by_currency: {\n ARS: { orders: 1, revenue: 200.5 },\n USD: { orders: 1, revenue: 75.25 },\n },\n },\n top_items: [\n { item_id: \"MLA1\", title: \"Boots\", units: 2, revenue: 100.5 },\n { item_id: \"MLA2\", title: \"Sneakers\", units: 1, revenue: 75.25 },\n ],\n warnings: [\n \"La muestra de \u00F3rdenes puede ser parcial. Si necesit\u00E1s totales completos, reenviar con mayor rango paginado.\",\n \"MercadoLibre no devolvi\u00F3 filas de visitas para el rango indicado.\",\n ],\n },\n });\n });\n\n it(\"aggregates sales by item across paginated order batches\", async () => {\n vi.mocked(searchMercadoLibreOrders).mockResolvedValue({\n paging: { total: 3, limit: 2, offset: 0 },\n results: [\n {\n currency_id: \"ARS\",\n date_created: \"2026-03-10T14:45:55.000Z\",\n order_items: [\n {\n quantity: 2,\n unit_price: 100,\n item: { id: \"MLA1\", title: \"Boots\", variation_id: \"V1\" },\n },\n ],\n },\n {\n currency_id: \"USD\",\n date_created: \"2026-03-11T08:10:00.000Z\",\n order_items: [\n {\n quantity: 1,\n unit_price: 50,\n item: { id: \"MLA2\", title: \"Sneakers\" },\n },\n ],\n },\n ],\n } as never);\n vi.mocked(searchMercadoLibreOrdersBatch).mockResolvedValue({\n successful: [\n {\n id: \"2\",\n document: {\n results: [\n {\n currency_id: \"ARS\",\n date_created: \"2026-03-12T09:15:00.000Z\",\n order_items: [\n {\n quantity: 1,\n unit_price: 120,\n item: { id: \"MLA1\", title: \"Boots\", variation_id: \"V1\" },\n },\n ],\n },\n ],\n },\n },\n ],\n failed: [],\n } as never);\n\n const result = await meliGetSalesByItemHandler({\n profileId: \"meli-profile-1\",\n startDate: \"2026-03-01\",\n endDate: \"2026-03-31\",\n status: \"paid\",\n limit: 2,\n offset: 0,\n });\n\n expect(searchMercadoLibreOrders).toHaveBeenCalledWith(\"meli-profile-1\", {\n seller: \"\",\n from: \"2026-03-01\",\n to: \"2026-03-31\",\n status: \"paid\",\n limit: 2,\n offset: 0,\n });\n expect(searchMercadoLibreOrdersBatch).toHaveBeenCalledWith(\n \"meli-profile-1\",\n {\n seller: \"\",\n from: \"2026-03-01\",\n to: \"2026-03-31\",\n status: \"paid\",\n limit: 2,\n },\n [2],\n {\n maxConcurrency: 15,\n maxRetries: 2,\n }\n );\n expect(result).toEqual({\n kind: \"object\",\n payload: {\n profile_id: \"meli-profile-1\",\n metadata: {\n total: 3,\n limit: 2,\n offset: 0,\n returned: 3,\n orders_aggregated: 3,\n has_more: false,\n continuation: \"Agregado completo. No more pages for this query.\",\n fetch_mode: \"full_aggregate\",\n pages_requested: 2,\n pages_succeeded: 2,\n pages_failed: 0,\n universe_fully_fetched: true,\n },\n sales_by_item_schema: [\n \"item_id\",\n \"title\",\n \"variation_id\",\n \"orders\",\n \"units\",\n \"revenue\",\n \"last_order_date\",\n ],\n sales_by_currency: {\n ARS: [[\"MLA1\", \"Boots\", \"V1\", 2, 3, 320, \"2026-03-12 09:15\"]],\n USD: [[\"MLA2\", \"Sneakers\", \"\", 1, 1, 50, \"2026-03-11 08:10\"]],\n },\n },\n });\n });\n\n it(\"reports partial weekly sales trends when follow-up pages fail\", async () => {\n vi.mocked(searchMercadoLibreOrders).mockResolvedValue({\n paging: { total: 3, limit: 2, offset: 0 },\n results: [\n {\n currency_id: \"ARS\",\n total_amount: 100,\n date_created: \"2026-03-10T23:30:00.000Z\",\n },\n {\n currency_id: \"ARS\",\n total_amount: 50,\n date_created: \"2026-03-13T03:00:00.000Z\",\n },\n ],\n } as never);\n vi.mocked(searchMercadoLibreOrdersBatch).mockResolvedValue({\n successful: [],\n failed: [{ id: \"2\", message: \"timeout\", attempts: 2, retryable: true, statusCode: 504 }],\n } as never);\n\n const result = await meliGetSalesTrendHandler({\n profileId: \"meli-profile-1\",\n startDate: \"2026-03-01\",\n endDate: \"2026-03-31\",\n granularity: \"week\",\n limit: 2,\n offset: 0,\n });\n\n expect(result).toEqual({\n kind: \"object\",\n payload: {\n profile_id: \"meli-profile-1\",\n granularity: \"week\",\n trend_by_currency: {\n ARS: [{ bucket: \"2026-03-09\", orders: 2, revenue: 150 }],\n },\n metadata: {\n total_matching_orders: 3,\n limit: 2,\n offset: 0,\n returned: 2,\n orders_aggregated: 2,\n continuation:\n \"Agregado parcial por paginas fallidas. Reintentar la misma tool con los mismos filtros para recomputar el trend completo. Offsets fallidos: 2.\",\n fetch_mode: \"full_aggregate\",\n pages_requested: 2,\n pages_succeeded: 1,\n pages_failed: 1,\n universe_fully_fetched: false,\n },\n failed_pages: [\n {\n offset: 2,\n limit: 2,\n page_number: 2,\n message: \"timeout\",\n status_code: 504,\n attempts: 2,\n retryable: true,\n },\n ],\n },\n });\n });\n\n it(\"uses the single-order path when all requested order ids collapse to one unique id\", async () => {\n vi.mocked(getMercadoLibreOrder).mockResolvedValue({\n id: 100,\n status: \"paid\",\n status_detail: \"accredited\",\n date_created: \"2026-03-10T14:45:55.000Z\",\n date_closed: \"2026-03-10T15:00:00.000Z\",\n currency_id: \"ARS\",\n total_amount: 200,\n paid_amount: 200,\n shipping: { id: 1, status: \"ready_to_ship\", logistic_type: \"drop_off\" },\n buyer: { id: 10, nickname: \"buyer-1\" },\n seller: { id: 20, nickname: \"seller-1\" },\n order_items: [\n {\n quantity: 2,\n unit_price: 100,\n full_unit_price: 120,\n item: { id: \"MLA1\", title: \"Boots\", variation_id: \"V1\" },\n },\n ],\n payments: [\n {\n id: 999,\n status: \"approved\",\n status_detail: \"accredited\",\n payment_method_id: \"visa\",\n payment_type: \"credit_card\",\n installments: 3,\n total_paid_amount: 200,\n transaction_amount: 210,\n transaction_amount_refunded: 10,\n shipping_cost: 15,\n coupon_amount: 5,\n },\n ],\n tags: [\"packed\"],\n } as never);\n\n const result = await meliGetOrderDetailsHandler({\n profileId: \"meli-profile-1\",\n orderIds: [\"100\", \"100\"],\n });\n\n expect(getMercadoLibreOrder).toHaveBeenCalledWith(\"meli-profile-1\", \"100\");\n expect(getMercadoLibreOrderDetailsBatch).not.toHaveBeenCalled();\n expect(result).toEqual({\n kind: \"object\",\n payload: {\n metadata: {\n profile_id: \"meli-profile-1\",\n requested: 1,\n successful: 1,\n failed: 0,\n },\n orders: [\n {\n buyer: { id: \"\", nickname: \"buyer-1\" },\n currency_id: \"ARS\",\n date_closed: \"2026-03-10 15:00\",\n date_created: \"2026-03-10 14:45\",\n items: [\n {\n item_id: \"MLA1\",\n title: \"Boots\",\n variation_id: \"V1\",\n quantity: 2,\n unit_price: 100,\n full_unit_price: 120,\n },\n ],\n order_id: \"\",\n total_amount: 200,\n paid_amount: 200,\n payments: [\n {\n id: \"999\",\n status: \"approved\",\n status_detail: \"accredited\",\n payment_method_id: \"visa\",\n payment_type: \"credit_card\",\n installments: 3,\n total_paid_amount: 200,\n transaction_amount: 210,\n transaction_amount_refunded: 10,\n shipping_cost: 15,\n coupon_amount: 5,\n },\n ],\n seller: { id: \"\", nickname: \"seller-1\" },\n shipping: {\n id: \"1\",\n status: \"ready_to_ship\",\n substatus: \"\",\n mode: \"\",\n logistic_type: \"drop_off\",\n },\n status: \"paid\",\n status_detail: \"accredited\",\n tags: [\"packed\"],\n },\n ],\n },\n });\n });\n\n it(\"returns batch order details with normalized failures\", async () => {\n vi.mocked(getMercadoLibreOrderDetailsBatch).mockResolvedValue({\n successful: [\n {\n id: \"100\",\n document: {\n id: \"100\",\n status: \"paid\",\n currency_id: \"ARS\",\n total_amount: 100,\n paid_amount: 100,\n order_items: [],\n payments: [],\n },\n },\n ],\n failed: [{ id: \"101\", message: \"not found\", statusCode: 404, attempts: 2, retryable: false }],\n } as never);\n\n const result = await meliGetOrderDetailsHandler({\n profileId: \"meli-profile-1\",\n orderIds: [\"100\", \"101\", \"100\"],\n });\n\n expect(getMercadoLibreOrderDetailsBatch).toHaveBeenCalledWith(\"meli-profile-1\", [\"100\", \"101\"], {\n maxConcurrency: 10,\n maxRetries: 2,\n });\n expect(result).toEqual({\n kind: \"object\",\n payload: {\n metadata: {\n profile_id: \"meli-profile-1\",\n requested: 2,\n successful: 1,\n failed: 1,\n has_failures: true,\n },\n orders: [\n {\n buyer: { id: \"\", nickname: \"\" },\n order_id: \"100\",\n status: \"paid\",\n status_detail: \"\",\n currency_id: \"ARS\",\n total_amount: 100,\n paid_amount: 100,\n shipping: {\n id: \"\",\n status: \"\",\n substatus: \"\",\n mode: \"\",\n logistic_type: \"\",\n },\n seller: { id: \"\", nickname: \"\" },\n },\n ],\n failures: [\n {\n order_id: \"101\",\n message: \"not found\",\n status_code: 404,\n attempts: 2,\n retryable: false,\n },\n ],\n },\n });\n });\n\n it(\"formats medium-handler failures through MercadoLibre error helpers\", async () => {\n vi.mocked(searchMercadoLibreOrders).mockRejectedValue(new Error(\"orders-boom\"));\n\n const result = await meliGetSalesTrendHandler({\n profileId: \"meli-profile-1\",\n startDate: \"2026-03-01\",\n endDate: \"2026-03-31\",\n });\n\n expect(formatMercadoLibreError).toHaveBeenCalledWith(\n expect.any(Error),\n \"Failed to build MercadoLibre sales trend\"\n );\n expect(result).toEqual({\n kind: \"error\",\n message: \"formatted:Failed to build MercadoLibre sales trend:orders-boom\",\n });\n });\n});\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -140,7 +140,25 @@ describe("MercadoLibre monster tool handlers batch 5", () => {
140
140
  it("returns compact order rows with normalized nested values and explicit optional filters", async () => {
141
141
  vi.mocked(searchMercadoLibreOrders).mockResolvedValue({
142
142
  paging: { total: 1, limit: 1, offset: 2 },
143
- results: [buildOrder()]
143
+ results: [
144
+ buildOrder({
145
+ payments: [
146
+ {
147
+ id: 5001,
148
+ status: "approved",
149
+ status_detail: "accredited",
150
+ payment_method_id: "visa",
151
+ payment_type: "credit_card",
152
+ total_paid_amount: 145.25,
153
+ transaction_amount: 150.5,
154
+ shipping_cost: 12.5,
155
+ coupon_amount: 4.75,
156
+ installments: 3,
157
+ available_actions: ["refund", "capture"]
158
+ }
159
+ ]
160
+ })
161
+ ]
144
162
  });
145
163
  vi.mocked(searchMercadoLibreOrdersBatch).mockResolvedValue({ successful: [], failed: [] });
146
164
  const result = await meliGetOrdersSummaryHandler({
@@ -231,7 +249,9 @@ describe("MercadoLibre monster tool handlers batch 5", () => {
231
249
  "first_item_sale_fee",
232
250
  "first_item_listing_type",
233
251
  "variation_attributes",
234
- "stock_node_id"
252
+ "stock_node_id",
253
+ "payment_shipping_cost",
254
+ "payment_coupon_amount"
235
255
  ],
236
256
  orders: [
237
257
  [
@@ -277,7 +297,9 @@ describe("MercadoLibre monster tool handlers batch 5", () => {
277
297
  10.1,
278
298
  "gold_special",
279
299
  "Color: Red | SIZE: 42",
280
- "warehouse-1"
300
+ "warehouse-1",
301
+ 12.5,
302
+ 4.75
281
303
  ]
282
304
  ]
283
305
  }