@dizzlkheinz/ynab-mcpb 0.18.4 → 0.19.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/CLAUDE.md +87 -8
- package/bin/ynab-mcp-server.cjs +2 -2
- package/bin/ynab-mcp-server.js +3 -3
- package/biome.json +39 -0
- package/dist/bundle/index.cjs +67 -67
- package/dist/index.d.ts +1 -1
- package/dist/index.js +27 -27
- package/dist/server/YNABMCPServer.d.ts +3 -4
- package/dist/server/YNABMCPServer.js +111 -116
- package/dist/server/budgetResolver.d.ts +6 -5
- package/dist/server/budgetResolver.js +46 -36
- package/dist/server/cacheKeys.js +6 -6
- package/dist/server/cacheManager.js +14 -11
- package/dist/server/completions.d.ts +2 -2
- package/dist/server/completions.js +20 -15
- package/dist/server/config.d.ts +10 -5
- package/dist/server/config.js +24 -7
- package/dist/server/deltaCache.d.ts +2 -2
- package/dist/server/deltaCache.js +22 -16
- package/dist/server/deltaCache.merge.d.ts +2 -2
- package/dist/server/diagnostics.d.ts +4 -4
- package/dist/server/diagnostics.js +38 -32
- package/dist/server/errorHandler.d.ts +5 -12
- package/dist/server/errorHandler.js +219 -217
- package/dist/server/prompts.d.ts +2 -2
- package/dist/server/prompts.js +45 -45
- package/dist/server/rateLimiter.js +4 -4
- package/dist/server/requestLogger.d.ts +1 -1
- package/dist/server/requestLogger.js +40 -35
- package/dist/server/resources.d.ts +3 -3
- package/dist/server/resources.js +55 -52
- package/dist/server/responseFormatter.js +6 -6
- package/dist/server/securityMiddleware.d.ts +2 -2
- package/dist/server/securityMiddleware.js +22 -20
- package/dist/server/serverKnowledgeStore.js +1 -1
- package/dist/server/toolRegistry.d.ts +3 -3
- package/dist/server/toolRegistry.js +47 -40
- package/dist/tools/__tests__/deltaTestUtils.d.ts +3 -3
- package/dist/tools/__tests__/deltaTestUtils.js +2 -2
- package/dist/tools/accountTools.d.ts +9 -8
- package/dist/tools/accountTools.js +47 -47
- package/dist/tools/adapters.d.ts +13 -8
- package/dist/tools/adapters.js +21 -11
- package/dist/tools/budgetTools.d.ts +8 -7
- package/dist/tools/budgetTools.js +22 -22
- package/dist/tools/categoryTools.d.ts +9 -8
- package/dist/tools/categoryTools.js +68 -59
- package/dist/tools/compareTransactions/formatter.d.ts +3 -3
- package/dist/tools/compareTransactions/formatter.js +9 -9
- package/dist/tools/compareTransactions/index.d.ts +6 -6
- package/dist/tools/compareTransactions/index.js +58 -43
- package/dist/tools/compareTransactions/matcher.d.ts +1 -1
- package/dist/tools/compareTransactions/matcher.js +28 -15
- package/dist/tools/compareTransactions/parser.d.ts +2 -2
- package/dist/tools/compareTransactions/parser.js +144 -138
- package/dist/tools/compareTransactions/types.d.ts +4 -4
- package/dist/tools/compareTransactions.d.ts +1 -1
- package/dist/tools/compareTransactions.js +1 -1
- package/dist/tools/deltaFetcher.d.ts +2 -2
- package/dist/tools/deltaFetcher.js +16 -15
- package/dist/tools/deltaSupport.d.ts +4 -4
- package/dist/tools/deltaSupport.js +35 -41
- package/dist/tools/exportTransactions.d.ts +5 -4
- package/dist/tools/exportTransactions.js +61 -59
- package/dist/tools/monthTools.d.ts +7 -6
- package/dist/tools/monthTools.js +31 -29
- package/dist/tools/payeeTools.d.ts +7 -6
- package/dist/tools/payeeTools.js +28 -28
- package/dist/tools/reconcileAdapter.d.ts +2 -2
- package/dist/tools/reconcileAdapter.js +19 -12
- package/dist/tools/reconciliation/analyzer.d.ts +4 -4
- package/dist/tools/reconciliation/analyzer.js +73 -59
- package/dist/tools/reconciliation/csvParser.d.ts +3 -3
- package/dist/tools/reconciliation/csvParser.js +128 -104
- package/dist/tools/reconciliation/executor.d.ts +4 -4
- package/dist/tools/reconciliation/executor.js +148 -109
- package/dist/tools/reconciliation/index.d.ts +10 -10
- package/dist/tools/reconciliation/index.js +96 -83
- package/dist/tools/reconciliation/matcher.d.ts +3 -3
- package/dist/tools/reconciliation/matcher.js +17 -16
- package/dist/tools/reconciliation/payeeNormalizer.js +19 -8
- package/dist/tools/reconciliation/recommendationEngine.d.ts +1 -1
- package/dist/tools/reconciliation/recommendationEngine.js +40 -40
- package/dist/tools/reconciliation/reportFormatter.d.ts +2 -2
- package/dist/tools/reconciliation/reportFormatter.js +59 -58
- package/dist/tools/reconciliation/signDetector.d.ts +1 -1
- package/dist/tools/reconciliation/types.d.ts +16 -16
- package/dist/tools/reconciliation/ynabAdapter.d.ts +2 -2
- package/dist/tools/schemas/common.d.ts +1 -1
- package/dist/tools/schemas/common.js +1 -1
- package/dist/tools/schemas/outputs/accountOutputs.d.ts +1 -1
- package/dist/tools/schemas/outputs/accountOutputs.js +24 -18
- package/dist/tools/schemas/outputs/budgetOutputs.d.ts +1 -1
- package/dist/tools/schemas/outputs/budgetOutputs.js +14 -11
- package/dist/tools/schemas/outputs/categoryOutputs.d.ts +1 -1
- package/dist/tools/schemas/outputs/categoryOutputs.js +49 -29
- package/dist/tools/schemas/outputs/comparisonOutputs.d.ts +1 -1
- package/dist/tools/schemas/outputs/comparisonOutputs.js +12 -12
- package/dist/tools/schemas/outputs/index.d.ts +14 -14
- package/dist/tools/schemas/outputs/index.js +14 -14
- package/dist/tools/schemas/outputs/monthOutputs.d.ts +1 -1
- package/dist/tools/schemas/outputs/monthOutputs.js +56 -41
- package/dist/tools/schemas/outputs/payeeOutputs.d.ts +1 -1
- package/dist/tools/schemas/outputs/payeeOutputs.js +10 -10
- package/dist/tools/schemas/outputs/reconciliationOutputs.d.ts +2 -2
- package/dist/tools/schemas/outputs/reconciliationOutputs.js +45 -45
- package/dist/tools/schemas/outputs/transactionMutationOutputs.d.ts +1 -1
- package/dist/tools/schemas/outputs/transactionMutationOutputs.js +28 -22
- package/dist/tools/schemas/outputs/transactionOutputs.d.ts +1 -1
- package/dist/tools/schemas/outputs/transactionOutputs.js +43 -35
- package/dist/tools/schemas/outputs/utilityOutputs.d.ts +1 -1
- package/dist/tools/schemas/outputs/utilityOutputs.js +5 -3
- package/dist/tools/schemas/shared/commonOutputs.d.ts +1 -1
- package/dist/tools/schemas/shared/commonOutputs.js +15 -9
- package/dist/tools/transactionReadTools.d.ts +11 -0
- package/dist/tools/transactionReadTools.js +202 -0
- package/dist/tools/transactionSchemas.d.ts +7 -7
- package/dist/tools/transactionSchemas.js +77 -57
- package/dist/tools/transactionTools.d.ts +6 -24
- package/dist/tools/transactionTools.js +7 -1499
- package/dist/tools/transactionUtils.d.ts +6 -6
- package/dist/tools/transactionUtils.js +78 -63
- package/dist/tools/transactionWriteTools.d.ts +20 -0
- package/dist/tools/transactionWriteTools.js +1342 -0
- package/dist/tools/utilityTools.d.ts +5 -4
- package/dist/tools/utilityTools.js +11 -11
- package/dist/types/index.d.ts +7 -7
- package/dist/types/index.js +6 -6
- package/dist/types/reconciliation.d.ts +1 -1
- package/dist/types/toolRegistration.d.ts +14 -12
- package/dist/utils/amountUtils.js +1 -1
- package/dist/utils/dateUtils.js +4 -4
- package/dist/utils/errors.d.ts +3 -3
- package/dist/utils/errors.js +4 -4
- package/dist/utils/money.d.ts +2 -2
- package/dist/utils/money.js +8 -8
- package/dist/utils/validationError.d.ts +1 -1
- package/dist/utils/validationError.js +1 -1
- package/docs/assets/examples/reconciliation-with-recommendations.json +66 -66
- package/docs/assets/schemas/reconciliation-v2.json +360 -336
- package/esbuild.config.mjs +53 -50
- package/meta.json +12548 -12548
- package/package.json +98 -111
- package/scripts/analyze-bundle.mjs +33 -30
- package/scripts/create-pr-description.js +169 -120
- package/scripts/run-all-tests.js +178 -169
- package/scripts/run-domain-integration-tests.js +28 -18
- package/scripts/run-generate-mcpb.js +19 -17
- package/scripts/run-throttled-integration-tests.js +92 -83
- package/scripts/test-delta-params.mjs +149 -120
- package/scripts/test-recommendations.ts +36 -32
- package/scripts/tmpTransaction.ts +80 -43
- package/scripts/validate-env.js +98 -91
- package/scripts/verify-build.js +78 -76
- package/src/__tests__/comprehensive.integration.test.ts +1281 -1154
- package/src/__tests__/performance.test.ts +723 -671
- package/src/__tests__/setup.ts +442 -395
- package/src/__tests__/smoke.e2e.test.ts +41 -39
- package/src/__tests__/testRunner.ts +314 -295
- package/src/__tests__/testUtils.ts +456 -364
- package/src/__tests__/tools/reconciliation/csvParser.integration.test.ts +109 -107
- package/src/__tests__/tools/reconciliation/real-world.integration.test.ts +41 -41
- package/src/index.ts +68 -59
- package/src/server/CLAUDE.md +480 -0
- package/src/server/YNABMCPServer.ts +821 -794
- package/src/server/__tests__/YNABMCPServer.integration.test.ts +929 -893
- package/src/server/__tests__/YNABMCPServer.test.ts +903 -899
- package/src/server/__tests__/budgetResolver.test.ts +466 -423
- package/src/server/__tests__/cacheManager.test.ts +891 -874
- package/src/server/__tests__/completions.integration.test.ts +115 -106
- package/src/server/__tests__/completions.test.ts +334 -313
- package/src/server/__tests__/config.test.ts +98 -86
- package/src/server/__tests__/deltaCache.merge.test.ts +774 -703
- package/src/server/__tests__/deltaCache.swr.test.ts +198 -153
- package/src/server/__tests__/deltaCache.test.ts +946 -759
- package/src/server/__tests__/diagnostics.test.ts +825 -792
- package/src/server/__tests__/errorHandler.integration.test.ts +512 -462
- package/src/server/__tests__/errorHandler.test.ts +402 -397
- package/src/server/__tests__/prompts.test.ts +424 -347
- package/src/server/__tests__/rateLimiter.test.ts +313 -309
- package/src/server/__tests__/requestLogger.test.ts +443 -403
- package/src/server/__tests__/resources.template.test.ts +196 -185
- package/src/server/__tests__/resources.test.ts +294 -288
- package/src/server/__tests__/security.integration.test.ts +487 -421
- package/src/server/__tests__/securityMiddleware.test.ts +519 -444
- package/src/server/__tests__/server-startup.integration.test.ts +509 -490
- package/src/server/__tests__/serverKnowledgeStore.test.ts +174 -173
- package/src/server/__tests__/toolRegistration.test.ts +239 -210
- package/src/server/__tests__/toolRegistry.test.ts +907 -845
- package/src/server/budgetResolver.ts +221 -181
- package/src/server/cacheKeys.ts +6 -6
- package/src/server/cacheManager.ts +498 -484
- package/src/server/completions.ts +267 -243
- package/src/server/config.ts +35 -14
- package/src/server/deltaCache.merge.ts +146 -128
- package/src/server/deltaCache.ts +352 -309
- package/src/server/diagnostics.ts +257 -242
- package/src/server/errorHandler.ts +747 -744
- package/src/server/prompts.ts +181 -176
- package/src/server/rateLimiter.ts +131 -129
- package/src/server/requestLogger.ts +350 -322
- package/src/server/resources.ts +442 -374
- package/src/server/responseFormatter.ts +41 -37
- package/src/server/securityMiddleware.ts +223 -205
- package/src/server/serverKnowledgeStore.ts +67 -67
- package/src/server/toolRegistry.ts +508 -474
- package/src/tools/CLAUDE.md +604 -0
- package/src/tools/__tests__/accountTools.delta.integration.test.ts +128 -111
- package/src/tools/__tests__/accountTools.integration.test.ts +129 -111
- package/src/tools/__tests__/accountTools.test.ts +685 -638
- package/src/tools/__tests__/adapters.test.ts +142 -108
- package/src/tools/__tests__/budgetTools.delta.integration.test.ts +73 -73
- package/src/tools/__tests__/budgetTools.integration.test.ts +132 -124
- package/src/tools/__tests__/budgetTools.test.ts +442 -413
- package/src/tools/__tests__/categoryTools.delta.integration.test.ts +76 -68
- package/src/tools/__tests__/categoryTools.integration.test.ts +314 -288
- package/src/tools/__tests__/categoryTools.test.ts +656 -625
- package/src/tools/__tests__/compareTransactions/formatter.test.ts +535 -462
- package/src/tools/__tests__/compareTransactions/index.test.ts +378 -358
- package/src/tools/__tests__/compareTransactions/matcher.test.ts +497 -398
- package/src/tools/__tests__/compareTransactions/parser.test.ts +765 -747
- package/src/tools/__tests__/compareTransactions.test.ts +352 -332
- package/src/tools/__tests__/compareTransactions.window.test.ts +150 -146
- package/src/tools/__tests__/deltaFetcher.scheduled.integration.test.ts +69 -65
- package/src/tools/__tests__/deltaFetcher.test.ts +325 -265
- package/src/tools/__tests__/deltaSupport.test.ts +211 -184
- package/src/tools/__tests__/deltaTestUtils.ts +37 -33
- package/src/tools/__tests__/exportTransactions.test.ts +205 -200
- package/src/tools/__tests__/monthTools.delta.integration.test.ts +68 -68
- package/src/tools/__tests__/monthTools.integration.test.ts +178 -166
- package/src/tools/__tests__/monthTools.test.ts +561 -512
- package/src/tools/__tests__/payeeTools.delta.integration.test.ts +68 -68
- package/src/tools/__tests__/payeeTools.integration.test.ts +158 -142
- package/src/tools/__tests__/payeeTools.test.ts +486 -434
- package/src/tools/__tests__/transactionSchemas.test.ts +1202 -1186
- package/src/tools/__tests__/transactionTools.integration.test.ts +875 -825
- package/src/tools/__tests__/transactionTools.test.ts +4923 -4366
- package/src/tools/__tests__/transactionUtils.test.ts +1004 -977
- package/src/tools/__tests__/utilityTools.integration.test.ts +32 -32
- package/src/tools/__tests__/utilityTools.test.ts +68 -58
- package/src/tools/accountTools.ts +293 -271
- package/src/tools/adapters.ts +120 -63
- package/src/tools/budgetTools.ts +121 -116
- package/src/tools/categoryTools.ts +379 -339
- package/src/tools/compareTransactions/formatter.ts +131 -119
- package/src/tools/compareTransactions/index.ts +249 -214
- package/src/tools/compareTransactions/matcher.ts +259 -209
- package/src/tools/compareTransactions/parser.ts +517 -487
- package/src/tools/compareTransactions/types.ts +38 -38
- package/src/tools/compareTransactions.ts +1 -1
- package/src/tools/deltaFetcher.ts +281 -260
- package/src/tools/deltaSupport.ts +264 -259
- package/src/tools/exportTransactions.ts +230 -218
- package/src/tools/monthTools.ts +180 -165
- package/src/tools/payeeTools.ts +152 -140
- package/src/tools/reconcileAdapter.ts +297 -252
- package/src/tools/reconciliation/CLAUDE.md +506 -0
- package/src/tools/reconciliation/__tests__/adapter.causes.test.ts +133 -124
- package/src/tools/reconciliation/__tests__/adapter.test.ts +249 -230
- package/src/tools/reconciliation/__tests__/analyzer.test.ts +408 -400
- package/src/tools/reconciliation/__tests__/csvParser.test.ts +71 -69
- package/src/tools/reconciliation/__tests__/executor.integration.test.ts +348 -323
- package/src/tools/reconciliation/__tests__/executor.progress.test.ts +503 -457
- package/src/tools/reconciliation/__tests__/executor.test.ts +898 -831
- package/src/tools/reconciliation/__tests__/matcher.test.ts +667 -663
- package/src/tools/reconciliation/__tests__/payeeNormalizer.test.ts +296 -276
- package/src/tools/reconciliation/__tests__/recommendationEngine.integration.test.ts +692 -624
- package/src/tools/reconciliation/__tests__/recommendationEngine.test.ts +1008 -989
- package/src/tools/reconciliation/__tests__/reconciliation.delta.integration.test.ts +187 -146
- package/src/tools/reconciliation/__tests__/reportFormatter.test.ts +583 -533
- package/src/tools/reconciliation/__tests__/scenarios/adapterCurrency.scenario.test.ts +75 -74
- package/src/tools/reconciliation/__tests__/scenarios/extremes.scenario.test.ts +70 -62
- package/src/tools/reconciliation/__tests__/scenarios/repeatAmount.scenario.test.ts +102 -88
- package/src/tools/reconciliation/__tests__/schemaUrl.test.ts +56 -55
- package/src/tools/reconciliation/__tests__/signDetector.test.ts +209 -206
- package/src/tools/reconciliation/__tests__/ynabAdapter.test.ts +66 -60
- package/src/tools/reconciliation/analyzer.ts +564 -504
- package/src/tools/reconciliation/csvParser.ts +656 -609
- package/src/tools/reconciliation/executor.ts +1290 -1128
- package/src/tools/reconciliation/index.ts +580 -528
- package/src/tools/reconciliation/matcher.ts +256 -240
- package/src/tools/reconciliation/payeeNormalizer.ts +92 -78
- package/src/tools/reconciliation/recommendationEngine.ts +357 -345
- package/src/tools/reconciliation/reportFormatter.ts +343 -307
- package/src/tools/reconciliation/signDetector.ts +89 -83
- package/src/tools/reconciliation/types.ts +164 -159
- package/src/tools/reconciliation/ynabAdapter.ts +17 -15
- package/src/tools/schemas/CLAUDE.md +546 -0
- package/src/tools/schemas/common.ts +1 -1
- package/src/tools/schemas/outputs/__tests__/accountOutputs.test.ts +410 -409
- package/src/tools/schemas/outputs/__tests__/budgetOutputs.test.ts +305 -299
- package/src/tools/schemas/outputs/__tests__/categoryOutputs.test.ts +431 -430
- package/src/tools/schemas/outputs/__tests__/comparisonOutputs.test.ts +510 -495
- package/src/tools/schemas/outputs/__tests__/dateValidation.test.ts +179 -153
- package/src/tools/schemas/outputs/__tests__/discrepancyDirection.test.ts +293 -254
- package/src/tools/schemas/outputs/__tests__/monthOutputs.test.ts +457 -457
- package/src/tools/schemas/outputs/__tests__/payeeOutputs.test.ts +362 -356
- package/src/tools/schemas/outputs/__tests__/reconciliationOutputs.test.ts +402 -399
- package/src/tools/schemas/outputs/__tests__/transactionMutationSchemas.test.ts +225 -211
- package/src/tools/schemas/outputs/__tests__/transactionOutputs.test.ts +457 -454
- package/src/tools/schemas/outputs/__tests__/utilityOutputs.test.ts +316 -315
- package/src/tools/schemas/outputs/accountOutputs.ts +40 -34
- package/src/tools/schemas/outputs/budgetOutputs.ts +24 -19
- package/src/tools/schemas/outputs/categoryOutputs.ts +76 -56
- package/src/tools/schemas/outputs/comparisonOutputs.ts +192 -169
- package/src/tools/schemas/outputs/index.ts +163 -163
- package/src/tools/schemas/outputs/monthOutputs.ts +95 -80
- package/src/tools/schemas/outputs/payeeOutputs.ts +18 -18
- package/src/tools/schemas/outputs/reconciliationOutputs.ts +386 -373
- package/src/tools/schemas/outputs/transactionMutationOutputs.ts +259 -231
- package/src/tools/schemas/outputs/transactionOutputs.ts +81 -71
- package/src/tools/schemas/outputs/utilityOutputs.ts +90 -84
- package/src/tools/schemas/shared/commonOutputs.ts +27 -19
- package/src/tools/toolCategories.ts +114 -114
- package/src/tools/transactionReadTools.ts +327 -0
- package/src/tools/transactionSchemas.ts +322 -291
- package/src/tools/transactionTools.ts +84 -2246
- package/src/tools/transactionUtils.ts +507 -422
- package/src/tools/transactionWriteTools.ts +2110 -0
- package/src/tools/utilityTools.ts +46 -41
- package/src/types/CLAUDE.md +477 -0
- package/src/types/__tests__/index.test.ts +51 -51
- package/src/types/index.ts +43 -39
- package/src/types/integration-tests.d.ts +26 -26
- package/src/types/reconciliation.ts +29 -29
- package/src/types/toolAnnotations.ts +30 -30
- package/src/types/toolRegistration.ts +43 -32
- package/src/utils/CLAUDE.md +508 -0
- package/src/utils/__tests__/dateUtils.test.ts +174 -168
- package/src/utils/__tests__/money.test.ts +193 -187
- package/src/utils/amountUtils.ts +5 -5
- package/src/utils/baseError.ts +5 -5
- package/src/utils/dateUtils.ts +29 -26
- package/src/utils/errors.ts +14 -14
- package/src/utils/money.ts +66 -52
- package/src/utils/validationError.ts +1 -1
- package/tsconfig.json +29 -29
- package/tsconfig.prod.json +16 -16
- package/vitest-reporters/split-json-reporter.ts +247 -204
- package/vitest.config.ts +99 -95
- package/.prettierignore +0 -10
- package/.prettierrc.json +0 -10
- package/eslint.config.js +0 -49
|
@@ -89,8 +89,8 @@
|
|
|
89
89
|
* ```
|
|
90
90
|
*/
|
|
91
91
|
|
|
92
|
-
import { z } from
|
|
93
|
-
import { CacheMetadataSchema } from
|
|
92
|
+
import { z } from "zod/v4";
|
|
93
|
+
import { CacheMetadataSchema } from "../shared/commonOutputs.js";
|
|
94
94
|
|
|
95
95
|
/**
|
|
96
96
|
* Schema for a complete transaction object.
|
|
@@ -98,59 +98,65 @@ import { CacheMetadataSchema } from '../shared/commonOutputs.js';
|
|
|
98
98
|
* Represents full transaction data with amounts in dollars (converted from YNAB milliunits).
|
|
99
99
|
*/
|
|
100
100
|
export const TransactionSchema = z.object({
|
|
101
|
-
|
|
102
|
-
|
|
101
|
+
/** Unique identifier for the transaction */
|
|
102
|
+
id: z.string().describe("Transaction ID"),
|
|
103
103
|
|
|
104
|
-
|
|
105
|
-
|
|
104
|
+
/** Transaction date (YYYY-MM-DD format) */
|
|
105
|
+
date: z.string().describe("Transaction date"),
|
|
106
106
|
|
|
107
|
-
|
|
108
|
-
|
|
107
|
+
/** Transaction amount in dollars (negative for outflows, positive for inflows) */
|
|
108
|
+
amount: z.number().describe("Transaction amount in dollars"),
|
|
109
109
|
|
|
110
|
-
|
|
111
|
-
|
|
110
|
+
/** Optional transaction memo */
|
|
111
|
+
memo: z.string().optional().describe("Transaction memo"),
|
|
112
112
|
|
|
113
|
-
|
|
114
|
-
|
|
113
|
+
/** Cleared status (uncleared, cleared, reconciled) */
|
|
114
|
+
cleared: z.string().describe("Cleared status"),
|
|
115
115
|
|
|
116
|
-
|
|
117
|
-
|
|
116
|
+
/** Whether transaction is approved */
|
|
117
|
+
approved: z.boolean().describe("Approved flag"),
|
|
118
118
|
|
|
119
|
-
|
|
120
|
-
|
|
119
|
+
/** Optional flag color */
|
|
120
|
+
flag_color: z.string().optional().describe("Flag color"),
|
|
121
121
|
|
|
122
|
-
|
|
123
|
-
|
|
122
|
+
/** Account ID for this transaction */
|
|
123
|
+
account_id: z.string().describe("Account ID"),
|
|
124
124
|
|
|
125
|
-
|
|
126
|
-
|
|
125
|
+
/** Optional payee ID */
|
|
126
|
+
payee_id: z.string().nullish().describe("Payee ID"),
|
|
127
127
|
|
|
128
|
-
|
|
129
|
-
|
|
128
|
+
/** Optional category ID */
|
|
129
|
+
category_id: z.string().nullish().describe("Category ID"),
|
|
130
130
|
|
|
131
|
-
|
|
132
|
-
|
|
131
|
+
/** Optional transfer account ID (for transfer transactions) */
|
|
132
|
+
transfer_account_id: z.string().nullish().describe("Transfer account ID"),
|
|
133
133
|
|
|
134
|
-
|
|
135
|
-
|
|
134
|
+
/** Optional transfer transaction ID (for transfer transactions) */
|
|
135
|
+
transfer_transaction_id: z
|
|
136
|
+
.string()
|
|
137
|
+
.nullish()
|
|
138
|
+
.describe("Transfer transaction ID"),
|
|
136
139
|
|
|
137
|
-
|
|
138
|
-
|
|
140
|
+
/** Optional matched transaction ID (for imported transactions) */
|
|
141
|
+
matched_transaction_id: z
|
|
142
|
+
.string()
|
|
143
|
+
.nullish()
|
|
144
|
+
.describe("Matched transaction ID"),
|
|
139
145
|
|
|
140
|
-
|
|
141
|
-
|
|
146
|
+
/** Optional import ID */
|
|
147
|
+
import_id: z.string().optional().describe("Import ID"),
|
|
142
148
|
|
|
143
|
-
|
|
144
|
-
|
|
149
|
+
/** Whether transaction is deleted */
|
|
150
|
+
deleted: z.boolean().describe("Deleted flag"),
|
|
145
151
|
|
|
146
|
-
|
|
147
|
-
|
|
152
|
+
/** Account name (enriched field, optional) */
|
|
153
|
+
account_name: z.string().optional().describe("Account name"),
|
|
148
154
|
|
|
149
|
-
|
|
150
|
-
|
|
155
|
+
/** Payee name (enriched field, optional) */
|
|
156
|
+
payee_name: z.string().optional().describe("Payee name"),
|
|
151
157
|
|
|
152
|
-
|
|
153
|
-
|
|
158
|
+
/** Category name (enriched field, optional) */
|
|
159
|
+
category_name: z.string().optional().describe("Category name"),
|
|
154
160
|
});
|
|
155
161
|
|
|
156
162
|
/**
|
|
@@ -159,23 +165,23 @@ export const TransactionSchema = z.object({
|
|
|
159
165
|
* Subset of transaction fields shown in preview mode for large result sets.
|
|
160
166
|
*/
|
|
161
167
|
export const TransactionPreviewSchema = z.object({
|
|
162
|
-
|
|
163
|
-
|
|
168
|
+
/** Unique identifier for the transaction */
|
|
169
|
+
id: z.string().describe("Transaction ID"),
|
|
164
170
|
|
|
165
|
-
|
|
166
|
-
|
|
171
|
+
/** Transaction date (YYYY-MM-DD format) */
|
|
172
|
+
date: z.string().describe("Transaction date"),
|
|
167
173
|
|
|
168
|
-
|
|
169
|
-
|
|
174
|
+
/** Transaction amount in dollars */
|
|
175
|
+
amount: z.number().describe("Transaction amount in dollars"),
|
|
170
176
|
|
|
171
|
-
|
|
172
|
-
|
|
177
|
+
/** Optional transaction memo */
|
|
178
|
+
memo: z.string().optional().describe("Transaction memo"),
|
|
173
179
|
|
|
174
|
-
|
|
175
|
-
|
|
180
|
+
/** Payee name (enriched field, optional) */
|
|
181
|
+
payee_name: z.string().optional().describe("Payee name"),
|
|
176
182
|
|
|
177
|
-
|
|
178
|
-
|
|
183
|
+
/** Category name (enriched field, optional) */
|
|
184
|
+
category_name: z.string().optional().describe("Category name"),
|
|
179
185
|
});
|
|
180
186
|
|
|
181
187
|
/**
|
|
@@ -184,11 +190,11 @@ export const TransactionPreviewSchema = z.object({
|
|
|
184
190
|
* Returns all transactions when count <= 100.
|
|
185
191
|
*/
|
|
186
192
|
const ListTransactionsNormalSchema = CacheMetadataSchema.extend({
|
|
187
|
-
|
|
188
|
-
|
|
193
|
+
/** Total number of transactions */
|
|
194
|
+
total_count: z.number().int().describe("Total transaction count"),
|
|
189
195
|
|
|
190
|
-
|
|
191
|
-
|
|
196
|
+
/** Array of complete transaction objects */
|
|
197
|
+
transactions: z.array(TransactionSchema).describe("List of transactions"),
|
|
192
198
|
});
|
|
193
199
|
|
|
194
200
|
/**
|
|
@@ -197,23 +203,25 @@ const ListTransactionsNormalSchema = CacheMetadataSchema.extend({
|
|
|
197
203
|
* Returns a preview when count > 100 to avoid overwhelming responses.
|
|
198
204
|
*/
|
|
199
205
|
const ListTransactionsPreviewSchema = z.object({
|
|
200
|
-
|
|
201
|
-
|
|
206
|
+
/** Message explaining large result set */
|
|
207
|
+
message: z.string().describe("Large result set message"),
|
|
202
208
|
|
|
203
|
-
|
|
204
|
-
|
|
209
|
+
/** Suggestion to narrow results */
|
|
210
|
+
suggestion: z.string().describe("Suggestion to narrow results"),
|
|
205
211
|
|
|
206
|
-
|
|
207
|
-
|
|
212
|
+
/** Human-readable summary of transactions shown in preview (e.g., "First 50 transactions:") */
|
|
213
|
+
showing: z.string().describe("Human-readable summary of transactions shown"),
|
|
208
214
|
|
|
209
|
-
|
|
210
|
-
|
|
215
|
+
/** Total number of transactions */
|
|
216
|
+
total_count: z.number().int().describe("Total transaction count"),
|
|
211
217
|
|
|
212
|
-
|
|
213
|
-
|
|
218
|
+
/** Estimated response size in KB if all transactions returned */
|
|
219
|
+
estimated_size_kb: z.number().describe("Estimated response size in KB"),
|
|
214
220
|
|
|
215
|
-
|
|
216
|
-
|
|
221
|
+
/** Array of preview transaction objects */
|
|
222
|
+
preview_transactions: z
|
|
223
|
+
.array(TransactionPreviewSchema)
|
|
224
|
+
.describe("Preview transactions"),
|
|
217
225
|
});
|
|
218
226
|
|
|
219
227
|
/**
|
|
@@ -222,8 +230,8 @@ const ListTransactionsPreviewSchema = z.object({
|
|
|
222
230
|
* Discriminated union supporting both normal and preview response modes.
|
|
223
231
|
*/
|
|
224
232
|
export const ListTransactionsOutputSchema = z.union([
|
|
225
|
-
|
|
226
|
-
|
|
233
|
+
ListTransactionsNormalSchema,
|
|
234
|
+
ListTransactionsPreviewSchema,
|
|
227
235
|
]);
|
|
228
236
|
|
|
229
237
|
/**
|
|
@@ -232,12 +240,14 @@ export const ListTransactionsOutputSchema = z.union([
|
|
|
232
240
|
* Returns a single transaction by ID with cache metadata.
|
|
233
241
|
*/
|
|
234
242
|
export const GetTransactionOutputSchema = CacheMetadataSchema.extend({
|
|
235
|
-
|
|
236
|
-
|
|
243
|
+
/** Single transaction object */
|
|
244
|
+
transaction: TransactionSchema.describe("Transaction details"),
|
|
237
245
|
});
|
|
238
246
|
|
|
239
247
|
// Export inferred TypeScript types
|
|
240
248
|
export type Transaction = z.infer<typeof TransactionSchema>;
|
|
241
249
|
export type TransactionPreview = z.infer<typeof TransactionPreviewSchema>;
|
|
242
|
-
export type ListTransactionsOutput = z.infer<
|
|
250
|
+
export type ListTransactionsOutput = z.infer<
|
|
251
|
+
typeof ListTransactionsOutputSchema
|
|
252
|
+
>;
|
|
243
253
|
export type GetTransactionOutput = z.infer<typeof GetTransactionOutputSchema>;
|
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
* exact response shape details.
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
|
-
import { z } from
|
|
14
|
-
import { SuccessResponseSchema } from
|
|
13
|
+
import { z } from "zod/v4";
|
|
14
|
+
import { SuccessResponseSchema } from "../shared/commonOutputs.js";
|
|
15
15
|
|
|
16
16
|
// ============================================================================
|
|
17
17
|
// GET USER OUTPUT
|
|
@@ -23,7 +23,7 @@ import { SuccessResponseSchema } from '../shared/commonOutputs.js';
|
|
|
23
23
|
* Represents the authenticated user's information from YNAB API.
|
|
24
24
|
*/
|
|
25
25
|
export const UserSchema = z.object({
|
|
26
|
-
|
|
26
|
+
id: z.string(),
|
|
27
27
|
});
|
|
28
28
|
|
|
29
29
|
/**
|
|
@@ -41,7 +41,7 @@ export const UserSchema = z.object({
|
|
|
41
41
|
* ```
|
|
42
42
|
*/
|
|
43
43
|
export const GetUserOutputSchema = z.object({
|
|
44
|
-
|
|
44
|
+
user: UserSchema,
|
|
45
45
|
});
|
|
46
46
|
|
|
47
47
|
export type GetUserOutput = z.infer<typeof GetUserOutputSchema>;
|
|
@@ -67,12 +67,14 @@ export type GetUserOutput = z.infer<typeof GetUserOutputSchema>;
|
|
|
67
67
|
* ```
|
|
68
68
|
*/
|
|
69
69
|
export const GetDefaultBudgetOutputSchema = z.object({
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
70
|
+
default_budget_id: z.string().nullable(),
|
|
71
|
+
has_default: z.boolean(),
|
|
72
|
+
message: z.string(),
|
|
73
73
|
});
|
|
74
74
|
|
|
75
|
-
export type GetDefaultBudgetOutput = z.infer<
|
|
75
|
+
export type GetDefaultBudgetOutput = z.infer<
|
|
76
|
+
typeof GetDefaultBudgetOutputSchema
|
|
77
|
+
>;
|
|
76
78
|
|
|
77
79
|
// ============================================================================
|
|
78
80
|
// SET DEFAULT BUDGET OUTPUT
|
|
@@ -96,11 +98,13 @@ export type GetDefaultBudgetOutput = z.infer<typeof GetDefaultBudgetOutputSchema
|
|
|
96
98
|
* ```
|
|
97
99
|
*/
|
|
98
100
|
export const SetDefaultBudgetOutputSchema = SuccessResponseSchema.extend({
|
|
99
|
-
|
|
100
|
-
|
|
101
|
+
default_budget_id: z.string(),
|
|
102
|
+
cache_warm_started: z.boolean(),
|
|
101
103
|
});
|
|
102
104
|
|
|
103
|
-
export type SetDefaultBudgetOutput = z.infer<
|
|
105
|
+
export type SetDefaultBudgetOutput = z.infer<
|
|
106
|
+
typeof SetDefaultBudgetOutputSchema
|
|
107
|
+
>;
|
|
104
108
|
|
|
105
109
|
// ============================================================================
|
|
106
110
|
// CLEAR CACHE OUTPUT
|
|
@@ -120,7 +124,9 @@ export type SetDefaultBudgetOutput = z.infer<typeof SetDefaultBudgetOutputSchema
|
|
|
120
124
|
* };
|
|
121
125
|
* ```
|
|
122
126
|
*/
|
|
123
|
-
export const ClearCacheOutputSchema = SuccessResponseSchema.pick({
|
|
127
|
+
export const ClearCacheOutputSchema = SuccessResponseSchema.pick({
|
|
128
|
+
success: true,
|
|
129
|
+
});
|
|
124
130
|
|
|
125
131
|
export type ClearCacheOutput = z.infer<typeof ClearCacheOutputSchema>;
|
|
126
132
|
|
|
@@ -145,10 +151,10 @@ export type ClearCacheOutput = z.infer<typeof ClearCacheOutputSchema>;
|
|
|
145
151
|
* ```
|
|
146
152
|
*/
|
|
147
153
|
export const SetOutputFormatOutputSchema = SuccessResponseSchema.extend({
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
154
|
+
options: z.object({
|
|
155
|
+
defaultMinify: z.boolean().optional(),
|
|
156
|
+
prettySpaces: z.number().optional(),
|
|
157
|
+
}),
|
|
152
158
|
});
|
|
153
159
|
|
|
154
160
|
export type SetOutputFormatOutput = z.infer<typeof SetOutputFormatOutputSchema>;
|
|
@@ -163,15 +169,15 @@ export type SetOutputFormatOutput = z.infer<typeof SetOutputFormatOutputSchema>;
|
|
|
163
169
|
* Contains runtime information about the MCP server process.
|
|
164
170
|
*/
|
|
165
171
|
export const ServerInfoSchema = z.object({
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
172
|
+
name: z.string(),
|
|
173
|
+
version: z.string(),
|
|
174
|
+
node_version: z.string(),
|
|
175
|
+
platform: z.string(),
|
|
176
|
+
arch: z.string(),
|
|
177
|
+
pid: z.number(),
|
|
178
|
+
uptime_ms: z.number(),
|
|
179
|
+
uptime_readable: z.string(),
|
|
180
|
+
env: z.record(z.string(), z.unknown()),
|
|
175
181
|
});
|
|
176
182
|
|
|
177
183
|
/**
|
|
@@ -180,12 +186,12 @@ export const ServerInfoSchema = z.object({
|
|
|
180
186
|
* Reports memory consumption of the MCP server process.
|
|
181
187
|
*/
|
|
182
188
|
export const MemoryInfoSchema = z.object({
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
+
rss_mb: z.number(),
|
|
190
|
+
heap_used_mb: z.number(),
|
|
191
|
+
heap_total_mb: z.number(),
|
|
192
|
+
external_mb: z.number(),
|
|
193
|
+
array_buffers_mb: z.number(),
|
|
194
|
+
description: z.record(z.string(), z.string()),
|
|
189
195
|
});
|
|
190
196
|
|
|
191
197
|
/**
|
|
@@ -194,11 +200,11 @@ export const MemoryInfoSchema = z.object({
|
|
|
194
200
|
* Shows environment variable configuration status.
|
|
195
201
|
*/
|
|
196
202
|
export const EnvironmentInfoSchema = z.object({
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
203
|
+
token_present: z.boolean(),
|
|
204
|
+
token_length: z.number(),
|
|
205
|
+
token_preview: z.string().nullable(),
|
|
206
|
+
ynab_env_keys_present: z.array(z.string()),
|
|
207
|
+
working_directory: z.string(),
|
|
202
208
|
});
|
|
203
209
|
|
|
204
210
|
/**
|
|
@@ -207,17 +213,17 @@ export const EnvironmentInfoSchema = z.object({
|
|
|
207
213
|
* Reports cache status and performance metrics.
|
|
208
214
|
*/
|
|
209
215
|
export const CacheInfoSchema = z.object({
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
216
|
+
entries: z.number(),
|
|
217
|
+
estimated_size_kb: z.number(),
|
|
218
|
+
keys: z.array(z.string()),
|
|
219
|
+
// Optional performance metrics
|
|
220
|
+
hits: z.number().optional(),
|
|
221
|
+
misses: z.number().optional(),
|
|
222
|
+
evictions: z.number().optional(),
|
|
223
|
+
lastCleanup: z.string().nullable().optional(),
|
|
224
|
+
maxEntries: z.number().optional(),
|
|
225
|
+
hitRate: z.string().optional(),
|
|
226
|
+
performance_summary: z.string().optional(),
|
|
221
227
|
});
|
|
222
228
|
|
|
223
229
|
/**
|
|
@@ -226,15 +232,15 @@ export const CacheInfoSchema = z.object({
|
|
|
226
232
|
* Reports status of delta request feature and knowledge base.
|
|
227
233
|
*/
|
|
228
234
|
export const DeltaInfoSchema = z.object({
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
235
|
+
enabled: z.boolean(),
|
|
236
|
+
knowledge_entries: z.number(),
|
|
237
|
+
knowledge_stats: z.record(z.string(), z.unknown()),
|
|
238
|
+
feature_flag: z.string(),
|
|
239
|
+
delta_hits: z.number(),
|
|
240
|
+
delta_misses: z.number(),
|
|
241
|
+
delta_hit_rate: z.number(),
|
|
242
|
+
merge_operations: z.number(),
|
|
243
|
+
knowledge_gap_events: z.number(),
|
|
238
244
|
});
|
|
239
245
|
|
|
240
246
|
/**
|
|
@@ -266,12 +272,12 @@ export const DeltaInfoSchema = z.object({
|
|
|
266
272
|
* ```
|
|
267
273
|
*/
|
|
268
274
|
export const DiagnosticInfoOutputSchema = z.object({
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
+
timestamp: z.string(),
|
|
276
|
+
server: ServerInfoSchema.optional(),
|
|
277
|
+
memory: MemoryInfoSchema.optional(),
|
|
278
|
+
environment: EnvironmentInfoSchema.optional(),
|
|
279
|
+
cache: CacheInfoSchema.optional(),
|
|
280
|
+
delta: DeltaInfoSchema.optional(),
|
|
275
281
|
});
|
|
276
282
|
|
|
277
283
|
export type DiagnosticInfoOutput = z.infer<typeof DiagnosticInfoOutputSchema>;
|
|
@@ -286,7 +292,7 @@ export type DiagnosticInfoOutput = z.infer<typeof DiagnosticInfoOutputSchema>;
|
|
|
286
292
|
* Represents how dates are formatted in the YNAB budget.
|
|
287
293
|
*/
|
|
288
294
|
export const DateFormatSchema = z.object({
|
|
289
|
-
|
|
295
|
+
format: z.string(),
|
|
290
296
|
});
|
|
291
297
|
|
|
292
298
|
/**
|
|
@@ -295,14 +301,14 @@ export const DateFormatSchema = z.object({
|
|
|
295
301
|
* Represents how currency values are formatted in the YNAB budget.
|
|
296
302
|
*/
|
|
297
303
|
export const CurrencyFormatSchema = z.object({
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
304
|
+
iso_code: z.string(),
|
|
305
|
+
example_format: z.string(),
|
|
306
|
+
decimal_digits: z.number(),
|
|
307
|
+
decimal_separator: z.string().optional(),
|
|
308
|
+
symbol_first: z.boolean().optional(),
|
|
309
|
+
group_separator: z.string().optional(),
|
|
310
|
+
currency_symbol: z.string().optional(),
|
|
311
|
+
display_symbol: z.boolean().optional(),
|
|
306
312
|
});
|
|
307
313
|
|
|
308
314
|
/**
|
|
@@ -312,18 +318,18 @@ export const CurrencyFormatSchema = z.object({
|
|
|
312
318
|
* format settings and entity counts.
|
|
313
319
|
*/
|
|
314
320
|
export const BudgetDetailSchema = z.object({
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
321
|
+
id: z.string(),
|
|
322
|
+
name: z.string(),
|
|
323
|
+
last_modified_on: z.string().optional(),
|
|
324
|
+
first_month: z.string().optional(),
|
|
325
|
+
last_month: z.string().optional(),
|
|
326
|
+
date_format: DateFormatSchema.optional(),
|
|
327
|
+
currency_format: CurrencyFormatSchema.optional(),
|
|
328
|
+
accounts_count: z.number(),
|
|
329
|
+
categories_count: z.number(),
|
|
330
|
+
payees_count: z.number(),
|
|
331
|
+
months_count: z.number(),
|
|
332
|
+
message: z.string(),
|
|
327
333
|
});
|
|
328
334
|
|
|
329
335
|
/**
|
|
@@ -364,7 +370,7 @@ export const BudgetDetailSchema = z.object({
|
|
|
364
370
|
* ```
|
|
365
371
|
*/
|
|
366
372
|
export const GetBudgetOutputSchema = z.object({
|
|
367
|
-
|
|
373
|
+
budget: BudgetDetailSchema,
|
|
368
374
|
});
|
|
369
375
|
|
|
370
376
|
export type GetBudgetOutput = z.infer<typeof GetBudgetOutputSchema>;
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* - Success response patterns: src/server/YNABMCPServer.ts (lines 456-460)
|
|
13
13
|
*/
|
|
14
14
|
|
|
15
|
-
import { z } from
|
|
15
|
+
import { z } from "zod/v4";
|
|
16
16
|
|
|
17
17
|
/**
|
|
18
18
|
* CacheMetadataSchema
|
|
@@ -37,15 +37,20 @@ import { z } from 'zod/v4';
|
|
|
37
37
|
* ```
|
|
38
38
|
*/
|
|
39
39
|
export const CacheMetadataSchema = z.object({
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
40
|
+
cached: z
|
|
41
|
+
.boolean()
|
|
42
|
+
.optional()
|
|
43
|
+
.describe("Indicates if data was served from cache"),
|
|
44
|
+
cache_info: z
|
|
45
|
+
.string()
|
|
46
|
+
.optional()
|
|
47
|
+
.describe(
|
|
48
|
+
'Human-readable cache status message (e.g., "Cache hit", "Cache miss")',
|
|
49
|
+
),
|
|
50
|
+
usedDelta: z
|
|
51
|
+
.boolean()
|
|
52
|
+
.optional()
|
|
53
|
+
.describe("Indicates if delta merge optimization was applied for budgets"),
|
|
49
54
|
});
|
|
50
55
|
|
|
51
56
|
export type CacheMetadata = z.infer<typeof CacheMetadataSchema>;
|
|
@@ -70,8 +75,8 @@ export type CacheMetadata = z.infer<typeof CacheMetadataSchema>;
|
|
|
70
75
|
* ```
|
|
71
76
|
*/
|
|
72
77
|
export const SuccessResponseSchema = z.object({
|
|
73
|
-
|
|
74
|
-
|
|
78
|
+
success: z.boolean().describe("Indicates operation success"),
|
|
79
|
+
message: z.string().describe("Human-readable success message"),
|
|
75
80
|
});
|
|
76
81
|
|
|
77
82
|
export type SuccessResponse = z.infer<typeof SuccessResponseSchema>;
|
|
@@ -101,10 +106,10 @@ export type SuccessResponse = z.infer<typeof SuccessResponseSchema>;
|
|
|
101
106
|
* ```
|
|
102
107
|
*/
|
|
103
108
|
export const ConfirmationResponseSchema = SuccessResponseSchema.extend({
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
109
|
+
details: z
|
|
110
|
+
.record(z.string(), z.unknown())
|
|
111
|
+
.optional()
|
|
112
|
+
.describe("Additional confirmation details as key-value pairs"),
|
|
108
113
|
});
|
|
109
114
|
|
|
110
115
|
export type ConfirmationResponse = z.infer<typeof ConfirmationResponseSchema>;
|
|
@@ -132,9 +137,12 @@ export type ConfirmationResponse = z.infer<typeof ConfirmationResponseSchema>;
|
|
|
132
137
|
* ```
|
|
133
138
|
*/
|
|
134
139
|
export const ErrorDetailsSchema = z.object({
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
140
|
+
error: z.string().describe("Error message"),
|
|
141
|
+
code: z.string().optional().describe("Error code for categorization"),
|
|
142
|
+
details: z
|
|
143
|
+
.string()
|
|
144
|
+
.optional()
|
|
145
|
+
.describe("Additional error context or details"),
|
|
138
146
|
});
|
|
139
147
|
|
|
140
148
|
export type ErrorDetails = z.infer<typeof ErrorDetailsSchema>;
|