@portone/mcp-server 0.16.0 → 0.17.1

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/server/index.js CHANGED
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  var __defProp = Object.defineProperty;
3
3
  var __export = (target, all) => {
4
- for (var name14 in all)
5
- __defProp(target, name14, { get: all[name14], enumerable: true });
4
+ for (var name17 in all)
5
+ __defProp(target, name17, { get: all[name17], enumerable: true });
6
6
  };
7
7
 
8
8
  // src/index.ts
@@ -15,7 +15,7 @@ import { GraphQLClient } from "graphql-request";
15
15
  // package.json
16
16
  var package_default = {
17
17
  name: "@portone/mcp-server",
18
- version: "0.16.0",
18
+ version: "0.17.1",
19
19
  description: "\uD3EC\uD2B8\uC6D0 \uC0AC\uC6A9\uC790\uB97C \uC704\uD55C MCP (Model Context Protocol) \uC11C\uBC84\uC785\uB2C8\uB2E4. \uD3EC\uD2B8\uC6D0 \uAC1C\uBC1C\uC790\uC13C\uD130, \uD5EC\uD504\uC13C\uD130 \uB4F1 \uACF5\uC2DD \uBB38\uC11C \uB0B4\uC6A9\uC744 LLM(Large Language Model)\uC5D0 \uC81C\uACF5\uD574 \uC815\uD655\uD55C \uC815\uBCF4\uB97C \uBC14\uD0D5\uC73C\uB85C \uC0AC\uC6A9\uC790\uC758 \uC5F0\uB3D9 \uBC0F \uC9C8\uC758\uB97C \uB3D5\uB3C4\uB85D \uD569\uB2C8\uB2E4.",
20
20
  main: "server/index.js",
21
21
  type: "module",
@@ -671,6 +671,9 @@ var TokenProvider = class {
671
671
  "CHANNEL_UPDATE",
672
672
  "STORE_READ",
673
673
  "MERCHANT_READ"
674
+ // 거래대사(getReconciliationsByFilter / getSettlementSummaries /
675
+ // getSettlementStatistics) 조회는 위 기존 스코프로 게이트웨이 접근이
676
+ // 가능함을 실환경에서 확인했습니다. 별도 스코프는 필요하지 않습니다.
674
677
  ].join(" ")
675
678
  );
676
679
  url.searchParams.set("code_challenge", codeChallenge);
@@ -1745,15 +1748,1122 @@ function init4(tokenProvider, client) {
1745
1748
  };
1746
1749
  }
1747
1750
 
