@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
|
@@ -59,8 +59,8 @@
|
|
|
59
59
|
* ```
|
|
60
60
|
*/
|
|
61
61
|
|
|
62
|
-
import { z } from
|
|
63
|
-
import { CacheMetadataSchema } from
|
|
62
|
+
import { z } from "zod/v4";
|
|
63
|
+
import { CacheMetadataSchema } from "../shared/commonOutputs.js";
|
|
64
64
|
|
|
65
65
|
/**
|
|
66
66
|
* Schema for an account object.
|
|
@@ -68,41 +68,47 @@ import { CacheMetadataSchema } from '../shared/commonOutputs.js';
|
|
|
68
68
|
* Represents account data with balances in dollars (converted from YNAB milliunits).
|
|
69
69
|
*/
|
|
70
70
|
export const AccountSchema = z.object({
|
|
71
|
-
|
|
72
|
-
|
|
71
|
+
/** Unique identifier for the account */
|
|
72
|
+
id: z.string().describe("Account ID"),
|
|
73
73
|
|
|
74
|
-
|
|
75
|
-
|
|
74
|
+
/** Human-readable account name */
|
|
75
|
+
name: z.string().describe("Account name"),
|
|
76
76
|
|
|
77
|
-
|
|
78
|
-
|
|
77
|
+
/** Account type (checking, savings, creditCard, etc.) */
|
|
78
|
+
type: z.string().describe("Account type"),
|
|
79
79
|
|
|
80
|
-
|
|
81
|
-
|
|
80
|
+
/** Whether account is on-budget or tracking */
|
|
81
|
+
on_budget: z.boolean().describe("On-budget flag"),
|
|
82
82
|
|
|
83
|
-
|
|
84
|
-
|
|
83
|
+
/** Whether account is closed */
|
|
84
|
+
closed: z.boolean().describe("Closed flag"),
|
|
85
85
|
|
|
86
|
-
|
|
87
|
-
|
|
86
|
+
/** Optional account note */
|
|
87
|
+
note: z.string().optional().describe("Account note"),
|
|
88
88
|
|
|
89
|
-
|
|
90
|
-
|
|
89
|
+
/** Current account balance in dollars */
|
|
90
|
+
balance: z.number().describe("Account balance in dollars"),
|
|
91
91
|
|
|
92
|
-
|
|
93
|
-
|
|
92
|
+
/** Cleared balance in dollars */
|
|
93
|
+
cleared_balance: z.number().describe("Cleared balance in dollars"),
|
|
94
94
|
|
|
95
|
-
|
|
96
|
-
|
|
95
|
+
/** Uncleared balance in dollars */
|
|
96
|
+
uncleared_balance: z.number().describe("Uncleared balance in dollars"),
|
|
97
97
|
|
|
98
|
-
|
|
99
|
-
|
|
98
|
+
/** Payee ID for transfers to this account */
|
|
99
|
+
transfer_payee_id: z.string().describe("Transfer payee ID"),
|
|
100
100
|
|
|
101
|
-
|
|
102
|
-
|
|
101
|
+
/** Whether account is linked for direct import (optional) */
|
|
102
|
+
direct_import_linked: z
|
|
103
|
+
.boolean()
|
|
104
|
+
.optional()
|
|
105
|
+
.describe("Direct import linked flag"),
|
|
103
106
|
|
|
104
|
-
|
|
105
|
-
|
|
107
|
+
/** Whether direct import is in error state (optional) */
|
|
108
|
+
direct_import_in_error: z
|
|
109
|
+
.boolean()
|
|
110
|
+
.optional()
|
|
111
|
+
.describe("Direct import error flag"),
|
|
106
112
|
});
|
|
107
113
|
|
|
108
114
|
/**
|
|
@@ -111,14 +117,14 @@ export const AccountSchema = z.object({
|
|
|
111
117
|
* Returns all accounts for a budget with pagination and cache metadata.
|
|
112
118
|
*/
|
|
113
119
|
export const ListAccountsOutputSchema = CacheMetadataSchema.extend({
|
|
114
|
-
|
|
115
|
-
|
|
120
|
+
/** Array of account objects */
|
|
121
|
+
accounts: z.array(AccountSchema).describe("List of accounts"),
|
|
116
122
|
|
|
117
|
-
|
|
118
|
-
|
|
123
|
+
/** Total number of accounts in budget */
|
|
124
|
+
total_count: z.number().int().describe("Total account count"),
|
|
119
125
|
|
|
120
|
-
|
|
121
|
-
|
|
126
|
+
/** Number of accounts returned in this response */
|
|
127
|
+
returned_count: z.number().int().describe("Returned account count"),
|
|
122
128
|
});
|
|
123
129
|
|
|
124
130
|
/**
|
|
@@ -127,8 +133,8 @@ export const ListAccountsOutputSchema = CacheMetadataSchema.extend({
|
|
|
127
133
|
* Returns a single account by ID with cache metadata.
|
|
128
134
|
*/
|
|
129
135
|
export const GetAccountOutputSchema = CacheMetadataSchema.extend({
|
|
130
|
-
|
|
131
|
-
|
|
136
|
+
/** Single account object */
|
|
137
|
+
account: AccountSchema.describe("Account details"),
|
|
132
138
|
});
|
|
133
139
|
|
|
134
140
|
// Export inferred TypeScript types
|
|
@@ -39,9 +39,9 @@
|
|
|
39
39
|
* ```
|
|
40
40
|
*/
|
|
41
41
|
|
|
42
|
-
import { z } from
|
|
43
|
-
import { CacheMetadataSchema } from
|
|
44
|
-
import {
|
|
42
|
+
import { z } from "zod/v4";
|
|
43
|
+
import { CacheMetadataSchema } from "../shared/commonOutputs.js";
|
|
44
|
+
import { CurrencyFormatSchema, DateFormatSchema } from "./utilityOutputs.js";
|
|
45
45
|
|
|
46
46
|
/**
|
|
47
47
|
* Schema for a budget summary object.
|
|
@@ -49,26 +49,31 @@ import { DateFormatSchema, CurrencyFormatSchema } from './utilityOutputs.js';
|
|
|
49
49
|
* Represents basic budget metadata returned by YNAB API.
|
|
50
50
|
*/
|
|
51
51
|
export const BudgetSummarySchema = z.object({
|
|
52
|
-
|
|
53
|
-
|
|
52
|
+
/** Unique identifier for the budget */
|
|
53
|
+
id: z.string().describe("Budget ID"),
|
|
54
54
|
|
|
55
|
-
|
|
56
|
-
|
|
55
|
+
/** Human-readable budget name */
|
|
56
|
+
name: z.string().describe("Budget name"),
|
|
57
57
|
|
|
58
|
-
|
|
59
|
-
|
|
58
|
+
/** ISO 8601 timestamp of last modification (optional) */
|
|
59
|
+
last_modified_on: z
|
|
60
|
+
.string()
|
|
61
|
+
.optional()
|
|
62
|
+
.describe("Last modification timestamp"),
|
|
60
63
|
|
|
61
|
-
|
|
62
|
-
|
|
64
|
+
/** First month in budget (YYYY-MM-DD format, optional) */
|
|
65
|
+
first_month: z.string().optional().describe("First month in budget"),
|
|
63
66
|
|
|
64
|
-
|
|
65
|
-
|
|
67
|
+
/** Last month in budget (YYYY-MM-DD format, optional) */
|
|
68
|
+
last_month: z.string().optional().describe("Last month in budget"),
|
|
66
69
|
|
|
67
|
-
|
|
68
|
-
|
|
70
|
+
/** Date format settings for this budget (optional) */
|
|
71
|
+
date_format: DateFormatSchema.optional().describe("Date format settings"),
|
|
69
72
|
|
|
70
|
-
|
|
71
|
-
|
|
73
|
+
/** Currency format settings for this budget (optional) */
|
|
74
|
+
currency_format: CurrencyFormatSchema.optional().describe(
|
|
75
|
+
"Currency format settings",
|
|
76
|
+
),
|
|
72
77
|
});
|
|
73
78
|
|
|
74
79
|
/**
|
|
@@ -77,8 +82,8 @@ export const BudgetSummarySchema = z.object({
|
|
|
77
82
|
* Returns all budgets accessible to the user with cache metadata.
|
|
78
83
|
*/
|
|
79
84
|
export const ListBudgetsOutputSchema = CacheMetadataSchema.extend({
|
|
80
|
-
|
|
81
|
-
|
|
85
|
+
/** Array of budget summaries */
|
|
86
|
+
budgets: z.array(BudgetSummarySchema).describe("List of budgets"),
|
|
82
87
|
});
|
|
83
88
|
|
|
84
89
|
// Export inferred TypeScript types
|
|
@@ -75,8 +75,8 @@
|
|
|
75
75
|
* ```
|
|
76
76
|
*/
|
|
77
77
|
|
|
78
|
-
import { z } from
|
|
79
|
-
import { CacheMetadataSchema } from
|
|
78
|
+
import { z } from "zod/v4";
|
|
79
|
+
import { CacheMetadataSchema } from "../shared/commonOutputs.js";
|
|
80
80
|
|
|
81
81
|
/**
|
|
82
82
|
* Schema for a category object.
|
|
@@ -84,65 +84,83 @@ import { CacheMetadataSchema } from '../shared/commonOutputs.js';
|
|
|
84
84
|
* Represents category data with budgeted/activity/balance amounts in dollars.
|
|
85
85
|
*/
|
|
86
86
|
export const CategorySchema = z.object({
|
|
87
|
-
|
|
88
|
-
|
|
87
|
+
/** Unique identifier for the category */
|
|
88
|
+
id: z.string().describe("Category ID"),
|
|
89
89
|
|
|
90
|
-
|
|
91
|
-
|
|
90
|
+
/** Category group ID this category belongs to */
|
|
91
|
+
category_group_id: z.string().describe("Category group ID"),
|
|
92
92
|
|
|
93
|
-
|
|
94
|
-
|
|
93
|
+
/** Category group name (only present in list_categories) */
|
|
94
|
+
category_group_name: z.string().optional().describe("Category group name"),
|
|
95
95
|
|
|
96
|
-
|
|
97
|
-
|
|
96
|
+
/** Human-readable category name */
|
|
97
|
+
name: z.string().describe("Category name"),
|
|
98
98
|
|
|
99
|
-
|
|
100
|
-
|
|
99
|
+
/** Whether category is hidden */
|
|
100
|
+
hidden: z.boolean().describe("Hidden flag"),
|
|
101
101
|
|
|
102
|
-
|
|
103
|
-
|
|
102
|
+
/** Original category group ID if moved (optional) */
|
|
103
|
+
original_category_group_id: z
|
|
104
|
+
.string()
|
|
105
|
+
.optional()
|
|
106
|
+
.describe("Original category group ID"),
|
|
104
107
|
|
|
105
|
-
|
|
106
|
-
|
|
108
|
+
/** Optional category note */
|
|
109
|
+
note: z.string().optional().describe("Category note"),
|
|
107
110
|
|
|
108
|
-
|
|
109
|
-
|
|
111
|
+
/** Budgeted amount in dollars */
|
|
112
|
+
budgeted: z.number().describe("Budgeted amount in dollars"),
|
|
110
113
|
|
|
111
|
-
|
|
112
|
-
|
|
114
|
+
/** Activity (spending) in dollars */
|
|
115
|
+
activity: z.number().describe("Activity in dollars"),
|
|
113
116
|
|
|
114
|
-
|
|
115
|
-
|
|
117
|
+
/** Current balance in dollars */
|
|
118
|
+
balance: z.number().describe("Balance in dollars"),
|
|
116
119
|
|
|
117
|
-
|
|
118
|
-
|
|
120
|
+
/** Goal type (TB, TBD, MF, NEED, DEBT, optional) */
|
|
121
|
+
goal_type: z.string().optional().describe("Goal type"),
|
|
119
122
|
|
|
120
|
-
|
|
121
|
-
|
|
123
|
+
/** Goal creation month (YYYY-MM-DD, optional) */
|
|
124
|
+
goal_creation_month: z.string().optional().describe("Goal creation month"),
|
|
122
125
|
|
|
123
|
-
|
|
124
|
-
|
|
126
|
+
/** Goal target amount in dollars (converted from YNAB API milliunits, optional) */
|
|
127
|
+
goal_target: z.number().optional().describe("Goal target amount in dollars"),
|
|
125
128
|
|
|
126
|
-
|
|
127
|
-
|
|
129
|
+
/** Goal target month (YYYY-MM-DD, optional) */
|
|
130
|
+
goal_target_month: z.string().optional().describe("Goal target month"),
|
|
128
131
|
|
|
129
|
-
|
|
130
|
-
|
|
132
|
+
/** Goal percentage complete (optional) */
|
|
133
|
+
goal_percentage_complete: z
|
|
134
|
+
.number()
|
|
135
|
+
.optional()
|
|
136
|
+
.describe("Goal percentage complete"),
|
|
131
137
|
|
|
132
|
-
|
|
133
|
-
|
|
138
|
+
/** Number of months to budget for goal (optional) */
|
|
139
|
+
goal_months_to_budget: z
|
|
140
|
+
.number()
|
|
141
|
+
.optional()
|
|
142
|
+
.describe("Goal months to budget"),
|
|
134
143
|
|
|
135
|
-
|
|
136
|
-
|
|
144
|
+
/** Amount still needed in current month to stay on track with goal (dollars, optional) */
|
|
145
|
+
goal_under_funded: z
|
|
146
|
+
.number()
|
|
147
|
+
.optional()
|
|
148
|
+
.describe("Goal underfunded amount in dollars"),
|
|
137
149
|
|
|
138
|
-
|
|
139
|
-
|
|
150
|
+
/** Total amount funded towards goal across entire goal period since creation (dollars, optional) */
|
|
151
|
+
goal_overall_funded: z
|
|
152
|
+
.number()
|
|
153
|
+
.optional()
|
|
154
|
+
.describe("Goal overall funded amount in dollars"),
|
|
140
155
|
|
|
141
|
-
|
|
142
|
-
|
|
156
|
+
/** Amount still needed to complete goal across entire goal period (dollars, optional) */
|
|
157
|
+
goal_overall_left: z
|
|
158
|
+
.number()
|
|
159
|
+
.optional()
|
|
160
|
+
.describe("Goal overall left amount in dollars"),
|
|
143
161
|
|
|
144
|
-
|
|
145
|
-
|
|
162
|
+
/** Whether category is deleted (optional, may not be present in API responses) */
|
|
163
|
+
deleted: z.boolean().optional().describe("Deleted flag"),
|
|
146
164
|
});
|
|
147
165
|
|
|
148
166
|
/**
|
|
@@ -151,17 +169,17 @@ export const CategorySchema = z.object({
|
|
|
151
169
|
* Represents category group metadata.
|
|
152
170
|
*/
|
|
153
171
|
export const CategoryGroupSchema = z.object({
|
|
154
|
-
|
|
155
|
-
|
|
172
|
+
/** Unique identifier for the category group */
|
|
173
|
+
id: z.string().describe("Category group ID"),
|
|
156
174
|
|
|
157
|
-
|
|
158
|
-
|
|
175
|
+
/** Human-readable category group name */
|
|
176
|
+
name: z.string().describe("Category group name"),
|
|
159
177
|
|
|
160
|
-
|
|
161
|
-
|
|
178
|
+
/** Whether category group is hidden */
|
|
179
|
+
hidden: z.boolean().describe("Hidden flag"),
|
|
162
180
|
|
|
163
|
-
|
|
164
|
-
|
|
181
|
+
/** Whether category group is deleted */
|
|
182
|
+
deleted: z.boolean().describe("Deleted flag"),
|
|
165
183
|
});
|
|
166
184
|
|
|
167
185
|
/**
|
|
@@ -170,11 +188,13 @@ export const CategoryGroupSchema = z.object({
|
|
|
170
188
|
* Returns all categories and category groups for a budget month with cache metadata.
|
|
171
189
|
*/
|
|
172
190
|
export const ListCategoriesOutputSchema = CacheMetadataSchema.extend({
|
|
173
|
-
|
|
174
|
-
|
|
191
|
+
/** Array of category objects */
|
|
192
|
+
categories: z.array(CategorySchema).describe("List of categories"),
|
|
175
193
|
|
|
176
|
-
|
|
177
|
-
|
|
194
|
+
/** Array of category group objects */
|
|
195
|
+
category_groups: z
|
|
196
|
+
.array(CategoryGroupSchema)
|
|
197
|
+
.describe("List of category groups"),
|
|
178
198
|
});
|
|
179
199
|
|
|
180
200
|
/**
|
|
@@ -183,8 +203,8 @@ export const ListCategoriesOutputSchema = CacheMetadataSchema.extend({
|
|
|
183
203
|
* Returns a single category by ID with cache metadata.
|
|
184
204
|
*/
|
|
185
205
|
export const GetCategoryOutputSchema = CacheMetadataSchema.extend({
|
|
186
|
-
|
|
187
|
-
|
|
206
|
+
/** Single category object */
|
|
207
|
+
category: CategorySchema.describe("Category details"),
|
|
188
208
|
});
|
|
189
209
|
|
|
190
210
|
// Export inferred TypeScript types
|