@dizzlkheinz/ynab-mcpb 0.18.3 → 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/CHANGELOG.md +17 -0
- 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 +21 -11
- package/dist/tools/reconciliation/analyzer.d.ts +4 -4
- package/dist/tools/reconciliation/analyzer.js +136 -57
- 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 +79 -54
- package/dist/tools/reconciliation/signDetector.d.ts +1 -1
- package/dist/tools/reconciliation/types.d.ts +19 -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 +309 -0
- package/dist/tools/transactionSchemas.js +235 -0
- package/dist/tools/transactionTools.d.ts +6 -302
- package/dist/tools/transactionTools.js +7 -2054
- package/dist/tools/transactionUtils.d.ts +31 -0
- package/dist/tools/transactionUtils.js +364 -0
- 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/docs/plans/2025-12-25-transaction-tools-refactor-design.md +211 -0
- package/docs/plans/2025-12-25-transaction-tools-refactor.md +905 -0
- package/esbuild.config.mjs +53 -50
- package/meta.json +12548 -12548
- package/package.json +98 -109
- package/scripts/analyze-bundle.mjs +33 -30
- package/scripts/create-pr-description.js +169 -120
- package/scripts/run-all-tests.js +205 -0
- 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 +1204 -0
- 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 +1016 -0
- 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 -246
- package/src/tools/reconciliation/CLAUDE.md +506 -0
- package/src/tools/reconciliation/__tests__/adapter.causes.test.ts +135 -112
- package/src/tools/reconciliation/__tests__/adapter.test.ts +249 -227
- package/src/tools/reconciliation/__tests__/analyzer.test.ts +408 -335
- 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 -986
- package/src/tools/reconciliation/__tests__/reconciliation.delta.integration.test.ts +187 -146
- package/src/tools/reconciliation/__tests__/reportFormatter.test.ts +583 -530
- package/src/tools/reconciliation/__tests__/scenarios/adapterCurrency.scenario.test.ts +75 -71
- package/src/tools/reconciliation/__tests__/scenarios/extremes.scenario.test.ts +70 -58
- package/src/tools/reconciliation/__tests__/scenarios/repeatAmount.scenario.test.ts +102 -88
- package/src/tools/reconciliation/__tests__/schemaUrl.test.ts +58 -43
- 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 +582 -406
- 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 +349 -276
- package/src/tools/reconciliation/signDetector.ts +89 -83
- package/src/tools/reconciliation/types.ts +164 -153
- 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 +484 -0
- package/src/tools/transactionTools.ts +107 -2990
- package/src/tools/transactionUtils.ts +621 -0
- 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
|
@@ -37,10 +37,10 @@
|
|
|
37
37
|
* }
|
|
38
38
|
*/
|
|
39
39
|
|
|
40
|
-
import { z } from
|
|
41
|
-
import {
|
|
42
|
-
import {
|
|
43
|
-
import {
|
|
40
|
+
import { z } from "zod";
|
|
41
|
+
import { AccountSchema } from "./accountOutputs.js";
|
|
42
|
+
import { CategorySchema } from "./categoryOutputs.js";
|
|
43
|
+
import { TransactionSchema } from "./transactionOutputs.js";
|
|
44
44
|
|
|
45
45
|
// ============================================================================
|
|
46
46
|
// NESTED SCHEMAS FOR COMPOSITION
|
|
@@ -54,17 +54,17 @@ import { CategorySchema } from './categoryOutputs.js';
|
|
|
54
54
|
* @see src/tools/transactionTools.ts:1160-1335 - create_receipt_split_transaction handler
|
|
55
55
|
*/
|
|
56
56
|
export const SubtransactionSchema = z.object({
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
57
|
+
id: z.string(),
|
|
58
|
+
transaction_id: z.string(),
|
|
59
|
+
amount: z.number(),
|
|
60
|
+
memo: z.string().optional(),
|
|
61
|
+
payee_id: z.string().optional(),
|
|
62
|
+
payee_name: z.string().optional(),
|
|
63
|
+
category_id: z.string().optional(),
|
|
64
|
+
category_name: z.string().optional(),
|
|
65
|
+
transfer_account_id: z.string().optional(),
|
|
66
|
+
transfer_transaction_id: z.string().optional(),
|
|
67
|
+
deleted: z.boolean(),
|
|
68
68
|
});
|
|
69
69
|
|
|
70
70
|
export type Subtransaction = z.infer<typeof SubtransactionSchema>;
|
|
@@ -82,12 +82,14 @@ export type Subtransaction = z.infer<typeof SubtransactionSchema>;
|
|
|
82
82
|
* @see src/tools/transactionTools.ts:1336-1530 - update_transaction handler
|
|
83
83
|
*/
|
|
84
84
|
export const TransactionWithBalanceSchema = TransactionSchema.extend({
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
85
|
+
account_balance: z.number().optional(), // Raw YNAB milliunits
|
|
86
|
+
account_cleared_balance: z.number().optional(), // Raw YNAB milliunits
|
|
87
|
+
subtransactions: z.array(SubtransactionSchema).optional(),
|
|
88
88
|
});
|
|
89
89
|
|
|
90
|
-
export type TransactionWithBalance = z.infer<
|
|
90
|
+
export type TransactionWithBalance = z.infer<
|
|
91
|
+
typeof TransactionWithBalanceSchema
|
|
92
|
+
>;
|
|
91
93
|
|
|
92
94
|
/**
|
|
93
95
|
* Individual receipt line item.
|
|
@@ -96,10 +98,10 @@ export type TransactionWithBalance = z.infer<typeof TransactionWithBalanceSchema
|
|
|
96
98
|
* @see src/tools/transactionTools.ts:1160-1335 - create_receipt_split_transaction handler
|
|
97
99
|
*/
|
|
98
100
|
export const ReceiptItemSchema = z.object({
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
101
|
+
name: z.string(),
|
|
102
|
+
quantity: z.number().optional(),
|
|
103
|
+
amount: z.number(),
|
|
104
|
+
memo: z.string().optional(),
|
|
103
105
|
});
|
|
104
106
|
|
|
105
107
|
export type ReceiptItem = z.infer<typeof ReceiptItemSchema>;
|
|
@@ -111,15 +113,17 @@ export type ReceiptItem = z.infer<typeof ReceiptItemSchema>;
|
|
|
111
113
|
* @see src/tools/transactionTools.ts:1160-1335 - create_receipt_split_transaction handler
|
|
112
114
|
*/
|
|
113
115
|
export const ReceiptCategoryBreakdownSchema = z.object({
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
116
|
+
category_id: z.string(),
|
|
117
|
+
category_name: z.string().optional(),
|
|
118
|
+
items: z.array(ReceiptItemSchema),
|
|
119
|
+
subtotal: z.number(),
|
|
120
|
+
tax: z.number(),
|
|
121
|
+
total: z.number(),
|
|
120
122
|
});
|
|
121
123
|
|
|
122
|
-
export type ReceiptCategoryBreakdown = z.infer<
|
|
124
|
+
export type ReceiptCategoryBreakdown = z.infer<
|
|
125
|
+
typeof ReceiptCategoryBreakdownSchema
|
|
126
|
+
>;
|
|
123
127
|
|
|
124
128
|
/**
|
|
125
129
|
* Complete receipt breakdown summary.
|
|
@@ -128,10 +132,10 @@ export type ReceiptCategoryBreakdown = z.infer<typeof ReceiptCategoryBreakdownSc
|
|
|
128
132
|
* @see src/tools/transactionTools.ts:1160-1335 - create_receipt_split_transaction handler
|
|
129
133
|
*/
|
|
130
134
|
export const ReceiptSummarySchema = z.object({
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
+
subtotal: z.number(),
|
|
136
|
+
tax: z.number(),
|
|
137
|
+
total: z.number(),
|
|
138
|
+
categories: z.array(ReceiptCategoryBreakdownSchema),
|
|
135
139
|
});
|
|
136
140
|
|
|
137
141
|
export type ReceiptSummary = z.infer<typeof ReceiptSummarySchema>;
|
|
@@ -144,11 +148,11 @@ export type ReceiptSummary = z.infer<typeof ReceiptSummarySchema>;
|
|
|
144
148
|
* @see src/tools/transactionTools.ts:2057-2462 - update_transactions handler
|
|
145
149
|
*/
|
|
146
150
|
export const BulkOperationSummarySchema = z.object({
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
151
|
+
total_requested: z.number(),
|
|
152
|
+
created: z.number().optional(),
|
|
153
|
+
updated: z.number().optional(),
|
|
154
|
+
duplicates: z.number().optional(),
|
|
155
|
+
failed: z.number(),
|
|
152
156
|
});
|
|
153
157
|
|
|
154
158
|
export type BulkOperationSummary = z.infer<typeof BulkOperationSummarySchema>;
|
|
@@ -174,15 +178,15 @@ export type BulkOperationSummary = z.infer<typeof BulkOperationSummarySchema>;
|
|
|
174
178
|
* @see src/tools/transactionTools.ts:2057-2462 - update_transactions handler
|
|
175
179
|
*/
|
|
176
180
|
export const BulkResultSchema = z
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
181
|
+
.object({
|
|
182
|
+
request_index: z.number(),
|
|
183
|
+
status: z.enum(["created", "duplicate", "updated", "failed"]),
|
|
184
|
+
transaction_id: z.string().optional(),
|
|
185
|
+
correlation_key: z.string(),
|
|
186
|
+
error_code: z.string().optional(),
|
|
187
|
+
error: z.string().optional(),
|
|
188
|
+
})
|
|
189
|
+
.passthrough(); // Allow additional correlation metadata fields
|
|
186
190
|
|
|
187
191
|
export type BulkResult = z.infer<typeof BulkResultSchema>;
|
|
188
192
|
|
|
@@ -193,18 +197,21 @@ export type BulkResult = z.infer<typeof BulkResultSchema>;
|
|
|
193
197
|
* @see src/tools/transactionTools.ts:2139-2192 - update_transactions dry-run diff building
|
|
194
198
|
*/
|
|
195
199
|
export const TransactionDiffFieldsSchema = z.object({
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
200
|
+
amount: z.number().optional(),
|
|
201
|
+
date: z
|
|
202
|
+
.string()
|
|
203
|
+
.regex(/^\d{4}-\d{2}-\d{2}$/)
|
|
204
|
+
.optional(),
|
|
205
|
+
memo: z.string().optional(),
|
|
206
|
+
payee_id: z.string().nullable().optional(),
|
|
207
|
+
payee_name: z.string().nullable().optional(),
|
|
208
|
+
category_id: z.string().nullable().optional(),
|
|
209
|
+
cleared: z.enum(["cleared", "uncleared", "reconciled"]).optional(),
|
|
210
|
+
approved: z.boolean().optional(),
|
|
211
|
+
flag_color: z
|
|
212
|
+
.enum(["red", "orange", "yellow", "green", "blue", "purple"])
|
|
213
|
+
.nullable()
|
|
214
|
+
.optional(),
|
|
208
215
|
});
|
|
209
216
|
|
|
210
217
|
export type TransactionDiffFields = z.infer<typeof TransactionDiffFieldsSchema>;
|
|
@@ -216,9 +223,9 @@ export type TransactionDiffFields = z.infer<typeof TransactionDiffFieldsSchema>;
|
|
|
216
223
|
* @see src/tools/transactionTools.ts:2057-2462 - update_transactions handler
|
|
217
224
|
*/
|
|
218
225
|
export const DryRunPreviewItemSchema = z.object({
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
226
|
+
transaction_id: z.string(),
|
|
227
|
+
before: z.union([z.literal("unavailable"), TransactionDiffFieldsSchema]),
|
|
228
|
+
after: TransactionDiffFieldsSchema,
|
|
222
229
|
});
|
|
223
230
|
|
|
224
231
|
export type DryRunPreviewItem = z.infer<typeof DryRunPreviewItemSchema>;
|
|
@@ -230,10 +237,10 @@ export type DryRunPreviewItem = z.infer<typeof DryRunPreviewItemSchema>;
|
|
|
230
237
|
* @see src/tools/transactionTools.ts:2057-2462 - update_transactions handler
|
|
231
238
|
*/
|
|
232
239
|
export const DryRunWarningSchema = z.object({
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
240
|
+
code: z.string(),
|
|
241
|
+
count: z.number(),
|
|
242
|
+
message: z.string(),
|
|
243
|
+
sample_ids: z.array(z.string()).optional(),
|
|
237
244
|
});
|
|
238
245
|
|
|
239
246
|
export type DryRunWarning = z.infer<typeof DryRunWarningSchema>;
|
|
@@ -269,17 +276,19 @@ export type DryRunWarning = z.infer<typeof DryRunWarningSchema>;
|
|
|
269
276
|
* }
|
|
270
277
|
*/
|
|
271
278
|
export const CreateTransactionOutputSchema = z.union([
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
279
|
+
z.object({
|
|
280
|
+
dry_run: z.literal(true),
|
|
281
|
+
action: z.literal("create_transaction"),
|
|
282
|
+
request: z.record(z.string(), z.unknown()),
|
|
283
|
+
}),
|
|
284
|
+
z.object({
|
|
285
|
+
transaction: TransactionWithBalanceSchema,
|
|
286
|
+
}),
|
|
280
287
|
]);
|
|
281
288
|
|
|
282
|
-
export type CreateTransactionOutput = z.infer<
|
|
289
|
+
export type CreateTransactionOutput = z.infer<
|
|
290
|
+
typeof CreateTransactionOutputSchema
|
|
291
|
+
>;
|
|
283
292
|
|
|
284
293
|
/**
|
|
285
294
|
* Transaction preview item for bulk create dry-run.
|
|
@@ -288,18 +297,20 @@ export type CreateTransactionOutput = z.infer<typeof CreateTransactionOutputSche
|
|
|
288
297
|
* @see src/tools/transactionTools.ts:1742-1752 - create_transactions dry-run preview
|
|
289
298
|
*/
|
|
290
299
|
export const CreateTransactionPreviewSchema = z.object({
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
+
request_index: z.number(),
|
|
301
|
+
account_id: z.string(),
|
|
302
|
+
date: z.string().regex(/^\d{4}-\d{2}-\d{2}$/),
|
|
303
|
+
amount: z.number(),
|
|
304
|
+
memo: z.string().optional(),
|
|
305
|
+
payee_id: z.string().optional(),
|
|
306
|
+
payee_name: z.string().optional(),
|
|
307
|
+
category_id: z.string().optional(),
|
|
308
|
+
import_id: z.string().optional(),
|
|
300
309
|
});
|
|
301
310
|
|
|
302
|
-
export type CreateTransactionPreview = z.infer<
|
|
311
|
+
export type CreateTransactionPreview = z.infer<
|
|
312
|
+
typeof CreateTransactionPreviewSchema
|
|
313
|
+
>;
|
|
303
314
|
|
|
304
315
|
/**
|
|
305
316
|
* Bulk transaction creation output.
|
|
@@ -340,44 +351,46 @@ export type CreateTransactionPreview = z.infer<typeof CreateTransactionPreviewSc
|
|
|
340
351
|
* }
|
|
341
352
|
*/
|
|
342
353
|
export const CreateTransactionsOutputSchema = z.union([
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
354
|
+
// Dry-run mode: Strict schema for preview validation
|
|
355
|
+
z
|
|
356
|
+
.object({
|
|
357
|
+
dry_run: z.literal(true),
|
|
358
|
+
action: z.literal("create_transactions"),
|
|
359
|
+
validation: z.literal("passed"),
|
|
360
|
+
summary: z.object({
|
|
361
|
+
total_transactions: z.number(),
|
|
362
|
+
total_amount: z.number(),
|
|
363
|
+
accounts_affected: z.array(z.string()),
|
|
364
|
+
date_range: z
|
|
365
|
+
.object({
|
|
366
|
+
earliest: z.string().regex(/^\d{4}-\d{2}-\d{2}$/),
|
|
367
|
+
latest: z.string().regex(/^\d{4}-\d{2}-\d{2}$/),
|
|
368
|
+
})
|
|
369
|
+
.optional(),
|
|
370
|
+
categories_affected: z.array(z.string()),
|
|
371
|
+
}),
|
|
372
|
+
transactions_preview: z.array(CreateTransactionPreviewSchema),
|
|
373
|
+
note: z.string(),
|
|
374
|
+
})
|
|
375
|
+
.strict(), // Strict for dry-run to prevent malformed previews
|
|
376
|
+
// Execution mode: Allow passthrough for correlation metadata extension
|
|
377
|
+
z
|
|
378
|
+
.object({
|
|
379
|
+
success: z.boolean(),
|
|
380
|
+
server_knowledge: z.number().optional(),
|
|
381
|
+
summary: BulkOperationSummarySchema,
|
|
382
|
+
results: z.array(BulkResultSchema),
|
|
383
|
+
transactions: z.array(TransactionSchema).optional(),
|
|
384
|
+
duplicate_import_ids: z.array(z.string()).optional(),
|
|
385
|
+
message: z.string().optional(),
|
|
386
|
+
mode: z.enum(["full", "summary", "ids_only"]).optional(),
|
|
387
|
+
})
|
|
388
|
+
.passthrough(), // Allow top-level metadata like batch_id, execution_id
|
|
378
389
|
]);
|
|
379
390
|
|
|
380
|
-
export type CreateTransactionsOutput = z.infer<
|
|
391
|
+
export type CreateTransactionsOutput = z.infer<
|
|
392
|
+
typeof CreateTransactionsOutputSchema
|
|
393
|
+
>;
|
|
381
394
|
|
|
382
395
|
/**
|
|
383
396
|
* Single transaction update output.
|
|
@@ -402,19 +415,21 @@ export type CreateTransactionsOutput = z.infer<typeof CreateTransactionsOutputSc
|
|
|
402
415
|
* }
|
|
403
416
|
*/
|
|
404
417
|
export const UpdateTransactionOutputSchema = z.union([
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
418
|
+
z.object({
|
|
419
|
+
dry_run: z.literal(true),
|
|
420
|
+
action: z.literal("update_transaction"),
|
|
421
|
+
request: z.record(z.string(), z.unknown()),
|
|
422
|
+
}),
|
|
423
|
+
z.object({
|
|
424
|
+
transaction: TransactionWithBalanceSchema,
|
|
425
|
+
updated_balance: z.number(), // Raw YNAB milliunits
|
|
426
|
+
updated_cleared_balance: z.number(), // Raw YNAB milliunits
|
|
427
|
+
}),
|
|
415
428
|
]);
|
|
416
429
|
|
|
417
|
-
export type UpdateTransactionOutput = z.infer<
|
|
430
|
+
export type UpdateTransactionOutput = z.infer<
|
|
431
|
+
typeof UpdateTransactionOutputSchema
|
|
432
|
+
>;
|
|
418
433
|
|
|
419
434
|
/**
|
|
420
435
|
* Bulk transaction update output.
|
|
@@ -459,37 +474,39 @@ export type UpdateTransactionOutput = z.infer<typeof UpdateTransactionOutputSche
|
|
|
459
474
|
* }
|
|
460
475
|
*/
|
|
461
476
|
export const UpdateTransactionsOutputSchema = z.union([
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
477
|
+
// Dry-run mode: Strict schema for preview validation
|
|
478
|
+
z
|
|
479
|
+
.object({
|
|
480
|
+
dry_run: z.literal(true),
|
|
481
|
+
action: z.literal("update_transactions"),
|
|
482
|
+
validation: z.literal("passed"),
|
|
483
|
+
summary: z.object({
|
|
484
|
+
total_transactions: z.number(),
|
|
485
|
+
accounts_affected: z.number(),
|
|
486
|
+
fields_to_update: z.array(z.string()),
|
|
487
|
+
}),
|
|
488
|
+
transactions_preview: z.array(DryRunPreviewItemSchema),
|
|
489
|
+
warnings: z.array(DryRunWarningSchema).optional(),
|
|
490
|
+
note: z.string(),
|
|
491
|
+
})
|
|
492
|
+
.strict(), // Strict for dry-run to prevent malformed previews
|
|
493
|
+
// Execution mode: Allow passthrough for correlation metadata extension
|
|
494
|
+
z
|
|
495
|
+
.object({
|
|
496
|
+
success: z.boolean(),
|
|
497
|
+
server_knowledge: z.number().optional(),
|
|
498
|
+
summary: BulkOperationSummarySchema,
|
|
499
|
+
results: z.array(BulkResultSchema),
|
|
500
|
+
transactions: z.array(TransactionSchema).optional(),
|
|
501
|
+
message: z.string().optional(),
|
|
502
|
+
mode: z.enum(["full", "summary", "ids_only"]).optional(),
|
|
503
|
+
})
|
|
504
|
+
.passthrough(), // Allow top-level metadata like batch_id, execution_id
|
|
490
505
|
]);
|
|
491
506
|
|
|
492
|
-
export type UpdateTransactionsOutput = z.infer<
|
|
507
|
+
export type UpdateTransactionsOutput = z.infer<
|
|
508
|
+
typeof UpdateTransactionsOutputSchema
|
|
509
|
+
>;
|
|
493
510
|
|
|
494
511
|
/**
|
|
495
512
|
* Transaction deletion output.
|
|
@@ -515,23 +532,25 @@ export type UpdateTransactionsOutput = z.infer<typeof UpdateTransactionsOutputSc
|
|
|
515
532
|
* }
|
|
516
533
|
*/
|
|
517
534
|
export const DeleteTransactionOutputSchema = z.union([
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
535
|
+
z.object({
|
|
536
|
+
dry_run: z.literal(true),
|
|
537
|
+
action: z.literal("delete_transaction"),
|
|
538
|
+
request: z.record(z.string(), z.unknown()),
|
|
539
|
+
}),
|
|
540
|
+
z.object({
|
|
541
|
+
message: z.string(),
|
|
542
|
+
transaction: z.object({
|
|
543
|
+
id: z.string(),
|
|
544
|
+
deleted: z.boolean(),
|
|
545
|
+
}),
|
|
546
|
+
updated_balance: z.number(), // Raw YNAB milliunits
|
|
547
|
+
updated_cleared_balance: z.number(), // Raw YNAB milliunits
|
|
548
|
+
}),
|
|
532
549
|
]);
|
|
533
550
|
|
|
534
|
-
export type DeleteTransactionOutput = z.infer<
|
|
551
|
+
export type DeleteTransactionOutput = z.infer<
|
|
552
|
+
typeof DeleteTransactionOutputSchema
|
|
553
|
+
>;
|
|
535
554
|
|
|
536
555
|
/**
|
|
537
556
|
* Transaction preview schema for dry-run responses.
|
|
@@ -549,20 +568,25 @@ export type DeleteTransactionOutput = z.infer<typeof DeleteTransactionOutputSche
|
|
|
549
568
|
* @see CreateReceiptSplitTransactionOutputSchema - Used in dry-run branch for transaction preview
|
|
550
569
|
*/
|
|
551
570
|
export const TransactionDryRunPreviewSchema = z.object({
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
571
|
+
account_id: z.string(),
|
|
572
|
+
date: z.string().regex(/^\d{4}-\d{2}-\d{2}$/),
|
|
573
|
+
amount: z.number(),
|
|
574
|
+
memo: z.string().optional().nullable(),
|
|
575
|
+
cleared: z.enum(["cleared", "uncleared", "reconciled"]).optional(),
|
|
576
|
+
approved: z.boolean().optional(),
|
|
577
|
+
flag_color: z
|
|
578
|
+
.enum(["red", "orange", "yellow", "green", "blue", "purple"])
|
|
579
|
+
.optional()
|
|
580
|
+
.nullable(),
|
|
581
|
+
payee_id: z.string().optional().nullable(),
|
|
582
|
+
payee_name: z.string().optional().nullable(),
|
|
583
|
+
category_id: z.string().optional().nullable(),
|
|
584
|
+
import_id: z.string().optional().nullable(),
|
|
563
585
|
});
|
|
564
586
|
|
|
565
|
-
export type TransactionDryRunPreview = z.infer<
|
|
587
|
+
export type TransactionDryRunPreview = z.infer<
|
|
588
|
+
typeof TransactionDryRunPreviewSchema
|
|
589
|
+
>;
|
|
566
590
|
|
|
567
591
|
/**
|
|
568
592
|
* Subtransaction preview schema for dry-run responses.
|
|
@@ -577,9 +601,9 @@ export type TransactionDryRunPreview = z.infer<typeof TransactionDryRunPreviewSc
|
|
|
577
601
|
* @see CreateReceiptSplitTransactionOutputSchema - Used in dry-run branch for subtransactions preview
|
|
578
602
|
*/
|
|
579
603
|
export const SubtransactionPreviewSchema = SubtransactionSchema.omit({
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
604
|
+
id: true,
|
|
605
|
+
transaction_id: true,
|
|
606
|
+
deleted: true,
|
|
583
607
|
});
|
|
584
608
|
|
|
585
609
|
export type SubtransactionPreview = z.infer<typeof SubtransactionPreviewSchema>;
|
|
@@ -630,21 +654,21 @@ export type SubtransactionPreview = z.infer<typeof SubtransactionPreviewSchema>;
|
|
|
630
654
|
* }
|
|
631
655
|
*/
|
|
632
656
|
export const CreateReceiptSplitTransactionOutputSchema = z.union([
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
657
|
+
z.object({
|
|
658
|
+
dry_run: z.literal(true),
|
|
659
|
+
action: z.literal("create_receipt_split_transaction"),
|
|
660
|
+
transaction_preview: TransactionDryRunPreviewSchema,
|
|
661
|
+
receipt_summary: ReceiptSummarySchema,
|
|
662
|
+
subtransactions: z.array(SubtransactionPreviewSchema),
|
|
663
|
+
}),
|
|
664
|
+
z.object({
|
|
665
|
+
transaction: TransactionWithBalanceSchema,
|
|
666
|
+
receipt_summary: ReceiptSummarySchema,
|
|
667
|
+
}),
|
|
644
668
|
]);
|
|
645
669
|
|
|
646
670
|
export type CreateReceiptSplitTransactionOutput = z.infer<
|
|
647
|
-
|
|
671
|
+
typeof CreateReceiptSplitTransactionOutputSchema
|
|
648
672
|
>;
|
|
649
673
|
|
|
650
674
|
/**
|
|
@@ -654,13 +678,15 @@ export type CreateReceiptSplitTransactionOutput = z.infer<
|
|
|
654
678
|
* @see src/tools/accountTools.ts:218-233 - create_account dry-run response construction
|
|
655
679
|
*/
|
|
656
680
|
export const CreateAccountDryRunRequestSchema = z.object({
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
681
|
+
budget_id: z.string(),
|
|
682
|
+
name: z.string(),
|
|
683
|
+
type: z.string(),
|
|
684
|
+
balance: z.number(),
|
|
661
685
|
});
|
|
662
686
|
|
|
663
|
-
export type CreateAccountDryRunRequest = z.infer<
|
|
687
|
+
export type CreateAccountDryRunRequest = z.infer<
|
|
688
|
+
typeof CreateAccountDryRunRequestSchema
|
|
689
|
+
>;
|
|
664
690
|
|
|
665
691
|
/**
|
|
666
692
|
* Account creation output.
|
|
@@ -689,14 +715,14 @@ export type CreateAccountDryRunRequest = z.infer<typeof CreateAccountDryRunReque
|
|
|
689
715
|
* }
|
|
690
716
|
*/
|
|
691
717
|
export const CreateAccountOutputSchema = z.union([
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
718
|
+
z.object({
|
|
719
|
+
dry_run: z.literal(true),
|
|
720
|
+
action: z.literal("create_account"),
|
|
721
|
+
request: CreateAccountDryRunRequestSchema,
|
|
722
|
+
}),
|
|
723
|
+
z.object({
|
|
724
|
+
account: AccountSchema,
|
|
725
|
+
}),
|
|
700
726
|
]);
|
|
701
727
|
|
|
702
728
|
export type CreateAccountOutput = z.infer<typeof CreateAccountOutputSchema>;
|
|
@@ -708,13 +734,15 @@ export type CreateAccountOutput = z.infer<typeof CreateAccountOutputSchema>;
|
|
|
708
734
|
* @see src/tools/categoryTools.ts:237-256 - update_category dry-run response construction
|
|
709
735
|
*/
|
|
710
736
|
export const UpdateCategoryDryRunRequestSchema = z.object({
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
737
|
+
budget_id: z.string(),
|
|
738
|
+
category_id: z.string(),
|
|
739
|
+
budgeted: z.number(),
|
|
740
|
+
month: z.string().regex(/^\d{4}-\d{2}-\d{2}$/),
|
|
715
741
|
});
|
|
716
742
|
|
|
717
|
-
export type UpdateCategoryDryRunRequest = z.infer<
|
|
743
|
+
export type UpdateCategoryDryRunRequest = z.infer<
|
|
744
|
+
typeof UpdateCategoryDryRunRequestSchema
|
|
745
|
+
>;
|
|
718
746
|
|
|
719
747
|
/**
|
|
720
748
|
* Category budget update output.
|
|
@@ -744,15 +772,15 @@ export type UpdateCategoryDryRunRequest = z.infer<typeof UpdateCategoryDryRunReq
|
|
|
744
772
|
* }
|
|
745
773
|
*/
|
|
746
774
|
export const UpdateCategoryOutputSchema = z.union([
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
775
|
+
z.object({
|
|
776
|
+
dry_run: z.literal(true),
|
|
777
|
+
action: z.literal("update_category"),
|
|
778
|
+
request: UpdateCategoryDryRunRequestSchema,
|
|
779
|
+
}),
|
|
780
|
+
z.object({
|
|
781
|
+
category: CategorySchema,
|
|
782
|
+
updated_month: z.string().regex(/^\d{4}-\d{2}-\d{2}$/),
|
|
783
|
+
}),
|
|
756
784
|
]);
|
|
757
785
|
|
|
758
786
|
export type UpdateCategoryOutput = z.infer<typeof UpdateCategoryOutputSchema>;
|