1748
- // src/tools/listDocs.ts
1749
- var listDocs_exports = {};
1750
- __export(listDocs_exports, {
1751
+ // src/tools/getReconciliationsByFilter.ts
1752
+ var getReconciliationsByFilter_exports = {};
1753
+ __export(getReconciliationsByFilter_exports, {
1751
1754
  config: () => config5,
1752
1755
  init: () => init5,
1753
1756
  name: () => name5
1754
1757
  });
1758
+ import { match as match8 } from "ts-pattern";
1759
+ import z12 from "zod";
1760
+
1761
+ // src/tools/request/getReconciliations.ts
1762
+ import { parse as parse3 } from "graphql";
1763
+ import { gql as gql3 } from "graphql-request";
1764
+ import { match as match7, P as P6 } from "ts-pattern";
1755
1765
  import z11 from "zod";
1756
1766
 
1767
+ // src/tools/utils/requestError.ts
1768
+ function toRequestError(error) {
1769
+ const response = error?.response;
1770
+ const rawErrors = response?.errors;
1771
+ if (Array.isArray(rawErrors) && rawErrors.length > 0) {
1772
+ const errors = rawErrors.map((entry) => {
1773
+ const e = entry;
1774
+ const message2 = typeof e.message === "string" && e.message.length > 0 ? e.message : void 0;
1775
+ const code = e.extensions?.code != null ? String(e.extensions.code) : void 0;
1776
+ const path = Array.isArray(e.path) ? e.path.join(".") : void 0;
1777
+ return { message: message2, code, path };
1778
+ });
1779
+ const primary = errors[0];
1780
+ const message = primary.message ?? (primary.code != null ? `GraphQL \uC624\uB958 (code: ${primary.code})` : "GraphQL \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4. (\uC11C\uBC84\uAC00 \uC0C1\uC138 \uBA54\uC2DC\uC9C0\uB97C \uBC18\uD658\uD558\uC9C0 \uC54A\uC74C)");
1781
+ return {
1782
+ type: "error",
1783
+ data: { message, type: "GraphQLError", errors }
1784
+ };
1785
+ }
1786
+ if (error instanceof Error) {
1787
+ return {
1788
+ type: "error",
1789
+ data: {
1790
+ message: error.message || error.name || "\uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4.",
1791
+ type: error.name
1792
+ }
1793
+ };
1794
+ }
1795
+ return {
1796
+ type: "error",
1797
+ data: { message: "\uC54C \uC218 \uC5C6\uB294 \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4.", cause: String(error) }
1798
+ };
1799
+ }
1800
+
1801
+ // src/tools/request/getReconciliations.ts
1802
+ var ErrorResponse3 = z11.object({
1803
+ __typename: z11.string(),
1804
+ message: z11.string().nullable()
1805
+ });
1806
+ var ReconciliationStatus = z11.enum([
1807
+ "MATCHED",
1808
+ "NOT_MATCHED",
1809
+ "INCOMPARABLE",
1810
+ "NOT_COLLECTED"
1811
+ ]);
1812
+ var ReconciliationActionType = z11.enum([
1813
+ "APPROVAL",
1814
+ "FULL_CANCEL",
1815
+ "PARTIAL_CANCEL",
1816
+ "UNCLASSIFIED_CANCEL",
1817
+ "POST_CORRECTION"
1818
+ ]);
1819
+ var ReconciliationPaymentMethodType = z11.enum([
1820
+ "CARD",
1821
+ "CHARGE",
1822
+ "TRANSFER",
1823
+ "ARS",
1824
+ "GIFT_CERTIFICATE",
1825
+ "MOBILE",
1826
+ "VIRTUAL_ACCOUNT",
1827
+ "ETC",
1828
+ "EASY_PAY_ETC",
1829
+ "EASY_PAY_PAYCO",
1830
+ "EASY_PAY_SAMSUNGPAY",
1831
+ "EASY_PAY_SSGPAY",
1832
+ "EASY_PAY_KAKAOPAY",
1833
+ "EASY_PAY_NAVERPAY",
1834
+ "EASY_PAY_CHAI",
1835
+ "EASY_PAY_LPAY",
1836
+ "EASY_PAY_KPAY",
1837
+ "EASY_PAY_TOSSPAY",
1838
+ "EASY_PAY_LGPAY",
1839
+ "EASY_PAY_APPLEPAY",
1840
+ "EASY_PAY_PINPAY",
1841
+ "EASY_PAY_SKPAY",
1842
+ "EASY_PAY_WECHATPAY",
1843
+ "EASY_PAY_PAYPAL",
1844
+ "EASY_PAY_ALIPAY",
1845
+ "EASY_PAY_TOSS_BRANDPAY",
1846
+ "EASY_PAY_KB_APP",
1847
+ "EASY_PAY_TMONEYPAY",
1848
+ "EASY_PAY_HYPHEN",
1849
+ "EASY_PAY_OK_CASHBAG",
1850
+ "EASY_PAY_BENEPIA"
1851
+ ]);
1852
+ var ReconciliationNotMatchedReason = z11.enum([
1853
+ "PAYMENT_AMOUNT_NOT_MATCHED",
1854
+ "TAX_FREE_AMOUNT_NOT_MATCHED",
1855
+ "VAT_AMOUNT_NOT_MATCHED",
1856
+ "ESCROW_NOT_MATCHED",
1857
+ "INSTALLMENT_MONTH_NOT_MATCHED",
1858
+ "PAYMENT_DATE_NOT_MATCHED"
1859
+ ]);
1860
+ var ReconciliationIncomparableReason = z11.enum([
1861
+ "NO_MATCHING_PORTONE_TRANSACTION",
1862
+ "CHANNEL_MISMATCH",
1863
+ "RECONCILIATION_SKIPPED",
1864
+ "PG_COLLECTION_FAILED",
1865
+ "PG_DATA_MISSING",
1866
+ "UNKNOWN"
1867
+ ]);
1868
+ var ReconciliationPgProvider = z11.enum([
1869
+ "KAKAOPAY",
1870
+ "NICEPAY",
1871
+ "NAVERPAY",
1872
+ "UPLUS",
1873
+ "TOSSPAYMENTS",
1874
+ "TOSSPAY",
1875
+ "PAYCO",
1876
+ "KCP",
1877
+ "DANAL",
1878
+ "EXIMBAY",
1879
+ "INICIS",
1880
+ "HECTO",
1881
+ "KSNET",
1882
+ "KPN",
1883
+ "HYPHEN"
1884
+ ]);
1885
+ var SortOrder = z11.enum(["DESC", "ASC"]);
1886
+ var Settlement = z11.object(
1887
+ nullableObject({
1888
+ feeAmount: z11.number(),
1889
+ feeVatAmount: z11.number(),
1890
+ settlementAmount: z11.number(),
1891
+ settlementCurrency: z11.string(),
1892
+ settlementDate: z11.string()
1893
+ })
1894
+ );
1895
+ var PaymentMethod = z11.object({
1896
+ __typename: z11.string(),
1897
+ paymentMethodType: z11.string().nullable().optional(),
1898
+ installmentMonth: z11.number().nullable().optional(),
1899
+ name: z11.string().nullable().optional()
1900
+ }).partial();
1901
+ var PgSpecifier = z11.object(
1902
+ nullableObject({
1903
+ pgMerchantId: z11.string(),
1904
+ pgProvider: z11.string()
1905
+ })
1906
+ );
1907
+ var ReconciliationNode = z11.object({
1908
+ __typename: z11.string(),
1909
+ plainId: z11.string(),
1910
+ actionType: z11.string(),
1911
+ pgSpecifier: PgSpecifier.nullable(),
1912
+ merchantPlainId: z11.string(),
1913
+ paymentAmount: z11.number(),
1914
+ taxFreeAmount: z11.number(),
1915
+ vatAmount: z11.number(),
1916
+ supplyAmount: z11.number(),
1917
+ anomalyAmount: z11.number().nullable().optional(),
1918
+ paidAt: z11.string(),
1919
+ isEscrow: z11.boolean().nullable(),
1920
+ paymentCurrency: z11.string(),
1921
+ paymentMethod: PaymentMethod.nullable(),
1922
+ settlement: Settlement.nullable(),
1923
+ // 상태별 구체 필드 (필수형 / optional 형이 타입마다 다름)
1924
+ pgTxId: z11.string().nullable().optional(),
1925
+ pgTxIdOptional: z11.string().nullable().optional(),
1926
+ transactionPlainId: z11.string().nullable().optional(),
1927
+ transactionPlainIdOptional: z11.string().nullable().optional(),
1928
+ paymentPlainId: z11.string().nullable().optional(),
1929
+ paymentPlainIdOptional: z11.string().nullable().optional(),
1930
+ orderName: z11.string().nullable().optional(),
1931
+ orderNameOptional: z11.string().nullable().optional(),
1932
+ storePlainId: z11.string().nullable().optional(),
1933
+ storePlainIdOptional: z11.string().nullable().optional(),
1934
+ notMatchedReasons: z11.array(z11.string()).nullable().optional(),
1935
+ // INCOMPARABLE(대사 불가) 사유. 게이트웨이는 내부의 backward_incomparable
1936
+ // 상태/사유를 INCOMPARABLE + 이 단일 reason 으로 병합해 노출합니다.
1937
+ // enum 드리프트 방지를 위해 문자열로 수용합니다.
1938
+ reason: z11.string().nullable().optional()
1939
+ }).partial({
1940
+ pgSpecifier: true,
1941
+ isEscrow: true,
1942
+ paymentMethod: true,
1943
+ settlement: true
1944
+ });
1945
+ var CursorPageInfo = z11.object({
1946
+ startCursor: z11.string(),
1947
+ endCursor: z11.string(),
1948
+ hasPreviousPage: z11.boolean(),
1949
+ hasNextPage: z11.boolean()
1950
+ });
1951
+ var ReconciliationsPayload = z11.object({
1952
+ edges: z11.array(z11.object({ node: ReconciliationNode, cursor: z11.string() })),
1953
+ pageInfo: CursorPageInfo
1954
+ });
1955
+ var GetReconciliationsResponse = z11.object({
1956
+ merchant: z11.object({
1957
+ reconciliation: z11.object({
1958
+ paymentReconciliations: ReconciliationsPayload
1959
+ })
1960
+ }).or(ErrorResponse3)
1961
+ }).transform(({ merchant }) => {
1962
+ if ("__typename" in merchant) return merchant;
1963
+ return merchant.reconciliation.paymentReconciliations;
1964
+ });
1965
+ var getReconciliationsQuery = parse3(gql3`
1966
+ query GetReconciliations(
1967
+ $dateCondition: ReconciliationDateConditionInput!
1968
+ $searchCondition: PaymentReconciliationSearchConditionInput
1969
+ $filter: PaymentReconciliationFilterInput
1970
+ $order: PaymentReconciliationOrderInput
1971
+ $first: Int!
1972
+ $after: String
1973
+ ) {
1974
+ merchant {
1975
+ ...ErrorFragment
1976
+ ... on Merchant {
1977
+ reconciliation {
1978
+ paymentReconciliations(
1979
+ dateCondition: $dateCondition
1980
+ searchCondition: $searchCondition
1981
+ filter: $filter
1982
+ order: $order
1983
+ first: $first
1984
+ after: $after
1985
+ ) {
1986
+ edges {
1987
+ cursor
1988
+ node {
1989
+ __typename
1990
+ plainId
1991
+ actionType
1992
+ pgSpecifier {
1993
+ pgMerchantId
1994
+ pgProvider
1995
+ }
1996
+ merchantPlainId
1997
+ paymentAmount
1998
+ taxFreeAmount
1999
+ vatAmount
2000
+ supplyAmount
2001
+ paidAt
2002
+ isEscrow
2003
+ paymentCurrency
2004
+ paymentMethod {
2005
+ __typename
2006
+ ... on ReconciliationPaymentMethodCard {
2007
+ installmentMonth
2008
+ }
2009
+ ... on ReconciliationPaymentMethodEasyPay {
2010
+ paymentMethodType
2011
+ }
2012
+ ... on ReconciliationPaymentMethodEtc {
2013
+ name
2014
+ }
2015
+ }
2016
+ settlement {
2017
+ feeAmount
2018
+ feeVatAmount
2019
+ settlementAmount
2020
+ settlementCurrency
2021
+ settlementDate
2022
+ }
2023
+ ... on PaymentReconciliationMatched {
2024
+ pgTxId
2025
+ transactionPlainId
2026
+ paymentPlainId
2027
+ orderName
2028
+ storePlainId
2029
+ }
2030
+ ... on PaymentReconciliationNotMatched {
2031
+ pgTxId
2032
+ anomalyAmount
2033
+ transactionPlainId
2034
+ paymentPlainId
2035
+ orderName
2036
+ storePlainId
2037
+ notMatchedReasons
2038
+ }
2039
+ ... on PaymentReconciliationIncomparable {
2040
+ pgTxId
2041
+ anomalyAmount
2042
+ reason
2043
+ paymentPlainIdOptional
2044
+ orderNameOptional
2045
+ }
2046
+ ... on PaymentReconciliationNotCollected {
2047
+ pgTxIdOptional
2048
+ anomalyAmount
2049
+ transactionPlainIdOptional
2050
+ paymentPlainIdOptional
2051
+ orderNameOptional
2052
+ storePlainIdOptional
2053
+ }
2054
+ ... on PaymentReconciliationPostCorrection {
2055
+ pgTxIdOptional
2056
+ anomalyAmount
2057
+ transactionPlainIdOptional
2058
+ paymentPlainIdOptional
2059
+ orderNameOptional
2060
+ storePlainIdOptional
2061
+ }
2062
+ }
2063
+ }
2064
+ pageInfo {
2065
+ startCursor
2066
+ endCursor
2067
+ hasPreviousPage
2068
+ hasNextPage
2069
+ }
2070
+ }
2071
+ }
2072
+ }
2073
+ }
2074
+ }
2075
+
2076
+ fragment ErrorFragment on Error {
2077
+ __typename
2078
+ message
2079
+ }
2080
+ `);
2081
+ var ReconciliationFilter = z11.object({
2082
+ storeIds: z11.array(z11.string()),
2083
+ channelKeys: z11.array(z11.string()),
2084
+ pgSpecifiers: z11.array(
2085
+ z11.object({
2086
+ pgMerchantId: z11.string(),
2087
+ pgProvider: ReconciliationPgProvider
2088
+ })
2089
+ ),
2090
+ paymentMethodTypes: z11.array(ReconciliationPaymentMethodType),
2091
+ paymentReconciliationStatuses: z11.array(ReconciliationStatus),
2092
+ actionTypes: z11.array(ReconciliationActionType),
2093
+ transactionCurrencies: z11.array(z11.string()),
2094
+ settlementCurrencies: z11.array(z11.string())
2095
+ }).partial();
2096
+ var ReconciliationSearchCondition = z11.object({
2097
+ paymentPlainId: z11.string(),
2098
+ transactionPlainId: z11.string(),
2099
+ pgTxId: z11.string(),
2100
+ orderName: z11.string()
2101
+ }).partial();
2102
+ var ReconciliationOrder = z11.object({
2103
+ settlementDate: SortOrder,
2104
+ transactionDate: SortOrder,
2105
+ transactionAmount: SortOrder,
2106
+ anomalyAmount: SortOrder,
2107
+ settlementAmount: SortOrder
2108
+ }).partial();
2109
+ async function getReconciliations({
2110
+ client,
2111
+ authorization,
2112
+ dateType,
2113
+ from,
2114
+ until,
2115
+ filter,
2116
+ searchCondition,
2117
+ order,
2118
+ first,
2119
+ after
2120
+ }) {
2121
+ const dateRange = { from, until };
2122
+ const dateCondition = dateType === "SETTLEMENT" ? { settlementDateRange: dateRange } : { transactionDateRange: dateRange };
2123
+ try {
2124
+ const response = await client.request({
2125
+ document: getReconciliationsQuery,
2126
+ requestHeaders: {
2127
+ authorization
2128
+ },
2129
+ variables: {
2130
+ dateCondition,
2131
+ searchCondition,
2132
+ filter,
2133
+ order,
2134
+ first,
2135
+ after
2136
+ }
2137
+ });
2138
+ const parsed = await GetReconciliationsResponse.parseAsync(response);
2139
+ return match7(parsed).returnType().with({ __typename: P6.nonNullable }, ({ __typename, message }) => ({
2140
+ type: "error",
2141
+ data: {
2142
+ message,
2143
+ type: __typename
2144
+ }
2145
+ })).otherwise((data) => ({
2146
+ type: "success",
2147
+ data
2148
+ }));
2149
+ } catch (error) {
2150
+ return toRequestError(error);
2151
+ }
2152
+ }
2153
+
2154
+ // src/tools/utils/dateRange.ts
2155
+ var LOOKBACK_MONTHS = 6;
2156
+ function maxRangeLabel(maxRange) {
2157
+ if ("months" in maxRange) {
2158
+ return `${maxRange.months}\uAC1C\uC6D4`;
2159
+ }
2160
+ if (maxRange.days % 7 === 0) {
2161
+ return `${maxRange.days / 7}\uC8FC`;
2162
+ }
2163
+ return `${maxRange.days}\uC77C`;
2164
+ }
2165
+ function validateReconciliationDateRange(from, to, maxRange) {
2166
+ const fromDate = /* @__PURE__ */ new Date(`${from}T00:00:00Z`);
2167
+ const toDate = /* @__PURE__ */ new Date(`${to}T00:00:00Z`);
2168
+ if (Number.isNaN(fromDate.getTime()) || Number.isNaN(toDate.getTime())) {
2169
+ return "\uB0A0\uC9DC \uD615\uC2DD\uC774 \uC62C\uBC14\uB974\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4 (YYYY-MM-DD).";
2170
+ }
2171
+ if (toDate < fromDate) {
2172
+ return "\uC870\uD68C \uC885\uB8CC\uC77C(to)\uC740 \uC2DC\uC791\uC77C(from)\uBCF4\uB2E4 \uBE60\uB97C \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.";
2173
+ }
2174
+ const now = /* @__PURE__ */ new Date();
2175
+ const earliest = new Date(
2176
+ Date.UTC(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate())
2177
+ );
2178
+ earliest.setUTCMonth(earliest.getUTCMonth() - LOOKBACK_MONTHS);
2179
+ if (fromDate < earliest) {
2180
+ return `\uC870\uD68C \uC2DC\uC791\uC77C(from)\uC740 \uCD5C\uADFC ${LOOKBACK_MONTHS}\uAC1C\uC6D4 \uC774\uB0B4\uC5EC\uC57C \uD569\uB2C8\uB2E4. ${earliest.toISOString().slice(0, 10)} \uC774\uD6C4\uB85C \uC9C0\uC815\uD574\uC8FC\uC138\uC694.`;
2181
+ }
2182
+ const maxTo = new Date(fromDate);
2183
+ if ("months" in maxRange) {
2184
+ maxTo.setUTCMonth(maxTo.getUTCMonth() + maxRange.months);
2185
+ } else {
2186
+ maxTo.setUTCDate(maxTo.getUTCDate() + maxRange.days);
2187
+ }
2188
+ if (toDate > maxTo) {
2189
+ return `\uC870\uD68C \uAD6C\uAC04\uC740 \uCD5C\uB300 ${maxRangeLabel(maxRange)}\uAE4C\uC9C0 \uAC00\uB2A5\uD569\uB2C8\uB2E4. from(${from}) \uAE30\uC900 ${maxTo.toISOString().slice(0, 10)} \uC774\uB0B4\uB85C to\uB97C \uC9C0\uC815\uD574\uC8FC\uC138\uC694.`;
2190
+ }
2191
+ return null;
2192
+ }
2193
+
2194
+ // src/tools/getReconciliationsByFilter.ts
2195
+ var name5 = "getReconciliationsByFilter";
2196
+ var DateString = z12.string().regex(/^\d{4}-\d{2}-\d{2}$/, "YYYY-MM-DD \uD615\uC2DD\uC758 \uB0A0\uC9DC\uC5EC\uC57C \uD569\uB2C8\uB2E4.");
2197
+ var Settlement2 = z12.object({
2198
+ feeAmount: z12.number().describe("PG \uC218\uC218\uB8CC"),
2199
+ feeVatAmount: z12.number().describe("PG \uC218\uC218\uB8CC \uBD80\uAC00\uC138"),
2200
+ settlementAmount: z12.number().describe("\uC815\uC0B0 \uAE08\uC561"),
2201
+ settlementCurrency: z12.string().describe("\uC815\uC0B0 \uD1B5\uD654"),
2202
+ settlementDate: z12.string().describe("\uC815\uC0B0\uC77C")
2203
+ }).partial();
2204
+ var Reconciliation = z12.object({
2205
+ id: z12.string().describe("\uAC70\uB798\uB300\uC0AC \uC544\uC774\uB514"),
2206
+ status: z12.string().describe(
2207
+ "\uB300\uC0AC \uC0C1\uD0DC (MATCHED/NOT_MATCHED/INCOMPARABLE/NOT_COLLECTED/POST_CORRECTION)"
2208
+ ),
2209
+ actionType: z12.string().describe("\uACB0\uC81C \uC0C1\uD0DC (\uC2B9\uC778/\uCDE8\uC18C/\uD6C4\uBCF4\uC815)"),
2210
+ pgProvider: z12.string().describe("\uB300\uC0AC\uC6A9 PG\uC0AC"),
2211
+ pgMerchantId: z12.string().describe("PG\uC0AC \uAC00\uB9F9\uC810 \uC2DD\uBCC4 \uC544\uC774\uB514"),
2212
+ pgTxId: z12.string().describe("PG\uC0AC \uAC70\uB798 \uC544\uC774\uB514"),
2213
+ paymentAmount: z12.number().describe("\uACB0\uC81C \uAE08\uC561"),
2214
+ supplyAmount: z12.number().describe("\uACF5\uAE09\uAC00\uC561"),
2215
+ vatAmount: z12.number().describe("\uBD80\uAC00\uC138"),
2216
+ taxFreeAmount: z12.number().describe("\uBA74\uC138\uAC00\uC561"),
2217
+ anomalyAmount: z12.number().describe("\uAC70\uB798\uC774\uC0C1 \uAE08\uC561"),
2218
+ paidAt: z12.string().describe("\uACB0\uC81C\uC77C"),
2219
+ paymentCurrency: z12.string().describe("\uACB0\uC81C \uD1B5\uD654"),
2220
+ isEscrow: z12.boolean().describe("\uC5D0\uC2A4\uD06C\uB85C \uC5EC\uBD80"),
2221
+ paymentMethodType: z12.string().describe("\uACB0\uC81C \uC218\uB2E8 \uC885\uB958(__typename \uAE30\uBC18)"),
2222
+ transactionId: z12.string().describe("\uD3EC\uD2B8\uC6D0 \uACB0\uC81C \uC544\uC774\uB514"),
2223
+ paymentId: z12.string().describe("\uACE0\uAC1D\uC0AC \uACB0\uC81C \uC544\uC774\uB514"),
2224
+ orderName: z12.string().describe("\uC8FC\uBB38\uBA85"),
2225
+ storeId: z12.string().describe("\uD558\uC704 \uC0C1\uC810 \uC544\uC774\uB514"),
2226
+ notMatchedReasons: z12.array(z12.string()).describe("\uB300\uC0AC \uBD88\uC77C\uCE58 \uC0AC\uC720 \uBAA9\uB85D (NOT_MATCHED \uC778 \uACBD\uC6B0)"),
2227
+ incomparableReason: z12.string().describe(
2228
+ "\uB300\uC0AC \uBD88\uAC00 \uC0AC\uC720 (INCOMPARABLE \uC778 \uACBD\uC6B0). \uB0B4\uBD80 backward_incomparable \uC0AC\uC720(PG_COLLECTION_FAILED/PG_DATA_MISSING \uB4F1)\uB3C4 \uC774 \uAC12\uC73C\uB85C \uBCD1\uD569\uB418\uC5B4 \uC81C\uACF5\uB429\uB2C8\uB2E4."
2229
+ ),
2230
+ settlement: Settlement2.describe("\uC815\uC0B0 \uC815\uBCF4")
2231
+ }).partial();
2232
+ var OutputSchema5 = z12.object({
2233
+ items: Reconciliation.array().describe("\uC870\uD68C\uB41C \uAC70\uB798\uB300\uC0AC \uBAA9\uB85D"),
2234
+ hasNextPage: z12.boolean().describe("\uB2E4\uC74C \uD398\uC774\uC9C0 \uC874\uC7AC \uC5EC\uBD80"),
2235
+ endCursor: z12.string().describe("\uB2E4\uC74C \uD398\uC774\uC9C0 \uC870\uD68C\uC5D0 \uC0AC\uC6A9\uD560 \uCEE4\uC11C (after \uB85C \uC804\uB2EC)")
2236
+ });
2237
+ var InputSchema4 = z12.object({
2238
+ store: z12.string().optional().describe(
2239
+ "\uC870\uD68C\uD560 \uD558\uC704 \uC0C1\uC810 \uC544\uC774\uB514. \uC0DD\uB7B5\uD558\uBA74 \uACE0\uAC1D\uC0AC \uB0B4 \uBAA8\uB4E0 \uD558\uC704 \uC0C1\uC810\uC744 \uC870\uD68C\uD569\uB2C8\uB2E4."
2240
+ ),
2241
+ dateType: z12.enum(["SETTLEMENT", "TRANSACTION"]).default("TRANSACTION").describe("from/to \uB85C \uC81C\uC57D\uD560 \uAE30\uC900 (\uC815\uC0B0\uC77C / \uACB0\uC81C\uC77C)"),
2242
+ from: DateString.describe("\uC870\uD68C \uC2DC\uC791\uC77C (YYYY-MM-DD)"),
2243
+ to: DateString.describe("\uC870\uD68C \uC885\uB8CC\uC77C (YYYY-MM-DD)"),
2244
+ statuses: z12.array(ReconciliationStatus).optional().describe(
2245
+ "\uD3EC\uD568\uD560 \uB300\uC0AC \uC0C1\uD0DC \uBAA9\uB85D. \uBD88\uC77C\uCE58 \uAC74\uB9CC \uBCF4\uB824\uBA74 [NOT_MATCHED] \uB85C \uC9C0\uC815\uD569\uB2C8\uB2E4."
2246
+ ),
2247
+ actionTypes: z12.array(ReconciliationActionType).optional().describe("\uD3EC\uD568\uD560 \uACB0\uC81C \uC0C1\uD0DC \uBAA9\uB85D"),
2248
+ paymentMethodTypes: z12.array(ReconciliationPaymentMethodType).optional().describe("\uD3EC\uD568\uD560 \uACB0\uC81C \uC218\uB2E8 \uBAA9\uB85D"),
2249
+ transactionCurrencies: z12.array(z12.string().length(3).toUpperCase()).optional().describe("\uD3EC\uD568\uD560 \uACB0\uC81C \uD1B5\uD654 \uBAA9\uB85D (\uC138 \uC790\uB9AC \uD1B5\uD654 \uCF54\uB4DC)"),
2250
+ settlementCurrencies: z12.array(z12.string().length(3).toUpperCase()).optional().describe("\uD3EC\uD568\uD560 \uC815\uC0B0 \uD1B5\uD654 \uBAA9\uB85D (\uC138 \uC790\uB9AC \uD1B5\uD654 \uCF54\uB4DC)"),
2251
+ paymentId: z12.string().optional().describe("\uACE0\uAC1D\uC0AC \uACB0\uC81C \uC544\uC774\uB514 \uAC80\uC0C9"),
2252
+ transactionId: z12.string().optional().describe("\uD3EC\uD2B8\uC6D0 \uACB0\uC81C \uC544\uC774\uB514 \uAC80\uC0C9"),
2253
+ pgTxId: z12.string().optional().describe("PG\uC0AC \uAC70\uB798 \uC544\uC774\uB514 \uAC80\uC0C9"),
2254
+ orderName: z12.string().optional().describe("\uC8FC\uBB38\uBA85 \uAC80\uC0C9"),
2255
+ first: z12.number().min(1).max(100).default(20).describe("\uC870\uD68C\uD560 \uAC74 \uC218 (\uCD5C\uB300 100)"),
2256
+ after: z12.string().optional().describe("\uC774\uC804 \uD398\uC774\uC9C0\uC758 \uB9C8\uC9C0\uB9C9 \uCEE4\uC11C (endCursor \uAC12)")
2257
+ });
2258
+ var config5 = {
2259
+ title: "\uAC70\uB798\uB300\uC0AC \uAC74\uBCC4 \uB0B4\uC5ED \uC870\uD68C",
2260
+ description: `\uD2B9\uC815 \uD558\uC704 \uC0C1\uC810(store)\uC758 \uAC70\uB798\uB300\uC0AC(\uC815\uC0B0/\uAC70\uB798 \uB300\uC0AC) \uAC74\uBCC4 \uB0B4\uC5ED\uC744 \uC870\uD68C\uD569\uB2C8\uB2E4.
2261
+
2262
+ \uAC01 \uAC74\uC740 \uB2E4\uC74C \uC0C1\uD0DC \uC911 \uD558\uB098\uB97C \uAC00\uC9D1\uB2C8\uB2E4:
2263
+ MATCHED(\uB300\uC0AC \uC131\uACF5), NOT_MATCHED(\uB300\uC0AC \uBD88\uC77C\uCE58), INCOMPARABLE(\uB300\uC0AC \uBD88\uAC00), NOT_COLLECTED(PG \uC815\uBCF4 \uBBF8\uC218\uC9D1), POST_CORRECTION(\uD6C4\uBCF4\uC815)
2264
+ (\uB0B4\uBD80\uC801\uC73C\uB85C \uAD6C\uBD84\uB418\uB294 \uC5ED\uBC29\uD5A5 \uB300\uC0AC \uBD88\uAC00(backward incomparable)\uB294 INCOMPARABLE \uB85C \uD569\uCCD0\uC838 \uC81C\uACF5\uB429\uB2C8\uB2E4.)
2265
+
2266
+ \uB300\uC0AC \uBD88\uC77C\uCE58 \uC0C1\uC138\uB294 statuses=[NOT_MATCHED] \uB85C \uC870\uD68C \uD6C4 \uAC01 \uAC74\uC758 notMatchedReasons \uB97C \uD655\uC778\uD569\uB2C8\uB2E4.
2267
+ \uB300\uC0AC \uBD88\uAC00 \uC0AC\uC720\uB294 INCOMPARABLE \uAC74\uC758 incomparableReason \uD544\uB4DC\uC5D0\uC11C \uD655\uC778\uD569\uB2C8\uB2E4.
2268
+ \uB0A0\uC9DC\uB294 \uBC18\uB4DC\uC2DC YYYY-MM-DD \uD615\uC2DD\uC73C\uB85C \uC785\uB825\uD558\uBA70, dateType \uC73C\uB85C \uC815\uC0B0\uC77C/\uACB0\uC81C\uC77C \uAE30\uC900\uC744 \uC120\uD0DD\uD569\uB2C8\uB2E4.
2269
+ \uC870\uD68C \uAE30\uAC04 \uC81C\uC57D: from \uC740 \uCD5C\uADFC 6\uAC1C\uC6D4 \uC774\uB0B4\uC5EC\uC57C \uD558\uACE0, \uD55C \uBC88\uC5D0 \uC870\uD68C \uAC00\uB2A5\uD55C \uAD6C\uAC04\uC740 \uCD5C\uB300 2\uC8FC\uC785\uB2C8\uB2E4.
2270
+ store \uC544\uC774\uB514\uB294 list_stores \uB3C4\uAD6C\uB85C \uBA3C\uC800 \uC870\uD68C\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.`,
2271
+ inputSchema: InputSchema4.shape,
2272
+ outputSchema: OutputSchema5.shape
2273
+ };
2274
+ function normalize(node) {
2275
+ const status = match8(node.__typename).with("PaymentReconciliationMatched", () => "MATCHED").with("PaymentReconciliationNotMatched", () => "NOT_MATCHED").with("PaymentReconciliationIncomparable", () => "INCOMPARABLE").with("PaymentReconciliationNotCollected", () => "NOT_COLLECTED").with("PaymentReconciliationPostCorrection", () => "POST_CORRECTION").otherwise((t) => t);
2276
+ return {
2277
+ id: node.plainId,
2278
+ status,
2279
+ actionType: node.actionType,
2280
+ pgProvider: node.pgSpecifier?.pgProvider ?? void 0,
2281
+ pgMerchantId: node.pgSpecifier?.pgMerchantId ?? void 0,
2282
+ pgTxId: node.pgTxId ?? node.pgTxIdOptional ?? void 0,
2283
+ paymentAmount: node.paymentAmount,
2284
+ supplyAmount: node.supplyAmount,
2285
+ vatAmount: node.vatAmount,
2286
+ taxFreeAmount: node.taxFreeAmount,
2287
+ anomalyAmount: node.anomalyAmount ?? void 0,
2288
+ paidAt: node.paidAt,
2289
+ paymentCurrency: node.paymentCurrency,
2290
+ isEscrow: node.isEscrow ?? void 0,
2291
+ paymentMethodType: node.paymentMethod?.paymentMethodType ?? node.paymentMethod?.__typename ?? void 0,
2292
+ transactionId: node.transactionPlainId ?? node.transactionPlainIdOptional ?? void 0,
2293
+ paymentId: node.paymentPlainId ?? node.paymentPlainIdOptional ?? void 0,
2294
+ orderName: node.orderName ?? node.orderNameOptional ?? void 0,
2295
+ storeId: node.storePlainId ?? node.storePlainIdOptional ?? void 0,
2296
+ notMatchedReasons: node.notMatchedReasons ?? void 0,
2297
+ incomparableReason: node.reason ?? void 0,
2298
+ settlement: node.settlement ? {
2299
+ feeAmount: node.settlement.feeAmount ?? void 0,
2300
+ feeVatAmount: node.settlement.feeVatAmount ?? void 0,
2301
+ settlementAmount: node.settlement.settlementAmount ?? void 0,
2302
+ settlementCurrency: node.settlement.settlementCurrency ?? void 0,
2303
+ settlementDate: node.settlement.settlementDate ?? void 0
2304
+ } : void 0
2305
+ };
2306
+ }
2307
+ function init5(tokenProvider, client) {
2308
+ return async ({
2309
+ store,
2310
+ dateType,
2311
+ from,
2312
+ to,
2313
+ statuses,
2314
+ actionTypes,
2315
+ paymentMethodTypes,
2316
+ transactionCurrencies,
2317
+ settlementCurrencies,
2318
+ paymentId,
2319
+ transactionId,
2320
+ pgTxId,
2321
+ orderName,
2322
+ first,
2323
+ after
2324
+ }) => {
2325
+ const dateRangeError = validateReconciliationDateRange(from, to, {
2326
+ days: 14
2327
+ });
2328
+ if (dateRangeError != null) {
2329
+ return toolErrorResult({
2330
+ type: "error",
2331
+ data: { message: dateRangeError }
2332
+ });
2333
+ }
2334
+ const token = await getToken(tokenProvider);
2335
+ if (token.type === "error") {
2336
+ return toolErrorResult(token);
2337
+ }
2338
+ const searchCondition = paymentId == null && transactionId == null && pgTxId == null && orderName == null ? void 0 : {
2339
+ paymentPlainId: paymentId,
2340
+ transactionPlainId: transactionId,
2341
+ pgTxId,
2342
+ orderName
2343
+ };
2344
+ const result = await getReconciliations({
2345
+ client,
2346
+ authorization: token.data,
2347
+ dateType,
2348
+ from,
2349
+ until: to,
2350
+ searchCondition,
2351
+ filter: {
2352
+ storeIds: store == null ? void 0 : [store],
2353
+ paymentReconciliationStatuses: statuses,
2354
+ actionTypes,
2355
+ paymentMethodTypes,
2356
+ transactionCurrencies,
2357
+ settlementCurrencies
2358
+ },
2359
+ first,
2360
+ after
2361
+ });
2362
+ if (result.type === "error") {
2363
+ return toolErrorResult(result);
2364
+ }
2365
+ try {
2366
+ const structuredContent = {
2367
+ items: result.data.edges.map((edge) => normalize(edge.node)),
2368
+ hasNextPage: result.data.pageInfo.hasNextPage,
2369
+ endCursor: result.data.pageInfo.endCursor
2370
+ };
2371
+ return {
2372
+ content: [
2373
+ { type: "text", text: JSON.stringify(structuredContent, null, 2) }
2374
+ ],
2375
+ structuredContent
2376
+ };
2377
+ } catch {
2378
+ return {
2379
+ content: [{ type: "text", text: "\uC11C\uBC84\uB85C\uBD80\uD130 \uC798\uBABB\uB41C \uC751\uB2F5 \uC218\uC2E0" }],
2380
+ isError: true
2381
+ };
2382
+ }
2383
+ };
2384
+ }
2385
+
2386
+ // src/tools/getSettlementStatistics.ts
2387
+ var getSettlementStatistics_exports = {};
2388
+ __export(getSettlementStatistics_exports, {
2389
+ config: () => config6,
2390
+ init: () => init6,
2391
+ name: () => name6
2392
+ });
2393
+ import z14 from "zod";
2394
+
2395
+ // src/tools/request/getSettlements.ts
2396
+ import { parse as parse4 } from "graphql";
2397
+ import { gql as gql4 } from "graphql-request";
2398
+ import { match as match9, P as P7 } from "ts-pattern";
2399
+ import z13 from "zod";
2400
+ var ErrorResponse4 = z13.object({
2401
+ __typename: z13.string(),
2402
+ message: z13.string().nullable()
2403
+ });
2404
+ var SettlementFilter = z13.object({
2405
+ storeIds: z13.array(z13.string()),
2406
+ pgSpecifiers: z13.array(
2407
+ z13.object({
2408
+ pgMerchantId: z13.string(),
2409
+ pgProvider: ReconciliationPgProvider
2410
+ })
2411
+ )
2412
+ }).partial();
2413
+ var SettlementAggregate = z13.object({
2414
+ settlementAmount: z13.number(),
2415
+ settlementCount: z13.number(),
2416
+ feeAmount: z13.number(),
2417
+ feeVatAmount: z13.number(),
2418
+ cancelAmount: z13.number(),
2419
+ cancelCount: z13.number(),
2420
+ transactionAmount: z13.number(),
2421
+ postCorrectionCount: z13.number(),
2422
+ postCorrectionAmount: z13.number()
2423
+ });
2424
+ var SettlementDetail = z13.object({
2425
+ storePlainId: z13.string().nullable(),
2426
+ pgSpecifier: z13.object(
2427
+ nullableObject({ pgMerchantId: z13.string(), pgProvider: z13.string() })
2428
+ ),
2429
+ settlementAmount: z13.number(),
2430
+ settlementCount: z13.number(),
2431
+ feeAmount: z13.number(),
2432
+ feeVatAmount: z13.number(),
2433
+ cancelAmount: z13.number(),
2434
+ cancelCount: z13.number(),
2435
+ transactionAmount: z13.number(),
2436
+ postCorrectionCount: z13.number(),
2437
+ postCorrectionAmount: z13.number()
2438
+ }).partial({ storePlainId: true, pgSpecifier: true });
2439
+ var SettlementSummaryNode = z13.object({
2440
+ date: z13.string(),
2441
+ settlementCurrency: z13.string(),
2442
+ transactionCurrency: z13.string(),
2443
+ aggregate: SettlementAggregate,
2444
+ details: z13.array(SettlementDetail)
2445
+ });
2446
+ var CursorPageInfo2 = z13.object({
2447
+ startCursor: z13.string(),
2448
+ endCursor: z13.string(),
2449
+ hasPreviousPage: z13.boolean(),
2450
+ hasNextPage: z13.boolean()
2451
+ });
2452
+ var SettlementSummariesPayload = z13.object({
2453
+ edges: z13.array(z13.object({ node: SettlementSummaryNode, cursor: z13.string() })),
2454
+ pageInfo: CursorPageInfo2
2455
+ });
2456
+ var GetSettlementSummariesResponse = z13.object({
2457
+ merchant: z13.object({
2458
+ reconciliation: z13.object({
2459
+ paymentReconciliationSettlementSummaries: SettlementSummariesPayload
2460
+ })
2461
+ }).or(ErrorResponse4)
2462
+ }).transform(({ merchant }) => {
2463
+ if ("__typename" in merchant) return merchant;
2464
+ return merchant.reconciliation.paymentReconciliationSettlementSummaries;
2465
+ });
2466
+ var getSettlementSummariesQuery = parse4(gql4`
2467
+ query GetSettlementSummaries(
2468
+ $dateRange: DateRangeInput!
2469
+ $filter: PaymentReconciliationSettlementSummaryFilterInput
2470
+ $first: Int!
2471
+ $after: String
2472
+ ) {
2473
+ merchant {
2474
+ ...ErrorFragment
2475
+ ... on Merchant {
2476
+ reconciliation {
2477
+ paymentReconciliationSettlementSummaries(
2478
+ dateRange: $dateRange
2479
+ filter: $filter
2480
+ first: $first
2481
+ after: $after
2482
+ ) {
2483
+ edges {
2484
+ cursor
2485
+ node {
2486
+ date
2487
+ settlementCurrency
2488
+ transactionCurrency
2489
+ aggregate {
2490
+ settlementAmount
2491
+ settlementCount
2492
+ feeAmount
2493
+ feeVatAmount
2494
+ cancelAmount
2495
+ cancelCount
2496
+ transactionAmount
2497
+ postCorrectionCount
2498
+ postCorrectionAmount
2499
+ }
2500
+ details {
2501
+ storePlainId
2502
+ pgSpecifier {
2503
+ pgMerchantId
2504
+ pgProvider
2505
+ }
2506
+ settlementAmount
2507
+ settlementCount
2508
+ feeAmount
2509
+ feeVatAmount
2510
+ cancelAmount
2511
+ cancelCount
2512
+ transactionAmount
2513
+ postCorrectionCount
2514
+ postCorrectionAmount
2515
+ }
2516
+ }
2517
+ }
2518
+ pageInfo {
2519
+ startCursor
2520
+ endCursor
2521
+ hasPreviousPage
2522
+ hasNextPage
2523
+ }
2524
+ }
2525
+ }
2526
+ }
2527
+ }
2528
+ }
2529
+
2530
+ fragment ErrorFragment on Error {
2531
+ __typename
2532
+ message
2533
+ }
2534
+ `);
2535
+ async function getSettlementSummaries({
2536
+ client,
2537
+ authorization,
2538
+ from,
2539
+ until,
2540
+ filter,
2541
+ first,
2542
+ after
2543
+ }) {
2544
+ try {
2545
+ const response = await client.request({
2546
+ document: getSettlementSummariesQuery,
2547
+ requestHeaders: { authorization },
2548
+ variables: { dateRange: { from, until }, filter, first, after }
2549
+ });
2550
+ const parsed = await GetSettlementSummariesResponse.parseAsync(response);
2551
+ return match9(parsed).returnType().with({ __typename: P7.nonNullable }, ({ __typename, message }) => ({
2552
+ type: "error",
2553
+ data: { message, type: __typename }
2554
+ })).otherwise((data) => ({ type: "success", data }));
2555
+ } catch (error) {
2556
+ return toRequestError(error);
2557
+ }
2558
+ }
2559
+ var SettlementStatistic = z13.object({
2560
+ amount: z13.number(),
2561
+ count: z13.number(),
2562
+ pendingAmount: z13.number(),
2563
+ pendingCount: z13.number(),
2564
+ currency: z13.string()
2565
+ });
2566
+ var DailySettlementStatistics = z13.object({
2567
+ date: z13.string(),
2568
+ statistics: z13.array(SettlementStatistic)
2569
+ });
2570
+ var SettlementStatisticsPayload = z13.object({
2571
+ __typename: z13.literal("PaymentReconciliationSettlementStatisticsPayload"),
2572
+ rangeTotalStatistics: z13.array(SettlementStatistic),
2573
+ dailyStatistics: z13.array(DailySettlementStatistics)
2574
+ });
2575
+ var GetSettlementStatisticsResponse = z13.object({
2576
+ merchant: z13.object({
2577
+ reconciliation: z13.object({
2578
+ // Output 는 union 이므로 payload 또는 error typename 을 가짐
2579
+ paymentReconciliationSettlementStatistics: SettlementStatisticsPayload.or(ErrorResponse4)
2580
+ })
2581
+ }).or(ErrorResponse4)
2582
+ }).transform(({ merchant }) => {
2583
+ if ("__typename" in merchant) return merchant;
2584
+ return merchant.reconciliation.paymentReconciliationSettlementStatistics;
2585
+ });
2586
+ var getSettlementStatisticsQuery = parse4(gql4`
2587
+ query GetSettlementStatistics(
2588
+ $dateRange: DateRangeInput!
2589
+ $filter: PaymentReconciliationSettlementStatisticsFilterInput
2590
+ ) {
2591
+ merchant {
2592
+ ...ErrorFragment
2593
+ ... on Merchant {
2594
+ reconciliation {
2595
+ paymentReconciliationSettlementStatistics(
2596
+ dateRange: $dateRange
2597
+ filter: $filter
2598
+ ) {
2599
+ __typename
2600
+ ...ErrorFragment
2601
+ ... on PaymentReconciliationSettlementStatisticsPayload {
2602
+ rangeTotalStatistics {
2603
+ amount
2604
+ count
2605
+ pendingAmount
2606
+ pendingCount
2607
+ currency
2608
+ }
2609
+ dailyStatistics {
2610
+ date
2611
+ statistics {
2612
+ amount
2613
+ count
2614
+ pendingAmount
2615
+ pendingCount
2616
+ currency
2617
+ }
2618
+ }
2619
+ }
2620
+ }
2621
+ }
2622
+ }
2623
+ }
2624
+ }
2625
+
2626
+ fragment ErrorFragment on Error {
2627
+ __typename
2628
+ message
2629
+ }
2630
+ `);
2631
+ async function getSettlementStatistics({
2632
+ client,
2633
+ authorization,
2634
+ from,
2635
+ until,
2636
+ filter
2637
+ }) {
2638
+ try {
2639
+ const response = await client.request({
2640
+ document: getSettlementStatisticsQuery,
2641
+ requestHeaders: { authorization },
2642
+ variables: { dateRange: { from, until }, filter }
2643
+ });
2644
+ const parsed = await GetSettlementStatisticsResponse.parseAsync(response);
2645
+ if ("rangeTotalStatistics" in parsed) {
2646
+ return { type: "success", data: parsed };
2647
+ }
2648
+ return {
2649
+ type: "error",
2650
+ data: { message: parsed.message, type: parsed.__typename }
2651
+ };
2652
+ } catch (error) {
2653
+ return toRequestError(error);
2654
+ }
2655
+ }
2656
+
2657
+ // src/tools/getSettlementStatistics.ts
2658
+ var name6 = "getSettlementStatistics";
2659
+ var DateString2 = z14.string().regex(/^\d{4}-\d{2}-\d{2}$/, "YYYY-MM-DD \uD615\uC2DD\uC758 \uB0A0\uC9DC\uC5EC\uC57C \uD569\uB2C8\uB2E4.");
2660
+ var Statistic = z14.object({
2661
+ currency: z14.string().describe("\uD1B5\uD654"),
2662
+ amount: z14.number().describe("\uC815\uC0B0 \uAE08\uC561"),
2663
+ count: z14.number().describe("\uC815\uC0B0 \uAC74 \uC218"),
2664
+ pendingAmount: z14.number().describe("\uC815\uC0B0 \uC608\uC815 \uAE08\uC561"),
2665
+ pendingCount: z14.number().describe("\uC815\uC0B0 \uC608\uC815 \uAC74 \uC218")
2666
+ });
2667
+ var DailyStatistics = z14.object({
2668
+ date: z14.string().describe("\uC815\uC0B0\uC77C"),
2669
+ statistics: Statistic.array().describe("\uD574\uB2F9 \uC77C\uC790\uC758 \uD1B5\uD654\uBCC4 \uD1B5\uACC4")
2670
+ });
2671
+ var OutputSchema6 = z14.object({
2672
+ rangeTotalStatistics: Statistic.array().describe(
2673
+ "\uAC80\uC0C9 \uAD6C\uAC04 \uB0B4 \uD1B5\uD654\uBCC4 \uD569\uC0B0 \uD1B5\uACC4"
2674
+ ),
2675
+ dailyStatistics: DailyStatistics.array().describe("\uC77C\uBCC4 \uC815\uC0B0 \uD1B5\uACC4")
2676
+ });
2677
+ var InputSchema5 = z14.object({
2678
+ store: z14.string().optional().describe(
2679
+ "\uC870\uD68C\uD560 \uD558\uC704 \uC0C1\uC810 \uC544\uC774\uB514. \uC0DD\uB7B5\uD558\uBA74 \uACE0\uAC1D\uC0AC \uB0B4 \uBAA8\uB4E0 \uD558\uC704 \uC0C1\uC810\uC744 \uC870\uD68C\uD569\uB2C8\uB2E4."
2680
+ ),
2681
+ from: DateString2.describe("\uC815\uC0B0\uC77C \uC870\uD68C \uC2DC\uC791\uC77C (YYYY-MM-DD)"),
2682
+ to: DateString2.describe("\uC815\uC0B0\uC77C \uC870\uD68C \uC885\uB8CC\uC77C (YYYY-MM-DD)")
2683
+ });
2684
+ var config6 = {
2685
+ title: "\uAC70\uB798\uB300\uC0AC \uC815\uC0B0 \uD1B5\uACC4 \uC870\uD68C",
2686
+ description: `\uD2B9\uC815 \uD558\uC704 \uC0C1\uC810(store)\uC758 \uAC70\uB798\uB300\uC0AC \uC815\uC0B0 \uD1B5\uACC4\uB97C \uC870\uD68C\uD569\uB2C8\uB2E4.
2687
+
2688
+ \uAC80\uC0C9 \uAD6C\uAC04 \uB0B4 \uD1B5\uD654\uBCC4 \uD569\uC0B0 \uD1B5\uACC4(\uC815\uC0B0/\uC815\uC0B0\uC608\uC815 \uAE08\uC561\xB7\uAC74\uC218)\uC640 \uC77C\uBCC4 \uD1B5\uACC4\uB97C \uC81C\uACF5\uD569\uB2C8\uB2E4.
2689
+ \uB0A0\uC9DC\uB294 \uBC18\uB4DC\uC2DC YYYY-MM-DD \uD615\uC2DD\uC73C\uB85C \uC785\uB825\uD569\uB2C8\uB2E4.
2690
+ \uC870\uD68C \uAE30\uAC04 \uC81C\uC57D: from \uC740 \uCD5C\uADFC 6\uAC1C\uC6D4 \uC774\uB0B4\uC5EC\uC57C \uD558\uACE0, \uD55C \uBC88\uC5D0 \uC870\uD68C \uAC00\uB2A5\uD55C \uAD6C\uAC04\uC740 \uCD5C\uB300 1\uAC1C\uC6D4\uC785\uB2C8\uB2E4.
2691
+ store \uC544\uC774\uB514\uB294 list_stores \uB3C4\uAD6C\uB85C \uBA3C\uC800 \uC870\uD68C\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.`,
2692
+ inputSchema: InputSchema5.shape,
2693
+ outputSchema: OutputSchema6.shape
2694
+ };
2695
+ function init6(tokenProvider, client) {
2696
+ return async ({ store, from, to }) => {
2697
+ const dateRangeError = validateReconciliationDateRange(from, to, {
2698
+ months: 1
2699
+ });
2700
+ if (dateRangeError != null) {
2701
+ return toolErrorResult({
2702
+ type: "error",
2703
+ data: { message: dateRangeError }
2704
+ });
2705
+ }
2706
+ const token = await getToken(tokenProvider);
2707
+ if (token.type === "error") {
2708
+ return toolErrorResult(token);
2709
+ }
2710
+ const result = await getSettlementStatistics({
2711
+ client,
2712
+ authorization: token.data,
2713
+ from,
2714
+ until: to,
2715
+ filter: { storeIds: store == null ? void 0 : [store] }
2716
+ });
2717
+ if (result.type === "error") {
2718
+ return toolErrorResult(result);
2719
+ }
2720
+ const structuredContent = {
2721
+ rangeTotalStatistics: result.data.rangeTotalStatistics,
2722
+ dailyStatistics: result.data.dailyStatistics
2723
+ };
2724
+ return {
2725
+ content: [
2726
+ { type: "text", text: JSON.stringify(structuredContent, null, 2) }
2727
+ ],
2728
+ structuredContent
2729
+ };
2730
+ };
2731
+ }
2732
+
2733
+ // src/tools/getSettlementSummaries.ts
2734
+ var getSettlementSummaries_exports = {};
2735
+ __export(getSettlementSummaries_exports, {
2736
+ config: () => config7,
2737
+ init: () => init7,
2738
+ name: () => name7
2739
+ });
2740
+ import z15 from "zod";
2741
+ var name7 = "getSettlementSummaries";
2742
+ var DateString3 = z15.string().regex(/^\d{4}-\d{2}-\d{2}$/, "YYYY-MM-DD \uD615\uC2DD\uC758 \uB0A0\uC9DC\uC5EC\uC57C \uD569\uB2C8\uB2E4.");
2743
+ var Aggregate = z15.object({
2744
+ settlementAmount: z15.number().describe("\uC815\uC0B0 \uAE08\uC561"),
2745
+ settlementCount: z15.number().describe("\uC815\uC0B0 \uAC74 \uC218"),
2746
+ feeAmount: z15.number().describe("PG \uC218\uC218\uB8CC"),
2747
+ feeVatAmount: z15.number().describe("PG \uC218\uC218\uB8CC \uBD80\uAC00\uC138"),
2748
+ cancelAmount: z15.number().describe("\uCDE8\uC18C \uAE08\uC561"),
2749
+ cancelCount: z15.number().describe("\uCDE8\uC18C \uAC74 \uC218"),
2750
+ transactionAmount: z15.number().describe("\uAC70\uB798 \uD569\uACC4 \uAE08\uC561"),
2751
+ postCorrectionCount: z15.number().describe("\uD6C4\uBCF4\uC815 \uAC74 \uC218"),
2752
+ postCorrectionAmount: z15.number().describe("\uD6C4\uBCF4\uC815 \uAE08\uC561")
2753
+ });
2754
+ var Detail = Aggregate.extend({
2755
+ storeId: z15.string().optional().describe("\uD558\uC704 \uC0C1\uC810 \uC544\uC774\uB514"),
2756
+ pgProvider: z15.string().optional().describe("\uB300\uC0AC\uC6A9 PG\uC0AC"),
2757
+ pgMerchantId: z15.string().optional().describe("PG\uC0AC \uAC00\uB9F9\uC810 \uC2DD\uBCC4 \uC544\uC774\uB514")
2758
+ });
2759
+ var Summary = z15.object({
2760
+ date: z15.string().describe("\uC815\uC0B0\uC77C"),
2761
+ settlementCurrency: z15.string().describe("\uC815\uC0B0 \uD1B5\uD654"),
2762
+ transactionCurrency: z15.string().describe("\uACB0\uC81C \uD1B5\uD654"),
2763
+ aggregate: Aggregate.describe("\uC815\uC0B0\uB0B4\uC5ED \uD569\uC0B0 \uB370\uC774\uD130"),
2764
+ details: Detail.array().describe("\uC0C1\uC810/PG \uBCC4 \uC0C1\uC138 \uB370\uC774\uD130")
2765
+ });
2766
+ var OutputSchema7 = z15.object({
2767
+ items: Summary.array().describe("\uC77C\uBCC4 \uC815\uC0B0 \uC694\uC57D \uBAA9\uB85D"),
2768
+ hasNextPage: z15.boolean().describe("\uB2E4\uC74C \uD398\uC774\uC9C0 \uC874\uC7AC \uC5EC\uBD80"),
2769
+ endCursor: z15.string().describe("\uB2E4\uC74C \uD398\uC774\uC9C0 \uC870\uD68C\uC5D0 \uC0AC\uC6A9\uD560 \uCEE4\uC11C")
2770
+ });
2771
+ var InputSchema6 = z15.object({
2772
+ store: z15.string().optional().describe(
2773
+ "\uC870\uD68C\uD560 \uD558\uC704 \uC0C1\uC810 \uC544\uC774\uB514. \uC0DD\uB7B5\uD558\uBA74 \uACE0\uAC1D\uC0AC \uB0B4 \uBAA8\uB4E0 \uD558\uC704 \uC0C1\uC810\uC744 \uC870\uD68C\uD569\uB2C8\uB2E4."
2774
+ ),
2775
+ from: DateString3.describe("\uC815\uC0B0\uC77C \uC870\uD68C \uC2DC\uC791\uC77C (YYYY-MM-DD)"),
2776
+ to: DateString3.describe("\uC815\uC0B0\uC77C \uC870\uD68C \uC885\uB8CC\uC77C (YYYY-MM-DD)"),
2777
+ first: z15.number().min(1).max(100).default(31).describe("\uC870\uD68C\uD560 \uC77C \uC218 (\uCD5C\uB300 100)"),
2778
+ after: z15.string().optional().describe("\uC774\uC804 \uD398\uC774\uC9C0\uC758 \uB9C8\uC9C0\uB9C9 \uCEE4\uC11C")
2779
+ });
2780
+ var config7 = {
2781
+ title: "\uAC70\uB798\uB300\uC0AC \uC815\uC0B0 \uC694\uC57D \uC870\uD68C",
2782
+ description: `\uD2B9\uC815 \uD558\uC704 \uC0C1\uC810(store)\uC758 \uAC70\uB798\uB300\uC0AC \uC815\uC0B0 \uC694\uC57D\uC744 \uC815\uC0B0\uC77C \uAE30\uC900 \uC77C\uBCC4\uB85C \uC870\uD68C\uD569\uB2C8\uB2E4.
2783
+
2784
+ \uAC01 \uC77C\uC790\uBCC4\uB85C \uC815\uC0B0 \uAE08\uC561/\uAC74\uC218, PG \uC218\uC218\uB8CC, \uCDE8\uC18C, \uD6C4\uBCF4\uC815 \uD569\uC0B0\uCE58\uC640 \uC0C1\uC810\xB7PG\uBCC4 \uC0C1\uC138 \uB0B4\uC5ED\uC744 \uC81C\uACF5\uD569\uB2C8\uB2E4.
2785
+ \uB0A0\uC9DC\uB294 \uBC18\uB4DC\uC2DC YYYY-MM-DD \uD615\uC2DD\uC73C\uB85C \uC785\uB825\uD569\uB2C8\uB2E4.
2786
+ \uC870\uD68C \uAE30\uAC04 \uC81C\uC57D: from \uC740 \uCD5C\uADFC 6\uAC1C\uC6D4 \uC774\uB0B4\uC5EC\uC57C \uD558\uACE0, \uD55C \uBC88\uC5D0 \uC870\uD68C \uAC00\uB2A5\uD55C \uAD6C\uAC04\uC740 \uCD5C\uB300 1\uAC1C\uC6D4\uC785\uB2C8\uB2E4.
2787
+ store \uC544\uC774\uB514\uB294 list_stores \uB3C4\uAD6C\uB85C \uBA3C\uC800 \uC870\uD68C\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.`,
2788
+ inputSchema: InputSchema6.shape,
2789
+ outputSchema: OutputSchema7.shape
2790
+ };
2791
+ function init7(tokenProvider, client) {
2792
+ return async ({ store, from, to, first, after }) => {
2793
+ const dateRangeError = validateReconciliationDateRange(from, to, {
2794
+ months: 1
2795
+ });
2796
+ if (dateRangeError != null) {
2797
+ return toolErrorResult({
2798
+ type: "error",
2799
+ data: { message: dateRangeError }
2800
+ });
2801
+ }
2802
+ const token = await getToken(tokenProvider);
2803
+ if (token.type === "error") {
2804
+ return toolErrorResult(token);
2805
+ }
2806
+ const result = await getSettlementSummaries({
2807
+ client,
2808
+ authorization: token.data,
2809
+ from,
2810
+ until: to,
2811
+ filter: { storeIds: store == null ? void 0 : [store] },
2812
+ first,
2813
+ after
2814
+ });
2815
+ if (result.type === "error") {
2816
+ return toolErrorResult(result);
2817
+ }
2818
+ try {
2819
+ const structuredContent = {
2820
+ items: result.data.edges.map(({ node }) => ({
2821
+ date: node.date,
2822
+ settlementCurrency: node.settlementCurrency,
2823
+ transactionCurrency: node.transactionCurrency,
2824
+ aggregate: node.aggregate,
2825
+ details: node.details.map((detail) => ({
2826
+ storeId: detail.storePlainId ?? void 0,
2827
+ pgProvider: detail.pgSpecifier?.pgProvider ?? void 0,
2828
+ pgMerchantId: detail.pgSpecifier?.pgMerchantId ?? void 0,
2829
+ settlementAmount: detail.settlementAmount,
2830
+ settlementCount: detail.settlementCount,
2831
+ feeAmount: detail.feeAmount,
2832
+ feeVatAmount: detail.feeVatAmount,
2833
+ cancelAmount: detail.cancelAmount,
2834
+ cancelCount: detail.cancelCount,
2835
+ transactionAmount: detail.transactionAmount,
2836
+ postCorrectionCount: detail.postCorrectionCount,
2837
+ postCorrectionAmount: detail.postCorrectionAmount
2838
+ }))
2839
+ })),
2840
+ hasNextPage: result.data.pageInfo.hasNextPage,
2841
+ endCursor: result.data.pageInfo.endCursor
2842
+ };
2843
+ return {
2844
+ content: [
2845
+ { type: "text", text: JSON.stringify(structuredContent, null, 2) }
2846
+ ],
2847
+ structuredContent
2848
+ };
2849
+ } catch {
2850
+ return {
2851
+ content: [{ type: "text", text: "\uC11C\uBC84\uB85C\uBD80\uD130 \uC798\uBABB\uB41C \uC751\uB2F5 \uC218\uC2E0" }],
2852
+ isError: true
2853
+ };
2854
+ }
2855
+ };
2856
+ }
2857
+
2858
+ // src/tools/listDocs.ts
2859
+ var listDocs_exports = {};
2860
+ __export(listDocs_exports, {
2861
+ config: () => config8,
2862
+ init: () => init8,
2863
+ name: () => name8
2864
+ });
2865
+ import z16 from "zod";
2866
+
1757
2867
  // src/tools/utils/markdown.ts
1758
2868
  function formatDocumentMetadata(doc) {
1759
2869
  const lines = [];
@@ -1772,8 +2882,8 @@ function formatDocumentMetadata(doc) {
1772
2882
  }
1773
2883
 
1774
2884
  // src/tools/listDocs.ts
1775
- var name5 = "listPortoneDocs";
1776
- var config5 = {
2885
+ var name8 = "listPortoneDocs";
2886
+ var config8 = {
1777
2887
  title: "\uD3EC\uD2B8\uC6D0 \uBB38\uC11C \uBAA9\uB85D \uC870\uD68C",
1778
2888
  description: `\uD2B9\uC815 \uACBD\uB85C \uD558\uC704\uC5D0 \uC788\uB294 \uBAA8\uB4E0 \uD3EC\uD2B8\uC6D0 \uBB38\uC11C \uBAA9\uB85D\uC744 \uD2B8\uB9AC \uD615\uD0DC\uB85C \uC870\uD68C\uD569\uB2C8\uB2E4.
1779
2889
  \uBAA9\uB85D\uC5D0\uB294 \uBB38\uC11C \uACBD\uB85C, \uC81C\uBAA9, \uC124\uBA85, \uB300\uC0C1 \uBC84\uC804 \uB4F1 \uCD95\uC57D\uB41C \uBB38\uC11C \uC815\uBCF4\uAC00 \uD3EC\uD568\uB418\uC5B4 \uC788\uC2B5\uB2C8\uB2E4.
@@ -1784,15 +2894,15 @@ Returns:
1784
2894
  Note:
1785
2895
  \uBB38\uC11C \uBAA9\uB85D\uC740 \uB300\uB7C9\uC758 \uB370\uC774\uD130\uC774\uBBC0\uB85C \uC0C1\uC704 \uB514\uB809\uD1A0\uB9AC\uB97C \uC870\uD68C\uD560 \uACBD\uC6B0 omitFiles\uB97C true\uB85C \uC124\uC815\uD569\uB2C8\uB2E4.`,
1786
2896
  inputSchema: {
1787
- paths: z11.string().array().default([]).describe(
2897
+ paths: z16.string().array().default([]).describe(
1788
2898
  "\uD558\uC704 \uBAA9\uB85D\uC744 \uC870\uD68C\uD560 \uACBD\uB85C\uB4E4\uC785\uB2C8\uB2E4. \uBBF8\uC785\uB825 \uC2DC \uC804\uCCB4 \uBAA9\uB85D\uC744 \uC870\uD68C\uD569\uB2C8\uB2E4."
1789
2899
  ),
1790
- onlyPaths: z11.boolean().default(false).describe(
2900
+ onlyPaths: z16.boolean().default(false).describe(
1791
2901
  "true\uC778 \uACBD\uC6B0 \uBB38\uC11C\uB97C \uC81C\uC678\uD55C \uB514\uB809\uD1A0\uB9AC \uBAA9\uB85D\uB9CC \uD45C\uC2DC\uD558\uACE0, \uB514\uB809\uD1A0\uB9AC \uD558\uC704\uC5D0 readme.md\uAC00 \uC788\uB294 \uACBD\uC6B0 \uD574\uB2F9 \uD30C\uC77C\uC758 \uC124\uBA85\uC744 \uD45C\uC2DC\uD569\uB2C8\uB2E4."
1792
2902
  )
1793
2903
  }
1794
2904
  };
1795
- function init5(documents) {
2905
+ function init8(documents) {
1796
2906
  return ({ paths, onlyPaths }) => {
1797
2907
  const { markdownDocs } = documents;
1798
2908
  const filteredDocs = [];
@@ -1869,32 +2979,32 @@ function init5(documents) {
1869
2979
  // src/tools/listSharedTestChannels.ts
1870
2980
  var listSharedTestChannels_exports = {};
1871
2981
  __export(listSharedTestChannels_exports, {
1872
- config: () => config6,
1873
- init: () => init6,
1874
- name: () => name6
2982
+ config: () => config9,
2983
+ init: () => init9,
2984
+ name: () => name9
1875
2985
  });
1876
- import z12 from "zod";
1877
- var name6 = "listSharedTestChannels";
1878
- var SharedTestChannel = z12.object({
1879
- pg: z12.string().describe(
2986
+ import z17 from "zod";
2987
+ var name9 = "listSharedTestChannels";
2988
+ var SharedTestChannel = z17.object({
2989
+ pg: z17.string().describe(
1880
2990
  "PG\uC0AC \uACB0\uC81C \uBAA8\uB4C8\uC758 \uC2DD\uBCC4\uC790\uB85C, PG\uC0AC\uBCC4\uB85C \uC5EC\uB7EC \uBAA8\uB4C8\uC774 \uC788\uC744 \uC218 \uC788\uC2B5\uB2C8\uB2E4."
1881
2991
  ),
1882
- mid: z12.string().describe("PG\uC0AC\uC5D0\uC11C \uACE0\uAC1D\uC0AC\uB97C \uAD6C\uBD84\uD558\uAE30 \uC704\uD55C ID"),
1883
- name: z12.string().describe("\uD3EC\uD2B8\uC6D0\uC5D0\uC11C \uC9C0\uC815\uD55C \uCC44\uB110\uC758 \uC774\uB984"),
1884
- usage: z12.array(z12.enum(["PAYMENT", "IDENTITY"])).describe("\uCC44\uB110\uC744 \uC0AC\uC6A9 \uAC00\uB2A5\uD55C \uC6A9\uB3C4")
2992
+ mid: z17.string().describe("PG\uC0AC\uC5D0\uC11C \uACE0\uAC1D\uC0AC\uB97C \uAD6C\uBD84\uD558\uAE30 \uC704\uD55C ID"),
2993
+ name: z17.string().describe("\uD3EC\uD2B8\uC6D0\uC5D0\uC11C \uC9C0\uC815\uD55C \uCC44\uB110\uC758 \uC774\uB984"),
2994
+ usage: z17.array(z17.enum(["PAYMENT", "IDENTITY"])).describe("\uCC44\uB110\uC744 \uC0AC\uC6A9 \uAC00\uB2A5\uD55C \uC6A9\uB3C4")
1885
2995
  });
1886
- var OutputSchema5 = z12.object({
1887
- items: z12.array(SharedTestChannel).describe("\uC870\uD68C\uB41C \uCC44\uB110 \uBAA9\uB85D\uC73C\uB85C, MID\uAC00 \uD3EC\uD568\uB429\uB2C8\uB2E4.")
2996
+ var OutputSchema8 = z17.object({
2997
+ items: z17.array(SharedTestChannel).describe("\uC870\uD68C\uB41C \uCC44\uB110 \uBAA9\uB85D\uC73C\uB85C, MID\uAC00 \uD3EC\uD568\uB429\uB2C8\uB2E4.")
1888
2998
  });
1889
- var config6 = {
2999
+ var config9 = {
1890
3000
  title: "\uD3EC\uD2B8\uC6D0 \uACF5\uC6A9 \uD14C\uC2A4\uD2B8 \uCC44\uB110 \uBAA9\uB85D \uC870\uD68C",
1891
3001
  description: "\uD3EC\uD2B8\uC6D0\uC5D0\uC11C \uD14C\uC2A4\uD2B8 \uC6A9\uB3C4\uB85C \uC81C\uACF5\uD558\uB294 \uCC44\uB110\uC758 \uBAA9\uB85D\uC744 \uAC00\uC838\uC635\uB2C8\uB2E4.",
1892
3002
  inputSchema: {
1893
- pgProviders: z12.array(PgProvider).optional().describe("\uBAA9\uB85D\uC5D0 \uC788\uB294 PG\uC0AC(\uBBF8\uC124\uC815 \uC2DC \uBAA8\uB4E0 PG\uC0AC)\uB9CC \uBCF4\uC5EC\uC90D\uB2C8\uB2E4.")
3003
+ pgProviders: z17.array(PgProvider).optional().describe("\uBAA9\uB85D\uC5D0 \uC788\uB294 PG\uC0AC(\uBBF8\uC124\uC815 \uC2DC \uBAA8\uB4E0 PG\uC0AC)\uB9CC \uBCF4\uC5EC\uC90D\uB2C8\uB2E4.")
1894
3004
  },
1895
- outputSchema: OutputSchema5.shape
3005
+ outputSchema: OutputSchema8.shape
1896
3006
  };
1897
- function init6(tokenProvider) {
3007
+ function init9(tokenProvider) {
1898
3008
  return async () => {
1899
3009
  const token = await getToken(tokenProvider);
1900
3010
  if (token.type === "error") {
@@ -1942,31 +3052,31 @@ function init6(tokenProvider) {
1942
3052
  // src/tools/listStores.ts
1943
3053
  var listStores_exports = {};
1944
3054
  __export(listStores_exports, {
1945
- config: () => config7,
1946
- init: () => init7,
1947
- name: () => name7
3055
+ config: () => config10,
3056
+ init: () => init10,
3057
+ name: () => name10
1948
3058
  });
1949
- import z13 from "zod";
1950
- var name7 = "listStores";
1951
- var Store = z13.object({
1952
- id: z13.string().describe("\uAC70\uB798 \uB2E4\uAC74 \uC870\uD68C\uC6A9 \uC0C1\uC810 \uC2DD\uBCC4\uC790"),
1953
- storeId: z13.string().describe("\uD3EC\uD2B8\uC6D0 \uC0C1\uC810\uC544\uC774\uB514"),
1954
- name: z13.string().describe("\uC0C1\uC810\uBA85"),
1955
- userId: z13.number().optional().describe("V1 \uC720\uC800 \uC544\uC774\uB514"),
1956
- userCode: z13.string().optional().describe("V1 \uACE0\uAC1D \uC2DD\uBCC4\uBC88\uD638"),
1957
- tierCode: z13.string().optional().describe("\uD2F0\uC5B4\uCF54\uB4DC")
1958
- });
1959
- var OutputSchema6 = z13.object({
3059
+ import z18 from "zod";
3060
+ var name10 = "listStores";
3061
+ var Store = z18.object({
3062
+ id: z18.string().describe("\uAC70\uB798 \uB2E4\uAC74 \uC870\uD68C\uC6A9 \uC0C1\uC810 \uC2DD\uBCC4\uC790"),
3063
+ storeId: z18.string().describe("\uD3EC\uD2B8\uC6D0 \uC0C1\uC810\uC544\uC774\uB514"),
3064
+ name: z18.string().describe("\uC0C1\uC810\uBA85"),
3065
+ userId: z18.number().optional().describe("V1 \uC720\uC800 \uC544\uC774\uB514"),
3066
+ userCode: z18.string().optional().describe("V1 \uACE0\uAC1D \uC2DD\uBCC4\uBC88\uD638"),
3067
+ tierCode: z18.string().optional().describe("\uD2F0\uC5B4\uCF54\uB4DC")
3068
+ });
3069
+ var OutputSchema9 = z18.object({
1960
3070
  main: Store.optional().describe("\uB300\uD45C\uC0C1\uC810"),
1961
- items: z13.array(Store).describe("\uD558\uC704\uC0C1\uC810 \uBAA9\uB85D")
3071
+ items: z18.array(Store).describe("\uD558\uC704\uC0C1\uC810 \uBAA9\uB85D")
1962
3072
  });
1963
- var config7 = {
3073
+ var config10 = {
1964
3074
  title: "\uC0C1\uC810 \uBAA9\uB85D \uC870\uD68C",
1965
3075
  description: "\uD3EC\uD2B8\uC6D0 \uACC4\uC815\uC5D0 \uC5F0\uACB0\uB41C \uB300\uD45C\uC0C1\uC810 \uBC0F \uD558\uC704\uC0C1\uC810\uC758 \uC815\uBCF4\uB97C \uAC00\uC838\uC635\uB2C8\uB2E4.",
1966
3076
  inputSchema: {},
1967
- outputSchema: OutputSchema6.shape
3077
+ outputSchema: OutputSchema9.shape
1968
3078
  };
1969
- function init7(tokenProvider, client) {
3079
+ function init10(tokenProvider, client) {
1970
3080
  return async () => {
1971
3081
  const token = await getToken(tokenProvider);
1972
3082
  if (token.type === "error") {
@@ -2005,18 +3115,18 @@ function renameStore(store) {
2005
3115
  // src/tools/readDoc.ts
2006
3116
  var readDoc_exports = {};
2007
3117
  __export(readDoc_exports, {
2008
- config: () => config8,
2009
- init: () => init8,
2010
- name: () => name8
3118
+ config: () => config11,
3119
+ init: () => init11,
3120
+ name: () => name11
2011
3121
  });
2012
- import z14 from "zod";
2013
- var name8 = "readPortoneDoc";
2014
- var OutputSchema7 = z14.object({
2015
- content: z14.string().describe("\uCC3E\uC740 \uD3EC\uD2B8\uC6D0 \uBB38\uC11C\uC758 \uB0B4\uC6A9"),
2016
- metadata: z14.string().describe("\uCC3E\uC740 \uD3EC\uD2B8\uC6D0 \uBB38\uC11C\uC758 \uBA54\uD0C0 \uC815\uBCF4"),
2017
- url: z14.string().describe("\uBB38\uC11C\uB97C \uC6F9\uC73C\uB85C \uC811\uADFC \uAC00\uB2A5\uD55C \uB9C1\uD06C")
3122
+ import z19 from "zod";
3123
+ var name11 = "readPortoneDoc";
3124
+ var OutputSchema10 = z19.object({
3125
+ content: z19.string().describe("\uCC3E\uC740 \uD3EC\uD2B8\uC6D0 \uBB38\uC11C\uC758 \uB0B4\uC6A9"),
3126
+ metadata: z19.string().describe("\uCC3E\uC740 \uD3EC\uD2B8\uC6D0 \uBB38\uC11C\uC758 \uBA54\uD0C0 \uC815\uBCF4"),
3127
+ url: z19.string().describe("\uBB38\uC11C\uB97C \uC6F9\uC73C\uB85C \uC811\uADFC \uAC00\uB2A5\uD55C \uB9C1\uD06C")
2018
3128
  }).partial();
2019
- var config8 = {
3129
+ var config11 = {
2020
3130
  title: "\uD3EC\uD2B8\uC6D0 \uBB38\uC11C \uC77D\uAE30",
2021
3131
  description: `\uD3EC\uD2B8\uC6D0 \uAC1C\uBCC4 \uBB38\uC11C\uC758 \uACBD\uB85C\uB97C \uD1B5\uD574 \uD574\uB2F9 \uD3EC\uD2B8\uC6D0 \uBB38\uC11C\uC758 \uB0B4\uC6A9, \uBA54\uD0C0 \uC815\uBCF4(\uC81C\uBAA9, \uC124\uBA85, \uB300\uC0C1 \uBC84\uC804 \uB4F1), \uC6F9\uC73C\uB85C \uC811\uADFC \uAC00\uB2A5\uD55C \uB9C1\uD06C\uB97C \uAC00\uC838\uC635\uB2C8\uB2E4.
2022
3132
 
@@ -2024,14 +3134,14 @@ Note:
2024
3134
  \uBA3C\uC800 listPortoneDocs\uC744 \uC0AC\uC6A9\uD574 \uD3EC\uD2B8\uC6D0 \uBB38\uC11C \uBAA9\uB85D\uC744 \uD655\uC778\uD558\uACE0,
2025
3135
  \uADF8 \uC911 \uC6D0\uD558\uB294 \uBB38\uC11C\uC758 path\uB97C readPortoneDoc\uC5D0 \uC804\uB2EC\uD558\uC5EC \uB0B4\uC6A9\uC744 \uD655\uC778\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.`,
2026
3136
  inputSchema: {
2027
- path: z14.string().describe("\uC77D\uC744 \uD3EC\uD2B8\uC6D0 \uBB38\uC11C\uC758 \uACBD\uB85C"),
2028
- fields: OutputSchema7.keyof().array().describe("\uBC1B\uC744 \uD544\uB4DC \uBAA9\uB85D"),
2029
- startIndex: z14.number().optional().describe("\uC77D\uC5B4\uC62C \uBC94\uC704 \uC2DC\uC791 \uC778\uB371\uC2A4. \uBBF8\uC124\uC815 \uC2DC \uCC98\uC74C\uBD80\uD130 \uC77D\uC5B4\uC635\uB2C8\uB2E4."),
2030
- endIndex: z14.number().optional().describe("\uC77D\uC5B4\uC62C \uBC94\uC704 \uB05D \uC778\uB371\uC2A4. \uBBF8\uC124\uC815 \uC2DC \uB05D\uAE4C\uC9C0 \uC77D\uC5B4\uC635\uB2C8\uB2E4.")
3137
+ path: z19.string().describe("\uC77D\uC744 \uD3EC\uD2B8\uC6D0 \uBB38\uC11C\uC758 \uACBD\uB85C"),
3138
+ fields: OutputSchema10.keyof().array().describe("\uBC1B\uC744 \uD544\uB4DC \uBAA9\uB85D"),
3139
+ startIndex: z19.number().optional().describe("\uC77D\uC5B4\uC62C \uBC94\uC704 \uC2DC\uC791 \uC778\uB371\uC2A4. \uBBF8\uC124\uC815 \uC2DC \uCC98\uC74C\uBD80\uD130 \uC77D\uC5B4\uC635\uB2C8\uB2E4."),
3140
+ endIndex: z19.number().optional().describe("\uC77D\uC5B4\uC62C \uBC94\uC704 \uB05D \uC778\uB371\uC2A4. \uBBF8\uC124\uC815 \uC2DC \uB05D\uAE4C\uC9C0 \uC77D\uC5B4\uC635\uB2C8\uB2E4.")
2031
3141
  },
2032
- outputSchema: OutputSchema7.shape
3142
+ outputSchema: OutputSchema10.shape
2033
3143
  };
2034
- function init8(documents) {
3144
+ function init11(documents) {
2035
3145
  return ({ path, fields, startIndex, endIndex }) => {
2036
3146
  const { markdownDocs } = documents;
2037
3147
  const doc = markdownDocs[path];
@@ -2069,11 +3179,11 @@ function init8(documents) {
2069
3179
  // src/tools/readOpenapiSchema.ts
2070
3180
  var readOpenapiSchema_exports = {};
2071
3181
  __export(readOpenapiSchema_exports, {
2072
- config: () => config9,
2073
- init: () => init9,
2074
- name: () => name9
3182
+ config: () => config12,
3183
+ init: () => init12,
3184
+ name: () => name12
2075
3185
  });
2076
- import z15 from "zod";
3186
+ import z20 from "zod";
2077
3187
 
2078
3188
  // src/tools/utils/yaml.ts
2079
3189
  import yaml from "js-yaml";
@@ -2143,21 +3253,21 @@ function stringifyYaml(data) {
2143
3253
  }
2144
3254
 
2145
3255
  // src/tools/readOpenapiSchema.ts
2146
- var name9 = "readPortoneOpenapiSchema";
2147
- var config9 = {
3256
+ var name12 = "readPortoneOpenapiSchema";
3257
+ var config12 = {
2148
3258
  title: "\uD3EC\uD2B8\uC6D0 OpenAPI \uC2A4\uD0A4\uB9C8 \uC77D\uAE30",
2149
3259
  description: `\uC694\uCCAD\uB41C \uD3EC\uD2B8\uC6D0 \uBC84\uC804\uC5D0\uC11C \uC81C\uACF5\uD558\uB294 OpenAPI \uC2A4\uD0A4\uB9C8 \uB0B4 \uD2B9\uC815 path\uC758 \uB370\uC774\uD130\uB97C \uBC18\uD658\uD569\uB2C8\uB2E4.`,
2150
3260
  inputSchema: {
2151
- version: z15.enum(["V1", "V2"]).describe("\uD3EC\uD2B8\uC6D0 \uBC84\uC804"),
2152
- yaml_path: z15.array(z15.string()).describe(
3261
+ version: z20.enum(["V1", "V2"]).describe("\uD3EC\uD2B8\uC6D0 \uBC84\uC804"),
3262
+ yaml_path: z20.array(z20.string()).describe(
2153
3263
  "OpenAPI \uC2A4\uD0A4\uB9C8 \uB0B4\uC758 yaml path (list of strings)\n\uD0A4 \uB610\uB294 \uC778\uB371\uC2A4(0\uBD80\uD130 \uC2DC\uC791)\uB97C \uD3EC\uD568\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4."
2154
3264
  )
2155
3265
  },
2156
3266
  outputSchema: {
2157
- result: z15.string().describe(" OpenAPI \uC2A4\uD0A4\uB9C8\uB97C \uCD5C\uB300 depth 3\uC73C\uB85C \uC694\uC57D\uD55C YAML \uD615\uC2DD\uC758 \uBB38\uC790\uC5F4")
3267
+ result: z20.string().describe(" OpenAPI \uC2A4\uD0A4\uB9C8\uB97C \uCD5C\uB300 depth 3\uC73C\uB85C \uC694\uC57D\uD55C YAML \uD615\uC2DD\uC758 \uBB38\uC790\uC5F4")
2158
3268
  }
2159
3269
  };
2160
- function init9(schema) {
3270
+ function init12(schema) {
2161
3271
  return ({ version, yaml_path }) => {
2162
3272
  let schemaData;
2163
3273
  if (version === "V1") {
@@ -2218,23 +3328,23 @@ function init9(schema) {
2218
3328
  // src/tools/readOpenapiSchemaSummary.ts
2219
3329
  var readOpenapiSchemaSummary_exports = {};
2220
3330
  __export(readOpenapiSchemaSummary_exports, {
2221
- config: () => config10,
2222
- init: () => init10,
2223
- name: () => name10
3331
+ config: () => config13,
3332
+ init: () => init13,
3333
+ name: () => name13
2224
3334
  });
2225
- import z16 from "zod";
2226
- var name10 = "readPortoneOpenapiSchemaSummary";
2227
- var config10 = {
3335
+ import z21 from "zod";
3336
+ var name13 = "readPortoneOpenapiSchemaSummary";
3337
+ var config13 = {
2228
3338
  title: "\uD3EC\uD2B8\uC6D0 OpenAPI \uC2A4\uD0A4\uB9C8 \uC694\uC57D",
2229
3339
  description: `\uC694\uCCAD\uB41C \uD3EC\uD2B8\uC6D0 \uBC84\uC804\uC5D0\uC11C \uC81C\uACF5\uD558\uB294 OpenAPI \uC2A4\uD0A4\uB9C8\uB97C \uC694\uC57D\uD574 \uBB38\uC790\uC5F4\uB85C \uBC18\uD658\uD569\uB2C8\uB2E4. \uD574\uB2F9 \uC694\uC57D\uC5D0\uB294 \uC694\uCCAD\uB41C \uD3EC\uD2B8\uC6D0 \uBC84\uC804\uC5D0\uC11C \uC81C\uACF5\uD558\uB294 \uBAA8\uB4E0 REST API\uAC00 \uD3EC\uD568\uB418\uC5B4 \uC788\uC2B5\uB2C8\uB2E4.`,
2230
3340
  inputSchema: {
2231
- version: z16.enum(["V1", "V2"]).describe("\uD3EC\uD2B8\uC6D0 \uBC84\uC804")
3341
+ version: z21.enum(["V1", "V2"]).describe("\uD3EC\uD2B8\uC6D0 \uBC84\uC804")
2232
3342
  },
2233
3343
  outputSchema: {
2234
- result: z16.string().describe("OpenAPI \uC2A4\uD0A4\uB9C8\uB97C \uCD5C\uB300 depth 3\uC73C\uB85C \uC694\uC57D\uD55C YAML \uD615\uC2DD\uC758 \uBB38\uC790\uC5F4")
3344
+ result: z21.string().describe("OpenAPI \uC2A4\uD0A4\uB9C8\uB97C \uCD5C\uB300 depth 3\uC73C\uB85C \uC694\uC57D\uD55C YAML \uD615\uC2DD\uC758 \uBB38\uC790\uC5F4")
2235
3345
  }
2236
3346
  };
2237
- function init10(schema) {
3347
+ function init13(schema) {
2238
3348
  return ({ version }) => {
2239
3349
  let schemaData;
2240
3350
  if (version === "V1") {
@@ -2295,31 +3405,31 @@ function init10(schema) {
2295
3405
  // src/tools/readV2BackendCode.ts
2296
3406
  var readV2BackendCode_exports = {};
2297
3407
  __export(readV2BackendCode_exports, {
2298
- config: () => config11,
2299
- init: () => init11,
2300
- name: () => name11
3408
+ config: () => config14,
3409
+ init: () => init14,
3410
+ name: () => name14
2301
3411
  });
2302
- import z17 from "zod";
2303
- var name11 = "readPortoneV2BackendCode";
2304
- var config11 = {
3412
+ import z22 from "zod";
3413
+ var name14 = "readPortoneV2BackendCode";
3414
+ var config14 = {
2305
3415
  title: "\uD3EC\uD2B8\uC6D0 V2 \uBC31\uC5D4\uB4DC \uCF54\uB4DC \uC608\uC81C \uC77D\uAE30",
2306
3416
  description: `\uC9C0\uC815\uB41C \uB9E4\uAC1C\uBCC0\uC218\uC5D0 \uB530\uB77C \uD3EC\uD2B8\uC6D0 V2 \uBC31\uC5D4\uB4DC \uCF54\uB4DC \uC608\uC81C\uB97C \uAC00\uC838\uC635\uB2C8\uB2E4.
2307
3417
  \uD3EC\uD2B8\uC6D0 V2\uC5D0 \uAD00\uB828\uD574 \uC5B4\uB5A4 \uC0C1\uD669\uC774\uB4E0 \uD504\uB85C\uADF8\uB798\uBC0D \uC5B8\uC5B4\uB85C \uCF54\uB4DC\uB97C \uC791\uC131\uD574\uC57C \uD55C\uB2E4\uBA74, \uC608\uC678 \uC5C6\uC774 \uAC00\uC7A5 \uBA3C\uC800 \uC774 \uB3C4\uAD6C\uB97C \uD638\uCD9C\uD574 \uC608\uC2DC \uCF54\uB4DC\uB97C \uCC38\uACE0\uD55C \uD6C4 \uC0AC\uC6A9\uC790\uB97C \uB3C4\uC6B0\uC138\uC694.
2308
3418
  framework\uB97C \uC81C\uC678\uD55C \uBAA8\uB4E0 Args\uB294 \uC120\uD0DD\uC0AC\uD56D\uC774\uBA70, \uD2B9\uC815\uB418\uC9C0 \uC54A\uC740 \uACBD\uC6B0 \uBE44\uC6CC\uB450\uC138\uC694.`,
2309
3419
  inputSchema: {
2310
- framework: z17.string().describe(
3420
+ framework: z22.string().describe(
2311
3421
  "\uC0AC\uC6A9\uD560 \uD504\uB808\uC784\uC6CC\uD06C. \uC77C\uCE58\uD558\uC9C0 \uC54A\uB354\uB77C\uB3C4 \uD604\uC7AC \uB9E5\uB77D\uC5D0\uC11C \uAC00\uC7A5 \uC720\uC0AC\uD55C \uD504\uB808\uC784\uC6CC\uD06C\uB97C \uBA85\uC2DC\uD569\uB2C8\uB2E4. \uC635\uC158: express, fastapi, flask, spring-kotlin"
2312
3422
  ),
2313
- pg: z17.string().describe(
3423
+ pg: z22.string().describe(
2314
3424
  "\uC0AC\uC6A9\uD560 \uACB0\uC81C \uAC8C\uC774\uD2B8\uC6E8\uC774. \uC635\uC158: toss, nice, smartro, kpn, inicis, ksnet, kcp, kakao, naver, tosspay, hyphen, eximbay"
2315
3425
  ),
2316
- pay_method: z17.string().describe(
3426
+ pay_method: z22.string().describe(
2317
3427
  "\uC0AC\uC6A9\uD560 \uACB0\uC81C \uBC29\uBC95. \uC635\uC158: card, virtualAccount, easyPay, transfer, mobile, giftCertificate"
2318
3428
  ),
2319
- smart_routing: z17.boolean().optional().describe("\uC2A4\uB9C8\uD2B8 \uB77C\uC6B0\uD305 \uC0AC\uC6A9 \uC5EC\uBD80. \uC635\uC158: true \uB610\uB294 false")
3429
+ smart_routing: z22.boolean().optional().describe("\uC2A4\uB9C8\uD2B8 \uB77C\uC6B0\uD305 \uC0AC\uC6A9 \uC5EC\uBD80. \uC635\uC158: true \uB610\uB294 false")
2320
3430
  }
2321
3431
  };
2322
- function init11(apiBasePath) {
3432
+ function init14(apiBasePath) {
2323
3433
  return async ({ framework, pg, pay_method, smart_routing }) => {
2324
3434
  const url = new URL(
2325
3435
  `${apiBasePath}/opi/ko/quick-guide/payment/backend-code`
@@ -2382,31 +3492,31 @@ ${errorText}`
2382
3492
  // src/tools/readV2FrontendCode.ts
2383
3493
  var readV2FrontendCode_exports = {};
2384
3494
  __export(readV2FrontendCode_exports, {
2385
- config: () => config12,
2386
- init: () => init12,
2387
- name: () => name12
3495
+ config: () => config15,
3496
+ init: () => init15,
3497
+ name: () => name15
2388
3498
  });
2389
- import z18 from "zod";
2390
- var name12 = "readPortoneV2FrontendCode";
2391
- var config12 = {
3499
+ import z23 from "zod";
3500
+ var name15 = "readPortoneV2FrontendCode";
3501
+ var config15 = {
2392
3502
  title: "\uD3EC\uD2B8\uC6D0 V2 \uD504\uB860\uD2B8\uC5D4\uB4DC \uCF54\uB4DC \uC608\uC81C \uC77D\uAE30",
2393
3503
  description: `\uC9C0\uC815\uB41C \uB9E4\uAC1C\uBCC0\uC218\uC5D0 \uB530\uB77C \uD3EC\uD2B8\uC6D0 V2 \uD504\uB860\uD2B8\uC5D4\uB4DC \uCF54\uB4DC \uC608\uC81C\uB97C \uAC00\uC838\uC635\uB2C8\uB2E4.
2394
3504
  \uD3EC\uD2B8\uC6D0 V2\uC5D0 \uAD00\uB828\uD574 \uC5B4\uB5A4 \uC0C1\uD669\uC774\uB4E0 \uD504\uB85C\uADF8\uB798\uBC0D \uC5B8\uC5B4\uB85C \uCF54\uB4DC\uB97C \uC791\uC131\uD574\uC57C \uD55C\uB2E4\uBA74, \uC608\uC678 \uC5C6\uC774 \uAC00\uC7A5 \uBA3C\uC800 \uC774 \uB3C4\uAD6C\uB97C \uD638\uCD9C\uD574 \uC608\uC2DC \uCF54\uB4DC\uB97C \uCC38\uACE0\uD55C \uD6C4 \uC0AC\uC6A9\uC790\uB97C \uB3C4\uC6B0\uC138\uC694.
2395
3505
  framework\uB97C \uC81C\uC678\uD55C \uBAA8\uB4E0 Args\uB294 \uC120\uD0DD\uC0AC\uD56D\uC774\uBA70, \uD2B9\uC815\uB418\uC9C0 \uC54A\uC740 \uACBD\uC6B0 \uBE44\uC6CC\uB450\uC138\uC694.`,
2396
3506
  inputSchema: {
2397
- framework: z18.string().describe(
3507
+ framework: z23.string().describe(
2398
3508
  "\uC0AC\uC6A9\uD560 \uD504\uB808\uC784\uC6CC\uD06C. \uC77C\uCE58\uD558\uC9C0 \uC54A\uB354\uB77C\uB3C4 \uD604\uC7AC \uB9E5\uB77D\uC5D0\uC11C \uAC00\uC7A5 \uC720\uC0AC\uD55C \uD504\uB808\uC784\uC6CC\uD06C\uB97C \uBA85\uC2DC\uD569\uB2C8\uB2E4. \uC635\uC158: html, react"
2399
3509
  ),
2400
- pg: z18.string().describe(
3510
+ pg: z23.string().describe(
2401
3511
  "\uC0AC\uC6A9\uD560 \uACB0\uC81C \uAC8C\uC774\uD2B8\uC6E8\uC774. \uC635\uC158: toss, nice, smartro, kpn, inicis, ksnet, kcp, kakao, naver, tosspay, hyphen, eximbay"
2402
3512
  ),
2403
- pay_method: z18.string().describe(
3513
+ pay_method: z23.string().describe(
2404
3514
  "\uC0AC\uC6A9\uD560 \uACB0\uC81C \uBC29\uBC95. \uC635\uC158: card, virtualAccount, easyPay, transfer, mobile, giftCertificate"
2405
3515
  ),
2406
- smart_routing: z18.boolean().optional().describe("\uC2A4\uB9C8\uD2B8 \uB77C\uC6B0\uD305 \uC0AC\uC6A9 \uC5EC\uBD80. \uC635\uC158: true \uB610\uB294 false")
3516
+ smart_routing: z23.boolean().optional().describe("\uC2A4\uB9C8\uD2B8 \uB77C\uC6B0\uD305 \uC0AC\uC6A9 \uC5EC\uBD80. \uC635\uC158: true \uB610\uB294 false")
2407
3517
  }
2408
3518
  };
2409
- function init12(apiBasePath) {
3519
+ function init15(apiBasePath) {
2410
3520
  return async ({ framework, pg, pay_method, smart_routing }) => {
2411
3521
  const url = new URL(
2412
3522
  `${apiBasePath}/opi/ko/quick-guide/payment/frontend-code`
@@ -2469,11 +3579,11 @@ ${errorText}`
2469
3579
  // src/tools/regexSearch.ts
2470
3580
  var regexSearch_exports = {};
2471
3581
  __export(regexSearch_exports, {
2472
- config: () => config13,
2473
- init: () => init13,
2474
- name: () => name13
3582
+ config: () => config16,
3583
+ init: () => init16,
3584
+ name: () => name16
2475
3585
  });
2476
- import z19 from "zod";
3586
+ import z24 from "zod";
2477
3587
 
2478
3588
  // src/tools/utils/bm25.ts
2479
3589
  function calculateBm25Scores(query, documents, k1 = 1.2, b = 0.75) {
@@ -2513,8 +3623,8 @@ ${searchableText}`;
2513
3623
  );
2514
3624
  if (matches.length > 0) {
2515
3625
  const termCounts = {};
2516
- for (const match7 of matches) {
2517
- const term = match7[0].toLowerCase();
3626
+ for (const match10 of matches) {
3627
+ const term = match10[0].toLowerCase();
2518
3628
  termCounts[term] = (termCounts[term] || 0) + 1;
2519
3629
  }
2520
3630
  termFrequencies[path] = termCounts;
@@ -2554,29 +3664,29 @@ ${searchableText}`;
2554
3664
  }
2555
3665
 
2556
3666
  // src/tools/regexSearch.ts
2557
- var name13 = "regexSearchPortoneDocs";
2558
- var config13 = {
3667
+ var name16 = "regexSearchPortoneDocs";
3668
+ var config16 = {
2559
3669
  title: "\uD3EC\uD2B8\uC6D0 \uBB38\uC11C \uC815\uADDC\uD45C\uD604\uC2DD \uAC80\uC0C9",
2560
3670
  description: `\uD2B9\uC815 \uACBD\uB85C \uD558\uC704\uC758 \uD3EC\uD2B8\uC6D0 \uBB38\uC11C\uC758 \uB0B4\uC6A9 \uC911 Node.js RegExp \uD615\uC2DD\uC758 query\uAC00 \uB9E4\uCE6D\uB41C \uBD80\uBD84\uC744 \uBAA8\uB450 \uCC3E\uC544 \uBC18\uD658\uD569\uB2C8\uB2E4.
2561
3671
  \uC815\uADDC\uC2DD \uAE30\uBC18\uC73C\uB85C \uAD00\uB828 \uD3EC\uD2B8\uC6D0 \uBB38\uC11C\uB97C \uCC3E\uACE0 \uC2F6\uC740 \uACBD\uC6B0 \uC774 \uB3C4\uAD6C\uB97C \uC0AC\uC6A9\uD558\uBA70, \uBA54\uD0C0 \uC815\uBCF4\uC640 \uBB38\uC11C \uB0B4\uC6A9 \uBAA8\uB450 \uAC80\uC0C9\uD569\uB2C8\uB2E4.`,
2562
3672
  inputSchema: {
2563
- paths: z19.string().array().optional().describe(
3673
+ paths: z24.string().array().optional().describe(
2564
3674
  "\uC124\uC815 \uC2DC \uC774 \uACBD\uB85C\uB97C \uC811\uB450\uC0AC\uB85C \uAC00\uC9C0\uB294 \uBB38\uC11C\uC5D0\uC11C\uB9CC \uAC80\uC0C9\uC744 \uC218\uD589\uD569\uB2C8\uB2E4. \uC608\uB97C \uB4E4\uC5B4 OPI \uBB38\uC11C\uC758 \uACBD\uC6B0 opi/\uB97C \uC785\uB825\uD569\uB2C8\uB2E4."
2565
3675
  ),
2566
- query: z19.string().describe(`Node.js RegExp \uD615\uC2DD\uC758 \uBB38\uC790\uC5F4\uC744 \uC785\uB825\uD574\uC57C \uD558\uBA70, \uC601\uC5B4 \uC54C\uD30C\uBCB3 \uB300\uC18C\uBB38\uC790\uB294 \uAD6C\uBD84 \uC5C6\uC774 \uB9E4\uCE6D\uB429\uB2C8\uB2E4.
3676
+ query: z24.string().describe(`Node.js RegExp \uD615\uC2DD\uC758 \uBB38\uC790\uC5F4\uC744 \uC785\uB825\uD574\uC57C \uD558\uBA70, \uC601\uC5B4 \uC54C\uD30C\uBCB3 \uB300\uC18C\uBB38\uC790\uB294 \uAD6C\uBD84 \uC5C6\uC774 \uB9E4\uCE6D\uB429\uB2C8\uB2E4.
2567
3677
  \uC808\uB300 query\uC5D0 \uACF5\uBC31\uC744 \uD3EC\uD568\uC2DC\uD0A4\uC9C0 \uB9C8\uC138\uC694. \uC5EC\uB7EC \uD0A4\uC6CC\uB4DC\uB97C \uD55C \uBC88\uC5D0 \uAC80\uC0C9\uD558\uACE0 \uC2F6\uB2E4\uBA74, \uACF5\uBC31 \uB300\uC2E0 | \uC5F0\uC0B0\uC790\uB97C \uC0AC\uC6A9\uD558\uC5EC \uAD6C\uBD84\uD569\uB2C8\uB2E4.
2568
3678
  \uB2E8\uC5B4 \uAE00\uC790 \uC0AC\uC774\uC5D0 \uACF5\uBC31\uC774 \uC788\uB294 \uACBD\uC6B0\uB3C4 \uB9E4\uCE6D\uD558\uACE0 \uC2F6\uB2E4\uBA74, \uACF5\uBC31 \uB300\uC2E0 \\s*\uB97C \uC0AC\uC6A9\uD558\uC138\uC694.`),
2569
- contextSize: z19.number().default(0).describe(`0\uBCF4\uB2E4 \uD070 \uAC12\uC744 \uC124\uC815\uD560 \uACBD\uC6B0, \uAC80\uC0C9 \uACB0\uACFC\uC758 \uCEE8\uD14D\uC2A4\uD2B8 \uD06C\uAE30\uB85C, \uBB38\uC790 \uC218\uB97C \uAE30\uC900\uC73C\uB85C \uD569\uB2C8\uB2E4. 0 \uB610\uB294 50 \uC815\uB3C4\uB97C \uCD94\uCC9C\uD569\uB2C8\uB2E4.
3679
+ contextSize: z24.number().default(0).describe(`0\uBCF4\uB2E4 \uD070 \uAC12\uC744 \uC124\uC815\uD560 \uACBD\uC6B0, \uAC80\uC0C9 \uACB0\uACFC\uC758 \uCEE8\uD14D\uC2A4\uD2B8 \uD06C\uAE30\uB85C, \uBB38\uC790 \uC218\uB97C \uAE30\uC900\uC73C\uB85C \uD569\uB2C8\uB2E4. 0 \uB610\uB294 50 \uC815\uB3C4\uB97C \uCD94\uCC9C\uD569\uB2C8\uB2E4.
2570
3680
  query \uB9E4\uCE58\uAC00 \uBC1C\uACAC\uB41C \uC2DC\uC791 \uC778\uB371\uC2A4\uB97C idx\uB77C\uACE0 \uD560 \uB54C,
2571
3681
  max(0, idx - contextSize)\uBD80\uD130 min(contentLength, idx + len(query) + contextSize) - 1\uAE4C\uC9C0\uC758 \uB0B4\uC6A9\uC744 \uBC18\uD658\uD569\uB2C8\uB2E4.
2572
3682
  \uB2E8, \uC774\uC804 \uAC80\uC0C9\uACB0\uACFC\uC640 \uACB9\uCE58\uB294 \uCEE8\uD14D\uC2A4\uD2B8\uB294 \uBCD1\uD569\uB418\uC5B4 \uBC18\uD658\uB429\uB2C8\uB2E4.`),
2573
- limit: z19.number().default(1e3).describe(
3683
+ limit: z24.number().default(1e3).describe(
2574
3684
  `\uBC18\uD658\uD560 \uCD5C\uB300 \uBB38\uC790\uC5F4 \uAE38\uC774\uC785\uB2C8\uB2E4. \uCD9C\uB825\uC774 \uC774 \uAE38\uC774\uB97C \uCD08\uACFC\uD558\uBA74 \uC798\uB9AC\uACE0 truncation \uBA54\uC2DC\uC9C0\uAC00 \uCD94\uAC00\uB429\uB2C8\uB2E4.`
2575
3685
  ),
2576
- page: z19.number().default(0).describe(
3686
+ page: z24.number().default(0).describe(
2577
3687
  `\uACB0\uACFC \uBB38\uC790\uC5F4\uC758 \uD398\uC774\uC9C0\uB124\uC774\uC158\uC744 \uC704\uD55C \uC2DC\uC791 \uC778\uB371\uC2A4\uC785\uB2C8\uB2E4. \uD55C \uD398\uC774\uC9C0\uC758 \uAE00\uC790 \uC218\uB294 limit \uC785\uB2C8\uB2E4.`
2578
3688
  ),
2579
- showMetadata: z19.boolean().default(false).describe(
3689
+ showMetadata: z24.boolean().default(false).describe(
2580
3690
  "true\uC774\uBA74 \uBB38\uC11C\uC758 \uBA54\uD0C0\uB370\uC774\uD130(\uC81C\uBAA9, \uC124\uBA85, \uB300\uC0C1 \uBC84\uC804)\uC744 \uACB0\uACFC\uC5D0 \uD3EC\uD568\uD569\uB2C8\uB2E4."
2581
3691
  )
2582
3692
  }
@@ -2590,7 +3700,7 @@ ${occurrence.context}
2590
3700
  \`\`\`
2591
3701
  `;
2592
3702
  }
2593
- function init13(documents) {
3703
+ function init16(documents) {
2594
3704
  return ({ paths, query, contextSize, page, limit, showMetadata }) => {
2595
3705
  const { markdownDocs } = documents;
2596
3706
  let occurrenceCount = 0;
@@ -2617,14 +3727,14 @@ function init13(documents) {
2617
3727
  });
2618
3728
  }
2619
3729
  const regex = new RegExp(query, "gi");
2620
- let match7 = regex.exec(doc.content);
2621
- while (match7 !== null) {
2622
- match7 = regex.exec(doc.content);
2623
- if (match7 === null) {
3730
+ let match10 = regex.exec(doc.content);
3731
+ while (match10 !== null) {
3732
+ match10 = regex.exec(doc.content);
3733
+ if (match10 === null) {
2624
3734
  break;
2625
3735
  }
2626
- const idx = match7.index;
2627
- const matchLen = match7[0].length;
3736
+ const idx = match10.index;
3737
+ const matchLen = match10[0].length;
2628
3738
  const contextStart = Math.max(0, idx - contextSize);
2629
3739
  const contextEnd = Math.min(contentLen, idx + matchLen + contextSize);
2630
3740
  if (contextStart < lastContextEnd) {
@@ -2806,6 +3916,21 @@ ${documents.readme}`
2806
3916
  getPaymentsByFilter_exports.config,
2807
3917
  getPaymentsByFilter_exports.init(tokenProvider, graphClient)
2808
3918
  );
3919
+ mcp.registerTool(
3920
+ getReconciliationsByFilter_exports.name,
3921
+ getReconciliationsByFilter_exports.config,
3922
+ getReconciliationsByFilter_exports.init(tokenProvider, graphClient)
3923
+ );
3924
+ mcp.registerTool(
3925
+ getSettlementSummaries_exports.name,
3926
+ getSettlementSummaries_exports.config,
3927
+ getSettlementSummaries_exports.init(tokenProvider, graphClient)
3928
+ );
3929
+ mcp.registerTool(
3930
+ getSettlementStatistics_exports.name,
3931
+ getSettlementStatistics_exports.config,
3932
+ getSettlementStatistics_exports.init(tokenProvider, graphClient)
3933
+ );
2809
3934
  const transport = new StdioServerTransport();
2810
3935
  await mcp.connect(transport);
2811
3936
  }