@dizzlkheinz/ynab-mcpb 0.12.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.chunkhound.json +11 -0
- package/.code/agents/0427d95e-edca-431f-a214-5e53264e29c4/error.txt +8 -0
- package/.code/agents/0d675174-d1e1-41c3-9975-4c2e275819a9/error.txt +3 -0
- package/.code/agents/0d8c5afd-4787-422b-abf8-2e5943fc7e67/error.txt +3 -0
- package/.code/agents/0ec34a70-ed5d-4b9e-bee4-bb0e4cccbc4b/error.txt +1 -0
- package/.code/agents/0ef51a21-1ab1-49d7-9561-0eaa43875ebc/error.txt +12 -0
- package/.code/agents/15db95d7-abad-4b4d-9c3b-8446089cb61d/error.txt +1 -0
- package/.code/agents/19ab9acb-f675-4ff0-902a-09a5476f8149/error.txt +1 -0
- package/.code/agents/1ef7e12d-f6ff-4897-8a9b-152d523d898e/error.txt +5 -0
- package/.code/agents/2465/exec-call_lroN9KKzJVWC7t5423DK1nT9.txt +1453 -0
- package/.code/agents/28edb6fe-95a9-41a0-ae69-aa0100d26c0c/error.txt +8 -0
- package/.code/agents/2ae40cf5-b4bf-42e2-92bf-7ea350a7755e/error.txt +9 -0
- package/.code/agents/2bfc4e1f-ac4b-45a5-b6df-bf89d4dbb54c/error.txt +1 -0
- package/.code/agents/2e2e1134-eff0-49be-ba25-8e2c3468a564/error.txt +5 -0
- package/.code/agents/3/exec-call_203OC4TNVkLxW7z2HCVEQ1cM.txt +81 -0
- package/.code/agents/3/exec-call_SS5T0XSiXB4LSNzUKTl75wkh.txt +610 -0
- package/.code/agents/3322c003-ce5e-48e3-a342-f5049c5bf9a2/error.txt +1 -0
- package/.code/agents/391e9b08-1ebc-468c-9bcd-6d0cc3193b37/error.txt +1 -0
- package/.code/agents/3ab0aa84-b7bb-4054-afa3-40b8fd7d3be0/error.txt +1 -0
- package/.code/agents/3bed368d-50fe-477e-aee3-a6707eaa1ab9/error.txt +3 -0
- package/.code/agents/3e40b925-db12-442f-8d7a-a25fc69a6672/error.txt +8 -0
- package/.code/agents/414d5776-cf58-41f3-9328-a6daed503a50/error.txt +5 -0
- package/.code/agents/42687751-4565-4610-b240-67835b17d861/error.txt +1 -0
- package/.code/agents/46b98876-1a39-43c9-9e2f-507ca6d47335/error.txt +9 -0
- package/.code/agents/4a7d9491-b26f-43dd-850d-2ecdc49b5d1b/error.txt +1 -0
- package/.code/agents/4e60f00a-1b3e-447f-87f3-7faf9deddec3/error.txt +13 -0
- package/.code/agents/5138fc1c-4d49-4b74-a7da-ccdb3a8e44e7/error.txt +14 -0
- package/.code/agents/521cff39-a7a3-42e5-a557-134f0f7daaa0/error.txt +5 -0
- package/.code/agents/53302dc5-3857-4413-9a47-9e0f64a51dc4/error.txt +5 -0
- package/.code/agents/567c7c2e-6a6f-4761-a08d-d36deeb2e0ac/error.txt +5 -0
- package/.code/agents/57b00845-80dc-47c9-953c-3028d16275d6/error.txt +3 -0
- package/.code/agents/593d9005-c2a5-48fd-8813-ece0d3f2de96/error.txt +1 -0
- package/.code/agents/5a112e66-0e1a-42f9-877c-53af56ea3551/error.txt +1 -0
- package/.code/agents/5b05e8ed-7788-4738-b7ee-9faa8180f992/error.txt +5 -0
- package/.code/agents/5f888d6f-d7ca-4ac8-be23-9ea1bf753951/error.txt +5 -0
- package/.code/agents/607db3ab-e4b0-435b-b497-93e9aa525549/error.txt +8 -0
- package/.code/agents/67dcb2a2-900f-4c78-b3fc-80b5213e0ddf/error.txt +8 -0
- package/.code/agents/69ad848c-4e98-49b3-b16c-0094ac2d1759/error.txt +5 -0
- package/.code/agents/6c9cfc5f-0d0b-445c-b121-9f60082c4f70/error.txt +1 -0
- package/.code/agents/6f6f8f77-4ab0-4f6e-9f30-40e8be0bd8f5/error.txt +1 -0
- package/.code/agents/72a7cde4-fa8a-4024-9038-27faa550539b/error.txt +1 -0
- package/.code/agents/7b48335c-8247-43aa-9949-5f820ba8e199/error.txt +1 -0
- package/.code/agents/80944249-bea9-4ac5-87de-a666c4df306e/error.txt +1 -0
- package/.code/agents/826099df-1b66-4186-a915-7eb59f9db19d/error.txt +5 -0
- package/.code/agents/8291d158-18a8-4a92-b799-4e9a4d9cce88/error.txt +1 -0
- package/.code/agents/82fb71a3-20fb-4341-804a-a2fc900f95bc/error.txt +1 -0
- package/.code/agents/855790ea-54ee-43e4-8209-a66994e37590/error.txt +1 -0
- package/.code/agents/88ce3a2e-04f2-42be-9062-bf97aa798da0/error.txt +3 -0
- package/.code/agents/9a17e398-b6ed-4218-bb55-bc64a8d38ce8/error.txt +8 -0
- package/.code/agents/9a4f4bfc-a2a6-4f40-a896-9335b41a7ed1/error.txt +1 -0
- package/.code/agents/9b633e55-ef84-47d6-94bb-fd3dd172ad97/error.txt +1 -0
- package/.code/agents/9b81f3ab-c72b-4a81-9a8f-28a49ddba84a/error.txt +8 -0
- package/.code/agents/a35daf29-b2d1-4aef-9b42-dad63a76bd47/error.txt +3 -0
- package/.code/agents/a81990cc-69ee-44d2-b907-17403c9bc5d7/error.txt +5 -0
- package/.code/agents/ab56260a-4a83-4ad4-9410-f88a23d6520a/error.txt +1 -0
- package/.code/agents/ad722c31-2d1d-45f7-bae2-3f02ca455b60/error.txt +1 -0
- package/.code/agents/b62e8690-3324-4b97-9309-731bee79416b/error.txt +5 -0
- package/.code/agents/baf60a3a-752b-4ad8-99d6-df32423ed2eb/error.txt +1 -0
- package/.code/agents/be049042-7dcb-4ac8-9beb-c8f1aea67742/error.txt +14 -0
- package/.code/agents/bed1dcb4-bfce-4a9f-8594-0f994962aafd/error.txt +1 -0
- package/.code/agents/c324a6cf-e935-4ede-9529-b3ebc18e8d6b/error.txt +5 -0
- package/.code/agents/c37c06ff-dfe3-43f2-9bbc-3ec73ec8f41d/error.txt +5 -0
- package/.code/agents/c8cd6671-433a-456b-9f88-e51cb2df6bfc/error.txt +11 -0
- package/.code/agents/ca2ccb67-2f24-428e-b27d-9365beadd140/error.txt +1 -0
- package/.code/agents/cf08c0c8-e7f0-423e-93ba-547e8e818340/error.txt +8 -0
- package/.code/agents/d579c74f-874b-40a4-9d56-ced1eb6a701d/error.txt +1 -0
- package/.code/agents/df412c98-7378-4deb-8e1e-76c416931181/error.txt +3 -0
- package/.code/agents/e5134eb3-2af4-45b0-8998-051cb4afdb45/error.txt +3 -0
- package/.code/agents/e6308471-aa45-4e9e-9496-2e9404164d97/error.txt +8 -0
- package/.code/agents/e7bd8bc7-23fb-4f46-98dc-b0dcf11b75a1/error.txt +1 -0
- package/.code/agents/e92bec35-378d-4fe1-8ac0-6e1bb3c86911/error.txt +5 -0
- package/.code/agents/ed918fbf-2dc4-4aa2-bfc5-04b65d9471ea/error.txt +1 -0
- package/.code/agents/ef1d756f-b272-48fc-8729-f05c494674f7/error.txt +1 -0
- package/.code/agents/ef359853-0249-4e41-a804-c0fc459fe456/error.txt +1 -0
- package/.code/agents/effc7b4a-4b90-40a0-8c86-a7a99d2d5fd2/error.txt +1 -0
- package/.code/agents/fa15f8d5-8359-4a8b-83a3-2f2056b3ff40/error.txt +3 -0
- package/.code/agents/fbef4193-eadf-4c8a-83ff-4878a6310f25/error.txt +8 -0
- package/.code/agents/fd0a4b4a-fda4-4964-a6d6-2b8a2da387c6/error.txt +1 -0
- package/.dxtignore +57 -0
- package/.env.example +44 -0
- package/.gemini/settings.json +8 -0
- package/.github/ISSUE_TEMPLATE/bug_report.md +41 -0
- package/.github/ISSUE_TEMPLATE/config.yml +5 -0
- package/.github/ISSUE_TEMPLATE/feature_request.md +24 -0
- package/.github/ISSUE_TEMPLATE/release_checklist.md +31 -0
- package/.github/pull_request_template.md +41 -0
- package/.github/workflows/ci-tests.yml +41 -0
- package/.github/workflows/claude-code-review.yml +57 -0
- package/.github/workflows/claude.yml +50 -0
- package/.github/workflows/full-integration.yml +22 -0
- package/.github/workflows/pr-description-check.yml +88 -0
- package/.github/workflows/publish.yml +33 -0
- package/.github/workflows/release.yml +89 -0
- package/.mcpbignore +58 -0
- package/.prettierignore +10 -0
- package/.prettierrc.json +10 -0
- package/ADOS-2-Module-1-Complete-Manual.md +757 -0
- package/AGENTS.md +36 -0
- package/CHANGELOG.md +187 -0
- package/CLAUDE.md +414 -0
- package/CODEREVIEW_RESPONSE.md +128 -0
- package/LICENSE +17 -0
- package/NUL +1 -0
- package/README.md +222 -0
- package/SCHEMA_IMPROVEMENT_SUMMARY.md +120 -0
- package/TESTING_NOTES.md +217 -0
- package/WARP.md +245 -0
- package/accountactivity-merged.csv +149 -0
- package/bin/ynab-mcp-server.cjs +4 -0
- package/bin/ynab-mcp-server.js +8 -0
- package/bundle-analysis.html +13110 -0
- package/dist/bundle/index.cjs +124 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +85 -0
- package/dist/server/YNABMCPServer.d.ts +264 -0
- package/dist/server/YNABMCPServer.js +845 -0
- package/dist/server/budgetResolver.d.ts +15 -0
- package/dist/server/budgetResolver.js +99 -0
- package/dist/server/cacheManager.d.ts +74 -0
- package/dist/server/cacheManager.js +306 -0
- package/dist/server/config.d.ts +3 -0
- package/dist/server/config.js +19 -0
- package/dist/server/deltaCache.d.ts +61 -0
- package/dist/server/deltaCache.js +206 -0
- package/dist/server/deltaCache.merge.d.ts +9 -0
- package/dist/server/deltaCache.merge.js +111 -0
- package/dist/server/diagnostics.d.ts +90 -0
- package/dist/server/diagnostics.js +163 -0
- package/dist/server/errorHandler.d.ts +69 -0
- package/dist/server/errorHandler.js +524 -0
- package/dist/server/prompts.d.ts +31 -0
- package/dist/server/prompts.js +205 -0
- package/dist/server/rateLimiter.d.ts +27 -0
- package/dist/server/rateLimiter.js +82 -0
- package/dist/server/requestLogger.d.ts +62 -0
- package/dist/server/requestLogger.js +190 -0
- package/dist/server/resources.d.ts +39 -0
- package/dist/server/resources.js +85 -0
- package/dist/server/responseFormatter.d.ts +14 -0
- package/dist/server/responseFormatter.js +42 -0
- package/dist/server/securityMiddleware.d.ts +87 -0
- package/dist/server/securityMiddleware.js +117 -0
- package/dist/server/serverKnowledgeStore.d.ts +11 -0
- package/dist/server/serverKnowledgeStore.js +42 -0
- package/dist/server/toolRegistry.d.ts +85 -0
- package/dist/server/toolRegistry.js +272 -0
- package/dist/tools/__tests__/deltaTestUtils.d.ts +18 -0
- package/dist/tools/__tests__/deltaTestUtils.js +26 -0
- package/dist/tools/accountTools.d.ts +37 -0
- package/dist/tools/accountTools.js +175 -0
- package/dist/tools/budgetTools.d.ts +10 -0
- package/dist/tools/budgetTools.js +68 -0
- package/dist/tools/categoryTools.d.ts +27 -0
- package/dist/tools/categoryTools.js +232 -0
- package/dist/tools/compareTransactions/formatter.d.ts +71 -0
- package/dist/tools/compareTransactions/formatter.js +97 -0
- package/dist/tools/compareTransactions/index.d.ts +30 -0
- package/dist/tools/compareTransactions/index.js +160 -0
- package/dist/tools/compareTransactions/matcher.d.ts +12 -0
- package/dist/tools/compareTransactions/matcher.js +140 -0
- package/dist/tools/compareTransactions/parser.d.ts +14 -0
- package/dist/tools/compareTransactions/parser.js +430 -0
- package/dist/tools/compareTransactions/types.d.ts +27 -0
- package/dist/tools/compareTransactions/types.js +1 -0
- package/dist/tools/compareTransactions.d.ts +1 -0
- package/dist/tools/compareTransactions.js +1 -0
- package/dist/tools/deltaFetcher.d.ts +22 -0
- package/dist/tools/deltaFetcher.js +137 -0
- package/dist/tools/deltaSupport.d.ts +20 -0
- package/dist/tools/deltaSupport.js +176 -0
- package/dist/tools/exportTransactions.d.ts +17 -0
- package/dist/tools/exportTransactions.js +191 -0
- package/dist/tools/monthTools.d.ts +16 -0
- package/dist/tools/monthTools.js +107 -0
- package/dist/tools/payeeTools.d.ts +17 -0
- package/dist/tools/payeeTools.js +82 -0
- package/dist/tools/reconcileAdapter.d.ts +25 -0
- package/dist/tools/reconcileAdapter.js +167 -0
- package/dist/tools/reconciliation/analyzer.d.ts +3 -0
- package/dist/tools/reconciliation/analyzer.js +567 -0
- package/dist/tools/reconciliation/executor.d.ts +94 -0
- package/dist/tools/reconciliation/executor.js +611 -0
- package/dist/tools/reconciliation/index.d.ts +54 -0
- package/dist/tools/reconciliation/index.js +249 -0
- package/dist/tools/reconciliation/matcher.d.ts +3 -0
- package/dist/tools/reconciliation/matcher.js +160 -0
- package/dist/tools/reconciliation/payeeNormalizer.d.ts +6 -0
- package/dist/tools/reconciliation/payeeNormalizer.js +77 -0
- package/dist/tools/reconciliation/recommendationEngine.d.ts +2 -0
- package/dist/tools/reconciliation/recommendationEngine.js +273 -0
- package/dist/tools/reconciliation/reportFormatter.d.ts +13 -0
- package/dist/tools/reconciliation/reportFormatter.js +214 -0
- package/dist/tools/reconciliation/types.d.ts +172 -0
- package/dist/tools/reconciliation/types.js +7 -0
- package/dist/tools/schemas/outputs/accountOutputs.d.ts +58 -0
- package/dist/tools/schemas/outputs/accountOutputs.js +24 -0
- package/dist/tools/schemas/outputs/budgetOutputs.d.ts +48 -0
- package/dist/tools/schemas/outputs/budgetOutputs.js +15 -0
- package/dist/tools/schemas/outputs/categoryOutputs.d.ts +93 -0
- package/dist/tools/schemas/outputs/categoryOutputs.js +37 -0
- package/dist/tools/schemas/outputs/comparisonOutputs.d.ts +269 -0
- package/dist/tools/schemas/outputs/comparisonOutputs.js +181 -0
- package/dist/tools/schemas/outputs/index.d.ts +14 -0
- package/dist/tools/schemas/outputs/index.js +14 -0
- package/dist/tools/schemas/outputs/monthOutputs.d.ts +122 -0
- package/dist/tools/schemas/outputs/monthOutputs.js +51 -0
- package/dist/tools/schemas/outputs/payeeOutputs.d.ts +34 -0
- package/dist/tools/schemas/outputs/payeeOutputs.js +16 -0
- package/dist/tools/schemas/outputs/reconciliationOutputs.d.ts +1275 -0
- package/dist/tools/schemas/outputs/reconciliationOutputs.js +377 -0
- package/dist/tools/schemas/outputs/transactionMutationOutputs.d.ts +717 -0
- package/dist/tools/schemas/outputs/transactionMutationOutputs.js +260 -0
- package/dist/tools/schemas/outputs/transactionOutputs.d.ts +98 -0
- package/dist/tools/schemas/outputs/transactionOutputs.js +49 -0
- package/dist/tools/schemas/outputs/utilityOutputs.d.ts +219 -0
- package/dist/tools/schemas/outputs/utilityOutputs.js +120 -0
- package/dist/tools/schemas/shared/commonOutputs.d.ts +24 -0
- package/dist/tools/schemas/shared/commonOutputs.js +27 -0
- package/dist/tools/toolCategories.d.ts +32 -0
- package/dist/tools/toolCategories.js +32 -0
- package/dist/tools/transactionTools.d.ts +315 -0
- package/dist/tools/transactionTools.js +1722 -0
- package/dist/tools/utilityTools.d.ts +10 -0
- package/dist/tools/utilityTools.js +56 -0
- package/dist/types/index.d.ts +20 -0
- package/dist/types/index.js +16 -0
- package/dist/types/toolAnnotations.d.ts +7 -0
- package/dist/types/toolAnnotations.js +1 -0
- package/dist/utils/amountUtils.d.ts +3 -0
- package/dist/utils/amountUtils.js +10 -0
- package/dist/utils/dateUtils.d.ts +9 -0
- package/dist/utils/dateUtils.js +43 -0
- package/dist/utils/money.d.ts +21 -0
- package/dist/utils/money.js +51 -0
- package/docs/README.md +72 -0
- package/docs/assets/examples/reconciliation-with-recommendations.json +68 -0
- package/docs/assets/schemas/reconciliation-v2.json +338 -0
- package/docs/getting-started/CONFIGURATION.md +175 -0
- package/docs/getting-started/INSTALLATION.md +333 -0
- package/docs/getting-started/QUICKSTART.md +282 -0
- package/docs/guides/ARCHITECTURE.md +650 -0
- package/docs/guides/DEPLOYMENT.md +189 -0
- package/docs/guides/INTEGRATION_TESTING.md +730 -0
- package/docs/guides/TESTING.md +591 -0
- package/docs/reconciliation-flow.md +83 -0
- package/docs/reference/API.md +1450 -0
- package/docs/reference/EXAMPLES.md +946 -0
- package/docs/reference/TOOLS.md +348 -0
- package/docs/reference/TROUBLESHOOTING.md +481 -0
- package/esbuild.config.mjs +68 -0
- package/eslint.config.js +49 -0
- package/fix-types.sh +17 -0
- package/meta.json +12550 -0
- package/package.json +105 -0
- package/package.json.tmp +105 -0
- package/scripts/analyze-bundle.mjs +41 -0
- package/scripts/create-pr-description.js +203 -0
- package/scripts/generate-mcpb.ps1 +96 -0
- package/scripts/run-domain-integration-tests.js +33 -0
- package/scripts/run-generate-mcpb.js +29 -0
- package/scripts/run-throttled-integration-tests.js +116 -0
- package/scripts/test-delta-params.mjs +140 -0
- package/scripts/test-recommendations.ts +53 -0
- package/scripts/tmpTransaction.ts +48 -0
- package/scripts/validate-env.js +122 -0
- package/scripts/verify-build.js +105 -0
- package/scripts/watch-and-restart.ps1 +50 -0
- package/src/__tests__/comprehensive.integration.test.ts +1196 -0
- package/src/__tests__/delta.performance.test.ts +80 -0
- package/src/__tests__/performance.test.ts +725 -0
- package/src/__tests__/setup.ts +449 -0
- package/src/__tests__/testRunner.ts +444 -0
- package/src/__tests__/testUtils.ts +563 -0
- package/src/__tests__/workflows.e2e.test.ts +1675 -0
- package/src/index.ts +124 -0
- package/src/server/.gitkeep +1 -0
- package/src/server/YNABMCPServer.ts +1188 -0
- package/src/server/__tests__/YNABMCPServer.integration.test.ts +903 -0
- package/src/server/__tests__/YNABMCPServer.test.ts +894 -0
- package/src/server/__tests__/budgetResolver.test.ts +425 -0
- package/src/server/__tests__/cacheManager.test.ts +880 -0
- package/src/server/__tests__/config.test.ts +166 -0
- package/src/server/__tests__/deltaCache.merge.test.ts +724 -0
- package/src/server/__tests__/deltaCache.swr.test.ts +168 -0
- package/src/server/__tests__/deltaCache.test.ts +774 -0
- package/src/server/__tests__/diagnostics.test.ts +823 -0
- package/src/server/__tests__/errorHandler.integration.test.ts +466 -0
- package/src/server/__tests__/errorHandler.test.ts +416 -0
- package/src/server/__tests__/prompts.test.ts +354 -0
- package/src/server/__tests__/rateLimiter.test.ts +314 -0
- package/src/server/__tests__/requestLogger.test.ts +408 -0
- package/src/server/__tests__/resources.test.ts +299 -0
- package/src/server/__tests__/security.integration.test.ts +426 -0
- package/src/server/__tests__/securityMiddleware.test.ts +449 -0
- package/src/server/__tests__/server-startup.integration.test.ts +477 -0
- package/src/server/__tests__/serverKnowledgeStore.test.ts +174 -0
- package/src/server/__tests__/toolRegistry.test.ts +855 -0
- package/src/server/budgetResolver.ts +235 -0
- package/src/server/cacheManager.ts +503 -0
- package/src/server/config.ts +41 -0
- package/src/server/deltaCache.merge.ts +149 -0
- package/src/server/deltaCache.ts +341 -0
- package/src/server/diagnostics.ts +338 -0
- package/src/server/errorHandler.ts +756 -0
- package/src/server/prompts.ts +291 -0
- package/src/server/rateLimiter.ts +156 -0
- package/src/server/requestLogger.ts +344 -0
- package/src/server/resources.ts +168 -0
- package/src/server/responseFormatter.ts +51 -0
- package/src/server/securityMiddleware.ts +236 -0
- package/src/server/serverKnowledgeStore.ts +91 -0
- package/src/server/toolRegistry.ts +489 -0
- package/src/tools/.gitkeep +1 -0
- package/src/tools/__tests__/accountTools.delta.integration.test.ts +128 -0
- package/src/tools/__tests__/accountTools.integration.test.ts +117 -0
- package/src/tools/__tests__/accountTools.test.ts +653 -0
- package/src/tools/__tests__/budgetTools.delta.integration.test.ts +90 -0
- package/src/tools/__tests__/budgetTools.integration.test.ts +134 -0
- package/src/tools/__tests__/budgetTools.test.ts +423 -0
- package/src/tools/__tests__/categoryTools.delta.integration.test.ts +80 -0
- package/src/tools/__tests__/categoryTools.integration.test.ts +295 -0
- package/src/tools/__tests__/categoryTools.test.ts +622 -0
- package/src/tools/__tests__/compareTransactions/formatter.test.ts +486 -0
- package/src/tools/__tests__/compareTransactions/index.test.ts +383 -0
- package/src/tools/__tests__/compareTransactions/matcher.test.ts +410 -0
- package/src/tools/__tests__/compareTransactions/parser.test.ts +764 -0
- package/src/tools/__tests__/compareTransactions.test.ts +342 -0
- package/src/tools/__tests__/compareTransactions.window.test.ts +147 -0
- package/src/tools/__tests__/deltaFetcher.scheduled.integration.test.ts +76 -0
- package/src/tools/__tests__/deltaFetcher.test.ts +270 -0
- package/src/tools/__tests__/deltaSupport.test.ts +188 -0
- package/src/tools/__tests__/deltaTestUtils.ts +46 -0
- package/src/tools/__tests__/exportTransactions.test.ts +213 -0
- package/src/tools/__tests__/monthTools.delta.integration.test.ts +80 -0
- package/src/tools/__tests__/monthTools.integration.test.ts +174 -0
- package/src/tools/__tests__/monthTools.test.ts +523 -0
- package/src/tools/__tests__/payeeTools.delta.integration.test.ts +80 -0
- package/src/tools/__tests__/payeeTools.integration.test.ts +150 -0
- package/src/tools/__tests__/payeeTools.test.ts +445 -0
- package/src/tools/__tests__/transactionTools.integration.test.ts +762 -0
- package/src/tools/__tests__/transactionTools.test.ts +3521 -0
- package/src/tools/__tests__/utilityTools.integration.test.ts +128 -0
- package/src/tools/__tests__/utilityTools.test.ts +205 -0
- package/src/tools/accountTools.ts +283 -0
- package/src/tools/budgetTools.ts +112 -0
- package/src/tools/categoryTools.ts +366 -0
- package/src/tools/compareTransactions/formatter.ts +163 -0
- package/src/tools/compareTransactions/index.ts +228 -0
- package/src/tools/compareTransactions/matcher.ts +240 -0
- package/src/tools/compareTransactions/parser.ts +557 -0
- package/src/tools/compareTransactions/types.ts +60 -0
- package/src/tools/compareTransactions.ts +3 -0
- package/src/tools/deltaFetcher.ts +278 -0
- package/src/tools/deltaSupport.ts +293 -0
- package/src/tools/exportTransactions.ts +273 -0
- package/src/tools/monthTools.ts +164 -0
- package/src/tools/payeeTools.ts +140 -0
- package/src/tools/reconcileAdapter.ts +312 -0
- package/src/tools/reconciliation/__tests__/adapter.causes.test.ts +122 -0
- package/src/tools/reconciliation/__tests__/adapter.test.ts +234 -0
- package/src/tools/reconciliation/__tests__/analyzer.test.ts +406 -0
- package/src/tools/reconciliation/__tests__/executor.integration.test.ts +366 -0
- package/src/tools/reconciliation/__tests__/executor.test.ts +779 -0
- package/src/tools/reconciliation/__tests__/matcher.test.ts +650 -0
- package/src/tools/reconciliation/__tests__/payeeNormalizer.test.ts +278 -0
- package/src/tools/reconciliation/__tests__/recommendationEngine.integration.test.ts +658 -0
- package/src/tools/reconciliation/__tests__/recommendationEngine.test.ts +1000 -0
- package/src/tools/reconciliation/__tests__/reconciliation.delta.integration.test.ts +151 -0
- package/src/tools/reconciliation/__tests__/reportFormatter.test.ts +573 -0
- package/src/tools/reconciliation/__tests__/scenarios/adapterCurrency.scenario.test.ts +78 -0
- package/src/tools/reconciliation/__tests__/scenarios/extremes.scenario.test.ts +47 -0
- package/src/tools/reconciliation/__tests__/scenarios/repeatAmount.scenario.test.ts +61 -0
- package/src/tools/reconciliation/__tests__/schemaUrl.test.ts +49 -0
- package/src/tools/reconciliation/analyzer.ts +824 -0
- package/src/tools/reconciliation/executor.ts +880 -0
- package/src/tools/reconciliation/index.ts +400 -0
- package/src/tools/reconciliation/matcher.ts +269 -0
- package/src/tools/reconciliation/payeeNormalizer.ts +167 -0
- package/src/tools/reconciliation/recommendationEngine.ts +506 -0
- package/src/tools/reconciliation/reportFormatter.ts +363 -0
- package/src/tools/reconciliation/types.ts +314 -0
- package/src/tools/schemas/outputs/__tests__/accountOutputs.test.ts +424 -0
- package/src/tools/schemas/outputs/__tests__/budgetOutputs.test.ts +310 -0
- package/src/tools/schemas/outputs/__tests__/categoryOutputs.test.ts +448 -0
- package/src/tools/schemas/outputs/__tests__/comparisonOutputs.test.ts +519 -0
- package/src/tools/schemas/outputs/__tests__/dateValidation.test.ts +155 -0
- package/src/tools/schemas/outputs/__tests__/discrepancyDirection.test.ts +288 -0
- package/src/tools/schemas/outputs/__tests__/monthOutputs.test.ts +478 -0
- package/src/tools/schemas/outputs/__tests__/payeeOutputs.test.ts +370 -0
- package/src/tools/schemas/outputs/__tests__/reconciliationOutputs.test.ts +401 -0
- package/src/tools/schemas/outputs/__tests__/transactionMutationSchemas.test.ts +213 -0
- package/src/tools/schemas/outputs/__tests__/transactionOutputs.test.ts +474 -0
- package/src/tools/schemas/outputs/__tests__/utilityOutputs.test.ts +333 -0
- package/src/tools/schemas/outputs/accountOutputs.ts +137 -0
- package/src/tools/schemas/outputs/budgetOutputs.ts +86 -0
- package/src/tools/schemas/outputs/categoryOutputs.ts +194 -0
- package/src/tools/schemas/outputs/comparisonOutputs.ts +600 -0
- package/src/tools/schemas/outputs/index.ts +270 -0
- package/src/tools/schemas/outputs/monthOutputs.ts +243 -0
- package/src/tools/schemas/outputs/payeeOutputs.ts +105 -0
- package/src/tools/schemas/outputs/reconciliationOutputs.ts +796 -0
- package/src/tools/schemas/outputs/transactionMutationOutputs.ts +758 -0
- package/src/tools/schemas/outputs/transactionOutputs.ts +243 -0
- package/src/tools/schemas/outputs/utilityOutputs.ts +411 -0
- package/src/tools/schemas/shared/commonOutputs.ts +140 -0
- package/src/tools/toolCategories.ts +140 -0
- package/src/tools/transactionTools.ts +2509 -0
- package/src/tools/utilityTools.ts +90 -0
- package/src/types/.gitkeep +1 -0
- package/src/types/__tests__/index.test.ts +52 -0
- package/src/types/index.ts +67 -0
- package/src/types/integration-tests.d.ts +35 -0
- package/src/types/toolAnnotations.ts +44 -0
- package/src/utils/__tests__/dateUtils.test.ts +170 -0
- package/src/utils/__tests__/money.test.ts +189 -0
- package/src/utils/amountUtils.ts +32 -0
- package/src/utils/dateUtils.ts +108 -0
- package/src/utils/money.ts +123 -0
- package/test-csv-sample.csv +28 -0
- package/test-exports/sample_bank_statement.csv +7 -0
- package/test-exports/ynab_account_e9ddc2a6_minimal_1items_2025-11-19_09-04-53.json +23 -0
- package/test-exports/ynab_account_e9ddc2a6_minimal_1items_2025-11-19_10-37-42.json +23 -0
- package/test-exports/ynab_account_e9ddc2a6_minimal_4items_2025-11-19_09-02-09.json +44 -0
- package/test-exports/ynab_account_e9ddc2a6_minimal_6items_2025-11-19_10-37-52.json +58 -0
- package/test-exports/ynab_since_2025-11-01_account_4c18e9f0_minimal_14items_2025-11-16_10-07-10.json +115 -0
- package/test-reconcile-autodetect.js +40 -0
- package/test-reconcile-tool.js +152 -0
- package/test-reconcile-with-csv.cjs +89 -0
- package/test-statement.csv +8 -0
- package/test_debug.js +47 -0
- package/test_simple.mjs +16 -0
- package/tsconfig.json +31 -0
- package/tsconfig.prod.json +18 -0
- package/vitest-reporters/split-json-reporter.ts +211 -0
- package/vitest.config.ts +96 -0
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Central export point for all output schemas
|
|
3
|
+
*
|
|
4
|
+
* This file provides a single import location for all output validation schemas
|
|
5
|
+
* used throughout the YNAB MCP server. Import from this file rather than
|
|
6
|
+
* individual schema files for convenience and consistency.
|
|
7
|
+
*
|
|
8
|
+
* Includes schemas for: utilities, budgets, accounts, transactions (list/get),
|
|
9
|
+
* categories, payees, months, transaction mutations (create/update/delete),
|
|
10
|
+
* reconciliation analysis, and comparison/export operations.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* import { GetUserOutputSchema, type GetUserOutput } from './schemas/outputs/index.js';
|
|
15
|
+
* import { ListBudgetsOutputSchema, type ListBudgetsOutput } from './schemas/outputs/index.js';
|
|
16
|
+
* import { CreateTransactionOutputSchema, type CreateTransactionOutput } from './schemas/outputs/index.js';
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
// ============================================================================
|
|
21
|
+
// UTILITY TOOL OUTPUT SCHEMAS
|
|
22
|
+
// ============================================================================
|
|
23
|
+
|
|
24
|
+
// Main output schemas
|
|
25
|
+
export {
|
|
26
|
+
GetUserOutputSchema,
|
|
27
|
+
type GetUserOutput,
|
|
28
|
+
ConvertAmountOutputSchema,
|
|
29
|
+
type ConvertAmountOutput,
|
|
30
|
+
GetDefaultBudgetOutputSchema,
|
|
31
|
+
type GetDefaultBudgetOutput,
|
|
32
|
+
SetDefaultBudgetOutputSchema,
|
|
33
|
+
type SetDefaultBudgetOutput,
|
|
34
|
+
ClearCacheOutputSchema,
|
|
35
|
+
type ClearCacheOutput,
|
|
36
|
+
SetOutputFormatOutputSchema,
|
|
37
|
+
type SetOutputFormatOutput,
|
|
38
|
+
DiagnosticInfoOutputSchema,
|
|
39
|
+
type DiagnosticInfoOutput,
|
|
40
|
+
GetBudgetOutputSchema,
|
|
41
|
+
type GetBudgetOutput,
|
|
42
|
+
} from './utilityOutputs.js';
|
|
43
|
+
|
|
44
|
+
// Nested schemas that may be useful independently
|
|
45
|
+
export {
|
|
46
|
+
UserSchema,
|
|
47
|
+
ConversionSchema,
|
|
48
|
+
DateFormatSchema,
|
|
49
|
+
CurrencyFormatSchema,
|
|
50
|
+
BudgetDetailSchema,
|
|
51
|
+
ServerInfoSchema,
|
|
52
|
+
MemoryInfoSchema,
|
|
53
|
+
EnvironmentInfoSchema,
|
|
54
|
+
CacheInfoSchema,
|
|
55
|
+
DeltaInfoSchema,
|
|
56
|
+
} from './utilityOutputs.js';
|
|
57
|
+
|
|
58
|
+
// ============================================================================
|
|
59
|
+
// BUDGET TOOL OUTPUT SCHEMAS
|
|
60
|
+
// ============================================================================
|
|
61
|
+
|
|
62
|
+
export {
|
|
63
|
+
ListBudgetsOutputSchema,
|
|
64
|
+
type ListBudgetsOutput,
|
|
65
|
+
BudgetSummarySchema,
|
|
66
|
+
type BudgetSummary,
|
|
67
|
+
} from './budgetOutputs.js';
|
|
68
|
+
|
|
69
|
+
// ============================================================================
|
|
70
|
+
// ACCOUNT TOOL OUTPUT SCHEMAS
|
|
71
|
+
// ============================================================================
|
|
72
|
+
|
|
73
|
+
export {
|
|
74
|
+
ListAccountsOutputSchema,
|
|
75
|
+
type ListAccountsOutput,
|
|
76
|
+
GetAccountOutputSchema,
|
|
77
|
+
type GetAccountOutput,
|
|
78
|
+
AccountSchema,
|
|
79
|
+
type Account,
|
|
80
|
+
} from './accountOutputs.js';
|
|
81
|
+
|
|
82
|
+
// ============================================================================
|
|
83
|
+
// TRANSACTION TOOL OUTPUT SCHEMAS
|
|
84
|
+
// ============================================================================
|
|
85
|
+
|
|
86
|
+
export {
|
|
87
|
+
ListTransactionsOutputSchema,
|
|
88
|
+
type ListTransactionsOutput,
|
|
89
|
+
GetTransactionOutputSchema,
|
|
90
|
+
type GetTransactionOutput,
|
|
91
|
+
TransactionSchema,
|
|
92
|
+
type Transaction,
|
|
93
|
+
TransactionPreviewSchema,
|
|
94
|
+
type TransactionPreview,
|
|
95
|
+
} from './transactionOutputs.js';
|
|
96
|
+
|
|
97
|
+
// ============================================================================
|
|
98
|
+
// CATEGORY TOOL OUTPUT SCHEMAS
|
|
99
|
+
// ============================================================================
|
|
100
|
+
|
|
101
|
+
export {
|
|
102
|
+
ListCategoriesOutputSchema,
|
|
103
|
+
type ListCategoriesOutput,
|
|
104
|
+
GetCategoryOutputSchema,
|
|
105
|
+
type GetCategoryOutput,
|
|
106
|
+
CategorySchema,
|
|
107
|
+
type Category,
|
|
108
|
+
CategoryGroupSchema,
|
|
109
|
+
type CategoryGroup,
|
|
110
|
+
} from './categoryOutputs.js';
|
|
111
|
+
|
|
112
|
+
// ============================================================================
|
|
113
|
+
// PAYEE TOOL OUTPUT SCHEMAS
|
|
114
|
+
// ============================================================================
|
|
115
|
+
|
|
116
|
+
export {
|
|
117
|
+
ListPayeesOutputSchema,
|
|
118
|
+
type ListPayeesOutput,
|
|
119
|
+
GetPayeeOutputSchema,
|
|
120
|
+
type GetPayeeOutput,
|
|
121
|
+
PayeeSchema,
|
|
122
|
+
type Payee,
|
|
123
|
+
} from './payeeOutputs.js';
|
|
124
|
+
|
|
125
|
+
// ============================================================================
|
|
126
|
+
// MONTH TOOL OUTPUT SCHEMAS
|
|
127
|
+
// ============================================================================
|
|
128
|
+
|
|
129
|
+
export {
|
|
130
|
+
GetMonthOutputSchema,
|
|
131
|
+
type GetMonthOutput,
|
|
132
|
+
ListMonthsOutputSchema,
|
|
133
|
+
type ListMonthsOutput,
|
|
134
|
+
MonthDetailSchema,
|
|
135
|
+
type MonthDetail,
|
|
136
|
+
MonthSummarySchema,
|
|
137
|
+
type MonthSummary,
|
|
138
|
+
MonthCategorySchema,
|
|
139
|
+
type MonthCategory,
|
|
140
|
+
} from './monthOutputs.js';
|
|
141
|
+
|
|
142
|
+
// ============================================================================
|
|
143
|
+
// TRANSACTION MUTATION OUTPUT SCHEMAS
|
|
144
|
+
// ============================================================================
|
|
145
|
+
|
|
146
|
+
export {
|
|
147
|
+
CreateTransactionOutputSchema,
|
|
148
|
+
type CreateTransactionOutput,
|
|
149
|
+
CreateTransactionsOutputSchema,
|
|
150
|
+
type CreateTransactionsOutput,
|
|
151
|
+
UpdateTransactionOutputSchema,
|
|
152
|
+
type UpdateTransactionOutput,
|
|
153
|
+
UpdateTransactionsOutputSchema,
|
|
154
|
+
type UpdateTransactionsOutput,
|
|
155
|
+
DeleteTransactionOutputSchema,
|
|
156
|
+
type DeleteTransactionOutput,
|
|
157
|
+
CreateReceiptSplitTransactionOutputSchema,
|
|
158
|
+
type CreateReceiptSplitTransactionOutput,
|
|
159
|
+
CreateAccountOutputSchema,
|
|
160
|
+
type CreateAccountOutput,
|
|
161
|
+
UpdateCategoryOutputSchema,
|
|
162
|
+
type UpdateCategoryOutput,
|
|
163
|
+
} from './transactionMutationOutputs.js';
|
|
164
|
+
|
|
165
|
+
// Nested schemas for transaction mutations
|
|
166
|
+
export {
|
|
167
|
+
SubtransactionSchema,
|
|
168
|
+
type Subtransaction,
|
|
169
|
+
SubtransactionPreviewSchema,
|
|
170
|
+
type SubtransactionPreview,
|
|
171
|
+
TransactionWithBalanceSchema,
|
|
172
|
+
type TransactionWithBalance,
|
|
173
|
+
TransactionDryRunPreviewSchema,
|
|
174
|
+
type TransactionDryRunPreview,
|
|
175
|
+
ReceiptItemSchema,
|
|
176
|
+
type ReceiptItem,
|
|
177
|
+
ReceiptCategoryBreakdownSchema,
|
|
178
|
+
type ReceiptCategoryBreakdown,
|
|
179
|
+
ReceiptSummarySchema,
|
|
180
|
+
type ReceiptSummary,
|
|
181
|
+
BulkOperationSummarySchema,
|
|
182
|
+
type BulkOperationSummary,
|
|
183
|
+
BulkResultSchema,
|
|
184
|
+
type BulkResult,
|
|
185
|
+
DryRunPreviewItemSchema,
|
|
186
|
+
type DryRunPreviewItem,
|
|
187
|
+
DryRunWarningSchema,
|
|
188
|
+
type DryRunWarning,
|
|
189
|
+
} from './transactionMutationOutputs.js';
|
|
190
|
+
|
|
191
|
+
// ============================================================================
|
|
192
|
+
// RECONCILIATION OUTPUT SCHEMAS
|
|
193
|
+
// ============================================================================
|
|
194
|
+
|
|
195
|
+
export {
|
|
196
|
+
ReconcileAccountOutputSchema,
|
|
197
|
+
type ReconcileAccountOutput,
|
|
198
|
+
} from './reconciliationOutputs.js';
|
|
199
|
+
|
|
200
|
+
// Nested schemas for reconciliation
|
|
201
|
+
export {
|
|
202
|
+
MoneyValueSchema,
|
|
203
|
+
type MoneyValue,
|
|
204
|
+
BankTransactionSchema,
|
|
205
|
+
type BankTransaction,
|
|
206
|
+
YNABTransactionSimpleSchema,
|
|
207
|
+
type YNABTransactionSimple,
|
|
208
|
+
MatchCandidateSchema,
|
|
209
|
+
type MatchCandidate,
|
|
210
|
+
TransactionMatchSchema,
|
|
211
|
+
type TransactionMatch,
|
|
212
|
+
BalanceInfoSchema,
|
|
213
|
+
type BalanceInfo,
|
|
214
|
+
ReconciliationSummarySchema,
|
|
215
|
+
type ReconciliationSummary,
|
|
216
|
+
ReconciliationInsightSchema,
|
|
217
|
+
type ReconciliationInsight,
|
|
218
|
+
ActionableRecommendationSchema,
|
|
219
|
+
type ActionableRecommendation,
|
|
220
|
+
ExecutionResultSchema,
|
|
221
|
+
type ExecutionResult,
|
|
222
|
+
AuditMetadataSchema,
|
|
223
|
+
type AuditMetadata,
|
|
224
|
+
} from './reconciliationOutputs.js';
|
|
225
|
+
|
|
226
|
+
// ============================================================================
|
|
227
|
+
// COMPARISON AND EXPORT OUTPUT SCHEMAS
|
|
228
|
+
// ============================================================================
|
|
229
|
+
|
|
230
|
+
export {
|
|
231
|
+
CompareTransactionsOutputSchema,
|
|
232
|
+
type CompareTransactionsOutput,
|
|
233
|
+
ExportTransactionsOutputSchema,
|
|
234
|
+
type ExportTransactionsOutput,
|
|
235
|
+
} from './comparisonOutputs.js';
|
|
236
|
+
|
|
237
|
+
/**
|
|
238
|
+
* Nested schemas for comparison and export.
|
|
239
|
+
*
|
|
240
|
+
* @remarks
|
|
241
|
+
* Some of these schemas are for internal processing and not guaranteed to be stable:
|
|
242
|
+
* - **Internal-only (may change):** BankTransactionComparisonSchema, YNABTransactionComparisonSchema,
|
|
243
|
+
* TransactionMatchComparisonSchema - Used during matching algorithm, not in final output
|
|
244
|
+
* - **Public contracts (stable):** ComparisonParametersSchema, DateRangeSchema, ExportInfoSchema,
|
|
245
|
+
* ExportedTransactionSchema - Part of durable tool output format
|
|
246
|
+
*
|
|
247
|
+
* Internal schemas are exported for testing and advanced use cases, but should not be relied upon
|
|
248
|
+
* for backward compatibility. Use the main output schemas (CompareTransactionsOutputSchema,
|
|
249
|
+
* ExportTransactionsOutputSchema) for stable contracts.
|
|
250
|
+
*/
|
|
251
|
+
export {
|
|
252
|
+
/** @internal - Used during matching algorithm, not part of public output */
|
|
253
|
+
BankTransactionComparisonSchema,
|
|
254
|
+
type BankTransactionComparison,
|
|
255
|
+
/** @internal - Used during matching algorithm, not part of public output */
|
|
256
|
+
YNABTransactionComparisonSchema,
|
|
257
|
+
type YNABTransactionComparison,
|
|
258
|
+
/** @internal - Used during matching algorithm, not part of public output */
|
|
259
|
+
TransactionMatchComparisonSchema,
|
|
260
|
+
type TransactionMatchComparison,
|
|
261
|
+
// Public contracts below - part of stable tool output
|
|
262
|
+
ComparisonParametersSchema,
|
|
263
|
+
type ComparisonParameters,
|
|
264
|
+
DateRangeSchema,
|
|
265
|
+
type DateRange,
|
|
266
|
+
ExportInfoSchema,
|
|
267
|
+
type ExportInfo,
|
|
268
|
+
ExportedTransactionSchema,
|
|
269
|
+
type ExportedTransaction,
|
|
270
|
+
} from './comparisonOutputs.js';
|
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Output schemas for month-related tools.
|
|
3
|
+
*
|
|
4
|
+
* Defines Zod schemas and TypeScript types for responses from month tools:
|
|
5
|
+
* - `get_month`: Returns detailed month data including categories with cache metadata
|
|
6
|
+
* - `list_months`: Returns summary of all months without category details
|
|
7
|
+
*
|
|
8
|
+
* Note: The schemas distinguish between detailed month data (with categories array)
|
|
9
|
+
* and summary data (without categories array).
|
|
10
|
+
*
|
|
11
|
+
* @see src/tools/monthTools.ts:38-104 for get_month handler
|
|
12
|
+
* @see src/tools/monthTools.ts:110-164 for list_months handler
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```typescript
|
|
16
|
+
* const getOutput: GetMonthOutput = {
|
|
17
|
+
* month: {
|
|
18
|
+
* month: '2025-11-01',
|
|
19
|
+
* note: 'November budget',
|
|
20
|
+
* income: 5000.00,
|
|
21
|
+
* budgeted: 4500.00,
|
|
22
|
+
* activity: -4200.00,
|
|
23
|
+
* to_be_budgeted: 300.00,
|
|
24
|
+
* age_of_money: 45,
|
|
25
|
+
* deleted: false,
|
|
26
|
+
* categories: [
|
|
27
|
+
* {
|
|
28
|
+
* id: 'category-123',
|
|
29
|
+
* category_group_id: 'group-456',
|
|
30
|
+
* category_group_name: 'Monthly Bills',
|
|
31
|
+
* name: 'Electricity',
|
|
32
|
+
* hidden: false,
|
|
33
|
+
* budgeted: 150.00,
|
|
34
|
+
* activity: -145.50,
|
|
35
|
+
* balance: 204.50,
|
|
36
|
+
* goal_type: 'TB',
|
|
37
|
+
* goal_target: 150000,
|
|
38
|
+
* deleted: false
|
|
39
|
+
* }
|
|
40
|
+
* ]
|
|
41
|
+
* },
|
|
42
|
+
* cached: true,
|
|
43
|
+
* cache_info: {
|
|
44
|
+
* cache_key: 'month:budget-123:2025-11-01',
|
|
45
|
+
* age_ms: 2000,
|
|
46
|
+
* stale: false
|
|
47
|
+
* }
|
|
48
|
+
* };
|
|
49
|
+
*
|
|
50
|
+
* const listOutput: ListMonthsOutput = {
|
|
51
|
+
* months: [
|
|
52
|
+
* {
|
|
53
|
+
* month: '2025-11-01',
|
|
54
|
+
* note: 'November budget',
|
|
55
|
+
* income: 5000.00,
|
|
56
|
+
* budgeted: 4500.00,
|
|
57
|
+
* activity: -4200.00,
|
|
58
|
+
* to_be_budgeted: 300.00,
|
|
59
|
+
* age_of_money: 45,
|
|
60
|
+
* deleted: false
|
|
61
|
+
* },
|
|
62
|
+
* {
|
|
63
|
+
* month: '2025-10-01',
|
|
64
|
+
* income: 5000.00,
|
|
65
|
+
* budgeted: 4800.00,
|
|
66
|
+
* activity: -4750.00,
|
|
67
|
+
* to_be_budgeted: 50.00,
|
|
68
|
+
* age_of_money: 42,
|
|
69
|
+
* deleted: false
|
|
70
|
+
* }
|
|
71
|
+
* ],
|
|
72
|
+
* cached: true,
|
|
73
|
+
* cache_info: {
|
|
74
|
+
* cache_key: 'months:budget-123',
|
|
75
|
+
* age_ms: 5000,
|
|
76
|
+
* stale: false
|
|
77
|
+
* }
|
|
78
|
+
* };
|
|
79
|
+
* ```
|
|
80
|
+
*/
|
|
81
|
+
|
|
82
|
+
import { z } from 'zod/v4';
|
|
83
|
+
import { CacheMetadataSchema } from '../shared/commonOutputs.js';
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Schema for a category within month data.
|
|
87
|
+
*
|
|
88
|
+
* Similar to CategorySchema but includes additional goal-related fields
|
|
89
|
+
* specific to month budget data.
|
|
90
|
+
*/
|
|
91
|
+
export const MonthCategorySchema = z.object({
|
|
92
|
+
/** Unique identifier for the category */
|
|
93
|
+
id: z.string().describe('Category ID'),
|
|
94
|
+
|
|
95
|
+
/** Category group ID this category belongs to */
|
|
96
|
+
category_group_id: z.string().describe('Category group ID'),
|
|
97
|
+
|
|
98
|
+
/** Category group name (optional) */
|
|
99
|
+
category_group_name: z.string().optional().describe('Category group name'),
|
|
100
|
+
|
|
101
|
+
/** Human-readable category name */
|
|
102
|
+
name: z.string().describe('Category name'),
|
|
103
|
+
|
|
104
|
+
/** Whether category is hidden */
|
|
105
|
+
hidden: z.boolean().describe('Hidden flag'),
|
|
106
|
+
|
|
107
|
+
/** Original category group ID if moved (optional) */
|
|
108
|
+
original_category_group_id: z.string().optional().describe('Original category group ID'),
|
|
109
|
+
|
|
110
|
+
/** Optional category note */
|
|
111
|
+
note: z.string().optional().describe('Category note'),
|
|
112
|
+
|
|
113
|
+
/** Budgeted amount in dollars */
|
|
114
|
+
budgeted: z.number().describe('Budgeted amount in dollars'),
|
|
115
|
+
|
|
116
|
+
/** Activity (spending) in dollars */
|
|
117
|
+
activity: z.number().describe('Activity in dollars'),
|
|
118
|
+
|
|
119
|
+
/** Current balance in dollars */
|
|
120
|
+
balance: z.number().describe('Balance in dollars'),
|
|
121
|
+
|
|
122
|
+
/** Goal type (TB, TBD, MF, NEED, DEBT, optional) */
|
|
123
|
+
goal_type: z.string().optional().describe('Goal type'),
|
|
124
|
+
|
|
125
|
+
/** Goal creation month (YYYY-MM-DD, optional) */
|
|
126
|
+
goal_creation_month: z.string().optional().describe('Goal creation month'),
|
|
127
|
+
|
|
128
|
+
/** Goal target amount in milliunits (optional) */
|
|
129
|
+
goal_target: z.number().optional().describe('Goal target in milliunits'),
|
|
130
|
+
|
|
131
|
+
/** Goal target month (YYYY-MM-DD, optional) */
|
|
132
|
+
goal_target_month: z.string().optional().describe('Goal target month'),
|
|
133
|
+
|
|
134
|
+
/** Goal percentage complete (optional) */
|
|
135
|
+
goal_percentage_complete: z.number().optional().describe('Goal percentage complete'),
|
|
136
|
+
|
|
137
|
+
/** Goal months to budget (optional) */
|
|
138
|
+
goal_months_to_budget: z.number().optional().describe('Goal months to budget'),
|
|
139
|
+
|
|
140
|
+
/** Goal under funded amount (optional) */
|
|
141
|
+
goal_under_funded: z.number().optional().describe('Goal under funded amount'),
|
|
142
|
+
|
|
143
|
+
/** Goal overall funded amount (optional) */
|
|
144
|
+
goal_overall_funded: z.number().optional().describe('Goal overall funded amount'),
|
|
145
|
+
|
|
146
|
+
/** Goal overall left amount (optional) */
|
|
147
|
+
goal_overall_left: z.number().optional().describe('Goal overall left amount'),
|
|
148
|
+
|
|
149
|
+
/** Whether category is deleted */
|
|
150
|
+
deleted: z.boolean().describe('Deleted flag'),
|
|
151
|
+
});
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* Schema for detailed month data (includes categories array).
|
|
155
|
+
*
|
|
156
|
+
* Used by get_month to return complete month details.
|
|
157
|
+
*/
|
|
158
|
+
export const MonthDetailSchema = z.object({
|
|
159
|
+
/** Month identifier (YYYY-MM-DD format, first day of month) */
|
|
160
|
+
month: z.string().describe('Month identifier'),
|
|
161
|
+
|
|
162
|
+
/** Optional month note */
|
|
163
|
+
note: z.string().optional().describe('Month note'),
|
|
164
|
+
|
|
165
|
+
/** Total income for the month in dollars */
|
|
166
|
+
income: z.number().describe('Income in dollars'),
|
|
167
|
+
|
|
168
|
+
/** Total budgeted for the month in dollars */
|
|
169
|
+
budgeted: z.number().describe('Budgeted amount in dollars'),
|
|
170
|
+
|
|
171
|
+
/** Total activity (spending) for the month in dollars */
|
|
172
|
+
activity: z.number().describe('Activity in dollars'),
|
|
173
|
+
|
|
174
|
+
/** Amount to be budgeted in dollars */
|
|
175
|
+
to_be_budgeted: z.number().describe('To be budgeted in dollars'),
|
|
176
|
+
|
|
177
|
+
/** Age of money in days (optional, can be null if insufficient history) */
|
|
178
|
+
age_of_money: z.number().nullish().describe('Age of money in days'),
|
|
179
|
+
|
|
180
|
+
/** Whether month is deleted */
|
|
181
|
+
deleted: z.boolean().describe('Deleted flag'),
|
|
182
|
+
|
|
183
|
+
/** Array of category data for this month (optional) */
|
|
184
|
+
categories: z.array(MonthCategorySchema).optional().describe('Categories for this month'),
|
|
185
|
+
});
|
|
186
|
+
|
|
187
|
+
/**
|
|
188
|
+
* Schema for summary month data (excludes categories array).
|
|
189
|
+
*
|
|
190
|
+
* Used by list_months to return month summaries without category details.
|
|
191
|
+
*/
|
|
192
|
+
export const MonthSummarySchema = z.object({
|
|
193
|
+
/** Month identifier (YYYY-MM-DD format, first day of month) */
|
|
194
|
+
month: z.string().describe('Month identifier'),
|
|
195
|
+
|
|
196
|
+
/** Optional month note */
|
|
197
|
+
note: z.string().optional().describe('Month note'),
|
|
198
|
+
|
|
199
|
+
/** Total income for the month in dollars */
|
|
200
|
+
income: z.number().describe('Income in dollars'),
|
|
201
|
+
|
|
202
|
+
/** Total budgeted for the month in dollars */
|
|
203
|
+
budgeted: z.number().describe('Budgeted amount in dollars'),
|
|
204
|
+
|
|
205
|
+
/** Total activity (spending) for the month in dollars */
|
|
206
|
+
activity: z.number().describe('Activity in dollars'),
|
|
207
|
+
|
|
208
|
+
/** Amount to be budgeted in dollars */
|
|
209
|
+
to_be_budgeted: z.number().describe('To be budgeted in dollars'),
|
|
210
|
+
|
|
211
|
+
/** Age of money in days (optional, can be null if insufficient history) */
|
|
212
|
+
age_of_money: z.number().nullish().describe('Age of money in days'),
|
|
213
|
+
|
|
214
|
+
/** Whether month is deleted */
|
|
215
|
+
deleted: z.boolean().describe('Deleted flag'),
|
|
216
|
+
});
|
|
217
|
+
|
|
218
|
+
/**
|
|
219
|
+
* Schema for `get_month` tool output.
|
|
220
|
+
*
|
|
221
|
+
* Returns detailed month data including categories with cache metadata.
|
|
222
|
+
*/
|
|
223
|
+
export const GetMonthOutputSchema = CacheMetadataSchema.extend({
|
|
224
|
+
/** Detailed month object including categories */
|
|
225
|
+
month: MonthDetailSchema.describe('Month details'),
|
|
226
|
+
});
|
|
227
|
+
|
|
228
|
+
/**
|
|
229
|
+
* Schema for `list_months` tool output.
|
|
230
|
+
*
|
|
231
|
+
* Returns summary of all months without category details.
|
|
232
|
+
*/
|
|
233
|
+
export const ListMonthsOutputSchema = CacheMetadataSchema.extend({
|
|
234
|
+
/** Array of month summary objects */
|
|
235
|
+
months: z.array(MonthSummarySchema).describe('List of months'),
|
|
236
|
+
});
|
|
237
|
+
|
|
238
|
+
// Export inferred TypeScript types
|
|
239
|
+
export type MonthCategory = z.infer<typeof MonthCategorySchema>;
|
|
240
|
+
export type MonthDetail = z.infer<typeof MonthDetailSchema>;
|
|
241
|
+
export type MonthSummary = z.infer<typeof MonthSummarySchema>;
|
|
242
|
+
export type GetMonthOutput = z.infer<typeof GetMonthOutputSchema>;
|
|
243
|
+
export type ListMonthsOutput = z.infer<typeof ListMonthsOutputSchema>;
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Output schemas for payee-related tools.
|
|
3
|
+
*
|
|
4
|
+
* Defines Zod schemas and TypeScript types for responses from payee tools:
|
|
5
|
+
* - `list_payees`: Returns all payees with pagination and cache metadata
|
|
6
|
+
* - `get_payee`: Returns a single payee with cache metadata
|
|
7
|
+
*
|
|
8
|
+
* @see src/tools/payeeTools.ts:38-94 for list_payees handler
|
|
9
|
+
* @see src/tools/payeeTools.ts:100-140 for get_payee handler
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* const listOutput: ListPayeesOutput = {
|
|
14
|
+
* payees: [
|
|
15
|
+
* {
|
|
16
|
+
* id: 'payee-123',
|
|
17
|
+
* name: 'Whole Foods',
|
|
18
|
+
* transfer_account_id: undefined,
|
|
19
|
+
* deleted: false
|
|
20
|
+
* },
|
|
21
|
+
* {
|
|
22
|
+
* id: 'payee-456',
|
|
23
|
+
* name: 'Transfer: Savings Account',
|
|
24
|
+
* transfer_account_id: 'account-789',
|
|
25
|
+
* deleted: false
|
|
26
|
+
* }
|
|
27
|
+
* ],
|
|
28
|
+
* total_count: 50,
|
|
29
|
+
* returned_count: 50,
|
|
30
|
+
* cached: true,
|
|
31
|
+
* cache_info: {
|
|
32
|
+
* cache_key: 'payees:budget-123',
|
|
33
|
+
* age_ms: 10000,
|
|
34
|
+
* stale: false
|
|
35
|
+
* }
|
|
36
|
+
* };
|
|
37
|
+
*
|
|
38
|
+
* const getOutput: GetPayeeOutput = {
|
|
39
|
+
* payee: {
|
|
40
|
+
* id: 'payee-123',
|
|
41
|
+
* name: 'Whole Foods',
|
|
42
|
+
* deleted: false
|
|
43
|
+
* },
|
|
44
|
+
* cached: false,
|
|
45
|
+
* cache_info: {
|
|
46
|
+
* cache_key: 'payee:budget-123:payee-123',
|
|
47
|
+
* age_ms: 0,
|
|
48
|
+
* stale: false
|
|
49
|
+
* }
|
|
50
|
+
* };
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
53
|
+
|
|
54
|
+
import { z } from 'zod/v4';
|
|
55
|
+
import { CacheMetadataSchema } from '../shared/commonOutputs.js';
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Schema for a payee object.
|
|
59
|
+
*
|
|
60
|
+
* Represents payee data including transfer account linkage.
|
|
61
|
+
*/
|
|
62
|
+
export const PayeeSchema = z.object({
|
|
63
|
+
/** Unique identifier for the payee */
|
|
64
|
+
id: z.string().describe('Payee ID'),
|
|
65
|
+
|
|
66
|
+
/** Human-readable payee name */
|
|
67
|
+
name: z.string().describe('Payee name'),
|
|
68
|
+
|
|
69
|
+
/** Transfer account ID if this payee represents a transfer (optional) */
|
|
70
|
+
transfer_account_id: z.string().optional().describe('Transfer account ID'),
|
|
71
|
+
|
|
72
|
+
/** Whether payee is deleted */
|
|
73
|
+
deleted: z.boolean().describe('Deleted flag'),
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Schema for `list_payees` tool output.
|
|
78
|
+
*
|
|
79
|
+
* Returns all payees for a budget with pagination and cache metadata.
|
|
80
|
+
*/
|
|
81
|
+
export const ListPayeesOutputSchema = CacheMetadataSchema.extend({
|
|
82
|
+
/** Array of payee objects */
|
|
83
|
+
payees: z.array(PayeeSchema).describe('List of payees'),
|
|
84
|
+
|
|
85
|
+
/** Total number of payees in budget */
|
|
86
|
+
total_count: z.number().int().describe('Total payee count'),
|
|
87
|
+
|
|
88
|
+
/** Number of payees returned in this response */
|
|
89
|
+
returned_count: z.number().int().describe('Returned payee count'),
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Schema for `get_payee` tool output.
|
|
94
|
+
*
|
|
95
|
+
* Returns a single payee by ID with cache metadata.
|
|
96
|
+
*/
|
|
97
|
+
export const GetPayeeOutputSchema = CacheMetadataSchema.extend({
|
|
98
|
+
/** Single payee object */
|
|
99
|
+
payee: PayeeSchema.describe('Payee details'),
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
// Export inferred TypeScript types
|
|
103
|
+
export type Payee = z.infer<typeof PayeeSchema>;
|
|
104
|
+
export type ListPayeesOutput = z.infer<typeof ListPayeesOutputSchema>;
|
|
105
|
+
export type GetPayeeOutput = z.infer<typeof GetPayeeOutputSchema>;
|