@portone/mcp-server 0.16.0 → 0.17.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.
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.0",
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,14 +1748,1089 @@ 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";
1766
+ var ErrorResponse3 = z11.object({
1767
+ __typename: z11.string(),
1768
+ message: z11.string().nullable()
1769
+ });
1770
+ var ReconciliationStatus = z11.enum([
1771
+ "MATCHED",
1772
+ "NOT_MATCHED",
1773
+ "INCOMPARABLE",
1774
+ "NOT_COLLECTED"
1775
+ ]);
1776
+ var ReconciliationActionType = z11.enum([
1777
+ "APPROVAL",
1778
+ "FULL_CANCEL",
1779
+ "PARTIAL_CANCEL",
1780
+ "UNCLASSIFIED_CANCEL",
1781
+ "POST_CORRECTION"
1782
+ ]);
1783
+ var ReconciliationPaymentMethodType = z11.enum([
1784
+ "CARD",
1785
+ "CHARGE",
1786
+ "TRANSFER",
1787
+ "ARS",
1788
+ "GIFT_CERTIFICATE",
1789
+ "MOBILE",
1790
+ "VIRTUAL_ACCOUNT",
1791
+ "ETC",
1792
+ "EASY_PAY_ETC",
1793
+ "EASY_PAY_PAYCO",
1794
+ "EASY_PAY_SAMSUNGPAY",
1795
+ "EASY_PAY_SSGPAY",
1796
+ "EASY_PAY_KAKAOPAY",
1797
+ "EASY_PAY_NAVERPAY",
1798
+ "EASY_PAY_CHAI",
1799
+ "EASY_PAY_LPAY",
1800
+ "EASY_PAY_KPAY",
1801
+ "EASY_PAY_TOSSPAY",
1802
+ "EASY_PAY_LGPAY",
1803
+ "EASY_PAY_APPLEPAY",
1804
+ "EASY_PAY_PINPAY",
1805
+ "EASY_PAY_SKPAY",
1806
+ "EASY_PAY_WECHATPAY",
1807
+ "EASY_PAY_PAYPAL",
1808
+ "EASY_PAY_ALIPAY",
1809
+ "EASY_PAY_TOSS_BRANDPAY",
1810
+ "EASY_PAY_KB_APP",
1811
+ "EASY_PAY_TMONEYPAY",
1812
+ "EASY_PAY_HYPHEN",
1813
+ "EASY_PAY_OK_CASHBAG",
1814
+ "EASY_PAY_BENEPIA"
1815
+ ]);
1816
+ var ReconciliationNotMatchedReason = z11.enum([
1817
+ "PAYMENT_AMOUNT_NOT_MATCHED",
1818
+ "TAX_FREE_AMOUNT_NOT_MATCHED",
1819
+ "VAT_AMOUNT_NOT_MATCHED",
1820
+ "ESCROW_NOT_MATCHED",
1821
+ "INSTALLMENT_MONTH_NOT_MATCHED",
1822
+ "PAYMENT_DATE_NOT_MATCHED"
1823
+ ]);
1824
+ var ReconciliationIncomparableReason = z11.enum([
1825
+ "NO_MATCHING_PORTONE_TRANSACTION",
1826
+ "CHANNEL_MISMATCH",
1827
+ "RECONCILIATION_SKIPPED",
1828
+ "PG_COLLECTION_FAILED",
1829
+ "PG_DATA_MISSING",
1830
+ "UNKNOWN"
1831
+ ]);
1832
+ var ReconciliationPgProvider = z11.enum([
1833
+ "KAKAOPAY",
1834
+ "NICEPAY",
1835
+ "NAVERPAY",
1836
+ "UPLUS",
1837
+ "TOSSPAYMENTS",
1838
+ "TOSSPAY",
1839
+ "PAYCO",
1840
+ "KCP",
1841
+ "DANAL",
1842
+ "EXIMBAY",
1843
+ "INICIS",
1844
+ "HECTO",
1845
+ "KSNET",
1846
+ "KPN",
1847
+ "HYPHEN"
1848
+ ]);
1849
+ var SortOrder = z11.enum(["DESC", "ASC"]);
1850
+ var Settlement = z11.object(
1851
+ nullableObject({
1852
+ feeAmount: z11.number(),
1853
+ feeVatAmount: z11.number(),
1854
+ settlementAmount: z11.number(),
1855
+ settlementCurrency: z11.string(),
1856
+ settlementDate: z11.string()
1857
+ })
1858
+ );
1859
+ var PaymentMethod = z11.object({
1860
+ __typename: z11.string(),
1861
+ paymentMethodType: z11.string().nullable().optional(),
1862
+ installmentMonth: z11.number().nullable().optional(),
1863
+ name: z11.string().nullable().optional()
1864
+ }).partial();
1865
+ var PgSpecifier = z11.object(
1866
+ nullableObject({
1867
+ pgMerchantId: z11.string(),
1868
+ pgProvider: z11.string()
1869
+ })
1870
+ );
1871
+ var ReconciliationNode = z11.object({
1872
+ __typename: z11.string(),
1873
+ plainId: z11.string(),
1874
+ actionType: z11.string(),
1875
+ pgSpecifier: PgSpecifier.nullable(),
1876
+ merchantPlainId: z11.string(),
1877
+ paymentAmount: z11.number(),
1878
+ taxFreeAmount: z11.number(),
1879
+ vatAmount: z11.number(),
1880
+ supplyAmount: z11.number(),
1881
+ anomalyAmount: z11.number().nullable().optional(),
1882
+ paidAt: z11.string(),
1883
+ isEscrow: z11.boolean().nullable(),
1884
+ paymentCurrency: z11.string(),
1885
+ paymentMethod: PaymentMethod.nullable(),
1886
+ settlement: Settlement.nullable(),
1887
+ // 상태별 구체 필드 (필수형 / optional 형이 타입마다 다름)
1888
+ pgTxId: z11.string().nullable().optional(),
1889
+ pgTxIdOptional: z11.string().nullable().optional(),
1890
+ transactionPlainId: z11.string().nullable().optional(),
1891
+ transactionPlainIdOptional: z11.string().nullable().optional(),
1892
+ paymentPlainId: z11.string().nullable().optional(),
1893
+ paymentPlainIdOptional: z11.string().nullable().optional(),
1894
+ orderName: z11.string().nullable().optional(),
1895
+ orderNameOptional: z11.string().nullable().optional(),
1896
+ storePlainId: z11.string().nullable().optional(),
1897
+ storePlainIdOptional: z11.string().nullable().optional(),
1898
+ notMatchedReasons: z11.array(z11.string()).nullable().optional(),
1899
+ // INCOMPARABLE(대사 불가) 사유. 게이트웨이는 내부의 backward_incomparable
1900
+ // 상태/사유를 INCOMPARABLE + 이 단일 reason 으로 병합해 노출합니다.
1901
+ // enum 드리프트 방지를 위해 문자열로 수용합니다.
1902
+ reason: z11.string().nullable().optional()
1903
+ }).partial({
1904
+ pgSpecifier: true,
1905
+ isEscrow: true,
1906
+ paymentMethod: true,
1907
+ settlement: true
1908
+ });
1909
+ var CursorPageInfo = z11.object({
1910
+ startCursor: z11.string(),
1911
+ endCursor: z11.string(),
1912
+ hasPreviousPage: z11.boolean(),
1913
+ hasNextPage: z11.boolean()
1914
+ });
1915
+ var ReconciliationsPayload = z11.object({
1916
+ edges: z11.array(z11.object({ node: ReconciliationNode, cursor: z11.string() })),
1917
+ pageInfo: CursorPageInfo
1918
+ });
1919
+ var GetReconciliationsResponse = z11.object({
1920
+ merchant: z11.object({
1921
+ reconciliation: z11.object({
1922
+ paymentReconciliations: ReconciliationsPayload
1923
+ })
1924
+ }).or(ErrorResponse3)
1925
+ }).transform(({ merchant }) => {
1926
+ if ("__typename" in merchant) return merchant;
1927
+ return merchant.reconciliation.paymentReconciliations;
1928
+ });
1929
+ var getReconciliationsQuery = parse3(gql3`
1930
+ query GetReconciliations(
1931
+ $dateCondition: ReconciliationDateConditionInput!
1932
+ $searchCondition: PaymentReconciliationSearchConditionInput
1933
+ $filter: PaymentReconciliationFilterInput
1934
+ $order: PaymentReconciliationOrderInput
1935
+ $first: Int!
1936
+ $after: String
1937
+ ) {
1938
+ merchant {
1939
+ ...ErrorFragment
1940
+ ... on Merchant {
1941
+ reconciliation {
1942
+ paymentReconciliations(
1943
+ dateCondition: $dateCondition
1944
+ searchCondition: $searchCondition
1945
+ filter: $filter
1946
+ order: $order
1947
+ first: $first
1948
+ after: $after
1949
+ ) {
1950
+ edges {
1951
+ cursor
1952
+ node {
1953
+ __typename
1954
+ plainId
1955
+ actionType
1956
+ pgSpecifier {
1957
+ pgMerchantId
1958
+ pgProvider
1959
+ }
1960
+ merchantPlainId
1961
+ paymentAmount
1962
+ taxFreeAmount
1963
+ vatAmount
1964
+ supplyAmount
1965
+ paidAt
1966
+ isEscrow
1967
+ paymentCurrency
1968
+ paymentMethod {
1969
+ __typename
1970
+ ... on ReconciliationPaymentMethodCard {
1971
+ installmentMonth
1972
+ }
1973
+ ... on ReconciliationPaymentMethodEasyPay {
1974
+ paymentMethodType
1975
+ }
1976
+ ... on ReconciliationPaymentMethodEtc {
1977
+ name
1978
+ }
1979
+ }
1980
+ settlement {
1981
+ feeAmount
1982
+ feeVatAmount
1983
+ settlementAmount
1984
+ settlementCurrency
1985
+ settlementDate
1986
+ }
1987
+ ... on PaymentReconciliationMatched {
1988
+ pgTxId
1989
+ transactionPlainId
1990
+ paymentPlainId
1991
+ orderName
1992
+ storePlainId
1993
+ }
1994
+ ... on PaymentReconciliationNotMatched {
1995
+ pgTxId
1996
+ anomalyAmount
1997
+ transactionPlainId
1998
+ paymentPlainId
1999
+ orderName
2000
+ storePlainId
2001
+ notMatchedReasons
2002
+ }
2003
+ ... on PaymentReconciliationIncomparable {
2004
+ pgTxId
2005
+ anomalyAmount
2006
+ reason
2007
+ paymentPlainIdOptional
2008
+ orderNameOptional
2009
+ }
2010
+ ... on PaymentReconciliationNotCollected {
2011
+ pgTxIdOptional
2012
+ anomalyAmount
2013
+ transactionPlainIdOptional
2014
+ paymentPlainIdOptional
2015
+ orderNameOptional
2016
+ storePlainIdOptional
2017
+ }
2018
+ ... on PaymentReconciliationPostCorrection {
2019
+ pgTxIdOptional
2020
+ anomalyAmount
2021
+ transactionPlainIdOptional
2022
+ paymentPlainIdOptional
2023
+ orderNameOptional
2024
+ storePlainIdOptional
2025
+ }
2026
+ }
2027
+ }
2028
+ pageInfo {
2029
+ startCursor
2030
+ endCursor
2031
+ hasPreviousPage
2032
+ hasNextPage
2033
+ }
2034
+ }
2035
+ }
2036
+ }
2037
+ }
2038
+ }
2039
+
2040
+ fragment ErrorFragment on Error {
2041
+ __typename
2042
+ message
2043
+ }
2044
+ `);
2045
+ var ReconciliationFilter = z11.object({
2046
+ storeIds: z11.array(z11.string()),
2047
+ channelKeys: z11.array(z11.string()),
2048
+ pgSpecifiers: z11.array(
2049
+ z11.object({
2050
+ pgMerchantId: z11.string(),
2051
+ pgProvider: ReconciliationPgProvider
2052
+ })
2053
+ ),
2054
+ paymentMethodTypes: z11.array(ReconciliationPaymentMethodType),
2055
+ paymentReconciliationStatuses: z11.array(ReconciliationStatus),
2056
+ actionTypes: z11.array(ReconciliationActionType),
2057
+ transactionCurrencies: z11.array(z11.string()),
2058
+ settlementCurrencies: z11.array(z11.string())
2059
+ }).partial();
2060
+ var ReconciliationSearchCondition = z11.object({
2061
+ paymentPlainId: z11.string(),
2062
+ transactionPlainId: z11.string(),
2063
+ pgTxId: z11.string(),
2064
+ orderName: z11.string()
2065
+ }).partial();
2066
+ var ReconciliationOrder = z11.object({
2067
+ settlementDate: SortOrder,
2068
+ transactionDate: SortOrder,
2069
+ transactionAmount: SortOrder,
2070
+ anomalyAmount: SortOrder,
2071
+ settlementAmount: SortOrder
2072
+ }).partial();
2073
+ async function getReconciliations({
2074
+ client,
2075
+ authorization,
2076
+ dateType,
2077
+ from,
2078
+ until,
2079
+ filter,
2080
+ searchCondition,
2081
+ order,
2082
+ first,
2083
+ after
2084
+ }) {
2085
+ const dateRange = { from, until };
2086
+ const dateCondition = dateType === "SETTLEMENT" ? { settlementDateRange: dateRange } : { transactionDateRange: dateRange };
2087
+ try {
2088
+ const response = await client.request({
2089
+ document: getReconciliationsQuery,
2090
+ requestHeaders: {
2091
+ authorization
2092
+ },
2093
+ variables: {
2094
+ dateCondition,
2095
+ searchCondition,
2096
+ filter,
2097
+ order,
2098
+ first,
2099
+ after
2100
+ }
2101
+ });
2102
+ const parsed = await GetReconciliationsResponse.parseAsync(response);
2103
+ return match7(parsed).returnType().with({ __typename: P6.nonNullable }, ({ __typename, message }) => ({
2104
+ type: "error",
2105
+ data: {
2106
+ message,
2107
+ type: __typename
2108
+ }
2109
+ })).otherwise((data) => ({
2110
+ type: "success",
2111
+ data
2112
+ }));
2113
+ } catch (error) {
2114
+ if (error instanceof Error) {
2115
+ return {
2116
+ type: "error",
2117
+ data: error
2118
+ };
2119
+ } else {
2120
+ return {
2121
+ type: "error",
2122
+ data: {
2123
+ message: `\uC54C \uC218 \uC5C6\uB294 \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4.`,
2124
+ cause: error
2125
+ }
2126
+ };
2127
+ }
2128
+ }
2129
+ }
2130
+
2131
+ // src/tools/utils/dateRange.ts
2132
+ var LOOKBACK_MONTHS = 6;
2133
+ var MAX_RANGE_MONTHS = 3;
2134
+ function validateReconciliationDateRange(from, to) {
2135
+ const fromDate = /* @__PURE__ */ new Date(`${from}T00:00:00Z`);
2136
+ const toDate = /* @__PURE__ */ new Date(`${to}T00:00:00Z`);
2137
+ if (Number.isNaN(fromDate.getTime()) || Number.isNaN(toDate.getTime())) {
2138
+ return "\uB0A0\uC9DC \uD615\uC2DD\uC774 \uC62C\uBC14\uB974\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4 (YYYY-MM-DD).";
2139
+ }
2140
+ if (toDate < fromDate) {
2141
+ return "\uC870\uD68C \uC885\uB8CC\uC77C(to)\uC740 \uC2DC\uC791\uC77C(from)\uBCF4\uB2E4 \uBE60\uB97C \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.";
2142
+ }
2143
+ const now = /* @__PURE__ */ new Date();
2144
+ const earliest = new Date(
2145
+ Date.UTC(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate())
2146
+ );
2147
+ earliest.setUTCMonth(earliest.getUTCMonth() - LOOKBACK_MONTHS);
2148
+ if (fromDate < earliest) {
2149
+ 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.`;
2150
+ }
2151
+ const maxTo = new Date(fromDate);
2152
+ maxTo.setUTCMonth(maxTo.getUTCMonth() + MAX_RANGE_MONTHS);
2153
+ if (toDate > maxTo) {
2154
+ return `\uC870\uD68C \uAD6C\uAC04\uC740 \uCD5C\uB300 ${MAX_RANGE_MONTHS}\uAC1C\uC6D4\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.`;
2155
+ }
2156
+ return null;
2157
+ }
2158
+
2159
+ // src/tools/getReconciliationsByFilter.ts
2160
+ var name5 = "getReconciliationsByFilter";
2161
+ var DateString = z12.string().regex(/^\d{4}-\d{2}-\d{2}$/, "YYYY-MM-DD \uD615\uC2DD\uC758 \uB0A0\uC9DC\uC5EC\uC57C \uD569\uB2C8\uB2E4.");
2162
+ var Settlement2 = z12.object({
2163
+ feeAmount: z12.number().describe("PG \uC218\uC218\uB8CC"),
2164
+ feeVatAmount: z12.number().describe("PG \uC218\uC218\uB8CC \uBD80\uAC00\uC138"),
2165
+ settlementAmount: z12.number().describe("\uC815\uC0B0 \uAE08\uC561"),
2166
+ settlementCurrency: z12.string().describe("\uC815\uC0B0 \uD1B5\uD654"),
2167
+ settlementDate: z12.string().describe("\uC815\uC0B0\uC77C")
2168
+ }).partial();
2169
+ var Reconciliation = z12.object({
2170
+ id: z12.string().describe("\uAC70\uB798\uB300\uC0AC \uC544\uC774\uB514"),
2171
+ status: z12.string().describe(
2172
+ "\uB300\uC0AC \uC0C1\uD0DC (MATCHED/NOT_MATCHED/INCOMPARABLE/NOT_COLLECTED/POST_CORRECTION)"
2173
+ ),
2174
+ actionType: z12.string().describe("\uACB0\uC81C \uC0C1\uD0DC (\uC2B9\uC778/\uCDE8\uC18C/\uD6C4\uBCF4\uC815)"),
2175
+ pgProvider: z12.string().describe("\uB300\uC0AC\uC6A9 PG\uC0AC"),
2176
+ pgMerchantId: z12.string().describe("PG\uC0AC \uAC00\uB9F9\uC810 \uC2DD\uBCC4 \uC544\uC774\uB514"),
2177
+ pgTxId: z12.string().describe("PG\uC0AC \uAC70\uB798 \uC544\uC774\uB514"),
2178
+ paymentAmount: z12.number().describe("\uACB0\uC81C \uAE08\uC561"),
2179
+ supplyAmount: z12.number().describe("\uACF5\uAE09\uAC00\uC561"),
2180
+ vatAmount: z12.number().describe("\uBD80\uAC00\uC138"),
2181
+ taxFreeAmount: z12.number().describe("\uBA74\uC138\uAC00\uC561"),
2182
+ anomalyAmount: z12.number().describe("\uAC70\uB798\uC774\uC0C1 \uAE08\uC561"),
2183
+ paidAt: z12.string().describe("\uACB0\uC81C\uC77C"),
2184
+ paymentCurrency: z12.string().describe("\uACB0\uC81C \uD1B5\uD654"),
2185
+ isEscrow: z12.boolean().describe("\uC5D0\uC2A4\uD06C\uB85C \uC5EC\uBD80"),
2186
+ paymentMethodType: z12.string().describe("\uACB0\uC81C \uC218\uB2E8 \uC885\uB958(__typename \uAE30\uBC18)"),
2187
+ transactionId: z12.string().describe("\uD3EC\uD2B8\uC6D0 \uACB0\uC81C \uC544\uC774\uB514"),
2188
+ paymentId: z12.string().describe("\uACE0\uAC1D\uC0AC \uACB0\uC81C \uC544\uC774\uB514"),
2189
+ orderName: z12.string().describe("\uC8FC\uBB38\uBA85"),
2190
+ storeId: z12.string().describe("\uD558\uC704 \uC0C1\uC810 \uC544\uC774\uB514"),
2191
+ notMatchedReasons: z12.array(z12.string()).describe("\uB300\uC0AC \uBD88\uC77C\uCE58 \uC0AC\uC720 \uBAA9\uB85D (NOT_MATCHED \uC778 \uACBD\uC6B0)"),
2192
+ incomparableReason: z12.string().describe(
2193
+ "\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."
2194
+ ),
2195
+ settlement: Settlement2.describe("\uC815\uC0B0 \uC815\uBCF4")
2196
+ }).partial();
2197
+ var OutputSchema5 = z12.object({
2198
+ items: Reconciliation.array().describe("\uC870\uD68C\uB41C \uAC70\uB798\uB300\uC0AC \uBAA9\uB85D"),
2199
+ hasNextPage: z12.boolean().describe("\uB2E4\uC74C \uD398\uC774\uC9C0 \uC874\uC7AC \uC5EC\uBD80"),
2200
+ endCursor: z12.string().describe("\uB2E4\uC74C \uD398\uC774\uC9C0 \uC870\uD68C\uC5D0 \uC0AC\uC6A9\uD560 \uCEE4\uC11C (after \uB85C \uC804\uB2EC)")
2201
+ });
2202
+ var InputSchema4 = z12.object({
2203
+ store: z12.string().optional().describe(
2204
+ "\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."
2205
+ ),
2206
+ dateType: z12.enum(["SETTLEMENT", "TRANSACTION"]).default("TRANSACTION").describe("from/to \uB85C \uC81C\uC57D\uD560 \uAE30\uC900 (\uC815\uC0B0\uC77C / \uACB0\uC81C\uC77C)"),
2207
+ from: DateString.describe("\uC870\uD68C \uC2DC\uC791\uC77C (YYYY-MM-DD)"),
2208
+ to: DateString.describe("\uC870\uD68C \uC885\uB8CC\uC77C (YYYY-MM-DD)"),
2209
+ statuses: z12.array(ReconciliationStatus).optional().describe(
2210
+ "\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."
2211
+ ),
2212
+ actionTypes: z12.array(ReconciliationActionType).optional().describe("\uD3EC\uD568\uD560 \uACB0\uC81C \uC0C1\uD0DC \uBAA9\uB85D"),
2213
+ paymentMethodTypes: z12.array(ReconciliationPaymentMethodType).optional().describe("\uD3EC\uD568\uD560 \uACB0\uC81C \uC218\uB2E8 \uBAA9\uB85D"),
2214
+ 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)"),
2215
+ 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)"),
2216
+ paymentId: z12.string().optional().describe("\uACE0\uAC1D\uC0AC \uACB0\uC81C \uC544\uC774\uB514 \uAC80\uC0C9"),
2217
+ transactionId: z12.string().optional().describe("\uD3EC\uD2B8\uC6D0 \uACB0\uC81C \uC544\uC774\uB514 \uAC80\uC0C9"),
2218
+ pgTxId: z12.string().optional().describe("PG\uC0AC \uAC70\uB798 \uC544\uC774\uB514 \uAC80\uC0C9"),
2219
+ orderName: z12.string().optional().describe("\uC8FC\uBB38\uBA85 \uAC80\uC0C9"),
2220
+ first: z12.number().min(1).max(100).default(20).describe("\uC870\uD68C\uD560 \uAC74 \uC218 (\uCD5C\uB300 100)"),
2221
+ after: z12.string().optional().describe("\uC774\uC804 \uD398\uC774\uC9C0\uC758 \uB9C8\uC9C0\uB9C9 \uCEE4\uC11C (endCursor \uAC12)")
2222
+ });
2223
+ var config5 = {
2224
+ title: "\uAC70\uB798\uB300\uC0AC \uAC74\uBCC4 \uB0B4\uC5ED \uC870\uD68C",
2225
+ 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.
2226
+
2227
+ \uAC01 \uAC74\uC740 \uB2E4\uC74C \uC0C1\uD0DC \uC911 \uD558\uB098\uB97C \uAC00\uC9D1\uB2C8\uB2E4:
2228
+ 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)
2229
+ (\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.)
2230
+
2231
+ \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.
2232
+ \uB300\uC0AC \uBD88\uAC00 \uC0AC\uC720\uB294 INCOMPARABLE \uAC74\uC758 incomparableReason \uD544\uB4DC\uC5D0\uC11C \uD655\uC778\uD569\uB2C8\uB2E4.
2233
+ \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.
2234
+ \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 3\uAC1C\uC6D4\uC785\uB2C8\uB2E4.
2235
+ store \uC544\uC774\uB514\uB294 list_stores \uB3C4\uAD6C\uB85C \uBA3C\uC800 \uC870\uD68C\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.`,
2236
+ inputSchema: InputSchema4.shape,
2237
+ outputSchema: OutputSchema5.shape
2238
+ };
2239
+ function normalize(node) {
2240
+ 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);
2241
+ return {
2242
+ id: node.plainId,
2243
+ status,
2244
+ actionType: node.actionType,
2245
+ pgProvider: node.pgSpecifier?.pgProvider ?? void 0,
2246
+ pgMerchantId: node.pgSpecifier?.pgMerchantId ?? void 0,
2247
+ pgTxId: node.pgTxId ?? node.pgTxIdOptional ?? void 0,
2248
+ paymentAmount: node.paymentAmount,
2249
+ supplyAmount: node.supplyAmount,
2250
+ vatAmount: node.vatAmount,
2251
+ taxFreeAmount: node.taxFreeAmount,
2252
+ anomalyAmount: node.anomalyAmount ?? void 0,
2253
+ paidAt: node.paidAt,
2254
+ paymentCurrency: node.paymentCurrency,
2255
+ isEscrow: node.isEscrow ?? void 0,
2256
+ paymentMethodType: node.paymentMethod?.paymentMethodType ?? node.paymentMethod?.__typename ?? void 0,
2257
+ transactionId: node.transactionPlainId ?? node.transactionPlainIdOptional ?? void 0,
2258
+ paymentId: node.paymentPlainId ?? node.paymentPlainIdOptional ?? void 0,
2259
+ orderName: node.orderName ?? node.orderNameOptional ?? void 0,
2260
+ storeId: node.storePlainId ?? node.storePlainIdOptional ?? void 0,
2261
+ notMatchedReasons: node.notMatchedReasons ?? void 0,
2262
+ incomparableReason: node.reason ?? void 0,
2263
+ settlement: node.settlement ? {
2264
+ feeAmount: node.settlement.feeAmount ?? void 0,
2265
+ feeVatAmount: node.settlement.feeVatAmount ?? void 0,
2266
+ settlementAmount: node.settlement.settlementAmount ?? void 0,
2267
+ settlementCurrency: node.settlement.settlementCurrency ?? void 0,
2268
+ settlementDate: node.settlement.settlementDate ?? void 0
2269
+ } : void 0
2270
+ };
2271
+ }
2272
+ function init5(tokenProvider, client) {
2273
+ return async ({
2274
+ store,
2275
+ dateType,
2276
+ from,
2277
+ to,
2278
+ statuses,
2279
+ actionTypes,
2280
+ paymentMethodTypes,
2281
+ transactionCurrencies,
2282
+ settlementCurrencies,
2283
+ paymentId,
2284
+ transactionId,
2285
+ pgTxId,
2286
+ orderName,
2287
+ first,
2288
+ after
2289
+ }) => {
2290
+ const dateRangeError = validateReconciliationDateRange(from, to);
2291
+ if (dateRangeError != null) {
2292
+ return toolErrorResult({
2293
+ type: "error",
2294
+ data: { message: dateRangeError }
2295
+ });
2296
+ }
2297
+ const token = await getToken(tokenProvider);
2298
+ if (token.type === "error") {
2299
+ return toolErrorResult(token);
2300
+ }
2301
+ const searchCondition = paymentId == null && transactionId == null && pgTxId == null && orderName == null ? void 0 : {
2302
+ paymentPlainId: paymentId,
2303
+ transactionPlainId: transactionId,
2304
+ pgTxId,
2305
+ orderName
2306
+ };
2307
+ const result = await getReconciliations({
2308
+ client,
2309
+ authorization: token.data,
2310
+ dateType,
2311
+ from,
2312
+ until: to,
2313
+ searchCondition,
2314
+ filter: {
2315
+ storeIds: store == null ? void 0 : [store],
2316
+ paymentReconciliationStatuses: statuses,
2317
+ actionTypes,
2318
+ paymentMethodTypes,
2319
+ transactionCurrencies,
2320
+ settlementCurrencies
2321
+ },
2322
+ first,
2323
+ after
2324
+ });
2325
+ if (result.type === "error") {
2326
+ return toolErrorResult(result);
2327
+ }
2328
+ try {
2329
+ const structuredContent = {
2330
+ items: result.data.edges.map((edge) => normalize(edge.node)),
2331
+ hasNextPage: result.data.pageInfo.hasNextPage,
2332
+ endCursor: result.data.pageInfo.endCursor
2333
+ };
2334
+ return {
2335
+ content: [
2336
+ { type: "text", text: JSON.stringify(structuredContent, null, 2) }
2337
+ ],
2338
+ structuredContent
2339
+ };
2340
+ } catch {
2341
+ return {
2342
+ content: [{ type: "text", text: "\uC11C\uBC84\uB85C\uBD80\uD130 \uC798\uBABB\uB41C \uC751\uB2F5 \uC218\uC2E0" }],
2343
+ isError: true
2344
+ };
2345
+ }
2346
+ };
2347
+ }
2348
+
2349
+ // src/tools/getSettlementStatistics.ts
2350
+ var getSettlementStatistics_exports = {};
2351
+ __export(getSettlementStatistics_exports, {
2352
+ config: () => config6,
2353
+ init: () => init6,
2354
+ name: () => name6
2355
+ });
2356
+ import z14 from "zod";
2357
+
2358
+ // src/tools/request/getSettlements.ts
2359
+ import { parse as parse4 } from "graphql";
2360
+ import { gql as gql4 } from "graphql-request";
2361
+ import { match as match9, P as P7 } from "ts-pattern";
2362
+ import z13 from "zod";
2363
+ var ErrorResponse4 = z13.object({
2364
+ __typename: z13.string(),
2365
+ message: z13.string().nullable()
2366
+ });
2367
+ var SettlementFilter = z13.object({
2368
+ storeIds: z13.array(z13.string()),
2369
+ pgSpecifiers: z13.array(
2370
+ z13.object({
2371
+ pgMerchantId: z13.string(),
2372
+ pgProvider: ReconciliationPgProvider
2373
+ })
2374
+ )
2375
+ }).partial();
2376
+ var SettlementAggregate = z13.object({
2377
+ settlementAmount: z13.number(),
2378
+ settlementCount: z13.number(),
2379
+ feeAmount: z13.number(),
2380
+ feeVatAmount: z13.number(),
2381
+ cancelAmount: z13.number(),
2382
+ cancelCount: z13.number(),
2383
+ transactionAmount: z13.number(),
2384
+ postCorrectionCount: z13.number(),
2385
+ postCorrectionAmount: z13.number()
2386
+ });
2387
+ var SettlementDetail = z13.object({
2388
+ storePlainId: z13.string().nullable(),
2389
+ pgSpecifier: z13.object(
2390
+ nullableObject({ pgMerchantId: z13.string(), pgProvider: z13.string() })
2391
+ ),
2392
+ settlementAmount: z13.number(),
2393
+ settlementCount: z13.number(),
2394
+ feeAmount: z13.number(),
2395
+ feeVatAmount: z13.number(),
2396
+ cancelAmount: z13.number(),
2397
+ cancelCount: z13.number(),
2398
+ transactionAmount: z13.number(),
2399
+ postCorrectionCount: z13.number(),
2400
+ postCorrectionAmount: z13.number()
2401
+ }).partial({ storePlainId: true, pgSpecifier: true });
2402
+ var SettlementSummaryNode = z13.object({
2403
+ date: z13.string(),
2404
+ settlementCurrency: z13.string(),
2405
+ transactionCurrency: z13.string(),
2406
+ aggregate: SettlementAggregate,
2407
+ details: z13.array(SettlementDetail)
2408
+ });
2409
+ var CursorPageInfo2 = z13.object({
2410
+ startCursor: z13.string(),
2411
+ endCursor: z13.string(),
2412
+ hasPreviousPage: z13.boolean(),
2413
+ hasNextPage: z13.boolean()
2414
+ });
2415
+ var SettlementSummariesPayload = z13.object({
2416
+ edges: z13.array(z13.object({ node: SettlementSummaryNode, cursor: z13.string() })),
2417
+ pageInfo: CursorPageInfo2
2418
+ });
2419
+ var GetSettlementSummariesResponse = z13.object({
2420
+ merchant: z13.object({
2421
+ reconciliation: z13.object({
2422
+ paymentReconciliationSettlementSummaries: SettlementSummariesPayload
2423
+ })
2424
+ }).or(ErrorResponse4)
2425
+ }).transform(({ merchant }) => {
2426
+ if ("__typename" in merchant) return merchant;
2427
+ return merchant.reconciliation.paymentReconciliationSettlementSummaries;
2428
+ });
2429
+ var getSettlementSummariesQuery = parse4(gql4`
2430
+ query GetSettlementSummaries(
2431
+ $dateRange: DateRangeInput!
2432
+ $filter: PaymentReconciliationSettlementSummaryFilterInput
2433
+ $first: Int!
2434
+ $after: String
2435
+ ) {
2436
+ merchant {
2437
+ ...ErrorFragment
2438
+ ... on Merchant {
2439
+ reconciliation {
2440
+ paymentReconciliationSettlementSummaries(
2441
+ dateRange: $dateRange
2442
+ filter: $filter
2443
+ first: $first
2444
+ after: $after
2445
+ ) {
2446
+ edges {
2447
+ cursor
2448
+ node {
2449
+ date
2450
+ settlementCurrency
2451
+ transactionCurrency
2452
+ aggregate {
2453
+ settlementAmount
2454
+ settlementCount
2455
+ feeAmount
2456
+ feeVatAmount
2457
+ cancelAmount
2458
+ cancelCount
2459
+ transactionAmount
2460
+ postCorrectionCount
2461
+ postCorrectionAmount
2462
+ }
2463
+ details {
2464
+ storePlainId
2465
+ pgSpecifier {
2466
+ pgMerchantId
2467
+ pgProvider
2468
+ }
2469
+ settlementAmount
2470
+ settlementCount
2471
+ feeAmount
2472
+ feeVatAmount
2473
+ cancelAmount
2474
+ cancelCount
2475
+ transactionAmount
2476
+ postCorrectionCount
2477
+ postCorrectionAmount
2478
+ }
2479
+ }
2480
+ }
2481
+ pageInfo {
2482
+ startCursor
2483
+ endCursor
2484
+ hasPreviousPage
2485
+ hasNextPage
2486
+ }
2487
+ }
2488
+ }
2489
+ }
2490
+ }
2491
+ }
2492
+
2493
+ fragment ErrorFragment on Error {
2494
+ __typename
2495
+ message
2496
+ }
2497
+ `);
2498
+ async function getSettlementSummaries({
2499
+ client,
2500
+ authorization,
2501
+ from,
2502
+ until,
2503
+ filter,
2504
+ first,
2505
+ after
2506
+ }) {
2507
+ try {
2508
+ const response = await client.request({
2509
+ document: getSettlementSummariesQuery,
2510
+ requestHeaders: { authorization },
2511
+ variables: { dateRange: { from, until }, filter, first, after }
2512
+ });
2513
+ const parsed = await GetSettlementSummariesResponse.parseAsync(response);
2514
+ return match9(parsed).returnType().with({ __typename: P7.nonNullable }, ({ __typename, message }) => ({
2515
+ type: "error",
2516
+ data: { message, type: __typename }
2517
+ })).otherwise((data) => ({ type: "success", data }));
2518
+ } catch (error) {
2519
+ return toRequestError(error);
2520
+ }
2521
+ }
2522
+ var SettlementStatistic = z13.object({
2523
+ amount: z13.number(),
2524
+ count: z13.number(),
2525
+ pendingAmount: z13.number(),
2526
+ pendingCount: z13.number(),
2527
+ currency: z13.string()
2528
+ });
2529
+ var DailySettlementStatistics = z13.object({
2530
+ date: z13.string(),
2531
+ statistics: z13.array(SettlementStatistic)
2532
+ });
2533
+ var SettlementStatisticsPayload = z13.object({
2534
+ __typename: z13.literal("PaymentReconciliationSettlementStatisticsPayload"),
2535
+ rangeTotalStatistics: z13.array(SettlementStatistic),
2536
+ dailyStatistics: z13.array(DailySettlementStatistics)
2537
+ });
2538
+ var GetSettlementStatisticsResponse = z13.object({
2539
+ merchant: z13.object({
2540
+ reconciliation: z13.object({
2541
+ // Output 는 union 이므로 payload 또는 error typename 을 가짐
2542
+ paymentReconciliationSettlementStatistics: SettlementStatisticsPayload.or(ErrorResponse4)
2543
+ })
2544
+ }).or(ErrorResponse4)
2545
+ }).transform(({ merchant }) => {
2546
+ if ("__typename" in merchant) return merchant;
2547
+ return merchant.reconciliation.paymentReconciliationSettlementStatistics;
2548
+ });
2549
+ var getSettlementStatisticsQuery = parse4(gql4`
2550
+ query GetSettlementStatistics(
2551
+ $dateRange: DateRangeInput!
2552
+ $filter: PaymentReconciliationSettlementStatisticsFilterInput
2553
+ ) {
2554
+ merchant {
2555
+ ...ErrorFragment
2556
+ ... on Merchant {
2557
+ reconciliation {
2558
+ paymentReconciliationSettlementStatistics(
2559
+ dateRange: $dateRange
2560
+ filter: $filter
2561
+ ) {
2562
+ __typename
2563
+ ...ErrorFragment
2564
+ ... on PaymentReconciliationSettlementStatisticsPayload {
2565
+ rangeTotalStatistics {
2566
+ amount
2567
+ count
2568
+ pendingAmount
2569
+ pendingCount
2570
+ currency
2571
+ }
2572
+ dailyStatistics {
2573
+ date
2574
+ statistics {
2575
+ amount
2576
+ count
2577
+ pendingAmount
2578
+ pendingCount
2579
+ currency
2580
+ }
2581
+ }
2582
+ }
2583
+ }
2584
+ }
2585
+ }
2586
+ }
2587
+ }
2588
+
2589
+ fragment ErrorFragment on Error {
2590
+ __typename
2591
+ message
2592
+ }
2593
+ `);
2594
+ async function getSettlementStatistics({
2595
+ client,
2596
+ authorization,
2597
+ from,
2598
+ until,
2599
+ filter
2600
+ }) {
2601
+ try {
2602
+ const response = await client.request({
2603
+ document: getSettlementStatisticsQuery,
2604
+ requestHeaders: { authorization },
2605
+ variables: { dateRange: { from, until }, filter }
2606
+ });
2607
+ const parsed = await GetSettlementStatisticsResponse.parseAsync(response);
2608
+ if ("rangeTotalStatistics" in parsed) {
2609
+ return { type: "success", data: parsed };
2610
+ }
2611
+ return {
2612
+ type: "error",
2613
+ data: { message: parsed.message, type: parsed.__typename }
2614
+ };
2615
+ } catch (error) {
2616
+ return toRequestError(error);
2617
+ }
2618
+ }
2619
+ function toRequestError(error) {
2620
+ if (error instanceof Error) {
2621
+ return { type: "error", data: error };
2622
+ }
2623
+ return {
2624
+ type: "error",
2625
+ data: { message: `\uC54C \uC218 \uC5C6\uB294 \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4.`, cause: error }
2626
+ };
2627
+ }
2628
+
2629
+ // src/tools/getSettlementStatistics.ts
2630
+ var name6 = "getSettlementStatistics";
2631
+ var DateString2 = z14.string().regex(/^\d{4}-\d{2}-\d{2}$/, "YYYY-MM-DD \uD615\uC2DD\uC758 \uB0A0\uC9DC\uC5EC\uC57C \uD569\uB2C8\uB2E4.");
2632
+ var Statistic = z14.object({
2633
+ currency: z14.string().describe("\uD1B5\uD654"),
2634
+ amount: z14.number().describe("\uC815\uC0B0 \uAE08\uC561"),
2635
+ count: z14.number().describe("\uC815\uC0B0 \uAC74 \uC218"),
2636
+ pendingAmount: z14.number().describe("\uC815\uC0B0 \uC608\uC815 \uAE08\uC561"),
2637
+ pendingCount: z14.number().describe("\uC815\uC0B0 \uC608\uC815 \uAC74 \uC218")
2638
+ });
2639
+ var DailyStatistics = z14.object({
2640
+ date: z14.string().describe("\uC815\uC0B0\uC77C"),
2641
+ statistics: Statistic.array().describe("\uD574\uB2F9 \uC77C\uC790\uC758 \uD1B5\uD654\uBCC4 \uD1B5\uACC4")
2642
+ });
2643
+ var OutputSchema6 = z14.object({
2644
+ rangeTotalStatistics: Statistic.array().describe(
2645
+ "\uAC80\uC0C9 \uAD6C\uAC04 \uB0B4 \uD1B5\uD654\uBCC4 \uD569\uC0B0 \uD1B5\uACC4"
2646
+ ),
2647
+ dailyStatistics: DailyStatistics.array().describe("\uC77C\uBCC4 \uC815\uC0B0 \uD1B5\uACC4")
2648
+ });
2649
+ var InputSchema5 = z14.object({
2650
+ store: z14.string().optional().describe(
2651
+ "\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."
2652
+ ),
2653
+ from: DateString2.describe("\uC815\uC0B0\uC77C \uC870\uD68C \uC2DC\uC791\uC77C (YYYY-MM-DD)"),
2654
+ to: DateString2.describe("\uC815\uC0B0\uC77C \uC870\uD68C \uC885\uB8CC\uC77C (YYYY-MM-DD)")
2655
+ });
2656
+ var config6 = {
2657
+ title: "\uAC70\uB798\uB300\uC0AC \uC815\uC0B0 \uD1B5\uACC4 \uC870\uD68C",
2658
+ description: `\uD2B9\uC815 \uD558\uC704 \uC0C1\uC810(store)\uC758 \uAC70\uB798\uB300\uC0AC \uC815\uC0B0 \uD1B5\uACC4\uB97C \uC870\uD68C\uD569\uB2C8\uB2E4.
2659
+
2660
+ \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.
2661
+ \uB0A0\uC9DC\uB294 \uBC18\uB4DC\uC2DC YYYY-MM-DD \uD615\uC2DD\uC73C\uB85C \uC785\uB825\uD569\uB2C8\uB2E4.
2662
+ \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 3\uAC1C\uC6D4\uC785\uB2C8\uB2E4.
2663
+ store \uC544\uC774\uB514\uB294 list_stores \uB3C4\uAD6C\uB85C \uBA3C\uC800 \uC870\uD68C\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.`,
2664
+ inputSchema: InputSchema5.shape,
2665
+ outputSchema: OutputSchema6.shape
2666
+ };
2667
+ function init6(tokenProvider, client) {
2668
+ return async ({ store, from, to }) => {
2669
+ const dateRangeError = validateReconciliationDateRange(from, to);
2670
+ if (dateRangeError != null) {
2671
+ return toolErrorResult({
2672
+ type: "error",
2673
+ data: { message: dateRangeError }
2674
+ });
2675
+ }
2676
+ const token = await getToken(tokenProvider);
2677
+ if (token.type === "error") {
2678
+ return toolErrorResult(token);
2679
+ }
2680
+ const result = await getSettlementStatistics({
2681
+ client,
2682
+ authorization: token.data,
2683
+ from,
2684
+ until: to,
2685
+ filter: { storeIds: store == null ? void 0 : [store] }
2686
+ });
2687
+ if (result.type === "error") {
2688
+ return toolErrorResult(result);
2689
+ }
2690
+ const structuredContent = {
2691
+ rangeTotalStatistics: result.data.rangeTotalStatistics,
2692
+ dailyStatistics: result.data.dailyStatistics
2693
+ };
2694
+ return {
2695
+ content: [
2696
+ { type: "text", text: JSON.stringify(structuredContent, null, 2) }
2697
+ ],
2698
+ structuredContent
2699
+ };
2700
+ };
2701
+ }
2702
+
2703
+ // src/tools/getSettlementSummaries.ts
2704
+ var getSettlementSummaries_exports = {};
2705
+ __export(getSettlementSummaries_exports, {
2706
+ config: () => config7,
2707
+ init: () => init7,
2708
+ name: () => name7
2709
+ });
2710
+ import z15 from "zod";
2711
+ var name7 = "getSettlementSummaries";
2712
+ var DateString3 = z15.string().regex(/^\d{4}-\d{2}-\d{2}$/, "YYYY-MM-DD \uD615\uC2DD\uC758 \uB0A0\uC9DC\uC5EC\uC57C \uD569\uB2C8\uB2E4.");
2713
+ var Aggregate = z15.object({
2714
+ settlementAmount: z15.number().describe("\uC815\uC0B0 \uAE08\uC561"),
2715
+ settlementCount: z15.number().describe("\uC815\uC0B0 \uAC74 \uC218"),
2716
+ feeAmount: z15.number().describe("PG \uC218\uC218\uB8CC"),
2717
+ feeVatAmount: z15.number().describe("PG \uC218\uC218\uB8CC \uBD80\uAC00\uC138"),
2718
+ cancelAmount: z15.number().describe("\uCDE8\uC18C \uAE08\uC561"),
2719
+ cancelCount: z15.number().describe("\uCDE8\uC18C \uAC74 \uC218"),
2720
+ transactionAmount: z15.number().describe("\uAC70\uB798 \uD569\uACC4 \uAE08\uC561"),
2721
+ postCorrectionCount: z15.number().describe("\uD6C4\uBCF4\uC815 \uAC74 \uC218"),
2722
+ postCorrectionAmount: z15.number().describe("\uD6C4\uBCF4\uC815 \uAE08\uC561")
2723
+ });
2724
+ var Detail = Aggregate.extend({
2725
+ storeId: z15.string().optional().describe("\uD558\uC704 \uC0C1\uC810 \uC544\uC774\uB514"),
2726
+ pgProvider: z15.string().optional().describe("\uB300\uC0AC\uC6A9 PG\uC0AC"),
2727
+ pgMerchantId: z15.string().optional().describe("PG\uC0AC \uAC00\uB9F9\uC810 \uC2DD\uBCC4 \uC544\uC774\uB514")
2728
+ });
2729
+ var Summary = z15.object({
2730
+ date: z15.string().describe("\uC815\uC0B0\uC77C"),
2731
+ settlementCurrency: z15.string().describe("\uC815\uC0B0 \uD1B5\uD654"),
2732
+ transactionCurrency: z15.string().describe("\uACB0\uC81C \uD1B5\uD654"),
2733
+ aggregate: Aggregate.describe("\uC815\uC0B0\uB0B4\uC5ED \uD569\uC0B0 \uB370\uC774\uD130"),
2734
+ details: Detail.array().describe("\uC0C1\uC810/PG \uBCC4 \uC0C1\uC138 \uB370\uC774\uD130")
2735
+ });
2736
+ var OutputSchema7 = z15.object({
2737
+ items: Summary.array().describe("\uC77C\uBCC4 \uC815\uC0B0 \uC694\uC57D \uBAA9\uB85D"),
2738
+ hasNextPage: z15.boolean().describe("\uB2E4\uC74C \uD398\uC774\uC9C0 \uC874\uC7AC \uC5EC\uBD80"),
2739
+ endCursor: z15.string().describe("\uB2E4\uC74C \uD398\uC774\uC9C0 \uC870\uD68C\uC5D0 \uC0AC\uC6A9\uD560 \uCEE4\uC11C")
2740
+ });
2741
+ var InputSchema6 = z15.object({
2742
+ store: z15.string().optional().describe(
2743
+ "\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."
2744
+ ),
2745
+ from: DateString3.describe("\uC815\uC0B0\uC77C \uC870\uD68C \uC2DC\uC791\uC77C (YYYY-MM-DD)"),
2746
+ to: DateString3.describe("\uC815\uC0B0\uC77C \uC870\uD68C \uC885\uB8CC\uC77C (YYYY-MM-DD)"),
2747
+ first: z15.number().min(1).max(100).default(31).describe("\uC870\uD68C\uD560 \uC77C \uC218 (\uCD5C\uB300 100)"),
2748
+ after: z15.string().optional().describe("\uC774\uC804 \uD398\uC774\uC9C0\uC758 \uB9C8\uC9C0\uB9C9 \uCEE4\uC11C")
2749
+ });
2750
+ var config7 = {
2751
+ title: "\uAC70\uB798\uB300\uC0AC \uC815\uC0B0 \uC694\uC57D \uC870\uD68C",
2752
+ 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.
2753
+
2754
+ \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.
2755
+ \uB0A0\uC9DC\uB294 \uBC18\uB4DC\uC2DC YYYY-MM-DD \uD615\uC2DD\uC73C\uB85C \uC785\uB825\uD569\uB2C8\uB2E4.
2756
+ \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 3\uAC1C\uC6D4\uC785\uB2C8\uB2E4.
2757
+ store \uC544\uC774\uB514\uB294 list_stores \uB3C4\uAD6C\uB85C \uBA3C\uC800 \uC870\uD68C\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.`,
2758
+ inputSchema: InputSchema6.shape,
2759
+ outputSchema: OutputSchema7.shape
2760
+ };
2761
+ function init7(tokenProvider, client) {
2762
+ return async ({ store, from, to, first, after }) => {
2763
+ const dateRangeError = validateReconciliationDateRange(from, to);
2764
+ if (dateRangeError != null) {
2765
+ return toolErrorResult({
2766
+ type: "error",
2767
+ data: { message: dateRangeError }
2768
+ });
2769
+ }
2770
+ const token = await getToken(tokenProvider);
2771
+ if (token.type === "error") {
2772
+ return toolErrorResult(token);
2773
+ }
2774
+ const result = await getSettlementSummaries({
2775
+ client,
2776
+ authorization: token.data,
2777
+ from,
2778
+ until: to,
2779
+ filter: { storeIds: store == null ? void 0 : [store] },
2780
+ first,
2781
+ after
2782
+ });
2783
+ if (result.type === "error") {
2784
+ return toolErrorResult(result);
2785
+ }
2786
+ try {
2787
+ const structuredContent = {
2788
+ items: result.data.edges.map(({ node }) => ({
2789
+ date: node.date,
2790
+ settlementCurrency: node.settlementCurrency,
2791
+ transactionCurrency: node.transactionCurrency,
2792
+ aggregate: node.aggregate,
2793
+ details: node.details.map((detail) => ({
2794
+ storeId: detail.storePlainId ?? void 0,
2795
+ pgProvider: detail.pgSpecifier?.pgProvider ?? void 0,
2796
+ pgMerchantId: detail.pgSpecifier?.pgMerchantId ?? void 0,
2797
+ settlementAmount: detail.settlementAmount,
2798
+ settlementCount: detail.settlementCount,
2799
+ feeAmount: detail.feeAmount,
2800
+ feeVatAmount: detail.feeVatAmount,
2801
+ cancelAmount: detail.cancelAmount,
2802
+ cancelCount: detail.cancelCount,
2803
+ transactionAmount: detail.transactionAmount,
2804
+ postCorrectionCount: detail.postCorrectionCount,
2805
+ postCorrectionAmount: detail.postCorrectionAmount
2806
+ }))
2807
+ })),
2808
+ hasNextPage: result.data.pageInfo.hasNextPage,
2809
+ endCursor: result.data.pageInfo.endCursor
2810
+ };
2811
+ return {
2812
+ content: [
2813
+ { type: "text", text: JSON.stringify(structuredContent, null, 2) }
2814
+ ],
2815
+ structuredContent
2816
+ };
2817
+ } catch {
2818
+ return {
2819
+ content: [{ type: "text", text: "\uC11C\uBC84\uB85C\uBD80\uD130 \uC798\uBABB\uB41C \uC751\uB2F5 \uC218\uC2E0" }],
2820
+ isError: true
2821
+ };
2822
+ }
2823
+ };
2824
+ }
2825
+
2826
+ // src/tools/listDocs.ts
2827
+ var listDocs_exports = {};
2828
+ __export(listDocs_exports, {
2829
+ config: () => config8,
2830
+ init: () => init8,
2831
+ name: () => name8
2832
+ });
2833
+ import z16 from "zod";
1756
2834
 
1757
2835
  // src/tools/utils/markdown.ts
1758
2836
  function formatDocumentMetadata(doc) {
@@ -1772,8 +2850,8 @@ function formatDocumentMetadata(doc) {
1772
2850
  }
1773
2851
 
1774
2852
  // src/tools/listDocs.ts
1775
- var name5 = "listPortoneDocs";
1776
- var config5 = {
2853
+ var name8 = "listPortoneDocs";
2854
+ var config8 = {
1777
2855
  title: "\uD3EC\uD2B8\uC6D0 \uBB38\uC11C \uBAA9\uB85D \uC870\uD68C",
1778
2856
  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
2857
  \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 +2862,15 @@ Returns:
1784
2862
  Note:
1785
2863
  \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
2864
  inputSchema: {
1787
- paths: z11.string().array().default([]).describe(
2865
+ paths: z16.string().array().default([]).describe(
1788
2866
  "\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
2867
  ),
1790
- onlyPaths: z11.boolean().default(false).describe(
2868
+ onlyPaths: z16.boolean().default(false).describe(
1791
2869
  "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
2870
  )
1793
2871
  }
1794
2872
  };
1795
- function init5(documents) {
2873
+ function init8(documents) {
1796
2874
  return ({ paths, onlyPaths }) => {
1797
2875
  const { markdownDocs } = documents;
1798
2876
  const filteredDocs = [];
@@ -1869,32 +2947,32 @@ function init5(documents) {
1869
2947
  // src/tools/listSharedTestChannels.ts
1870
2948
  var listSharedTestChannels_exports = {};
1871
2949
  __export(listSharedTestChannels_exports, {
1872
- config: () => config6,
1873
- init: () => init6,
1874
- name: () => name6
2950
+ config: () => config9,
2951
+ init: () => init9,
2952
+ name: () => name9
1875
2953
  });
1876
- import z12 from "zod";
1877
- var name6 = "listSharedTestChannels";
1878
- var SharedTestChannel = z12.object({
1879
- pg: z12.string().describe(
2954
+ import z17 from "zod";
2955
+ var name9 = "listSharedTestChannels";
2956
+ var SharedTestChannel = z17.object({
2957
+ pg: z17.string().describe(
1880
2958
  "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
2959
  ),
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")
2960
+ mid: z17.string().describe("PG\uC0AC\uC5D0\uC11C \uACE0\uAC1D\uC0AC\uB97C \uAD6C\uBD84\uD558\uAE30 \uC704\uD55C ID"),
2961
+ name: z17.string().describe("\uD3EC\uD2B8\uC6D0\uC5D0\uC11C \uC9C0\uC815\uD55C \uCC44\uB110\uC758 \uC774\uB984"),
2962
+ usage: z17.array(z17.enum(["PAYMENT", "IDENTITY"])).describe("\uCC44\uB110\uC744 \uC0AC\uC6A9 \uAC00\uB2A5\uD55C \uC6A9\uB3C4")
1885
2963
  });
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.")
2964
+ var OutputSchema8 = z17.object({
2965
+ items: z17.array(SharedTestChannel).describe("\uC870\uD68C\uB41C \uCC44\uB110 \uBAA9\uB85D\uC73C\uB85C, MID\uAC00 \uD3EC\uD568\uB429\uB2C8\uB2E4.")
1888
2966
  });
1889
- var config6 = {
2967
+ var config9 = {
1890
2968
  title: "\uD3EC\uD2B8\uC6D0 \uACF5\uC6A9 \uD14C\uC2A4\uD2B8 \uCC44\uB110 \uBAA9\uB85D \uC870\uD68C",
1891
2969
  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
2970
  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.")
2971
+ 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
2972
  },
1895
- outputSchema: OutputSchema5.shape
2973
+ outputSchema: OutputSchema8.shape
1896
2974
  };
1897
- function init6(tokenProvider) {
2975
+ function init9(tokenProvider) {
1898
2976
  return async () => {
1899
2977
  const token = await getToken(tokenProvider);
1900
2978
  if (token.type === "error") {
@@ -1942,31 +3020,31 @@ function init6(tokenProvider) {
1942
3020
  // src/tools/listStores.ts
1943
3021
  var listStores_exports = {};
1944
3022
  __export(listStores_exports, {
1945
- config: () => config7,
1946
- init: () => init7,
1947
- name: () => name7
3023
+ config: () => config10,
3024
+ init: () => init10,
3025
+ name: () => name10
1948
3026
  });
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({
3027
+ import z18 from "zod";
3028
+ var name10 = "listStores";
3029
+ var Store = z18.object({
3030
+ id: z18.string().describe("\uAC70\uB798 \uB2E4\uAC74 \uC870\uD68C\uC6A9 \uC0C1\uC810 \uC2DD\uBCC4\uC790"),
3031
+ storeId: z18.string().describe("\uD3EC\uD2B8\uC6D0 \uC0C1\uC810\uC544\uC774\uB514"),
3032
+ name: z18.string().describe("\uC0C1\uC810\uBA85"),
3033
+ userId: z18.number().optional().describe("V1 \uC720\uC800 \uC544\uC774\uB514"),
3034
+ userCode: z18.string().optional().describe("V1 \uACE0\uAC1D \uC2DD\uBCC4\uBC88\uD638"),
3035
+ tierCode: z18.string().optional().describe("\uD2F0\uC5B4\uCF54\uB4DC")
3036
+ });
3037
+ var OutputSchema9 = z18.object({
1960
3038
  main: Store.optional().describe("\uB300\uD45C\uC0C1\uC810"),
1961
- items: z13.array(Store).describe("\uD558\uC704\uC0C1\uC810 \uBAA9\uB85D")
3039
+ items: z18.array(Store).describe("\uD558\uC704\uC0C1\uC810 \uBAA9\uB85D")
1962
3040
  });
1963
- var config7 = {
3041
+ var config10 = {
1964
3042
  title: "\uC0C1\uC810 \uBAA9\uB85D \uC870\uD68C",
1965
3043
  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
3044
  inputSchema: {},
1967
- outputSchema: OutputSchema6.shape
3045
+ outputSchema: OutputSchema9.shape
1968
3046
  };
1969
- function init7(tokenProvider, client) {
3047
+ function init10(tokenProvider, client) {
1970
3048
  return async () => {
1971
3049
  const token = await getToken(tokenProvider);
1972
3050
  if (token.type === "error") {
@@ -2005,18 +3083,18 @@ function renameStore(store) {
2005
3083
  // src/tools/readDoc.ts
2006
3084
  var readDoc_exports = {};
2007
3085
  __export(readDoc_exports, {
2008
- config: () => config8,
2009
- init: () => init8,
2010
- name: () => name8
3086
+ config: () => config11,
3087
+ init: () => init11,
3088
+ name: () => name11
2011
3089
  });
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")
3090
+ import z19 from "zod";
3091
+ var name11 = "readPortoneDoc";
3092
+ var OutputSchema10 = z19.object({
3093
+ content: z19.string().describe("\uCC3E\uC740 \uD3EC\uD2B8\uC6D0 \uBB38\uC11C\uC758 \uB0B4\uC6A9"),
3094
+ metadata: z19.string().describe("\uCC3E\uC740 \uD3EC\uD2B8\uC6D0 \uBB38\uC11C\uC758 \uBA54\uD0C0 \uC815\uBCF4"),
3095
+ url: z19.string().describe("\uBB38\uC11C\uB97C \uC6F9\uC73C\uB85C \uC811\uADFC \uAC00\uB2A5\uD55C \uB9C1\uD06C")
2018
3096
  }).partial();
2019
- var config8 = {
3097
+ var config11 = {
2020
3098
  title: "\uD3EC\uD2B8\uC6D0 \uBB38\uC11C \uC77D\uAE30",
2021
3099
  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
3100
 
@@ -2024,14 +3102,14 @@ Note:
2024
3102
  \uBA3C\uC800 listPortoneDocs\uC744 \uC0AC\uC6A9\uD574 \uD3EC\uD2B8\uC6D0 \uBB38\uC11C \uBAA9\uB85D\uC744 \uD655\uC778\uD558\uACE0,
2025
3103
  \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
3104
  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.")
3105
+ path: z19.string().describe("\uC77D\uC744 \uD3EC\uD2B8\uC6D0 \uBB38\uC11C\uC758 \uACBD\uB85C"),
3106
+ fields: OutputSchema10.keyof().array().describe("\uBC1B\uC744 \uD544\uB4DC \uBAA9\uB85D"),
3107
+ 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."),
3108
+ 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
3109
  },
2032
- outputSchema: OutputSchema7.shape
3110
+ outputSchema: OutputSchema10.shape
2033
3111
  };
2034
- function init8(documents) {
3112
+ function init11(documents) {
2035
3113
  return ({ path, fields, startIndex, endIndex }) => {
2036
3114
  const { markdownDocs } = documents;
2037
3115
  const doc = markdownDocs[path];
@@ -2069,11 +3147,11 @@ function init8(documents) {
2069
3147
  // src/tools/readOpenapiSchema.ts
2070
3148
  var readOpenapiSchema_exports = {};
2071
3149
  __export(readOpenapiSchema_exports, {
2072
- config: () => config9,
2073
- init: () => init9,
2074
- name: () => name9
3150
+ config: () => config12,
3151
+ init: () => init12,
3152
+ name: () => name12
2075
3153
  });
2076
- import z15 from "zod";
3154
+ import z20 from "zod";
2077
3155
 
2078
3156
  // src/tools/utils/yaml.ts
2079
3157
  import yaml from "js-yaml";
@@ -2143,21 +3221,21 @@ function stringifyYaml(data) {
2143
3221
  }
2144
3222
 
2145
3223
  // src/tools/readOpenapiSchema.ts
2146
- var name9 = "readPortoneOpenapiSchema";
2147
- var config9 = {
3224
+ var name12 = "readPortoneOpenapiSchema";
3225
+ var config12 = {
2148
3226
  title: "\uD3EC\uD2B8\uC6D0 OpenAPI \uC2A4\uD0A4\uB9C8 \uC77D\uAE30",
2149
3227
  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
3228
  inputSchema: {
2151
- version: z15.enum(["V1", "V2"]).describe("\uD3EC\uD2B8\uC6D0 \uBC84\uC804"),
2152
- yaml_path: z15.array(z15.string()).describe(
3229
+ version: z20.enum(["V1", "V2"]).describe("\uD3EC\uD2B8\uC6D0 \uBC84\uC804"),
3230
+ yaml_path: z20.array(z20.string()).describe(
2153
3231
  "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
3232
  )
2155
3233
  },
2156
3234
  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")
3235
+ 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
3236
  }
2159
3237
  };
2160
- function init9(schema) {
3238
+ function init12(schema) {
2161
3239
  return ({ version, yaml_path }) => {
2162
3240
  let schemaData;
2163
3241
  if (version === "V1") {
@@ -2218,23 +3296,23 @@ function init9(schema) {
2218
3296
  // src/tools/readOpenapiSchemaSummary.ts
2219
3297
  var readOpenapiSchemaSummary_exports = {};
2220
3298
  __export(readOpenapiSchemaSummary_exports, {
2221
- config: () => config10,
2222
- init: () => init10,
2223
- name: () => name10
3299
+ config: () => config13,
3300
+ init: () => init13,
3301
+ name: () => name13
2224
3302
  });
2225
- import z16 from "zod";
2226
- var name10 = "readPortoneOpenapiSchemaSummary";
2227
- var config10 = {
3303
+ import z21 from "zod";
3304
+ var name13 = "readPortoneOpenapiSchemaSummary";
3305
+ var config13 = {
2228
3306
  title: "\uD3EC\uD2B8\uC6D0 OpenAPI \uC2A4\uD0A4\uB9C8 \uC694\uC57D",
2229
3307
  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
3308
  inputSchema: {
2231
- version: z16.enum(["V1", "V2"]).describe("\uD3EC\uD2B8\uC6D0 \uBC84\uC804")
3309
+ version: z21.enum(["V1", "V2"]).describe("\uD3EC\uD2B8\uC6D0 \uBC84\uC804")
2232
3310
  },
2233
3311
  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")
3312
+ 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
3313
  }
2236
3314
  };
2237
- function init10(schema) {
3315
+ function init13(schema) {
2238
3316
  return ({ version }) => {
2239
3317
  let schemaData;
2240
3318
  if (version === "V1") {
@@ -2295,31 +3373,31 @@ function init10(schema) {
2295
3373
  // src/tools/readV2BackendCode.ts
2296
3374
  var readV2BackendCode_exports = {};
2297
3375
  __export(readV2BackendCode_exports, {
2298
- config: () => config11,
2299
- init: () => init11,
2300
- name: () => name11
3376
+ config: () => config14,
3377
+ init: () => init14,
3378
+ name: () => name14
2301
3379
  });
2302
- import z17 from "zod";
2303
- var name11 = "readPortoneV2BackendCode";
2304
- var config11 = {
3380
+ import z22 from "zod";
3381
+ var name14 = "readPortoneV2BackendCode";
3382
+ var config14 = {
2305
3383
  title: "\uD3EC\uD2B8\uC6D0 V2 \uBC31\uC5D4\uB4DC \uCF54\uB4DC \uC608\uC81C \uC77D\uAE30",
2306
3384
  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
3385
  \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
3386
  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
3387
  inputSchema: {
2310
- framework: z17.string().describe(
3388
+ framework: z22.string().describe(
2311
3389
  "\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
3390
  ),
2313
- pg: z17.string().describe(
3391
+ pg: z22.string().describe(
2314
3392
  "\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
3393
  ),
2316
- pay_method: z17.string().describe(
3394
+ pay_method: z22.string().describe(
2317
3395
  "\uC0AC\uC6A9\uD560 \uACB0\uC81C \uBC29\uBC95. \uC635\uC158: card, virtualAccount, easyPay, transfer, mobile, giftCertificate"
2318
3396
  ),
2319
- smart_routing: z17.boolean().optional().describe("\uC2A4\uB9C8\uD2B8 \uB77C\uC6B0\uD305 \uC0AC\uC6A9 \uC5EC\uBD80. \uC635\uC158: true \uB610\uB294 false")
3397
+ smart_routing: z22.boolean().optional().describe("\uC2A4\uB9C8\uD2B8 \uB77C\uC6B0\uD305 \uC0AC\uC6A9 \uC5EC\uBD80. \uC635\uC158: true \uB610\uB294 false")
2320
3398
  }
2321
3399
  };
2322
- function init11(apiBasePath) {
3400
+ function init14(apiBasePath) {
2323
3401
  return async ({ framework, pg, pay_method, smart_routing }) => {
2324
3402
  const url = new URL(
2325
3403
  `${apiBasePath}/opi/ko/quick-guide/payment/backend-code`
@@ -2382,31 +3460,31 @@ ${errorText}`
2382
3460
  // src/tools/readV2FrontendCode.ts
2383
3461
  var readV2FrontendCode_exports = {};
2384
3462
  __export(readV2FrontendCode_exports, {
2385
- config: () => config12,
2386
- init: () => init12,
2387
- name: () => name12
3463
+ config: () => config15,
3464
+ init: () => init15,
3465
+ name: () => name15
2388
3466
  });
2389
- import z18 from "zod";
2390
- var name12 = "readPortoneV2FrontendCode";
2391
- var config12 = {
3467
+ import z23 from "zod";
3468
+ var name15 = "readPortoneV2FrontendCode";
3469
+ var config15 = {
2392
3470
  title: "\uD3EC\uD2B8\uC6D0 V2 \uD504\uB860\uD2B8\uC5D4\uB4DC \uCF54\uB4DC \uC608\uC81C \uC77D\uAE30",
2393
3471
  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
3472
  \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
3473
  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
3474
  inputSchema: {
2397
- framework: z18.string().describe(
3475
+ framework: z23.string().describe(
2398
3476
  "\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
3477
  ),
2400
- pg: z18.string().describe(
3478
+ pg: z23.string().describe(
2401
3479
  "\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
3480
  ),
2403
- pay_method: z18.string().describe(
3481
+ pay_method: z23.string().describe(
2404
3482
  "\uC0AC\uC6A9\uD560 \uACB0\uC81C \uBC29\uBC95. \uC635\uC158: card, virtualAccount, easyPay, transfer, mobile, giftCertificate"
2405
3483
  ),
2406
- smart_routing: z18.boolean().optional().describe("\uC2A4\uB9C8\uD2B8 \uB77C\uC6B0\uD305 \uC0AC\uC6A9 \uC5EC\uBD80. \uC635\uC158: true \uB610\uB294 false")
3484
+ smart_routing: z23.boolean().optional().describe("\uC2A4\uB9C8\uD2B8 \uB77C\uC6B0\uD305 \uC0AC\uC6A9 \uC5EC\uBD80. \uC635\uC158: true \uB610\uB294 false")
2407
3485
  }
2408
3486
  };
2409
- function init12(apiBasePath) {
3487
+ function init15(apiBasePath) {
2410
3488
  return async ({ framework, pg, pay_method, smart_routing }) => {
2411
3489
  const url = new URL(
2412
3490
  `${apiBasePath}/opi/ko/quick-guide/payment/frontend-code`
@@ -2469,11 +3547,11 @@ ${errorText}`
2469
3547
  // src/tools/regexSearch.ts
2470
3548
  var regexSearch_exports = {};
2471
3549
  __export(regexSearch_exports, {
2472
- config: () => config13,
2473
- init: () => init13,
2474
- name: () => name13
3550
+ config: () => config16,
3551
+ init: () => init16,
3552
+ name: () => name16
2475
3553
  });
2476
- import z19 from "zod";
3554
+ import z24 from "zod";
2477
3555
 
2478
3556
  // src/tools/utils/bm25.ts
2479
3557
  function calculateBm25Scores(query, documents, k1 = 1.2, b = 0.75) {
@@ -2513,8 +3591,8 @@ ${searchableText}`;
2513
3591
  );
2514
3592
  if (matches.length > 0) {
2515
3593
  const termCounts = {};
2516
- for (const match7 of matches) {
2517
- const term = match7[0].toLowerCase();
3594
+ for (const match10 of matches) {
3595
+ const term = match10[0].toLowerCase();
2518
3596
  termCounts[term] = (termCounts[term] || 0) + 1;
2519
3597
  }
2520
3598
  termFrequencies[path] = termCounts;
@@ -2554,29 +3632,29 @@ ${searchableText}`;
2554
3632
  }
2555
3633
 
2556
3634
  // src/tools/regexSearch.ts
2557
- var name13 = "regexSearchPortoneDocs";
2558
- var config13 = {
3635
+ var name16 = "regexSearchPortoneDocs";
3636
+ var config16 = {
2559
3637
  title: "\uD3EC\uD2B8\uC6D0 \uBB38\uC11C \uC815\uADDC\uD45C\uD604\uC2DD \uAC80\uC0C9",
2560
3638
  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
3639
  \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
3640
  inputSchema: {
2563
- paths: z19.string().array().optional().describe(
3641
+ paths: z24.string().array().optional().describe(
2564
3642
  "\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
3643
  ),
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.
3644
+ 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
3645
  \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
3646
  \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.
3647
+ 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
3648
  query \uB9E4\uCE58\uAC00 \uBC1C\uACAC\uB41C \uC2DC\uC791 \uC778\uB371\uC2A4\uB97C idx\uB77C\uACE0 \uD560 \uB54C,
2571
3649
  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
3650
  \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(
3651
+ limit: z24.number().default(1e3).describe(
2574
3652
  `\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
3653
  ),
2576
- page: z19.number().default(0).describe(
3654
+ page: z24.number().default(0).describe(
2577
3655
  `\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
3656
  ),
2579
- showMetadata: z19.boolean().default(false).describe(
3657
+ showMetadata: z24.boolean().default(false).describe(
2580
3658
  "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
3659
  )
2582
3660
  }
@@ -2590,7 +3668,7 @@ ${occurrence.context}
2590
3668
  \`\`\`
2591
3669
  `;
2592
3670
  }
2593
- function init13(documents) {
3671
+ function init16(documents) {
2594
3672
  return ({ paths, query, contextSize, page, limit, showMetadata }) => {
2595
3673
  const { markdownDocs } = documents;
2596
3674
  let occurrenceCount = 0;
@@ -2617,14 +3695,14 @@ function init13(documents) {
2617
3695
  });
2618
3696
  }
2619
3697
  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) {
3698
+ let match10 = regex.exec(doc.content);
3699
+ while (match10 !== null) {
3700
+ match10 = regex.exec(doc.content);
3701
+ if (match10 === null) {
2624
3702
  break;
2625
3703
  }
2626
- const idx = match7.index;
2627
- const matchLen = match7[0].length;
3704
+ const idx = match10.index;
3705
+ const matchLen = match10[0].length;
2628
3706
  const contextStart = Math.max(0, idx - contextSize);
2629
3707
  const contextEnd = Math.min(contentLen, idx + matchLen + contextSize);
2630
3708
  if (contextStart < lastContextEnd) {
@@ -2806,6 +3884,21 @@ ${documents.readme}`
2806
3884
  getPaymentsByFilter_exports.config,
2807
3885
  getPaymentsByFilter_exports.init(tokenProvider, graphClient)
2808
3886
  );
3887
+ mcp.registerTool(
3888
+ getReconciliationsByFilter_exports.name,
3889
+ getReconciliationsByFilter_exports.config,
3890
+ getReconciliationsByFilter_exports.init(tokenProvider, graphClient)
3891
+ );
3892
+ mcp.registerTool(
3893
+ getSettlementSummaries_exports.name,
3894
+ getSettlementSummaries_exports.config,
3895
+ getSettlementSummaries_exports.init(tokenProvider, graphClient)
3896
+ );
3897
+ mcp.registerTool(
3898
+ getSettlementStatistics_exports.name,
3899
+ getSettlementStatistics_exports.config,
3900
+ getSettlementStatistics_exports.init(tokenProvider, graphClient)
3901
+ );
2809
3902
  const transport = new StdioServerTransport();
2810
3903
  await mcp.connect(transport);
2811
3904
  }