@dizzlkheinz/ynab-mcpb 0.17.0 → 0.18.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.
Files changed (182) hide show
  1. package/.env.example +33 -33
  2. package/.github/workflows/ci-tests.yml +45 -45
  3. package/.github/workflows/claude-code-review.yml +57 -57
  4. package/.github/workflows/claude.yml +50 -50
  5. package/.github/workflows/full-integration.yml +22 -22
  6. package/.github/workflows/publish.yml +12 -3
  7. package/.github/workflows/release.yml +2 -2
  8. package/CHANGELOG.md +10 -1
  9. package/CLAUDE.md +16 -12
  10. package/README.md +6 -1
  11. package/dist/bundle/index.cjs +49 -49
  12. package/dist/server/YNABMCPServer.d.ts +125 -54
  13. package/dist/server/YNABMCPServer.js +42 -11
  14. package/dist/server/cacheManager.js +6 -5
  15. package/dist/server/completions.d.ts +25 -0
  16. package/dist/server/completions.js +160 -0
  17. package/dist/server/config.d.ts +2 -2
  18. package/dist/server/errorHandler.js +1 -0
  19. package/dist/server/rateLimiter.js +3 -1
  20. package/dist/server/resources.d.ts +1 -0
  21. package/dist/server/resources.js +33 -16
  22. package/dist/server/securityMiddleware.d.ts +38 -8
  23. package/dist/server/securityMiddleware.js +1 -0
  24. package/dist/server/toolRegistry.d.ts +9 -0
  25. package/dist/server/toolRegistry.js +11 -0
  26. package/dist/tools/adapters.d.ts +3 -1
  27. package/dist/tools/adapters.js +1 -0
  28. package/dist/tools/reconciliation/executor.d.ts +2 -0
  29. package/dist/tools/reconciliation/executor.js +26 -1
  30. package/dist/tools/reconciliation/index.d.ts +3 -2
  31. package/dist/tools/reconciliation/index.js +4 -3
  32. package/dist/tools/schemas/outputs/index.d.ts +2 -2
  33. package/dist/tools/schemas/outputs/index.js +2 -2
  34. package/dist/tools/schemas/outputs/utilityOutputs.d.ts +0 -15
  35. package/dist/tools/schemas/outputs/utilityOutputs.js +0 -9
  36. package/dist/tools/utilityTools.d.ts +0 -7
  37. package/dist/tools/utilityTools.js +1 -50
  38. package/docs/maintainers/npm-publishing.md +27 -0
  39. package/docs/reference/API.md +83 -97
  40. package/docs/technical/reconciliation-system-architecture.md +2251 -2251
  41. package/package.json +6 -6
  42. package/scripts/analyze-bundle.mjs +41 -41
  43. package/scripts/generate-mcpb.ps1 +95 -95
  44. package/scripts/watch-and-restart.ps1 +49 -49
  45. package/src/__tests__/comprehensive.integration.test.ts +4 -32
  46. package/src/__tests__/performance.test.ts +5 -14
  47. package/src/__tests__/setup.ts +45 -14
  48. package/src/__tests__/smoke.e2e.test.ts +70 -0
  49. package/src/__tests__/testUtils.ts +2 -113
  50. package/src/server/YNABMCPServer.ts +64 -10
  51. package/src/server/__tests__/YNABMCPServer.test.ts +0 -1
  52. package/src/server/__tests__/completions.integration.test.ts +117 -0
  53. package/src/server/__tests__/completions.test.ts +319 -0
  54. package/src/server/__tests__/resources.template.test.ts +3 -3
  55. package/src/server/__tests__/resources.test.ts +3 -3
  56. package/src/server/__tests__/toolRegistration.test.ts +3 -3
  57. package/src/server/cacheManager.ts +7 -6
  58. package/src/server/completions.ts +279 -0
  59. package/src/server/errorHandler.ts +1 -0
  60. package/src/server/rateLimiter.ts +4 -1
  61. package/src/server/resources.ts +49 -13
  62. package/src/server/securityMiddleware.ts +1 -0
  63. package/src/server/toolRegistry.ts +42 -0
  64. package/src/tools/__tests__/transactionTools.integration.test.ts +63 -3
  65. package/src/tools/__tests__/utilityTools.integration.test.ts +1 -85
  66. package/src/tools/__tests__/utilityTools.test.ts +1 -123
  67. package/src/tools/adapters.ts +22 -1
  68. package/src/tools/reconciliation/__tests__/executor.progress.test.ts +462 -0
  69. package/src/tools/reconciliation/executor.ts +55 -1
  70. package/src/tools/reconciliation/index.ts +7 -3
  71. package/src/tools/schemas/outputs/index.ts +0 -3
  72. package/src/tools/schemas/outputs/utilityOutputs.ts +2 -43
  73. package/src/tools/toolCategories.ts +0 -1
  74. package/src/tools/utilityTools.ts +5 -76
  75. package/vitest.config.ts +4 -1
  76. package/.chunkhound.json +0 -11
  77. package/.code/agents/0098661e-0fa3-4990-beb9-c0cbf3f123aa/status.txt +0 -1
  78. package/.code/agents/01a13ef4-3f23-4f52-b33b-3585b73cfa60/error.txt +0 -3
  79. package/.code/agents/084fd32f-e298-4728-9103-a78d7dc39613/error.txt +0 -3
  80. package/.code/agents/0fed51e1-a943-4b97-a2a8-a6f0f27c844d/status.txt +0 -1
  81. package/.code/agents/1059b6bd-5ccd-4d83-a12c-7c9d89137399/error.txt +0 -5
  82. package/.code/agents/110/exec-call_F9BDNG7JfxKkq7Vc8ESAvdft.txt +0 -1569
  83. package/.code/agents/11ebcef3-b13f-4e44-ad80-d94a866804b7/error.txt +0 -3
  84. package/.code/agents/1324/exec-call_tIpx9uV1TpARbAMZonRQm8AO.txt +0 -757
  85. package/.code/agents/1398/exec-call_CjItcWMU1G6JoPshX62QvpaR.txt +0 -2832
  86. package/.code/agents/1398/exec-call_SUVq2ivmONQ5LMCmd7ngmOqr.txt +0 -2709
  87. package/.code/agents/1398/exec-call_SdNY4NOffdcC5pRYjVXHjPCK.txt +0 -2832
  88. package/.code/agents/1398/exec-call_qblJo9et1gsFFB63TtLOiji2.txt +0 -2832
  89. package/.code/agents/1398/exec-call_zaRrzlGz7GJcNzVfkAmML7Zg.txt +0 -2709
  90. package/.code/agents/1572/exec-call_GjVFBFOWcY7lE0idc5nWlLNh.txt +0 -781
  91. package/.code/agents/171834fd-5905-42fc-bbcc-2c755145b0fc/status.txt +0 -1
  92. package/.code/agents/1724/exec-call_HvHQe0w5CCG3T7Q3ULT6MO3g.txt +0 -5217
  93. package/.code/agents/1724/exec-call_QwUNESVzfxxk78K1frh1Vahb.txt +0 -2594
  94. package/.code/agents/1724/exec-call_aJ1Xwz71XmIpD4SBxSHERzLe.txt +0 -2594
  95. package/.code/agents/1846/exec-call_1YNAVD18RjrMN7JnfkkQhUP3.txt +0 -766
  96. package/.code/agents/1846/exec-call_lh3lDzE4WJAh1lFiomiiZ73D.txt +0 -766
  97. package/.code/agents/1d7d7ab7-7473-4b69-8b97-6e914f56056a/result.txt +0 -231
  98. package/.code/agents/2038/exec-call_DYwOukaYsL8VCONWmV2rUW5u.txt +0 -766
  99. package/.code/agents/2038/exec-call_c7fOQ7UrpVcTtvdfGBRM146V.txt +0 -652
  100. package/.code/agents/2038/exec-call_ySNyq9Mm55jWE480s54r5QcA.txt +0 -766
  101. package/.code/agents/210/exec-call_0tQCsKNJ1WTuIchb8wlcFJpW.txt +0 -2590
  102. package/.code/agents/210/exec-call_8ZlY9cUc8Ft1twi4ch8UJ6IN.txt +0 -5195
  103. package/.code/agents/2188/exec-call_5HqayBxIteJtoI8oPTiLWgvJ.txt +0 -286
  104. package/.code/agents/2188/exec-call_XRbBKBq3adZe6dcppAvQtM7G.txt +0 -218
  105. package/.code/agents/2188/exec-call_ehA0SjpYtrUi6GJXmibLjp4i.txt +0 -180
  106. package/.code/agents/21902821-ecaf-4759-bb9d-222b90921af5/error.txt +0 -3
  107. package/.code/agents/2256/exec-call_AtPcRWPmFPMcmX6qOFm1fCEY.txt +0 -766
  108. package/.code/agents/232073be-aa0e-46da-b478-5b64dbf03cf5/status.txt +0 -1
  109. package/.code/agents/234ff534-2336-4771-a8d9-aa04421a63be/result.txt +0 -747
  110. package/.code/agents/2454/exec-call_aFJpupwjfZeOBm7ixI5Vc8z2.txt +0 -766
  111. package/.code/agents/2454/exec-call_wogZ4HfXTodTEXvdgXlVUBpv.txt +0 -766
  112. package/.code/agents/253e2695-dc36-4022-b436-27655e0fc6c7/status.txt +0 -1
  113. package/.code/agents/2583/exec-call_M59I4eDjpjlBIWBiSxyS0YlJ.txt +0 -2594
  114. package/.code/agents/2583/exec-call_usLRGh7OhVHtsRBL4iUwRhjq.txt +0 -2594
  115. package/.code/agents/292aa3ff-dbab-470f-97c9-e7e8fd65e0db/result.txt +0 -144
  116. package/.code/agents/2e905864-aa07-4314-bcf9-c5b32277e4ac/result.txt +0 -36
  117. package/.code/agents/3073/exec-call_Peeagc9DxGYLgE6pNdMZhqIE.txt +0 -766
  118. package/.code/agents/3073/exec-call_d2YSE3hXF08KRSoUM3qd8Z3x.txt +0 -766
  119. package/.code/agents/3134/exec-call_IgCAMGx19lWfuo8zfYIt5FFC.txt +0 -416
  120. package/.code/agents/3134/exec-call_IxvLR2Oo7kba2QTsI1gHVko8.txt +0 -2590
  121. package/.code/agents/3134/exec-call_jYvc8hksZChSiysbzKjl2ZbB.txt +0 -2590
  122. package/.code/agents/329/exec-call_4QdP3SfSO7HGPCwVcqZIth6s.txt +0 -2590
  123. package/.code/agents/335aa031-466d-4fb7-925f-3cd864e264d0/result.txt +0 -191
  124. package/.code/agents/3364/exec-call_NbhIrsM5HhyDZDmJZG5CuCYL.txt +0 -766
  125. package/.code/agents/3364/exec-call_cKtJg0NrXiwXEFwlsE3uPZRA.txt +0 -766
  126. package/.code/agents/36d98414-5cde-4d9d-9a67-a240a18c1f07/result.txt +0 -189
  127. package/.code/agents/4604e866-b7b8-44f5-992f-2f683b0a523b/status.txt +0 -1
  128. package/.code/agents/472/exec-call_4AxzEEcWwkKhpqRB3bE8Ha4L.txt +0 -790
  129. package/.code/agents/472/exec-call_CB3LPYQA8QIZRi8I6kj4J17A.txt +0 -766
  130. package/.code/agents/472/exec-call_YeoUWvaFoktay2nqVUsa9KKX.txt +0 -790
  131. package/.code/agents/472/exec-call_jPWgKVquBBXTg0T3Lks5ZfkK.txt +0 -2594
  132. package/.code/agents/472/exec-call_qBkvunpGBDEHph2jPmTwtcsb.txt +0 -1000
  133. package/.code/agents/472/exec-call_v0ffRV1p0kTckBmJPzzHAEy0.txt +0 -3489
  134. package/.code/agents/472/exec-call_xAX5FXqWIlk02d9WubHbHWh8.txt +0 -766
  135. package/.code/agents/5346/exec-call_9q0muXUuLaucwEqI51Pt7idT.txt +0 -2594
  136. package/.code/agents/5346/exec-call_B2el3B79rVkq9LhWTI2VYlz7.txt +0 -2456
  137. package/.code/agents/5346/exec-call_BfX08f02qkZI9uJD5dvCvuoj.txt +0 -2594
  138. package/.code/agents/543328d0-61d6-4fd1-a723-bb168656e2e2/error.txt +0 -18
  139. package/.code/agents/5580c02c-1383-4d18-9cbd-cc8a06e3408d/result.txt +0 -48
  140. package/.code/agents/5f8dc01c-47b3-4163-b0b3-aa31be89fcdc/status.txt +0 -1
  141. package/.code/agents/60ce1a22-5126-44b2-b977-1d5b56142a7b/status.txt +0 -1
  142. package/.code/agents/6215d9db-7fa9-4429-aeec-3835c3212291/error.txt +0 -1
  143. package/.code/agents/6743db55-30e5-4b4e-9366-a8214fc7f714/error.txt +0 -1
  144. package/.code/agents/6bf9591b-b9c9-422c-b0a5-e968c7d8422a/status.txt +0 -1
  145. package/.code/agents/7/exec-call_HltHpkDox0Zm1vGEjdksUgpE.txt +0 -1120
  146. package/.code/agents/7/exec-call_LCATrOPPAgbxW9Q1z0XaVi2E.txt +0 -2646
  147. package/.code/agents/7/exec-call_W8DeRfNG9hvbgVFvf0clBf6R.txt +0 -2646
  148. package/.code/agents/7/exec-call_eww3GfdEiJZx61sJEQ9wNmt3.txt +0 -1271
  149. package/.code/agents/70/exec-call_owUtDMYiVgqDf8vsz1i32PFf.txt +0 -1570
  150. package/.code/agents/8/exec-call_UtrjAcLbhYLatxR4O97fZgnm.txt +0 -2590
  151. package/.code/agents/82490bc9-f34e-4b1b-8a8e-bccc2e6254f5/error.txt +0 -3
  152. package/.code/agents/841/exec-call_7nTNhSBCNjTDUIJv7py6CepO.txt +0 -3299
  153. package/.code/agents/841/exec-call_TLI0yUdUijuUAvI4o3DXEvHO.txt +0 -3299
  154. package/.code/agents/9/exec-call_XaABQT1hIlRpnKZ2uyBMWsTC.txt +0 -1882
  155. package/.code/agents/941/exec-call_GuGHRx7NNXWIDAnxUG2NEWPa.txt +0 -2594
  156. package/.code/agents/94a0ddf3-a304-4ec3-913e-3cceef509948/error.txt +0 -1
  157. package/.code/agents/95d9fbab-19a2-48af-83f9-c792566a347f/error.txt +0 -1
  158. package/.code/agents/b0098cb8-cb32-4ada-9bc4-37c587518896/result.txt +0 -170
  159. package/.code/agents/b4fe59a4-81df-42e2-a112-0153e504faca/error.txt +0 -1
  160. package/.code/agents/bf4ce152-f623-49d7-aa52-c18631625c3c/error.txt +0 -3
  161. package/.code/agents/d7d1db75-d7eb-468e-adea-4ef4d916d187/status.txt +0 -1
  162. package/.code/agents/e2baa9c8-bac3-49e3-a39d-024333e6a990/status.txt +0 -1
  163. package/.code/agents/e2c752b7-711d-423a-af57-f53c809deb84/result.txt +0 -160
  164. package/.code/agents/e350b8c3-8483-408c-b2bb-94515f492a11/error.txt +0 -3
  165. package/.code/agents/e63f9919-719f-4ad0-bccf-01b1a596e1e9/status.txt +0 -1
  166. package/.code/agents/e6601719-c31f-4a0e-8c71-d70787d0ab71/status.txt +0 -1
  167. package/.code/agents/e71695a8-3044-478d-8f12-ed13d02884c7/status.txt +0 -1
  168. package/.code/agents/f250b7ed-5bd5-4036-aa8c-ce63caee7d61/result.txt +0 -20
  169. package/.code/agents/f95b7464-3e25-4897-b153-c8dfd63fd605/error.txt +0 -5
  170. package/.code/agents/fa3c5ddf-cdf7-47a2-930a-b806c6363689/status.txt +0 -1
  171. package/AGENTS.md +0 -1
  172. package/NUL +0 -0
  173. package/package.json.tmp +0 -105
  174. package/src/__tests__/delta.performance.test.ts +0 -80
  175. package/src/__tests__/workflows.e2e.test.ts +0 -1702
  176. package/temp-recon.ts +0 -126
  177. package/test-exports/ynab_account_e9ddc2a6_minimal_1items_2025-11-19_09-04-53.json +0 -23
  178. package/test-exports/ynab_account_e9ddc2a6_minimal_1items_2025-11-19_10-37-42.json +0 -23
  179. package/test-exports/ynab_account_e9ddc2a6_minimal_4items_2025-11-19_09-02-09.json +0 -44
  180. package/test-exports/ynab_account_e9ddc2a6_minimal_6items_2025-11-19_10-37-52.json +0 -58
  181. package/test-exports/ynab_since_2025-10-16_account_53298e13_238items_2025-11-28_13-46-20.json +0 -3662
  182. package/test-exports/ynab_since_2025-11-01_account_4c18e9f0_minimal_14items_2025-11-16_10-07-10.json +0 -115
@@ -1,3489 +0,0 @@
1
-
2
- > @dizzlkheinz/ynab-mcpb@0.13.4 test:all
3
- > npm run test:unit && npm run test:integration:core && npm run test:e2e && npm run test:performance
4
-
5
-
6
- > @dizzlkheinz/ynab-mcpb@0.13.4 test:unit
7
- > vitest run --project unit
8
-
9
-
10
-  RUN  v3.2.4 C:/Users/ksutk/projects/ynab-mcpb
11
-
12
- ✓  unit  src/server/__tests__/rateLimiter.test.ts > RateLimiter > isAllowed > should allow requests within the limit 2ms
13
- ✓  unit  src/server/__tests__/rateLimiter.test.ts > RateLimiter > isAllowed > should track requests correctly 1ms
14
- ✓  unit  src/server/__tests__/rateLimiter.test.ts > RateLimiter > isAllowed > should limit requests when max is reached 0ms
15
- ✓  unit  src/server/__tests__/rateLimiter.test.ts > RateLimiter > isAllowed > should handle multiple identifiers independently 0ms
16
- ✓  unit  src/server/__tests__/rateLimiter.test.ts > RateLimiter > isAllowed > should reset after time window expires 77ms
17
- ✓  unit  src/server/__tests__/rateLimiter.test.ts > RateLimiter > recordRequest > should record requests correctly 1ms
18
- ✓  unit  src/server/__tests__/rateLimiter.test.ts > RateLimiter > recordRequest > should handle rapid successive requests 1ms
19
- ✓  unit  src/server/__tests__/rateLimiter.test.ts > RateLimiter > getStatus > should return current status without modifying state 0ms
20
- ✓  unit  src/server/__tests__/rateLimiter.test.ts > RateLimiter > reset > should reset specific identifier 1ms
21
- ✓  unit  src/server/__tests__/rateLimiter.test.ts > RateLimiter > reset > should reset all identifiers when no specific identifier provided 1ms
22
- ✓  unit  src/server/__tests__/rateLimiter.test.ts > RateLimiter > cleanup > should remove expired requests 64ms
23
- ✓  unit  src/server/__tests__/rateLimiter.test.ts > RateLimiter > logging > should log when logging is enabled 7ms
24
- ✓  unit  src/server/__tests__/rateLimiter.test.ts > RateLimiter > logging > should not log when logging is disabled 1ms
25
- ✓  unit  src/server/__tests__/rateLimiter.test.ts > RateLimiter > RateLimitError > should create error with correct properties 1ms
26
- ✓  unit  src/server/__tests__/rateLimiter.test.ts > RateLimiter > YNAB API compliance > should use YNAB API limits by default 0ms
27
- ✓  unit  src/server/__tests__/rateLimiter.test.ts > RateLimiter > YNAB API compliance > should handle YNAB-scale request volumes 1ms
28
- ✓  unit  src/server/__tests__/rateLimiter.test.ts > RateLimiter > security considerations > should hash identifiers in logs to avoid token exposure 1ms
29
- ✓  unit  src/server/__tests__/diagnostics.test.ts > diagnostics module > DiagnosticManager > constructor > should initialize with dependencies 5ms
30
- ✓  unit  src/server/__tests__/diagnostics.test.ts > diagnostics module > DiagnosticManager > collectDiagnostics > should always include timestamp 13ms
31
- ✓  unit  src/server/__tests__/diagnostics.test.ts > diagnostics module > DiagnosticManager > collectDiagnostics > server diagnostics > should include server information when include_server is true 2ms
32
- ✓  unit  src/server/__tests__/diagnostics.test.ts > diagnostics module > DiagnosticManager > collectDiagnostics > server diagnostics > should exclude server information when include_server is false 1ms
33
- ✓  unit  src/server/__tests__/diagnostics.test.ts > diagnostics module > DiagnosticManager > collectDiagnostics > server diagnostics > should handle custom NODE_ENV 1ms
34
- ✓  unit  src/server/__tests__/diagnostics.test.ts > diagnostics module > DiagnosticManager > collectDiagnostics > memory diagnostics > should include memory information when include_memory is true 8ms
35
- ✓  unit  src/server/__tests__/diagnostics.test.ts > diagnostics module > DiagnosticManager > collectDiagnostics > memory diagnostics > should exclude memory information when include_memory is false 1ms
36
- ✓  unit  src/server/__tests__/diagnostics.test.ts > diagnostics module > DiagnosticManager > collectDiagnostics > memory diagnostics > should handle undefined arrayBuffers 1ms
37
- ✓  unit  src/server/__tests__/diagnostics.test.ts > diagnostics module > DiagnosticManager > collectDiagnostics > environment diagnostics > should include environment information when include_environment is true 4ms
38
- ✓  unit  src/server/__tests__/diagnostics.test.ts > diagnostics module > DiagnosticManager > collectDiagnostics > environment diagnostics > should handle missing token 3ms
39
- ✓  unit  src/server/__tests__/diagnostics.test.ts > diagnostics module > DiagnosticManager > collectDiagnostics > delta diagnostics > should include delta metrics when include_delta is true 2ms
40
- ✓  unit  src/server/__tests__/diagnostics.test.ts > diagnostics module > DiagnosticManager > collectDiagnostics > delta diagnostics > should skip delta metrics when include_delta is not explicitly true 1ms
41
- ✓  unit  src/server/__tests__/diagnostics.test.ts > diagnostics module > DiagnosticManager > collectDiagnostics > security diagnostics > should include security information when include_security is true 1ms
42
- ✓  unit  src/server/__tests__/diagnostics.test.ts > diagnostics module > DiagnosticManager > collectDiagnostics > security diagnostics > should exclude security information when include_security is false 1ms
43
- ✓  unit  src/server/__tests__/diagnostics.test.ts > diagnostics module > DiagnosticManager > collectDiagnostics > cache diagnostics > should include cache information when include_cache is true 2ms
44
- ✓  unit  src/server/__tests__/diagnostics.test.ts > diagnostics module > DiagnosticManager > collectDiagnostics > cache diagnostics > should handle cache serialization errors gracefully 1ms
45
- ✓  unit  src/server/__tests__/diagnostics.test.ts > diagnostics module > DiagnosticManager > collectDiagnostics > cache diagnostics > should include enhanced cache metrics when available 1ms
46
- ✓  unit  src/server/__tests__/diagnostics.test.ts > diagnostics module > DiagnosticManager > collectDiagnostics > cache diagnostics > should handle missing enhanced metrics gracefully 1ms
47
- ✓  unit  src/server/__tests__/diagnostics.test.ts > diagnostics module > DiagnosticManager > collectDiagnostics > cache diagnostics > should format lastCleanup timestamp correctly 1ms
48
- ✓  unit  src/server/__tests__/diagnostics.test.ts > diagnostics module > DiagnosticManager > collectDiagnostics > cache diagnostics > should handle null lastCleanup timestamp 1ms
49
- ✓  unit  src/server/__tests__/diagnostics.test.ts > diagnostics module > DiagnosticManager > collectDiagnostics > cache diagnostics > should calculate and display hit rate percentage 1ms
50
- ✓  unit  src/server/__tests__/diagnostics.test.ts > diagnostics module > DiagnosticManager > collectDiagnostics > cache diagnostics > should include performance summary with evictions 2ms
51
- ✓  unit  src/server/__tests__/diagnostics.test.ts > diagnostics module > DiagnosticManager > collectDiagnostics > cache diagnostics > should handle zero requests for hit rate calculation 1ms
52
- ✓  unit  src/server/__tests__/diagnostics.test.ts > diagnostics module > DiagnosticManager > collectDiagnostics > combined diagnostics > should include all diagnostics when all options are true 1ms
53
- ✓  unit  src/server/__tests__/diagnostics.test.ts > diagnostics module > DiagnosticManager > collectDiagnostics > combined diagnostics > should include only timestamp when all options are false 1ms
54
- ✓  unit  src/server/__tests__/diagnostics.test.ts > diagnostics module > utility functions > formatUptime > should format seconds only 1ms
55
- ✓  unit  src/server/__tests__/diagnostics.test.ts > diagnostics module > utility functions > formatUptime > should format minutes and seconds 1ms
56
- ✓  unit  src/server/__tests__/diagnostics.test.ts > diagnostics module > utility functions > formatUptime > should format hours, minutes, and seconds 0ms
57
- ✓  unit  src/server/__tests__/diagnostics.test.ts > diagnostics module > utility functions > formatUptime > should format days, hours, minutes, and seconds 1ms
58
- ✓  unit  src/server/__tests__/diagnostics.test.ts > diagnostics module > utility functions > formatUptime > should handle zero uptime 0ms
59
- ✓  unit  src/server/__tests__/diagnostics.test.ts > diagnostics module > utility functions > formatUptime > should handle fractional milliseconds 0ms
60
- ✓  unit  src/server/__tests__/diagnostics.test.ts > diagnostics module > utility functions > formatBytes > should format bytes to MB with proper rounding 1ms
61
- ✓  unit  src/server/__tests__/diagnostics.test.ts > diagnostics module > utility functions > formatBytes > should handle large values 0ms
62
- ✓  unit  src/server/__tests__/diagnostics.test.ts > diagnostics module > utility functions > maskToken > should return null for undefined token 0ms
63
- ✓  unit  src/server/__tests__/diagnostics.test.ts > diagnostics module > utility functions > maskToken > should return null for empty token 0ms
64
- ✓  unit  src/server/__tests__/diagnostics.test.ts > diagnostics module > utility functions > maskToken > should mask tokens with 8+ characters 0ms
65
- ✓  unit  src/server/__tests__/diagnostics.test.ts > diagnostics module > utility functions > maskToken > should mask short tokens differently 1ms
66
- ✓  unit  src/server/__tests__/diagnostics.test.ts > diagnostics module > dependency injection > should use injected security middleware 1ms
67
- ✓  unit  src/server/__tests__/diagnostics.test.ts > diagnostics module > dependency injection > should use injected cache manager 1ms
68
- ✓  unit  src/server/__tests__/diagnostics.test.ts > diagnostics module > dependency injection > should use injected response formatter 1ms
69
- ✓  unit  src/server/__tests__/diagnostics.test.ts > diagnostics module > dependency injection > should use injected server version 1ms
70
- ✓  unit  src/server/__tests__/cacheManager.test.ts > CacheManager > Basic Functionality > should store and retrieve data 27ms
71
- ✓  unit  src/server/__tests__/cacheManager.test.ts > CacheManager > Basic Functionality > should return null for non-existent keys 2ms
72
- ✓  unit  src/server/__tests__/cacheManager.test.ts > CacheManager > Basic Functionality > should delete entries 2ms
73
- ✓  unit  src/server/__tests__/cacheManager.test.ts > CacheManager > Basic Functionality > should clear all entries 1ms
74
- ✓  unit  src/server/__tests__/cacheManager.test.ts > CacheManager > Basic Functionality > should handle TTL expiration 5ms
75
- ✓  unit  src/server/__tests__/cacheManager.test.ts > CacheManager > Basic Functionality > should generate consistent cache keys 2ms
76
- ✓  unit  src/server/__tests__/cacheManager.test.ts > CacheManager > Basic Functionality > should filter undefined parameters in key generation 1ms
77
- ✓  unit  src/server/__tests__/cacheManager.test.ts > CacheManager > Hit/Miss Counters > should track cache hits 2ms
78
- ✓  unit  src/server/__tests__/cacheManager.test.ts > CacheManager > Hit/Miss Counters > should track cache misses 3ms
79
- ✓  unit  src/server/__tests__/cacheManager.test.ts > CacheManager > Hit/Miss Counters > should track expired entries as misses 6ms
80
- ✓  unit  src/server/__tests__/cacheManager.test.ts > CacheManager > Hit/Miss Counters > should calculate hit rate correctly 2ms
81
- ✓  unit  src/server/__tests__/cacheManager.test.ts > CacheManager > Hit/Miss Counters > should reset counters on clear 1ms
82
- ✓  unit  src/server/__tests__/cacheManager.test.ts > CacheManager > Hit/Miss Counters > should handle zero requests for hit rate 1ms
83
- ✓  unit  src/server/__tests__/cacheManager.test.ts > CacheManager > LRU Eviction > should not evict when under limit 1ms
84
- ✓  unit  src/server/__tests__/cacheManager.test.ts > CacheManager > LRU Eviction > should evict LRU entry when maxEntries is exceeded 1ms
85
- ✓  unit  src/server/__tests__/cacheManager.test.ts > CacheManager > LRU Eviction > should update access order on get 2ms
86
- ✓  unit  src/server/__tests__/cacheManager.test.ts > CacheManager > LRU Eviction > should handle zero maxEntries (no caching) 1ms
87
- ✓  unit  src/server/__tests__/cacheManager.test.ts > CacheManager > LRU Eviction > should evict multiple entries if needed 1ms
88
- ✓  unit  src/server/__tests__/cacheManager.test.ts > CacheManager > LRU Eviction > should not evict when updating existing key at maxEntries limit 1ms
89
- ✓  unit  src/server/__tests__/cacheManager.test.ts > CacheManager > Per-Entry Options > should use custom TTL from options 1ms
90
- ✓  unit  src/server/__tests__/cacheManager.test.ts > CacheManager > Per-Entry Options > should use default TTL when no options provided 1ms
91
- ✓  unit  src/server/__tests__/cacheManager.test.ts > CacheManager > Per-Entry Options > should support staleWhileRevalidate 1ms
92
- ✓  unit  src/server/__tests__/cacheManager.test.ts > CacheManager > Per-Entry Options > should not return data outside stale window 1ms
93
- ✓  unit  src/server/__tests__/cacheManager.test.ts > CacheManager > Per-Entry Options > should maintain backward compatibility with number TTL 1ms
94
- ✓  unit  src/server/__tests__/cacheManager.test.ts > CacheManager > wrap() Helper > should return cached data immediately on hit 3ms
95
- ✓  unit  src/server/__tests__/cacheManager.test.ts > CacheManager > wrap() Helper > should call loader and cache result on miss 1ms
96
- ✓  unit  src/server/__tests__/cacheManager.test.ts > CacheManager > wrap() Helper > should deduplicate concurrent requests 2ms
97
- ✓  unit  src/server/__tests__/cacheManager.test.ts > CacheManager > wrap() Helper > should handle loader errors gracefully 4ms
98
- ✓  unit  src/server/__tests__/cacheManager.test.ts > CacheManager > wrap() Helper > should serve stale data and trigger background refresh 2ms
99
- ✓  unit  src/server/__tests__/cacheManager.test.ts > CacheManager > wrap() Helper > should apply cache options from wrap call 1ms
100
- ✓  unit  src/server/__tests__/cacheManager.test.ts > CacheManager > wrap() Helper > should clean up pending operations on completion 1ms
101
- ✓  unit  src/server/__tests__/cacheManager.test.ts > CacheManager > wrap() Helper > should preserve existing TTL/SWR when options omitted in background refresh 2ms
102
- ✓  unit  src/server/__tests__/cacheManager.test.ts > CacheManager > Cleanup Enhancement > should update lastCleanup timestamp 1ms
103
- ✓  unit  src/server/__tests__/cacheManager.test.ts > CacheManager > Cleanup Enhancement > should include cleanup removals in eviction count 1ms
104
- ✓  unit  src/server/__tests__/cacheManager.test.ts > CacheManager > Cleanup Enhancement > should return zero when no cleanup needed 1ms
105
- ✓  unit  src/server/__tests__/cacheManager.test.ts > CacheManager > Cleanup Enhancement > should provide detailed cleanup information 1ms
106
- ✓  unit  src/server/__tests__/cacheManager.test.ts > CacheManager > Cleanup Enhancement > should maintain backward compatibility with cleanup() method 1ms
107
- ✓  unit  src/server/__tests__/cacheManager.test.ts > CacheManager > Environment Variable Configuration > should use environment variable for maxEntries 1ms
108
- ✓  unit  src/server/__tests__/cacheManager.test.ts > CacheManager > Environment Variable Configuration > should use environment variable for stale window 1ms
109
- ✓  unit  src/server/__tests__/cacheManager.test.ts > CacheManager > Environment Variable Configuration > should fall back to defaults for invalid environment values 1ms
110
- ✓  unit  src/server/__tests__/cacheManager.test.ts > CacheManager > Environment Variable Configuration > should use environment variable for default TTL 1ms
111
- ✓  unit  src/server/__tests__/deltaCache.test.ts > DeltaCache > Feature Flag > should use delta path when the feature flag is enabled 27ms
112
- ✓  unit  src/server/__tests__/deltaCache.test.ts > DeltaCache > Feature Flag > should bypass delta logic when flag is disabled 4ms
113
- ✓  unit  src/server/__tests__/deltaCache.test.ts > DeltaCache > Feature Flag > should still cache results when delta is disabled 3ms
114
- ✓  unit  src/server/__tests__/deltaCache.test.ts > DeltaCache > Delta Detection > should detect delta when server knowledge increases 5ms
115
- ✓  unit  src/server/__tests__/deltaCache.test.ts > DeltaCache > Delta Detection > should treat response as unchanged when knowledge stays equal 3ms
116
- ✓  unit  src/server/__tests__/deltaCache.test.ts > DeltaCache > Delta Detection > should treat cache miss as full refresh 2ms
117
- ✓  unit  src/server/__tests__/deltaCache.test.ts > DeltaCache > Delta Detection > should use merger when delta detected and cache exists 8ms
118
- ✓  unit  src/server/__tests__/deltaCache.test.ts > DeltaCache > Delta Detection > should filter deleted entities on full refresh 5ms
119
- ✓  unit  src/server/__tests__/deltaCache.test.ts > DeltaCache > Delta Detection > should handle initial fetch with no cache or knowledge 3ms
120
- ✓  unit  src/server/__tests__/deltaCache.test.ts > DeltaCache > Knowledge Gap Warnings > should log warning when knowledge gap exceeds threshold 5ms
121
- ✓  unit  src/server/__tests__/deltaCache.test.ts > DeltaCache > Knowledge Gap Warnings > should not log warning when gap is within tolerance 2ms
122
- ✓  unit  src/server/__tests__/deltaCache.test.ts > DeltaCache > Knowledge Gap Warnings > should include cacheKey in warning metadata 2ms
123
- ✓  unit  src/server/__tests__/deltaCache.test.ts > DeltaCache > Knowledge Gap Warnings > should continue processing even after warning 2ms
124
- ✓  unit  src/server/__tests__/deltaCache.test.ts > DeltaCache > Cache Operations > should store entries in cache manager format 3ms
125
- ✓  unit  src/server/__tests__/deltaCache.test.ts > DeltaCache > Cache Operations > should update knowledge store after fetch 2ms
126
- ✓  unit  src/server/__tests__/deltaCache.test.ts > DeltaCache > Cache Operations > should return cached data on cache hit 2ms
127
- ✓  unit  src/server/__tests__/deltaCache.test.ts > DeltaCache > Cache Operations > should respect custom TTL overrides 2ms
128
- ✓  unit  src/server/__tests__/deltaCache.test.ts > DeltaCache > Cache Operations > should use fresh cache but disable delta when forceFullRefresh is true 2ms
129
- ✓  unit  src/server/__tests__/deltaCache.test.ts > DeltaCache > Merge Options > should pass merge options to merger 2ms
130
- ✓  unit  src/server/__tests__/deltaCache.test.ts > DeltaCache > Merge Options > should allow preserveDeleted to keep deleted entities after merge 2ms
131
- ✓  unit  src/server/__tests__/deltaCache.test.ts > DeltaCache > Merge Options > should support custom equality functions via merge options 3ms
132
- ✓  unit  src/server/__tests__/deltaCache.test.ts > DeltaCache > Invalidation > should delete by prefix when resource type provided 2ms
133
- ✓  unit  src/server/__tests__/deltaCache.test.ts > DeltaCache > Invalidation > should delete by budget when resource type omitted 1ms
134
- ✓  unit  src/server/__tests__/deltaCache.test.ts > DeltaCache > Invalidation > should not reset knowledge on invalidate 1ms
135
- ✓  unit  src/server/__tests__/deltaCache.test.ts > DeltaCache > Invalidation > should reset targeted knowledge during forceFullRefresh 1ms
136
- ✓  unit  src/server/__tests__/deltaCache.test.ts > DeltaCache > Invalidation > should reset entire budget knowledge on forceFullRefresh without resource type 1ms
137
- ✓  unit  src/server/__tests__/deltaCache.test.ts > DeltaCache > Invalidation > should support global forceFullRefresh without budgetId 1ms
138
- ✓  unit  src/server/__tests__/cacheManager.test.ts > CacheManager > Environment Variable Configuration > should fall back to defaults when environment variables are missing 4ms
139
- ✓  unit  src/server/__tests__/cacheManager.test.ts > CacheManager > Enhanced Statistics > should return comprehensive stats 3ms
140
- ✓  unit  src/server/__tests__/cacheManager.test.ts > CacheManager > Enhanced Statistics > should maintain backward compatibility with basic stats 2ms
141
- ✓  unit  src/server/__tests__/cacheManager.test.ts > CacheManager > Enhanced Statistics > should handle getEntriesForSizeEstimation correctly 2ms
142
- ✓  unit  src/server/__tests__/cacheManager.test.ts > CacheManager > Enhanced Statistics > should provide lightweight cache metadata without full entry data 2ms
143
- ✓  unit  src/server/__tests__/cacheManager.test.ts > CacheManager > Edge Cases and Error Handling > should handle circular references in cache values 1ms
144
- ✓  unit  src/server/__tests__/cacheManager.test.ts > CacheManager > Edge Cases and Error Handling > should handle very large cache sizes 8ms
145
- ✓  unit  src/server/__tests__/cacheManager.test.ts > CacheManager > Edge Cases and Error Handling > should handle concurrent wrap calls with different keys independently 1ms
146
- ✓  unit  src/server/__tests__/cacheManager.test.ts > CacheManager > Edge Cases and Error Handling > should clean up failed operations 2ms
147
- ✓  unit  src/server/__tests__/cacheManager.test.ts > CacheManager > Prefix and Budget-based Deletion > deleteByPrefix > should delete entries matching prefix and return count 2ms
148
- ✓  unit  src/server/__tests__/cacheManager.test.ts > CacheManager > Prefix and Budget-based Deletion > deleteByPrefix > should return 0 when no matches found 1ms
149
- ✓  unit  src/server/__tests__/cacheManager.test.ts > CacheManager > Prefix and Budget-based Deletion > deleteByPrefix > should handle empty prefix safely 1ms
150
- ✓  unit  src/server/__tests__/cacheManager.test.ts > CacheManager > Prefix and Budget-based Deletion > deleteByPrefix > should not delete when prefix only partially matches a resource's namespace 1ms
151
- ✓  unit  src/server/__tests__/cacheManager.test.ts > CacheManager > Prefix and Budget-based Deletion > deleteByPrefix > should not affect cache hit or miss counters 1ms
152
- ✓  unit  src/server/__tests__/cacheManager.test.ts > CacheManager > Prefix and Budget-based Deletion > deleteByBudgetId > should delete entries containing the provided budget ID 1ms
153
- ✓  unit  src/server/__tests__/cacheManager.test.ts > CacheManager > Prefix and Budget-based Deletion > deleteByBudgetId > should return 0 when budget ID does not exist in cache 1ms
154
- ✓  unit  src/server/__tests__/cacheManager.test.ts > CacheManager > Prefix and Budget-based Deletion > deleteByBudgetId > should not match budget IDs that are substrings of other IDs 2ms
155
- ✓  unit  src/server/__tests__/cacheManager.test.ts > CacheManager > Prefix and Budget-based Deletion > deleteByBudgetId > should handle UUID formatted budget identifiers 1ms
156
- ✓  unit  src/server/__tests__/cacheManager.test.ts > CacheManager > Prefix and Budget-based Deletion > deleteByBudgetId > should not affect cache stats when deleting by budget ID 1ms
157
- ✓  unit  src/server/__tests__/cacheManager.test.ts > CacheManager > Prefix and Budget-based Deletion > getKeys > should return an empty array when cache is empty 1ms
158
- ✓  unit  src/server/__tests__/cacheManager.test.ts > CacheManager > Prefix and Budget-based Deletion > getKeys > should return all cache keys 1ms
159
- ✓  unit  src/server/__tests__/cacheManager.test.ts > CacheManager > Prefix and Budget-based Deletion > getKeys > should preserve insertion order of cache keys 1ms
160
- ✓  unit  src/server/__tests__/cacheManager.test.ts > CacheManager > Integration with Existing Patterns > should work with existing tool usage patterns 1ms
161
- ✓  unit  src/server/__tests__/cacheManager.test.ts > CacheManager > Integration with Existing Patterns > should maintain singleton behavior 1ms
162
- ✓  unit  src/server/__tests__/deltaCache.test.ts > DeltaCache > Error Handling > should propagate fetcher errors without caching 8ms
163
- ✓  unit  src/server/__tests__/deltaCache.test.ts > DeltaCache > Error Handling > should propagate merger errors 2ms
164
- ✓  unit  src/server/__tests__/deltaCache.test.ts > DeltaCache > Error Handling > should not cache when fetch fails before delta detection 2ms
165
- ✓  unit  src/server/__tests__/deltaCache.test.ts > DeltaCache > Error Handling > should not update knowledge when fetch fails 2ms
166
- ✓  unit  src/server/__tests__/deltaCache.test.ts > DeltaCache > Result Metadata > should mark wasCached true on cache hits 1ms
167
- ✓  unit  src/server/__tests__/deltaCache.test.ts > DeltaCache > Result Metadata > should mark wasCached false when cache misses 2ms
168
- ✓  unit  src/server/__tests__/deltaCache.test.ts > DeltaCache > Result Metadata > should mark usedDelta true when merge applied 2ms
169
- ✓  unit  src/server/__tests__/deltaCache.test.ts > DeltaCache > Result Metadata > should mark usedDelta false when no merge happens 1ms
170
- ✓  unit  src/server/__tests__/deltaCache.test.ts > DeltaCache > Stats tracking > increments deltaHits and mergeOperations when delta merge occurs 2ms
171
- ✓  unit  src/server/__tests__/deltaCache.test.ts > DeltaCache > Stats tracking > increments deltaMisses when full refresh is required 2ms
172
- ✓  unit  src/server/__tests__/deltaCache.test.ts > DeltaCache > Stats tracking > tracks knowledge gap events and treats them as hits 3ms
173
- ✓  unit  src/server/__tests__/deltaCache.test.ts > DeltaCache > TTL Validation > should throw when ttl is missing for fetchWithDelta 2ms
174
- ✓  unit  src/server/__tests__/deltaCache.test.ts > DeltaCache > TTL Validation > should throw when ttl is not finite for fetchWithoutDelta 2ms
175
- ✓  unit  src/server/__tests__/config.test.ts > Config Module > reloads environment variables on each loadConfig call 431ms
176
- ✓  unit  src/server/__tests__/config.test.ts > Config Module > keeps the config singleton as a one-time parse 36ms
177
- ✓  unit  src/server/__tests__/config.test.ts > Config Module > throws a detailed error if YNAB_ACCESS_TOKEN is missing 16ms
178
- ✓  unit  src/server/__tests__/config.test.ts > Config Module > parses optional MCP_PORT correctly 17ms
179
- ✓  unit  src/server/__tests__/config.test.ts > Config Module > handles missing optional MCP_PORT 18ms
180
- ✓  unit  src/server/__tests__/config.test.ts > Config Module > throws an error for an invalid MCP_PORT 21ms
181
- ✓  unit  src/server/__tests__/config.test.ts > Config Module > parses LOG_LEVEL and defaults to info 13ms
182
- ✓  unit  src/tools/reconciliation/__tests__/recommendationEngine.test.ts > recommendationEngine > generateRecommendations > empty context scenarios > should return empty array for completely empty context 57ms
183
- ✓  unit  src/tools/reconciliation/__tests__/recommendationEngine.test.ts > recommendationEngine > generateRecommendations > empty context scenarios > should return empty array with no insights and no unmatched transactions 4ms
184
- ✓  unit  src/tools/reconciliation/__tests__/recommendationEngine.test.ts > recommendationEngine > generateRecommendations > insight processing > should process near_match insights 9ms
185
- ✓  unit  src/tools/reconciliation/__tests__/recommendationEngine.test.ts > recommendationEngine > generateRecommendations > insight processing > should process repeat_amount insights 5ms
186
- ✓  unit  src/tools/reconciliation/__tests__/recommendationEngine.test.ts > recommendationEngine > generateRecommendations > insight processing > should process anomaly insights 4ms
187
- ✓  unit  src/tools/reconciliation/__tests__/recommendationEngine.test.ts > recommendationEngine > generateRecommendations > insight processing > should process critical anomaly insights with higher severity 4ms
188
- ✓  unit  src/tools/reconciliation/__tests__/recommendationEngine.test.ts > recommendationEngine > generateRecommendations > insight processing > should process multiple insights 3ms
189
- ✓  unit  src/tools/reconciliation/__tests__/recommendationEngine.test.ts > recommendationEngine > generateRecommendations > unmatched bank transactions > should create create_transaction recommendation for unmatched bank transaction 4ms
190
- ✓  unit  src/tools/reconciliation/__tests__/recommendationEngine.test.ts > recommendationEngine > generateRecommendations > unmatched bank transactions > should include memo if present in bank transaction 4ms
191
- ✓  unit  src/tools/reconciliation/__tests__/recommendationEngine.test.ts > recommendationEngine > generateRecommendations > unmatched bank transactions > should not include memo if not present in bank transaction 3ms
192
- ✓  unit  src/tools/reconciliation/__tests__/recommendationEngine.test.ts > recommendationEngine > generateRecommendations > unmatched bank transactions > should create recommendations for multiple unmatched bank transactions 7ms
193
- ✓  unit  src/tools/reconciliation/__tests__/recommendationEngine.test.ts > recommendationEngine > generateRecommendations > unmatched YNAB transactions > should create update_cleared recommendation for uncleared YNAB transaction 3ms
194
- ✓  unit  src/tools/reconciliation/__tests__/recommendationEngine.test.ts > recommendationEngine > generateRecommendations > unmatched YNAB transactions > should not create recommendation for already cleared YNAB transaction 4ms
195
- ✓  unit  src/tools/reconciliation/__tests__/recommendationEngine.test.ts > recommendationEngine > generateRecommendations > unmatched YNAB transactions > should not create recommendation for reconciled YNAB transaction 3ms
196
- ✓  unit  src/tools/reconciliation/__tests__/recommendationEngine.test.ts > recommendationEngine > generateRecommendations > unmatched YNAB transactions > should handle null payee_name in YNAB transaction 3ms
197
- ✓  unit  src/tools/reconciliation/__tests__/recommendationEngine.test.ts > recommendationEngine > generateRecommendations > suggested matches > should create review_duplicate recommendation for suggested match 5ms
198
- ✓  unit  src/tools/reconciliation/__tests__/recommendationEngine.test.ts > recommendationEngine > generateRecommendations > suggested matches > should create create_transaction for suggested match with no YNAB transaction 5ms
199
- ✓  unit  src/tools/reconciliation/__tests__/recommendationEngine.test.ts > recommendationEngine > generateRecommendations > suggested matches > should create manual_review for combination match with multiple candidates 6ms
200
- ✓  unit  src/tools/reconciliation/__tests__/recommendationEngine.test.ts > recommendationEngine > generateRecommendations > amount sign preservation (CRITICAL) > should preserve negative amounts for expenses in create_transaction 4ms
201
- ✓  unit  src/tools/reconciliation/__tests__/recommendationEngine.test.ts > recommendationEngine > generateRecommendations > amount sign preservation (CRITICAL) > should preserve positive amounts for income in create_transaction 6ms
202
- ✓  unit  src/tools/reconciliation/__tests__/recommendationEngine.test.ts > recommendationEngine > generateRecommendations > amount sign preservation (CRITICAL) > should preserve negative amounts in suggested match create_transaction 4ms
203
- ✓  unit  src/tools/reconciliation/__tests__/recommendationEngine.test.ts > recommendationEngine > generateRecommendations > amount sign preservation (CRITICAL) > should handle zero amounts correctly 3ms
204
- ✓  unit  src/tools/reconciliation/__tests__/recommendationEngine.test.ts > recommendationEngine > generateRecommendations > sorting logic > should sort by priority (high > medium > low) 4ms
205
- ✓  unit  src/tools/reconciliation/__tests__/recommendationEngine.test.ts > recommendationEngine > generateRecommendations > sorting logic > should sort by confidence when priorities are equal 6ms
206
- ✓  unit  src/tools/reconciliation/__tests__/recommendationEngine.test.ts > recommendationEngine > generateRecommendations > sorting logic > should handle mixed priorities and confidence 4ms
207
- ✓  unit  src/tools/reconciliation/__tests__/recommendationEngine.test.ts > recommendationEngine > generateRecommendations > recommendation metadata > should include correct metadata in all recommendations 4ms
208
- ✓  unit  src/tools/reconciliation/__tests__/recommendationEngine.test.ts > recommendationEngine > generateRecommendations > recommendation metadata > should generate unique IDs for each recommendation 4ms
209
- ✓  unit  src/tools/reconciliation/__tests__/recommendationEngine.test.ts > recommendationEngine > generateRecommendations > recommendation metadata > should use correct currency from balance info 6ms
210
- ✓  unit  src/tools/reconciliation/__tests__/recommendationEngine.test.ts > recommendationEngine > generateRecommendations > recommendation metadata > should include enhanced metadata in insight-based manual review recommendations 4ms
211
- ✓  unit  src/tools/reconciliation/__tests__/recommendationEngine.test.ts > recommendationEngine > generateRecommendations > recommendation metadata > should include enhanced metadata for all insight-based recommendation types 5ms
212
- ✓  unit  src/tools/reconciliation/__tests__/recommendationEngine.test.ts > recommendationEngine > generateRecommendations > edge cases > should handle empty insights array 3ms
213
- ✓  unit  src/tools/reconciliation/__tests__/recommendationEngine.test.ts > recommendationEngine > generateRecommendations > edge cases > should handle empty unmatched arrays 3ms
214
- ✓  unit  src/tools/reconciliation/__tests__/recommendationEngine.test.ts > recommendationEngine > generateRecommendations > edge cases > should handle missing optional fields 3ms
215
- ✓  unit  src/tools/reconciliation/__tests__/recommendationEngine.test.ts > recommendationEngine > generateRecommendations > edge cases > should handle very large arrays of recommendations 24ms
216
- ✓  unit  src/tools/reconciliation/__tests__/recommendationEngine.test.ts > recommendationEngine > generateRecommendations > edge cases > should handle insight without evidence 4ms
217
- ✓  unit  src/tools/reconciliation/__tests__/recommendationEngine.test.ts > recommendationEngine > generateRecommendations > edge cases > should handle transactions with very small amounts 3ms
218
- ✓  unit  src/tools/reconciliation/__tests__/recommendationEngine.test.ts > recommendationEngine > generateRecommendations > edge cases > should handle transactions with very large amounts 4ms
219
- ✓  unit  src/tools/reconciliation/__tests__/recommendationEngine.test.ts > recommendationEngine > generateRecommendations > combined scenarios > should handle combination of insights, unmatched bank, and unmatched YNAB 4ms
220
- ✓  unit  src/tools/reconciliation/__tests__/recommendationEngine.test.ts > recommendationEngine > generateRecommendations > combined scenarios > should handle all recommendation types at once 4ms
221
- ✓  unit  src/tools/reconciliation/__tests__/executor.test.ts > error normalization helpers > normalizes YNAB SDK error objects with status and detail 4ms
222
- ✓  unit  src/tools/reconciliation/__tests__/executor.test.ts > error normalization helpers > retains status from Error-like objects and propagates HTTP code decisions 1ms
223
- ✓  unit  src/tools/reconciliation/__tests__/executor.test.ts > executeReconciliation (dry run) > produces action plan without calling YNAB APIs when dry_run=true 50ms
224
- ✓  unit  src/tools/reconciliation/__tests__/executor.test.ts > executeReconciliation (apply mode) > creates, updates, and adjusts when dry_run=false 6ms
225
- ✓  unit  src/tools/reconciliation/__tests__/executor.test.ts > executeReconciliation (ordered halting) > processes newest auto matches first and stops once balances align 2ms
226
- ✓  unit  src/tools/reconciliation/__tests__/executor.test.ts > executeReconciliation - bulk create mode > uses bulk create API for batches with multiple transactions 10ms
227
- ✓  unit  src/tools/reconciliation/__tests__/executor.test.ts > executeReconciliation - bulk create mode > falls back to sequential mode for single transaction scenarios 2ms
228
- ✓  unit  src/tools/reconciliation/__tests__/executor.test.ts > executeReconciliation - bulk create mode > falls back to sequential creation when bulk request fails 4ms
229
- ✓  unit  src/tools/reconciliation/__tests__/executor.test.ts > executeReconciliation - bulk create mode > propagates rate-limit error payloads with status codes from bulk create 5ms
230
- ✓  unit  src/tools/reconciliation/__tests__/executor.test.ts > executeReconciliation - bulk create mode > splits large batches into 100-transaction chunks 33ms
231
- ✓  unit  src/tools/reconciliation/__tests__/executor.test.ts > executeReconciliation - bulk create mode > throws on fatal sequential creation errors surfaced as objects 1ms
232
- ✓  unit  src/tools/reconciliation/__tests__/executor.test.ts > executeReconciliation - bulk create mode > flags duplicate transactions returned by YNAB API 2ms
233
- ✓  unit  src/tools/reconciliation/__tests__/executor.test.ts > executeReconciliation - bulk create mode > honors halting logic when balance aligns mid-batch 3ms
234
- ✓  unit  src/tools/reconciliation/__tests__/executor.test.ts > executeReconciliation - bulk create mode > processes multiple chunks and halts at chunk boundaries when balance aligns 10ms
235
- ✓  unit  src/tools/reconciliation/__tests__/executor.test.ts > executeReconciliation - bulk create mode > simulates bulk preview during dry-run mode 3ms
236
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > ListTransactionsSchema > should validate valid parameters 7ms
237
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > ListTransactionsSchema > should require budget_id 3ms
238
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > ListTransactionsSchema > should validate date format 1ms
239
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > ListTransactionsSchema > should validate type enum 1ms
240
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > ListTransactionsSchema > should allow optional parameters to be undefined 1ms
241
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleListTransactions > should bypass cache in test environment for unfiltered requests 8ms
242
- ↓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleListTransactions > should use cache when NODE_ENV is not test for unfiltered requests - obsolete test, caching now handled by DeltaFetcher
243
- ↓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleListTransactions > should not cache filtered requests - obsolete test (account_id)
244
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleListTransactions > should list all transactions when no filters are provided 1ms
245
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleListTransactions > should filter by account_id when provided 1ms
246
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleListTransactions > should filter by category_id when provided 1ms
247
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleListTransactions > should include since_date parameter when provided 1ms
248
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleListTransactions > should handle 401 authentication errors 1ms
249
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleListTransactions > should handle 404 not found errors 1ms
250
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleListTransactions > should handle 429 rate limit errors 1ms
251
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleListTransactions > should handle generic errors 2ms
252
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleListTransactions > should include cached property in large response path 53ms
253
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > GetTransactionSchema > should validate valid parameters 1ms
254
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > GetTransactionSchema > should require budget_id 1ms
255
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > GetTransactionSchema > should require transaction_id 1ms
256
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > GetTransactionSchema > should reject empty strings 1ms
257
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleGetTransaction > should get transaction details successfully 1ms
258
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleGetTransaction > should handle 404 not found errors 1ms
259
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleGetTransaction > should handle authentication errors 1ms
260
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleGetTransaction > should handle generic errors 1ms
261
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > CreateTransactionSchema > should validate valid parameters with required fields only 2ms
262
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > CreateTransactionSchema > should validate valid parameters with all optional fields 1ms
263
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > CreateTransactionSchema > should require budget_id 1ms
264
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > CreateTransactionSchema > should require account_id 0ms
265
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > CreateTransactionSchema > should require amount to be an integer 1ms
266
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > CreateTransactionSchema > should validate date format 1ms
267
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > CreateTransactionSchema > should validate cleared status enum 1ms
268
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > CreateTransactionSchema > should validate flag_color enum 1ms
269
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > CreateTransactionSchema > should validate parameters with subtransactions when totals match 2ms
270
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > CreateTransactionSchema > should reject parameters when subtransaction totals do not match amount 1ms
271
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleCreateTransaction > should create transaction with required fields only 5ms
272
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleCreateTransaction > should create transaction with all optional fields 1ms
273
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleCreateTransaction > should create split transaction with subtransactions 2ms
274
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleCreateTransaction > should handle 404 not found errors 0ms
275
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleCreateTransaction > should handle authentication errors 0ms
276
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleCreateTransaction > should handle generic errors 0ms
277
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleCreateTransaction > should invalidate transaction cache on successful transaction creation 2ms
278
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleCreateTransaction > should not invalidate cache on dry_run transaction creation 1ms
279
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleCreateTransactions > surfaces top-level validation errors with a reserved transaction index 5ms
280
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleCreateTransactions > combines reserved and per-transaction validation errors 5ms
281
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > CreateReceiptSplitTransactionSchema > should validate a well-formed receipt split payload 13ms
282
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > CreateReceiptSplitTransactionSchema > should reject when subtotal does not match categorized items 1ms
283
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > CreateReceiptSplitTransactionSchema > should reject when total does not equal subtotal plus tax 1ms
284
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleCreateReceiptSplitTransaction > should return a detailed dry-run summary without calling the API 3ms
285
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleCreateReceiptSplitTransaction > should create a split transaction and attach receipt summary 2ms
286
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > UpdateTransactionSchema > should validate valid parameters with minimal fields 2ms
287
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > UpdateTransactionSchema > should validate valid parameters with all optional fields 1ms
288
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > UpdateTransactionSchema > should require budget_id 1ms
289
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > UpdateTransactionSchema > should require transaction_id 0ms
290
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > UpdateTransactionSchema > should require amount to be an integer when provided 1ms
291
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > UpdateTransactionSchema > should validate date format when provided 1ms
292
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > UpdateTransactionSchema > should validate cleared status enum when provided 0ms
293
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > UpdateTransactionSchema > should validate flag_color enum when provided 0ms
294
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleUpdateTransaction > should update transaction with single field 3ms
295
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleUpdateTransaction > should update transaction with multiple fields 1ms
296
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleUpdateTransaction > should handle 404 not found errors 0ms
297
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleUpdateTransaction > should handle authentication errors 0ms
298
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleUpdateTransaction > should handle generic errors 0ms
299
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleUpdateTransaction > should invalidate transaction cache on successful transaction update 1ms
300
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleUpdateTransaction > should not invalidate cache on dry_run transaction update 1ms
301
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > DeleteTransactionSchema > should validate valid parameters 1ms
302
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > DeleteTransactionSchema > should require budget_id 1ms
303
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > DeleteTransactionSchema > should require transaction_id 1ms
304
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > DeleteTransactionSchema > should reject empty strings 0ms
305
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > CreateTransactionsSchema > should accept a valid batch of multiple transactions 1ms
306
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > CreateTransactionsSchema > should accept the minimum batch size of one transaction 0ms
307
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > CreateTransactionsSchema > should accept the maximum batch size of 100 transactions 3ms
308
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > CreateTransactionsSchema > should reject an empty transactions array 1ms
309
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > CreateTransactionsSchema > should reject batches exceeding 100 transactions 2ms
310
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > CreateTransactionsSchema > should reject transactions missing required fields 1ms
311
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > CreateTransactionsSchema > should validate ISO date format for each transaction 1ms
312
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > CreateTransactionsSchema > should require integer milliunit amounts 1ms
313
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > CreateTransactionsSchema > should reject invalid cleared enum values 1ms
314
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > CreateTransactionsSchema > should reject transactions containing subtransactions 1ms
315
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > CreateTransactionsSchema > should fail when any transaction in the batch is invalid 0ms
316
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > CreateTransactionsSchema > should accept optional import_id values 0ms
317
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleDeleteTransaction > should delete transaction successfully 1ms
318
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleDeleteTransaction > should handle 404 not found errors 0ms
319
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleDeleteTransaction > should handle authentication errors 0ms
320
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleDeleteTransaction > should handle generic errors 0ms
321
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleDeleteTransaction > should invalidate transaction cache on successful transaction deletion 1ms
322
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleDeleteTransaction > should not invalidate cache on dry_run transaction deletion 1ms
323
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleCreateTransactions > dry run > returns validation summary without calling the API 2ms
324
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleCreateTransactions > dry run > surfaces validation errors before execution 1ms
325
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleCreateTransactions > successful creation > creates a small batch with import_ids and correlates results 3ms
326
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleCreateTransactions > successful creation > correlates transactions without import_ids using hashes 2ms
327
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleCreateTransactions > successful creation > handles mixed import_id and hash correlation scenarios 2ms
328
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleCreateTransactions > duplicate handling > marks all transactions as duplicates when import_ids already exist 1ms
329
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleCreateTransactions > duplicate handling > marks partial duplicates while creating the rest 1ms
330
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleCreateTransactions > response size management > keeps full response when under 64KB 1ms
331
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleCreateTransactions > response size management > downgrades to summary mode when response exceeds 64KB 2ms
332
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleCreateTransactions > response size management > downgrades to ids_only mode when necessary 1ms
333
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleCreateTransactions > response size management > errors when response cannot fit under 100KB 1ms
334
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleCreateTransactions > correlation edge cases > supports multi-bucket matching for identical transactions 1ms
335
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleCreateTransactions > correlation edge cases > records failures and logs correlation errors when correlation fails 2ms
336
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleCreateTransactions > cache invalidation > invalidates transaction, account, and month caches for affected resources 2ms
337
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleCreateTransactions > cache invalidation > deduplicates cache keys for repeated accounts and months 2ms
338
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleCreateTransactions > cache invalidation > does not invalidate caches during dry runs 1ms
339
- stderr | src/tools/__tests__/transactionTools.test.ts > transactionTools > handleUpdateTransactions > metadata completeness threshold > throws ValidationError when >5% of transactions have missing metadata (live mode)
340
- [ERROR] ynab:update_transactions:resolve_metadata | FAILED | error:"Failed to resolve transaction metadata"
341
- [ERROR] ynab:update_transactions:resolve_metadata | FAILED | error:"Failed to resolve transaction metadata"
342
-
343
- stderr | src/tools/__tests__/transactionTools.test.ts > transactionTools > handleUpdateTransactions > metadata completeness threshold > succeeds when <=5% of transactions have missing metadata (live mode)
344
- [ERROR] ynab:update_transactions:resolve_metadata | FAILED | error:"Failed to resolve transaction metadata"
345
-
346
- stderr | src/tools/__tests__/transactionTools.test.ts > transactionTools > handleUpdateTransactions > metadata completeness threshold > succeeds when <=5% of transactions have missing metadata (live mode)
347
- [INFO] ynab:update_transactions:metadata_resolution_warning | SUCCESS
348
-
349
- stderr | src/tools/__tests__/transactionTools.test.ts > transactionTools > handleUpdateTransactions > metadata completeness threshold > returns warnings in dry_run mode when metadata is missing
350
- [ERROR] ynab:update_transactions:resolve_metadata | FAILED | error:"Failed to resolve transaction metadata"
351
- [ERROR] ynab:update_transactions:resolve_metadata | FAILED | error:"Failed to resolve transaction metadata"
352
-
353
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleCreateTransactions > error handling and edge cases > propagates API failures 1ms
354
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleCreateTransactions > error handling and edge cases > handles general validation errors outside of dry run 1ms
355
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleCreateTransactions > error handling and edge cases > supports transactions without payees or categories and special memo characters 1ms
356
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleCreateTransactions > error handling and edge cases > allows transfer transactions by passing transfer payee ids 1ms
357
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > UpdateTransactionsSchema > should accept a valid batch of updates with all fields optional except id 2ms
358
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > UpdateTransactionsSchema > should require id field for each transaction 1ms
359
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > UpdateTransactionsSchema > should accept minimum batch size of one transaction 0ms
360
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > UpdateTransactionsSchema > should accept maximum batch size of 100 transactions 2ms
361
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > UpdateTransactionsSchema > should reject empty transactions array 0ms
362
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > UpdateTransactionsSchema > should reject batches exceeding 100 transactions 2ms
363
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > UpdateTransactionsSchema > should validate ISO date format for optional date field 1ms
364
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > UpdateTransactionsSchema > should validate ISO date format for optional original_date field 1ms
365
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > UpdateTransactionsSchema > should require integer milliunit amounts when provided 1ms
366
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > UpdateTransactionsSchema > should reject invalid cleared enum values 1ms
367
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > UpdateTransactionsSchema > should accept optional metadata fields for cache invalidation 0ms
368
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > UpdateTransactionsSchema > should accept update with only id field (no changes) 0ms
369
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > UpdateTransactionsSchema > should reject account_id field (account moves not supported) 1ms
370
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleUpdateTransactions > dry run > returns validation summary without calling the API 4ms
371
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleUpdateTransactions > dry run > provides before/after preview showing only changed fields 2ms
372
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleUpdateTransactions > dry run > sets before to "unavailable" when current state cannot be fetched 1ms
373
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleUpdateTransactions > dry run > includes summary with accounts_affected and fields_to_update 1ms
374
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleUpdateTransactions > dry run > surfaces validation errors before execution 1ms
375
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleUpdateTransactions > dry run > reuses metadata resolution output for preview without duplicate fetches 1ms
376
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleUpdateTransactions > successful updates > updates transactions and correlates results 2ms
377
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleUpdateTransactions > successful updates > only updates provided fields (partial updates) 1ms
378
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleUpdateTransactions > metadata resolution for cache invalidation > uses client-supplied original_* metadata when provided 1ms
379
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleUpdateTransactions > metadata resolution for cache invalidation > falls back to cache when metadata not provided 1ms
380
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleUpdateTransactions > metadata resolution for cache invalidation > falls back to API when metadata not in cache 1ms
381
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleUpdateTransactions > error handling > handles network failures 1ms
382
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleUpdateTransactions > error handling > handles invalid transaction IDs gracefully 1ms
383
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleUpdateTransactions > error handling > handles metadata resolution failures without crashing 1ms
384
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleUpdateTransactions > metadata completeness threshold > throws ValidationError when >5% of transactions have missing metadata (live mode) 9ms
385
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleUpdateTransactions > metadata completeness threshold > succeeds when <=5% of transactions have missing metadata (live mode) 4ms
386
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleUpdateTransactions > metadata completeness threshold > returns warnings in dry_run mode when metadata is missing 3ms
387
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleUpdateTransactions > metadata completeness threshold > does not return warnings in dry_run when all metadata is resolved 1ms
388
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleUpdateTransactions > correlation_key in results > includes correlation_key in successful update results 1ms
389
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleUpdateTransactions > correlation_key in results > includes correlation_key in failed update results 1ms
390
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleUpdateTransactions > correlation_key in results > preserves correlation_key in ids_only downgrade mode 1ms
391
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleUpdateTransactions > response size management > keeps full response when under 64KB 1ms
392
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleUpdateTransactions > response size management > downgrades to summary mode when response exceeds 64KB 1ms
393
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleUpdateTransactions > cache invalidation > invalidates transaction and account caches after successful updates 1ms
394
- ✓  unit  src/tools/__tests__/transactionTools.test.ts > transactionTools > handleUpdateTransactions > cache invalidation > does not invalidate cache on dry run 1ms
395
- stderr | src/server/__tests__/securityMiddleware.test.ts > SecurityMiddleware > withSecurity > should execute operation successfully with valid input
396
- Rate limit check for token_12bf80ff: 0/200 requests, remaining: 200, limited: false
397
-
398
- stderr | src/server/__tests__/securityMiddleware.test.ts > SecurityMiddleware > withSecurity > should execute operation successfully with valid input
399
- Recorded request for token_12bf80ff: 1/200 requests
400
-
401
- stderr | src/server/__tests__/securityMiddleware.test.ts > SecurityMiddleware > withSecurity > should execute operation successfully with valid input
402
- Rate limit check for token_12bf80ff: 1/200 requests, remaining: 199, limited: false
403
- [INFO] ynab:test:test operation | SUCCESS | 7ms | rate_limit_remaining:199
404
-
405
- stderr | src/server/__tests__/securityMiddleware.test.ts > SecurityMiddleware > withSecurity > should validate input parameters
406
- Rate limit check for token_12bf80ff: 0/200 requests, remaining: 200, limited: false
407
- [ERROR] ynab:test:test operation | FAILED | 3ms | rate_limit_remaining:200 | error:"Validation failed: Validation error: Too small: expected string to have >=1 characters at "budget_id"; Invalid input: expected number, received string at "amount""
408
-
409
- stderr | src/server/__tests__/securityMiddleware.test.ts > SecurityMiddleware > withSecurity > should enforce rate limiting
410
- [INFO] ynab:test:test operation | SUCCESS | 0ms | rate_limit_remaining:1
411
-
412
- stderr | src/server/__tests__/securityMiddleware.test.ts > SecurityMiddleware > withSecurity > should enforce rate limiting
413
- [INFO] ynab:test:test operation | SUCCESS | 0ms | rate_limit_remaining:0
414
- [WARN] Rate limit exceeded for ynab:test
415
-
416
- stderr | src/server/__tests__/securityMiddleware.test.ts > SecurityMiddleware > withSecurity > should enforce rate limiting
417
- [ERROR] ynab:test:test operation | FAILED | 0ms | rate_limit_remaining:0 | error:"Rate limit exceeded. Please wait before making additional requests."
418
- [WARN] Rate limit exceeded for ynab:test
419
-
420
- stderr | src/server/__tests__/securityMiddleware.test.ts > SecurityMiddleware > withSecurity > should log successful requests
421
- Rate limit check for token_12bf80ff: 0/200 requests, remaining: 200, limited: false
422
-
423
- stderr | src/server/__tests__/securityMiddleware.test.ts > SecurityMiddleware > withSecurity > should log successful requests
424
- Recorded request for token_12bf80ff: 1/200 requests
425
-
426
- stderr | src/server/__tests__/securityMiddleware.test.ts > SecurityMiddleware > withSecurity > should log successful requests
427
- Rate limit check for token_12bf80ff: 1/200 requests, remaining: 199, limited: false
428
- [INFO] ynab:test:test operation | SUCCESS | 1ms | rate_limit_remaining:199
429
-
430
- stderr | src/server/__tests__/securityMiddleware.test.ts > SecurityMiddleware > withSecurity > should log failed requests
431
- Rate limit check for token_12bf80ff: 0/200 requests, remaining: 200, limited: false
432
-
433
- stderr | src/server/__tests__/securityMiddleware.test.ts > SecurityMiddleware > withSecurity > should log failed requests
434
- Recorded request for token_12bf80ff: 1/200 requests
435
-
436
- stderr | src/server/__tests__/securityMiddleware.test.ts > SecurityMiddleware > withSecurity > should log failed requests
437
- Rate limit check for token_12bf80ff: 1/200 requests, remaining: 199, limited: false
438
- [ERROR] ynab:test:test operation | FAILED | 1ms | rate_limit_remaining:199 | error:"Test error"
439
-
440
- stderr | src/server/__tests__/securityMiddleware.test.ts > SecurityMiddleware > withSecurity > should handle rate limit errors specially
441
- Rate limit check for token_12bf80ff: 0/200 requests, remaining: 200, limited: false
442
-
443
- ✓  unit  src/utils/__tests__/money.test.ts > money utilities > toMilli > converts dollars to milliunits correctly 42ms
444
- ✓  unit  src/utils/__tests__/money.test.ts > money utilities > toMilli > throws for invalid amounts 3ms
445
- ✓  unit  src/utils/__tests__/money.test.ts > money utilities > fromMilli > converts milliunits with 2 decimal digits (USD) by default 1ms
446
- ✓  unit  src/utils/__tests__/money.test.ts > money utilities > fromMilli > converts milliunits with 0 decimal digits (JPY) 0ms
447
- ✓  unit  src/utils/__tests__/money.test.ts > money utilities > fromMilli > converts milliunits with 3 decimal digits (BHD) 0ms
448
- ✓  unit  src/utils/__tests__/money.test.ts > money utilities > fromMilli > converts milliunits with explicit 2 decimal digits 0ms
449
- ✓  unit  src/utils/__tests__/money.test.ts > money utilities > assertMilli > passes for safe integers 1ms
450
- ✓  unit  src/utils/__tests__/money.test.ts > money utilities > assertMilli > throws for non-safe integers 1ms
451
- ✓  unit  src/utils/__tests__/money.test.ts > money utilities > addMilli > adds milliunits correctly 1ms
452
- ✓  unit  src/utils/__tests__/money.test.ts > money utilities > addMilli > throws on overflow 0ms
453
- ✓  unit  src/utils/__tests__/money.test.ts > money utilities > inWindow > checks date windows correctly 0ms
454
- ✓  unit  src/utils/__tests__/money.test.ts > money utilities > inWindow > handles optional bounds 0ms
455
- ✓  unit  src/utils/__tests__/money.test.ts > money utilities > currency format helpers > extracts decimal digits from currency format 0ms
456
- ✓  unit  src/utils/__tests__/money.test.ts > money utilities > currency format helpers > returns default decimal digits for null/undefined 0ms
457
- ✓  unit  src/utils/__tests__/money.test.ts > money utilities > currency format helpers > extracts currency code from currency format 0ms
458
- ✓  unit  src/utils/__tests__/money.test.ts > money utilities > currency format helpers > returns default currency for null/undefined 0ms
459
- ✓  unit  src/utils/__tests__/money.test.ts > money utilities > moneyValue helpers > derives direction correctly 0ms
460
- ✓  unit  src/utils/__tests__/money.test.ts > money utilities > moneyValue helpers > formats milliunits into currency strings with default 2 decimals 45ms
461
- ✓  unit  src/utils/__tests__/money.test.ts > money utilities > moneyValue helpers > formats milliunits with custom currency format 2ms
462
- ✓  unit  src/utils/__tests__/money.test.ts > money utilities > moneyValue helpers > creates money values from milliunits with default 2 decimals 2ms
463
- ✓  unit  src/utils/__tests__/money.test.ts > money utilities > moneyValue helpers > creates currency-aware money values with decimal digits 1ms
464
- ✓  unit  src/utils/__tests__/money.test.ts > money utilities > moneyValue helpers > creates money values from decimal amounts 1ms
465
- stderr | src/server/__tests__/securityMiddleware.test.ts > SecurityMiddleware > withSecurity > should handle rate limit errors specially
466
- Recorded request for token_12bf80ff: 1/200 requests
467
-
468
- stderr | src/server/__tests__/securityMiddleware.test.ts > SecurityMiddleware > withSecurity > should handle rate limit errors specially
469
- Rate limit check for token_12bf80ff: 1/200 requests, remaining: 199, limited: false
470
- [ERROR] ynab:test:test operation | FAILED | 19ms | rate_limit_remaining:199 | error:"Rate limit exceeded"
471
-
472
- stderr | src/server/__tests__/securityMiddleware.test.ts > SecurityMiddleware > withSecurity > should include rate limit info in logs
473
- Rate limit check for token_12bf80ff: 0/200 requests, remaining: 200, limited: false
474
-
475
- stderr | src/server/__tests__/securityMiddleware.test.ts > SecurityMiddleware > withSecurity > should include rate limit info in logs
476
- Recorded request for token_12bf80ff: 1/200 requests
477
-
478
- stderr | src/server/__tests__/securityMiddleware.test.ts > SecurityMiddleware > withSecurity > should include rate limit info in logs
479
- Rate limit check for token_12bf80ff: 1/200 requests, remaining: 199, limited: false
480
- [INFO] ynab:test:test operation | SUCCESS | 1ms | rate_limit_remaining:199
481
-
482
- ✓  unit  src/server/__tests__/errorHandler.test.ts > ErrorHandler > handleError > should handle YNABAPIError correctly 30ms
483
- ✓  unit  src/server/__tests__/errorHandler.test.ts > ErrorHandler > handleError > should handle ValidationError correctly 2ms
484
- ✓  unit  src/server/__tests__/errorHandler.test.ts > ErrorHandler > handleError > should detect 401 errors from generic Error messages 4ms
485
- ✓  unit  src/server/__tests__/errorHandler.test.ts > ErrorHandler > handleError > should detect 403 errors from generic Error messages 0ms
486
- ✓  unit  src/server/__tests__/errorHandler.test.ts > ErrorHandler > handleError > should detect 404 errors from generic Error messages 1ms
487
- ✓  unit  src/server/__tests__/errorHandler.test.ts > ErrorHandler > handleError > should detect 429 errors from generic Error messages 1ms
488
- ✓  unit  src/server/__tests__/errorHandler.test.ts > ErrorHandler > handleError > should detect 500 errors from generic Error messages 1ms
489
- ✓  unit  src/server/__tests__/errorHandler.test.ts > ErrorHandler > handleError > should handle unknown errors gracefully 1ms
490
- ✓  unit  src/server/__tests__/errorHandler.test.ts > ErrorHandler > handleError > should preserve original error message in details field for unknown errors 1ms
491
- ✓  unit  src/server/__tests__/errorHandler.test.ts > ErrorHandler > handleError > should handle non-Error objects 1ms
492
- ✓  unit  src/server/__tests__/errorHandler.test.ts > ErrorHandler > sanitizeErrorDetails > should sanitize access tokens 1ms
493
- ✓  unit  src/server/__tests__/errorHandler.test.ts > ErrorHandler > sanitizeErrorDetails > should sanitize API keys 0ms
494
- ✓  unit  src/server/__tests__/errorHandler.test.ts > ErrorHandler > sanitizeErrorDetails > should sanitize passwords 1ms
495
- ✓  unit  src/server/__tests__/errorHandler.test.ts > ErrorHandler > sanitizeErrorDetails > should sanitize authorization headers 1ms
496
- ✓  unit  src/server/__tests__/errorHandler.test.ts > ErrorHandler > withErrorHandling > should return result when operation succeeds 4ms
497
- ✓  unit  src/server/__tests__/errorHandler.test.ts > ErrorHandler > withErrorHandling > should handle errors when operation fails 1ms
498
- ✓  unit  src/server/__tests__/errorHandler.test.ts > ErrorHandler > createValidationError > should create a validation error response 1ms
499
- ✓  unit  src/server/__tests__/errorHandler.test.ts > ErrorHandler > createYNABError > should create a YNAB API error 1ms
500
- ✓  unit  src/server/__tests__/errorHandler.test.ts > handleToolError > should format tool error messages correctly 0ms
501
- ✓  unit  src/server/__tests__/errorHandler.test.ts > withToolErrorHandling > should return result when tool operation succeeds 1ms
502
- ✓  unit  src/server/__tests__/errorHandler.test.ts > withToolErrorHandling > should handle errors when tool operation fails 1ms
503
- ✓  unit  src/server/__tests__/errorHandler.test.ts > YNABAPIError > should create error with correct properties 0ms
504
- ✓  unit  src/server/__tests__/errorHandler.test.ts > ValidationError > should create error with correct properties 0ms
505
- ✓  unit  src/server/__tests__/errorHandler.test.ts > ErrorHandler with formatter injection > should use injected formatter for error responses 1ms
506
- ✓  unit  src/server/__tests__/errorHandler.test.ts > ErrorHandler with formatter injection > should call formatter with error response object 5ms
507
- ✓  unit  src/server/__tests__/errorHandler.test.ts > ErrorHandler with formatter injection > should create different instances with different formatters 1ms
508
- ✓  unit  src/server/__tests__/errorHandler.test.ts > Static method delegation > should delegate static calls to default instance 1ms
509
- ✓  unit  src/server/__tests__/errorHandler.test.ts > Static method delegation > should delegate createValidationError to default instance 0ms
510
- ✓  unit  src/server/__tests__/errorHandler.test.ts > Static method delegation > should delegate withErrorHandling to default instance 3ms
511
- ✓  unit  src/server/__tests__/errorHandler.test.ts > Fallback formatter > should use fallback formatter when none is set initially 3ms
512
- ✓  unit  src/server/__tests__/errorHandler.test.ts > Instance vs static behavior > should produce identical results for instance and static calls 1ms
513
- ✓  unit  src/server/__tests__/errorHandler.test.ts > Instance vs static behavior > should produce identical results for createValidationError 1ms
514
- ✓  unit  src/server/__tests__/errorHandler.test.ts > Instance vs static behavior > should produce identical results for withErrorHandling 1ms
515
- ✓  unit  src/server/__tests__/errorHandler.test.ts > Error scenarios > should handle formatter errors gracefully 1ms
516
- stderr | src/server/__tests__/securityMiddleware.test.ts > SecurityMiddleware > input validation > should validate required fields
517
- Rate limit check for token_12bf80ff: 0/200 requests, remaining: 200, limited: false
518
- [ERROR] ynab:test:test operation | FAILED | 1ms | rate_limit_remaining:200 | error:"Validation failed: Validation error: Invalid input: expected string, received undefined at "budget_id""
519
-
520
- stderr | src/server/__tests__/securityMiddleware.test.ts > SecurityMiddleware > input validation > should validate field types
521
- Rate limit check for token_12bf80ff: 0/200 requests, remaining: 200, limited: false
522
- [ERROR] ynab:test:test operation | FAILED | 1ms | rate_limit_remaining:200 | error:"Validation failed: Validation error: Invalid input: expected number, received string at "amount""
523
-
524
- stderr | src/server/__tests__/securityMiddleware.test.ts > SecurityMiddleware > input validation > should pass valid optional fields
525
- Rate limit check for token_12bf80ff: 0/200 requests, remaining: 200, limited: false
526
-
527
- stderr | src/server/__tests__/securityMiddleware.test.ts > SecurityMiddleware > input validation > should pass valid optional fields
528
- Recorded request for token_12bf80ff: 1/200 requests
529
-
530
- stderr | src/server/__tests__/securityMiddleware.test.ts > SecurityMiddleware > input validation > should pass valid optional fields
531
- Rate limit check for token_12bf80ff: 1/200 requests, remaining: 199, limited: false
532
- [INFO] ynab:test:test operation | SUCCESS | 0ms | rate_limit_remaining:199
533
-
534
- stderr | src/server/__tests__/securityMiddleware.test.ts > SecurityMiddleware > token hashing > should use consistent hashing for the same token
535
- Rate limit check for token_1e79b1c0: 0/200 requests, remaining: 200, limited: false
536
-
537
- stderr | src/server/__tests__/securityMiddleware.test.ts > SecurityMiddleware > token hashing > should use consistent hashing for the same token
538
- Recorded request for token_1e79b1c0: 1/200 requests
539
-
540
- stderr | src/server/__tests__/securityMiddleware.test.ts > SecurityMiddleware > token hashing > should use consistent hashing for the same token
541
- Rate limit check for token_1e79b1c0: 1/200 requests, remaining: 199, limited: false
542
- [INFO] ynab:test1:test | SUCCESS | 0ms | rate_limit_remaining:199
543
-
544
- stderr | src/server/__tests__/securityMiddleware.test.ts > SecurityMiddleware > token hashing > should use consistent hashing for the same token
545
- Rate limit check for token_1e79b1c0: 1/200 requests, remaining: 199, limited: false
546
-
547
- stderr | src/server/__tests__/securityMiddleware.test.ts > SecurityMiddleware > token hashing > should use consistent hashing for the same token
548
- Recorded request for token_1e79b1c0: 2/200 requests
549
-
550
- stderr | src/server/__tests__/securityMiddleware.test.ts > SecurityMiddleware > token hashing > should use consistent hashing for the same token
551
- Rate limit check for token_1e79b1c0: 2/200 requests, remaining: 198, limited: false
552
- [INFO] ynab:test2:test | SUCCESS | 0ms | rate_limit_remaining:198
553
-
554
- stderr | src/server/__tests__/securityMiddleware.test.ts > SecurityMiddleware > token hashing > should use different hashing for different tokens
555
- Rate limit check for token_16a2a057: 0/200 requests, remaining: 200, limited: false
556
-
557
- stderr | src/server/__tests__/securityMiddleware.test.ts > SecurityMiddleware > token hashing > should use different hashing for different tokens
558
- Recorded request for token_16a2a057: 1/200 requests
559
-
560
- stderr | src/server/__tests__/securityMiddleware.test.ts > SecurityMiddleware > token hashing > should use different hashing for different tokens
561
- Rate limit check for token_16a2a057: 1/200 requests, remaining: 199, limited: false
562
- [INFO] ynab:test:test | SUCCESS | 0ms | rate_limit_remaining:199
563
-
564
- stderr | src/server/__tests__/securityMiddleware.test.ts > SecurityMiddleware > token hashing > should use different hashing for different tokens
565
- Rate limit check for token_16a2a058: 0/200 requests, remaining: 200, limited: false
566
-
567
- stderr | src/server/__tests__/securityMiddleware.test.ts > SecurityMiddleware > token hashing > should use different hashing for different tokens
568
- Recorded request for token_16a2a058: 1/200 requests
569
-
570
- stderr | src/server/__tests__/securityMiddleware.test.ts > SecurityMiddleware > token hashing > should use different hashing for different tokens
571
- Rate limit check for token_16a2a058: 1/200 requests, remaining: 199, limited: false
572
- [INFO] ynab:test:test | SUCCESS | 1ms | rate_limit_remaining:199
573
-
574
- stderr | src/server/__tests__/securityMiddleware.test.ts > SecurityMiddleware > getSecurityStats > should return security statistics
575
- Rate limit check for token_12bf80ff: 0/200 requests, remaining: 200, limited: false
576
-
577
- stderr | src/server/__tests__/securityMiddleware.test.ts > SecurityMiddleware > getSecurityStats > should return security statistics
578
- Recorded request for token_12bf80ff: 1/200 requests
579
-
580
- stderr | src/server/__tests__/securityMiddleware.test.ts > SecurityMiddleware > getSecurityStats > should return security statistics
581
- Rate limit check for token_12bf80ff: 1/200 requests, remaining: 199, limited: false
582
- [INFO] ynab:test:test operation | SUCCESS | 0ms | rate_limit_remaining:199
583
-
584
- stderr | src/server/__tests__/securityMiddleware.test.ts > SecurityMiddleware > reset > should reset security state
585
- Rate limit check for token_12bf80ff: 0/200 requests, remaining: 200, limited: false
586
-
587
- stderr | src/server/__tests__/securityMiddleware.test.ts > SecurityMiddleware > reset > should reset security state
588
- Recorded request for token_12bf80ff: 1/200 requests
589
-
590
- stderr | src/server/__tests__/securityMiddleware.test.ts > SecurityMiddleware > reset > should reset security state
591
- Rate limit check for token_12bf80ff: 1/200 requests, remaining: 199, limited: false
592
- [INFO] ynab:test:test operation | SUCCESS | 1ms | rate_limit_remaining:199
593
-
594
- stderr | src/server/__tests__/securityMiddleware.test.ts > SecurityMiddleware > withSecurityWrapper > should create a properly configured wrapper function
595
- Rate limit check for token_12bf80ff: 0/200 requests, remaining: 200, limited: false
596
-
597
- stderr | src/server/__tests__/securityMiddleware.test.ts > SecurityMiddleware > withSecurityWrapper > should create a properly configured wrapper function
598
- Recorded request for token_12bf80ff: 1/200 requests
599
-
600
- stderr | src/server/__tests__/securityMiddleware.test.ts > SecurityMiddleware > withSecurityWrapper > should create a properly configured wrapper function
601
- Rate limit check for token_12bf80ff: 1/200 requests, remaining: 199, limited: false
602
- [INFO] ynab:test:test operation | SUCCESS | 0ms | rate_limit_remaining:199
603
-
604
- stderr | src/server/__tests__/securityMiddleware.test.ts > SecurityMiddleware > error handling > should handle validation errors gracefully
605
- Rate limit check for token_12bf80ff: 0/200 requests, remaining: 200, limited: false
606
- [ERROR] ynab:test:test operation | FAILED | 0ms | rate_limit_remaining:200 | error:"Validation failed: Validation error: Too small: expected string to have >=10 characters at "budget_id""
607
-
608
- stderr | src/server/__tests__/securityMiddleware.test.ts > SecurityMiddleware > error handling > should handle operation errors and re-throw them
609
- Rate limit check for token_12bf80ff: 0/200 requests, remaining: 200, limited: false
610
-
611
- stderr | src/server/__tests__/securityMiddleware.test.ts > SecurityMiddleware > error handling > should handle operation errors and re-throw them
612
- Recorded request for token_12bf80ff: 1/200 requests
613
-
614
- stderr | src/server/__tests__/securityMiddleware.test.ts > SecurityMiddleware > error handling > should handle operation errors and re-throw them
615
- Rate limit check for token_12bf80ff: 1/200 requests, remaining: 199, limited: false
616
- [ERROR] ynab:test:test operation | FAILED | 2ms | rate_limit_remaining:199 | error:"Operation failed"
617
-
618
- ✓  unit  src/server/__tests__/securityMiddleware.test.ts > SecurityMiddleware > withSecurity > should execute operation successfully with valid input 19ms
619
- ✓  unit  src/server/__tests__/securityMiddleware.test.ts > SecurityMiddleware > withSecurity > should validate input parameters 7ms
620
- ✓  unit  src/server/__tests__/securityMiddleware.test.ts > SecurityMiddleware > withSecurity > should enforce rate limiting 6ms
621
- ✓  unit  src/server/__tests__/securityMiddleware.test.ts > SecurityMiddleware > withSecurity > should log successful requests 4ms
622
- ✓  unit  src/server/__tests__/securityMiddleware.test.ts > SecurityMiddleware > withSecurity > should log failed requests 7ms
623
- ✓  unit  src/server/__tests__/securityMiddleware.test.ts > SecurityMiddleware > withSecurity > should handle rate limit errors specially 20ms
624
- ✓  unit  src/server/__tests__/securityMiddleware.test.ts > SecurityMiddleware > withSecurity > should include rate limit info in logs 2ms
625
- ✓  unit  src/server/__tests__/securityMiddleware.test.ts > SecurityMiddleware > input validation > should validate required fields 5ms
626
- ✓  unit  src/server/__tests__/securityMiddleware.test.ts > SecurityMiddleware > input validation > should validate field types 4ms
627
- ✓  unit  src/server/__tests__/securityMiddleware.test.ts > SecurityMiddleware > input validation > should pass valid optional fields 2ms
628
- ✓  unit  src/server/__tests__/securityMiddleware.test.ts > SecurityMiddleware > token hashing > should use consistent hashing for the same token 2ms
629
- ✓  unit  src/server/__tests__/securityMiddleware.test.ts > SecurityMiddleware > token hashing > should use different hashing for different tokens 2ms
630
- ✓  unit  src/server/__tests__/securityMiddleware.test.ts > SecurityMiddleware > getSecurityStats > should return security statistics 2ms
631
- ✓  unit  src/server/__tests__/securityMiddleware.test.ts > SecurityMiddleware > reset > should reset security state 1ms
632
- ✓  unit  src/server/__tests__/securityMiddleware.test.ts > SecurityMiddleware > withSecurityWrapper > should create a properly configured wrapper function 2ms
633
- ✓  unit  src/server/__tests__/securityMiddleware.test.ts > SecurityMiddleware > error handling > should handle validation errors gracefully 2ms
634
- ✓  unit  src/server/__tests__/securityMiddleware.test.ts > SecurityMiddleware > error handling > should handle operation errors and re-throw them 4ms
635
- ✓  unit  src/tools/__tests__/categoryTools.test.ts > Category Tools > handleListCategories > should include cache metadata from delta fetcher results 9ms
636
- ✓  unit  src/tools/__tests__/categoryTools.test.ts > Category Tools > handleListCategories > should return formatted category list on success 5ms
637
- ✓  unit  src/tools/__tests__/categoryTools.test.ts > Category Tools > handleListCategories > should handle authentication errors 2ms
638
- ✓  unit  src/tools/__tests__/categoryTools.test.ts > Category Tools > handleListCategories > should handle not found errors 1ms
639
- ✓  unit  src/tools/__tests__/categoryTools.test.ts > Category Tools > handleGetCategory > should return detailed category information on success 3ms
640
- ✓  unit  src/tools/__tests__/categoryTools.test.ts > Category Tools > handleGetCategory > should reflect cached responses when data exists in cache 1ms
641
- ✓  unit  src/tools/__tests__/categoryTools.test.ts > Category Tools > handleGetCategory > should handle 404 not found errors 1ms
642
- ✓  unit  src/tools/__tests__/categoryTools.test.ts > Category Tools > handleUpdateCategory > should update category budget for current month on success 7ms
643
- ✓  unit  src/tools/__tests__/categoryTools.test.ts > Category Tools > handleUpdateCategory > should handle 404 not found errors 2ms
644
- ✓  unit  src/tools/__tests__/categoryTools.test.ts > Category Tools > handleUpdateCategory > should handle 403 forbidden errors 1ms
645
- ✓  unit  src/tools/__tests__/categoryTools.test.ts > Category Tools > handleUpdateCategory > should invalidate category caches on successful category update 4ms
646
- ✓  unit  src/tools/__tests__/categoryTools.test.ts > Category Tools > handleUpdateCategory > should not invalidate cache on dry_run category update 2ms
647
- ✓  unit  src/tools/__tests__/categoryTools.test.ts > Category Tools > Schema Validation > ListCategoriesSchema > should validate valid budget_id 3ms
648
- ✓  unit  src/tools/__tests__/categoryTools.test.ts > Category Tools > Schema Validation > ListCategoriesSchema > should reject empty budget_id 2ms
649
- ✓  unit  src/tools/__tests__/categoryTools.test.ts > Category Tools > Schema Validation > ListCategoriesSchema > should reject missing budget_id 1ms
650
- ✓  unit  src/tools/__tests__/categoryTools.test.ts > Category Tools > Schema Validation > GetCategorySchema > should validate valid parameters 1ms
651
- ✓  unit  src/tools/__tests__/categoryTools.test.ts > Category Tools > Schema Validation > GetCategorySchema > should reject empty category_id 6ms
652
- ✓  unit  src/tools/__tests__/categoryTools.test.ts > Category Tools > Schema Validation > GetCategorySchema > should reject missing category_id 1ms
653
- ✓  unit  src/tools/__tests__/categoryTools.test.ts > Category Tools > Schema Validation > UpdateCategorySchema > should validate valid parameters 2ms
654
- ✓  unit  src/tools/__tests__/categoryTools.test.ts > Category Tools > Schema Validation > UpdateCategorySchema > should reject non-integer budgeted amount 1ms
655
- ✓  unit  src/tools/__tests__/categoryTools.test.ts > Category Tools > Schema Validation > UpdateCategorySchema > should reject missing budgeted amount 1ms
656
- ✓  unit  src/tools/__tests__/categoryTools.test.ts > Category Tools > Schema Validation > UpdateCategorySchema > should accept negative budgeted amounts 0ms
657
- ✓  unit  src/tools/__tests__/categoryTools.test.ts > Category Tools > Schema Validation > UpdateCategorySchema > should accept zero budgeted amount 0ms
658
- ✓  unit  src/server/__tests__/prompts.test.ts > prompts module > PromptManager > constructor > should initialize without dependencies 4ms
659
- ✓  unit  src/server/__tests__/prompts.test.ts > prompts module > PromptManager > listPrompts > should return list of available prompts 3ms
660
- ✓  unit  src/server/__tests__/prompts.test.ts > prompts module > PromptManager > listPrompts > should return consistent prompt list 0ms
661
- ✓  unit  src/server/__tests__/prompts.test.ts > prompts module > PromptManager > getPrompt > create-transaction > should generate transaction creation prompt with default values 4ms
662
- ✓  unit  src/server/__tests__/prompts.test.ts > prompts module > PromptManager > getPrompt > create-transaction > should generate transaction creation prompt with provided arguments 1ms
663
- ✓  unit  src/server/__tests__/prompts.test.ts > prompts module > PromptManager > getPrompt > create-transaction > should handle partial arguments 1ms
664
- ✓  unit  src/server/__tests__/prompts.test.ts > prompts module > PromptManager > getPrompt > create-transaction > should include proper workflow instructions 1ms
665
- ✓  unit  src/server/__tests__/prompts.test.ts > prompts module > PromptManager > getPrompt > budget-summary > should generate budget summary prompt with default values 1ms
666
- ✓  unit  src/server/__tests__/prompts.test.ts > prompts module > PromptManager > getPrompt > budget-summary > should generate budget summary prompt with provided arguments 1ms
667
- ✓  unit  src/server/__tests__/prompts.test.ts > prompts module > PromptManager > getPrompt > budget-summary > should include YNAB-specific guidance 1ms
668
- ✓  unit  src/server/__tests__/prompts.test.ts > prompts module > PromptManager > getPrompt > account-balances > should generate account balances prompt with default values 1ms
669
- ✓  unit  src/server/__tests__/prompts.test.ts > prompts module > PromptManager > getPrompt > account-balances > should generate account balances prompt with provided arguments 1ms
670
- ✓  unit  src/server/__tests__/prompts.test.ts > prompts module > PromptManager > getPrompt > account-balances > should include proper balance display instructions 1ms
671
- ✓  unit  src/server/__tests__/prompts.test.ts > prompts module > PromptManager > getPrompt > unknown prompts > should throw error for unknown prompt names 3ms
672
- ✓  unit  src/server/__tests__/prompts.test.ts > prompts module > PromptManager > getPrompt > unknown prompts > should throw error for empty prompt name 1ms
673
- ✓  unit  src/server/__tests__/prompts.test.ts > prompts module > PromptManager > getPrompt > argument handling > should handle undefined arguments 0ms
674
- ✓  unit  src/server/__tests__/prompts.test.ts > prompts module > PromptManager > getPrompt > argument handling > should handle null arguments 1ms
675
- ✓  unit  src/server/__tests__/prompts.test.ts > prompts module > PromptManager > getPrompt > argument handling > should handle empty arguments object 0ms
676
- ✓  unit  src/server/__tests__/prompts.test.ts > prompts module > PromptManager > getPrompt > argument handling > should handle arguments with null/undefined values 1ms
677
- ✓  unit  src/server/__tests__/prompts.test.ts > prompts module > PromptManager > getPrompt > edge cases > should handle very long argument values 0ms
678
- ✓  unit  src/server/__tests__/prompts.test.ts > prompts module > PromptManager > getPrompt > edge cases > should handle special characters in arguments 0ms
679
- ✓  unit  src/server/__tests__/prompts.test.ts > prompts module > PromptManager > getPrompt > edge cases > should maintain consistent message structure across all prompts 4ms
680
- stderr | src/server/__tests__/requestLogger.test.ts > RequestLogger > logRequest > should log a successful request
681
- [INFO] ynab:create_transaction:creating transaction | SUCCESS | 150ms
682
-
683
- stderr | src/server/__tests__/requestLogger.test.ts > RequestLogger > logRequest > should log a failed request
684
- [ERROR] ynab:get_budget:getting budget | FAILED | 75ms | error:"Budget not found"
685
-
686
- stderr | src/server/__tests__/requestLogger.test.ts > RequestLogger > logRequest > should include rate limit information
687
- [INFO] ynab:list_budgets:listing budgets | SUCCESS | 100ms | rate_limit_remaining:150
688
-
689
- stderr | src/server/__tests__/requestLogger.test.ts > RequestLogger > parameter sanitization > should sanitize sensitive parameter names
690
- [INFO] ynab:test:test | SUCCESS
691
-
692
- stderr | src/server/__tests__/requestLogger.test.ts > RequestLogger > parameter sanitization > should sanitize long alphanumeric strings in values
693
- [INFO] ynab:test:test | SUCCESS
694
-
695
- stderr | src/server/__tests__/requestLogger.test.ts > RequestLogger > parameter sanitization > should sanitize Bearer tokens in strings
696
- [INFO] ynab:test:test | SUCCESS
697
-
698
- stderr | src/server/__tests__/requestLogger.test.ts > RequestLogger > parameter sanitization > should sanitize nested objects
699
- [INFO] ynab:test:test | SUCCESS
700
-
701
- stderr | src/server/__tests__/requestLogger.test.ts > RequestLogger > parameter sanitization > should sanitize arrays
702
- [INFO] ynab:test:test | SUCCESS
703
-
704
- stderr | src/server/__tests__/requestLogger.test.ts > RequestLogger > parameter sanitization > should not sanitize when sanitization is disabled
705
- [INFO] ynab:test:test | SUCCESS
706
-
707
- stderr | src/server/__tests__/requestLogger.test.ts > RequestLogger > error sanitization > should sanitize error messages
708
- [ERROR] ynab:test:test | FAILED | error:"Authentication failed with token=***"
709
-
710
- stderr | src/server/__tests__/requestLogger.test.ts > RequestLogger > error sanitization > should sanitize Bearer tokens in error messages
711
- [ERROR] ynab:test:test | FAILED | error:"Invalid authorization header: Bearer ***"
712
-
713
- stderr | src/server/__tests__/requestLogger.test.ts > RequestLogger > log management > should maintain maximum log entries
714
- [INFO] ynab:test0:test | SUCCESS
715
- [INFO] ynab:test1:test | SUCCESS
716
- [INFO] ynab:test2:test | SUCCESS
717
- [INFO] ynab:test3:test | SUCCESS
718
- [INFO] ynab:test4:test | SUCCESS
719
-
720
- stderr | src/server/__tests__/requestLogger.test.ts > RequestLogger > log management > should clear all logs
721
- [INFO] ynab:test1:test | SUCCESS
722
- [INFO] ynab:test2:test | SUCCESS
723
-
724
- stderr | src/server/__tests__/requestLogger.test.ts > RequestLogger > log filtering > should filter by tool name
725
- [INFO] ynab:list_budgets:listing | SUCCESS
726
- [ERROR] ynab:get_budget:getting | FAILED | error:"Not found"
727
- [INFO] ynab:list_accounts:listing | SUCCESS
728
- [ERROR] ynab:create_transaction:creating | FAILED | error:"Invalid data"
729
-
730
- stderr | src/server/__tests__/requestLogger.test.ts > RequestLogger > log filtering > should filter by success status
731
- [INFO] ynab:list_budgets:listing | SUCCESS
732
- [ERROR] ynab:get_budget:getting | FAILED | error:"Not found"
733
- [INFO] ynab:list_accounts:listing | SUCCESS
734
- [ERROR] ynab:create_transaction:creating | FAILED | error:"Invalid data"
735
-
736
- stderr | src/server/__tests__/requestLogger.test.ts > RequestLogger > log filtering > should filter by date
737
- [INFO] ynab:list_budgets:listing | SUCCESS
738
- [ERROR] ynab:get_budget:getting | FAILED | error:"Not found"
739
- [INFO] ynab:list_accounts:listing | SUCCESS
740
- [ERROR] ynab:create_transaction:creating | FAILED | error:"Invalid data"
741
-
742
- stderr | src/server/__tests__/requestLogger.test.ts > RequestLogger > log filtering > should limit results
743
- [INFO] ynab:list_budgets:listing | SUCCESS
744
- [ERROR] ynab:get_budget:getting | FAILED | error:"Not found"
745
- [INFO] ynab:list_accounts:listing | SUCCESS
746
- [ERROR] ynab:create_transaction:creating | FAILED | error:"Invalid data"
747
-
748
- stderr | src/server/__tests__/requestLogger.test.ts > RequestLogger > log filtering > should combine filters
749
- [INFO] ynab:list_budgets:listing | SUCCESS
750
- [ERROR] ynab:get_budget:getting | FAILED | error:"Not found"
751
- [INFO] ynab:list_accounts:listing | SUCCESS
752
- [ERROR] ynab:create_transaction:creating | FAILED | error:"Invalid data"
753
-
754
- stderr | src/server/__tests__/requestLogger.test.ts > RequestLogger > statistics > should calculate basic statistics
755
- [INFO] ynab:list_budgets:listing | SUCCESS | 100ms
756
- [ERROR] ynab:get_budget:getting | FAILED | 50ms | error:"Not found"
757
- [INFO] ynab:list_budgets:listing | SUCCESS | 150ms
758
- [INFO] ynab:create_transaction:creating | SUCCESS | 200ms | rate_limit_remaining:100
759
- [ERROR] ynab:update_transaction:updating | FAILED | 75ms | rate_limit_remaining:0 | error:"Rate limited"
760
- [WARN] Rate limit exceeded for ynab:update_transaction
761
-
762
- stderr | src/server/__tests__/requestLogger.test.ts > RequestLogger > statistics > should calculate average duration
763
- [INFO] ynab:list_budgets:listing | SUCCESS | 100ms
764
- [ERROR] ynab:get_budget:getting | FAILED | 50ms | error:"Not found"
765
- [INFO] ynab:list_budgets:listing | SUCCESS | 150ms
766
- [INFO] ynab:create_transaction:creating | SUCCESS | 200ms | rate_limit_remaining:100
767
- [ERROR] ynab:update_transaction:updating | FAILED | 75ms | rate_limit_remaining:0 | error:"Rate limited"
768
- [WARN] Rate limit exceeded for ynab:update_transaction
769
-
770
- stderr | src/server/__tests__/requestLogger.test.ts > RequestLogger > statistics > should count rate limited requests
771
- [INFO] ynab:list_budgets:listing | SUCCESS | 100ms
772
- [ERROR] ynab:get_budget:getting | FAILED | 50ms | error:"Not found"
773
- [INFO] ynab:list_budgets:listing | SUCCESS | 150ms
774
- [INFO] ynab:create_transaction:creating | SUCCESS | 200ms | rate_limit_remaining:100
775
- [ERROR] ynab:update_transaction:updating | FAILED | 75ms | rate_limit_remaining:0 | error:"Rate limited"
776
- [WARN] Rate limit exceeded for ynab:update_transaction
777
-
778
- stderr | src/server/__tests__/requestLogger.test.ts > RequestLogger > statistics > should track tool usage
779
- [INFO] ynab:list_budgets:listing | SUCCESS | 100ms
780
- [ERROR] ynab:get_budget:getting | FAILED | 50ms | error:"Not found"
781
- [INFO] ynab:list_budgets:listing | SUCCESS | 150ms
782
- [INFO] ynab:create_transaction:creating | SUCCESS | 200ms | rate_limit_remaining:100
783
- [ERROR] ynab:update_transaction:updating | FAILED | 75ms | rate_limit_remaining:0 | error:"Rate limited"
784
- [WARN] Rate limit exceeded for ynab:update_transaction
785
-
786
- stderr | src/server/__tests__/requestLogger.test.ts > RequestLogger > statistics > should handle empty logs
787
- [INFO] ynab:list_budgets:listing | SUCCESS | 100ms
788
- [ERROR] ynab:get_budget:getting | FAILED | 50ms | error:"Not found"
789
- [INFO] ynab:list_budgets:listing | SUCCESS | 150ms
790
- [INFO] ynab:create_transaction:creating | SUCCESS | 200ms | rate_limit_remaining:100
791
- [ERROR] ynab:update_transaction:updating | FAILED | 75ms | rate_limit_remaining:0 | error:"Rate limited"
792
- [WARN] Rate limit exceeded for ynab:update_transaction
793
-
794
- ✓  unit  src/server/__tests__/requestLogger.test.ts > RequestLogger > logRequest > should log a successful request 16ms
795
- ✓  unit  src/server/__tests__/requestLogger.test.ts > RequestLogger > logRequest > should log a failed request 3ms
796
- ✓  unit  src/server/__tests__/requestLogger.test.ts > RequestLogger > logRequest > should include rate limit information 1ms
797
- ✓  unit  src/server/__tests__/requestLogger.test.ts > RequestLogger > logRequest > should not log when disabled 2ms
798
- ✓  unit  src/server/__tests__/requestLogger.test.ts > RequestLogger > parameter sanitization > should sanitize sensitive parameter names 2ms
799
- ✓  unit  src/server/__tests__/requestLogger.test.ts > RequestLogger > parameter sanitization > should sanitize long alphanumeric strings in values 1ms
800
- ✓  unit  src/server/__tests__/requestLogger.test.ts > RequestLogger > parameter sanitization > should sanitize Bearer tokens in strings 1ms
801
- ✓  unit  src/server/__tests__/requestLogger.test.ts > RequestLogger > parameter sanitization > should sanitize nested objects 2ms
802
- ✓  unit  src/server/__tests__/requestLogger.test.ts > RequestLogger > parameter sanitization > should sanitize arrays 2ms
803
- ✓  unit  src/server/__tests__/requestLogger.test.ts > RequestLogger > parameter sanitization > should not sanitize when sanitization is disabled 3ms
804
- ✓  unit  src/server/__tests__/requestLogger.test.ts > RequestLogger > error sanitization > should sanitize error messages 1ms
805
- ✓  unit  src/server/__tests__/requestLogger.test.ts > RequestLogger > error sanitization > should sanitize Bearer tokens in error messages 1ms
806
- ✓  unit  src/server/__tests__/requestLogger.test.ts > RequestLogger > log management > should maintain maximum log entries 1ms
807
- ✓  unit  src/server/__tests__/requestLogger.test.ts > RequestLogger > log management > should clear all logs 2ms
808
- ✓  unit  src/server/__tests__/requestLogger.test.ts > RequestLogger > log filtering > should filter by tool name 2ms
809
- ✓  unit  src/server/__tests__/requestLogger.test.ts > RequestLogger > log filtering > should filter by success status 2ms
810
- ✓  unit  src/server/__tests__/requestLogger.test.ts > RequestLogger > log filtering > should filter by date 1ms
811
- ✓  unit  src/server/__tests__/requestLogger.test.ts > RequestLogger > log filtering > should limit results 1ms
812
- ✓  unit  src/server/__tests__/requestLogger.test.ts > RequestLogger > log filtering > should combine filters 1ms
813
- ✓  unit  src/server/__tests__/requestLogger.test.ts > RequestLogger > statistics > should calculate basic statistics 5ms
814
- ✓  unit  src/server/__tests__/requestLogger.test.ts > RequestLogger > statistics > should calculate average duration 1ms
815
- ✓  unit  src/server/__tests__/requestLogger.test.ts > RequestLogger > statistics > should count rate limited requests 1ms
816
- ✓  unit  src/server/__tests__/requestLogger.test.ts > RequestLogger > statistics > should track tool usage 1ms
817
- ✓  unit  src/server/__tests__/requestLogger.test.ts > RequestLogger > statistics > should handle empty logs 1ms
818
- ✓  unit  src/server/__tests__/requestLogger.test.ts > RequestLogger > console output > should output success logs at info level 7ms
819
- ✓  unit  src/server/__tests__/requestLogger.test.ts > RequestLogger > console output > should output error logs at error level 1ms
820
- ✓  unit  src/server/__tests__/requestLogger.test.ts > RequestLogger > console output > should output rate limit warnings 1ms
821
- ✓  unit  src/server/__tests__/requestLogger.test.ts > RequestLogger > console output > should respect log level configuration 1ms
822
- ✓  unit  src/tools/__tests__/accountTools.test.ts > Account Tools > handleListAccounts > should include cache metadata from delta fetcher results 8ms
823
- ✓  unit  src/tools/__tests__/accountTools.test.ts > Account Tools > handleListAccounts > should return formatted account list on success 4ms
824
- ✓  unit  src/tools/__tests__/accountTools.test.ts > Account Tools > handleListAccounts > should handle 404 budget not found errors 2ms
825
- ✓  unit  src/tools/__tests__/accountTools.test.ts > Account Tools > handleListAccounts > should handle 401 authentication errors 1ms
826
- ✓  unit  src/tools/__tests__/accountTools.test.ts > Account Tools > handleListAccounts > should handle generic errors 2ms
827
- ✓  unit  src/tools/__tests__/accountTools.test.ts > Account Tools > handleGetAccount > should return detailed account information on success 2ms
828
- ✓  unit  src/tools/__tests__/accountTools.test.ts > Account Tools > handleGetAccount > should report cached responses when cache entries exist 1ms
829
- ✓  unit  src/tools/__tests__/accountTools.test.ts > Account Tools > handleGetAccount > should handle 404 account not found errors 2ms
830
- ✓  unit  src/tools/__tests__/accountTools.test.ts > Account Tools > handleGetAccount > should handle authentication errors 1ms
831
- ✓  unit  src/tools/__tests__/accountTools.test.ts > Account Tools > handleCreateAccount > should create account with all supported types 5ms
832
- ✓  unit  src/tools/__tests__/accountTools.test.ts > Account Tools > handleCreateAccount > should create account without initial balance 2ms
833
- ✓  unit  src/tools/__tests__/accountTools.test.ts > Account Tools > handleCreateAccount > should convert balance to milliunits 1ms
834
- ✓  unit  src/tools/__tests__/accountTools.test.ts > Account Tools > handleCreateAccount > should handle creation errors 2ms
835
- ✓  unit  src/tools/__tests__/accountTools.test.ts > Account Tools > handleCreateAccount > should invalidate account list cache on successful account creation 1ms
836
- ✓  unit  src/tools/__tests__/accountTools.test.ts > Account Tools > handleCreateAccount > should not invalidate cache on dry_run account creation 2ms
837
- ✓  unit  src/tools/__tests__/accountTools.test.ts > Account Tools > Schema Validation > ListAccountsSchema > should validate valid budget_id 3ms
838
- ✓  unit  src/tools/__tests__/accountTools.test.ts > Account Tools > Schema Validation > ListAccountsSchema > should reject empty budget_id 2ms
839
- ✓  unit  src/tools/__tests__/accountTools.test.ts > Account Tools > Schema Validation > ListAccountsSchema > should reject missing budget_id 1ms
840
- ✓  unit  src/tools/__tests__/accountTools.test.ts > Account Tools > Schema Validation > GetAccountSchema > should validate valid parameters 1ms
841
- ✓  unit  src/tools/__tests__/accountTools.test.ts > Account Tools > Schema Validation > GetAccountSchema > should reject missing account_id 1ms
842
- ✓  unit  src/tools/__tests__/accountTools.test.ts > Account Tools > Schema Validation > GetAccountSchema > should reject empty account_id 1ms
843
- ✓  unit  src/tools/__tests__/accountTools.test.ts > Account Tools > Schema Validation > CreateAccountSchema > should validate valid account creation parameters 2ms
844
- ✓  unit  src/tools/__tests__/accountTools.test.ts > Account Tools > Schema Validation > CreateAccountSchema > should validate without optional balance 0ms
845
- ✓  unit  src/tools/__tests__/accountTools.test.ts > Account Tools > Schema Validation > CreateAccountSchema > should validate all supported account types 1ms
846
- ✓  unit  src/tools/__tests__/accountTools.test.ts > Account Tools > Schema Validation > CreateAccountSchema > should reject invalid account type 1ms
847
- ✓  unit  src/tools/__tests__/accountTools.test.ts > Account Tools > Schema Validation > CreateAccountSchema > should reject empty name 1ms
848
- ✓  unit  src/tools/__tests__/accountTools.test.ts > Account Tools > Schema Validation > CreateAccountSchema > should reject missing required fields 1ms
849
- ✓  unit  src/server/__tests__/toolRegistry.test.ts > ToolRegistry > registers a tool and exposes it through getToolDefinitions 10ms
850
- ✓  unit  src/server/__tests__/toolRegistry.test.ts > ToolRegistry > throws when registering duplicate tool names 4ms
851
- ✓  unit  src/server/__tests__/toolRegistry.test.ts > ToolRegistry > rejects invalid tool definitions 1ms
852
- ✓  unit  src/server/__tests__/toolRegistry.test.ts > ToolRegistry > lists tools with generated JSON schema when metadata missing 9ms
853
- ✓  unit  src/server/__tests__/toolRegistry.test.ts > ToolRegistry > prefers custom metadata JSON schema when provided 2ms
854
- ✓  unit  src/server/__tests__/toolRegistry.test.ts > ToolRegistry > executes a registered tool via security wrapper and handler 26ms
855
- ↓  unit  src/server/__tests__/toolRegistry.test.ts > ToolRegistry > routes reconcile_account tool to handler emitting dual-channel output
856
- ✓  unit  src/server/__tests__/toolRegistry.test.ts > ToolRegistry > merges default arguments before validation 2ms
857
- ✓  unit  src/server/__tests__/toolRegistry.test.ts > ToolRegistry > passes cache helpers to the handler context when injected 2ms
858
- ✓  unit  src/server/__tests__/toolRegistry.test.ts > ToolRegistry > extracts minify override from arguments when not explicitly provided 6ms
859
- ✓  unit  src/server/__tests__/toolRegistry.test.ts > ToolRegistry > prefers explicit minify override option over argument hints 3ms
860
- ✓  unit  src/server/__tests__/toolRegistry.test.ts > ToolRegistry > returns validation error result for unknown tools 1ms
861
- ✓  unit  src/server/__tests__/toolRegistry.test.ts > ToolRegistry > surfaces validation failures from security wrapper 3ms
862
- ✓  unit  src/server/__tests__/toolRegistry.test.ts > ToolRegistry > routes handler exceptions to error handler 3ms
863
- ✓  unit  src/server/__tests__/toolRegistry.test.ts > ToolRegistry > normalizes unexpected security errors 2ms
864
- ✓  unit  src/server/__tests__/toolRegistry.test.ts > ToolRegistry > returns permissive schema when conversion fails 1ms
865
- ✓  unit  src/server/__tests__/toolRegistry.test.ts > ToolRegistry > supports empty registry listings 2ms
866
- ✓  unit  src/server/__tests__/toolRegistry.test.ts > ToolRegistry > ErrorHandler integration > should use injected ErrorHandler instance 2ms
867
- ✓  unit  src/server/__tests__/toolRegistry.test.ts > ToolRegistry > ErrorHandler integration > should use the same formatter instance for both ErrorHandler and ToolRegistry 1ms
868
- ✓  unit  src/server/__tests__/toolRegistry.test.ts > ToolRegistry > ErrorHandler integration > should implement ErrorHandler contract interface 1ms
869
- ✓  unit  src/server/__tests__/toolRegistry.test.ts > ToolRegistry > Output Schema Validation > validates handler output against declared output schema 4ms
870
- ✓  unit  src/server/__tests__/toolRegistry.test.ts > ToolRegistry > Output Schema Validation > rejects handler output that does not match output schema 11ms
871
- ✓  unit  src/server/__tests__/toolRegistry.test.ts > ToolRegistry > Output Schema Validation > rejects handler output with missing required fields 2ms
872
- ✓  unit  src/server/__tests__/toolRegistry.test.ts > ToolRegistry > Output Schema Validation > rejects handler output with invalid JSON 2ms
873
- ✓  unit  src/server/__tests__/toolRegistry.test.ts > ToolRegistry > Output Schema Validation > rejects handler output with empty content 1ms
874
- ✓  unit  src/server/__tests__/toolRegistry.test.ts > ToolRegistry > Output Schema Validation > rejects handler output with non-text content 2ms
875
- ✓  unit  src/server/__tests__/toolRegistry.test.ts > ToolRegistry > Output Schema Validation > rejects handler output with multiple invalid content items 2ms
876
- ✓  unit  src/server/__tests__/toolRegistry.test.ts > ToolRegistry > Output Schema Validation > skips validation when no output schema is defined 1ms
877
- ✓  unit  src/server/__tests__/toolRegistry.test.ts > ToolRegistry > Output Schema Validation > includes output schema in tool listing when defined 3ms
878
- ✓  unit  src/tools/schemas/outputs/__tests__/comparisonOutputs.test.ts > ISODateStringSchema > should validate correct ISO date format 4ms
879
- ✓  unit  src/tools/schemas/outputs/__tests__/comparisonOutputs.test.ts > ISODateStringSchema > should reject invalid date formats 3ms
880
- ✓  unit  src/tools/schemas/outputs/__tests__/comparisonOutputs.test.ts > ISODateStringSchema > should reject invalid calendar dates 15ms
881
- ✓  unit  src/tools/schemas/outputs/__tests__/comparisonOutputs.test.ts > ISODateStringSchema > should validate leap year dates correctly 1ms
882
- ✓  unit  src/tools/schemas/outputs/__tests__/comparisonOutputs.test.ts > DateRangeSchema > should validate valid date range 2ms
883
- ✓  unit  src/tools/schemas/outputs/__tests__/comparisonOutputs.test.ts > DateRangeSchema > should validate date range where start equals end 0ms
884
- ✓  unit  src/tools/schemas/outputs/__tests__/comparisonOutputs.test.ts > DateRangeSchema > should reject date range where start is after end 1ms
885
- ✓  unit  src/tools/schemas/outputs/__tests__/comparisonOutputs.test.ts > DateRangeSchema > should reject invalid date formats in range 2ms
886
- ✓  unit  src/tools/schemas/outputs/__tests__/comparisonOutputs.test.ts > MatchItemSchema > should validate complete match item 5ms
887
- ✓  unit  src/tools/schemas/outputs/__tests__/comparisonOutputs.test.ts > MatchItemSchema > should validate match with negative amounts 1ms
888
- ✓  unit  src/tools/schemas/outputs/__tests__/comparisonOutputs.test.ts > MatchItemSchema > should fail validation when amount format is incorrect 1ms
889
- ✓  unit  src/tools/schemas/outputs/__tests__/comparisonOutputs.test.ts > MissingInYNABItemSchema > should validate complete missing in YNAB item with suggestions 2ms
890
- ✓  unit  src/tools/schemas/outputs/__tests__/comparisonOutputs.test.ts > MissingInYNABItemSchema > should validate minimal missing in YNAB item without suggestions 0ms
891
- ✓  unit  src/tools/schemas/outputs/__tests__/comparisonOutputs.test.ts > MissingInYNABItemSchema > should fail validation when amount format is incorrect 0ms
892
- ✓  unit  src/tools/schemas/outputs/__tests__/comparisonOutputs.test.ts > MissingInBankItemSchema > should validate complete missing in bank item 1ms
893
- ✓  unit  src/tools/schemas/outputs/__tests__/comparisonOutputs.test.ts > MissingInBankItemSchema > should validate missing in bank item with null fields 0ms
894
- ✓  unit  src/tools/schemas/outputs/__tests__/comparisonOutputs.test.ts > MissingInBankItemSchema > should fail validation when missing required fields 1ms
895
- ✓  unit  src/tools/schemas/outputs/__tests__/comparisonOutputs.test.ts > CompareTransactionsOutputSchema > should validate complete comparison result with all sections 3ms
896
- ✓  unit  src/tools/schemas/outputs/__tests__/comparisonOutputs.test.ts > CompareTransactionsOutputSchema > should validate comparison result with empty match arrays 1ms
897
- ✓  unit  src/tools/schemas/outputs/__tests__/comparisonOutputs.test.ts > CompareTransactionsOutputSchema > should fail validation when missing required summary fields 1ms
898
- ✓  unit  src/tools/schemas/outputs/__tests__/comparisonOutputs.test.ts > CompareTransactionsOutputSchema > should fail validation when date range is invalid 0ms
899
- ✓  unit  src/tools/schemas/outputs/__tests__/comparisonOutputs.test.ts > ExportTransactionsOutputSchema > should validate minimal export mode output 2ms
900
- ✓  unit  src/tools/schemas/outputs/__tests__/comparisonOutputs.test.ts > ExportTransactionsOutputSchema > should validate full export mode output 1ms
901
- ✓  unit  src/tools/schemas/outputs/__tests__/comparisonOutputs.test.ts > ExportTransactionsOutputSchema > should validate export output with empty preview 1ms
902
- ✓  unit  src/tools/schemas/outputs/__tests__/comparisonOutputs.test.ts > ExportTransactionsOutputSchema > should fail validation when export_mode is invalid 1ms
903
- ✓  unit  src/tools/schemas/outputs/__tests__/comparisonOutputs.test.ts > ExportTransactionsOutputSchema > should fail validation when missing required fields 1ms
904
- ✓  unit  src/tools/schemas/outputs/__tests__/comparisonOutputs.test.ts > ExportTransactionsOutputSchema > should fail validation when preview_count is not a number 0ms
905
- ✓  unit  src/tools/__tests__/compareTransactions/index.test.ts > compareTransactions index (main handler) > CompareTransactionsSchema > should export schema correctly 20ms
906
- ✓  unit  src/tools/__tests__/compareTransactions/index.test.ts > compareTransactions index (main handler) > CompareTransactionsSchema > should apply default values through schema 11ms
907
- ✓  unit  src/tools/__tests__/compareTransactions/index.test.ts > compareTransactions index (main handler) > handleCompareTransactions orchestration > should orchestrate CSV data processing correctly 9ms
908
- ✓  unit  src/tools/__tests__/compareTransactions/index.test.ts > compareTransactions index (main handler) > handleCompareTransactions orchestration > should orchestrate CSV file processing correctly 2ms
909
- ✓  unit  src/tools/__tests__/compareTransactions/index.test.ts > compareTransactions index (main handler) > handleCompareTransactions orchestration > should handle auto-detection correctly 2ms
910
- ✓  unit  src/tools/__tests__/compareTransactions/index.test.ts > compareTransactions index (main handler) > handleCompareTransactions orchestration > should call YNAB API correctly 4ms
911
- ✓  unit  src/tools/__tests__/compareTransactions/index.test.ts > compareTransactions index (main handler) > handleCompareTransactions orchestration > should calculate date range correctly 2ms
912
- ✓  unit  src/tools/__tests__/compareTransactions/index.test.ts > compareTransactions index (main handler) > handleCompareTransactions orchestration > should pass filtered transactions to matcher 3ms
913
- ✓  unit  src/tools/__tests__/compareTransactions/index.test.ts > compareTransactions index (main handler) > handleCompareTransactions orchestration > should apply statement window filtering 3ms
914
- ✓  unit  src/tools/__tests__/compareTransactions/index.test.ts > compareTransactions index (main handler) > handleCompareTransactions orchestration > should build final result correctly 3ms
915
- ✓  unit  src/tools/__tests__/compareTransactions/index.test.ts > compareTransactions index (main handler) > handleCompareTransactions orchestration > should handle empty bank transactions correctly 4ms
916
- ✓  unit  src/tools/__tests__/compareTransactions/index.test.ts > compareTransactions index (main handler) > handleCompareTransactions orchestration > should handle auto-detection errors gracefully 15ms
917
- ✓  unit  src/server/__tests__/serverKnowledgeStore.test.ts > ServerKnowledgeStore > Basic Operations > should return undefined for non-existent keys 3ms
918
- ✓  unit  src/server/__tests__/serverKnowledgeStore.test.ts > ServerKnowledgeStore > Basic Operations > should store and retrieve knowledge values 1ms
919
- ✓  unit  src/server/__tests__/serverKnowledgeStore.test.ts > ServerKnowledgeStore > Basic Operations > should update existing knowledge values 0ms
920
- ✓  unit  src/server/__tests__/serverKnowledgeStore.test.ts > ServerKnowledgeStore > Basic Operations > should handle multiple cache keys independently 1ms
921
- ✓  unit  src/server/__tests__/serverKnowledgeStore.test.ts > ServerKnowledgeStore > Basic Operations > should return correct stats with entryCount and entries object 10ms
922
- ✓  unit  src/server/__tests__/serverKnowledgeStore.test.ts > ServerKnowledgeStore > Validation > should throw error for negative server_knowledge values 2ms
923
- ✓  unit  src/server/__tests__/serverKnowledgeStore.test.ts > ServerKnowledgeStore > Validation > should accept zero as valid server_knowledge 1ms
924
- ✓  unit  src/server/__tests__/serverKnowledgeStore.test.ts > ServerKnowledgeStore > Validation > should accept large positive integers 1ms
925
- ✓  unit  src/server/__tests__/serverKnowledgeStore.test.ts > ServerKnowledgeStore > Reset Operations > should reset all knowledge when called without pattern 1ms
926
- ✓  unit  src/server/__tests__/serverKnowledgeStore.test.ts > ServerKnowledgeStore > Reset Operations > should reset only matching keys when pattern provided 1ms
927
- ✓  unit  src/server/__tests__/serverKnowledgeStore.test.ts > ServerKnowledgeStore > Reset Operations > should not reset non-matching keys 1ms
928
- ✓  unit  src/server/__tests__/serverKnowledgeStore.test.ts > ServerKnowledgeStore > Reset Operations > should handle resetByBudgetId correctly 1ms
929
- ✓  unit  src/server/__tests__/serverKnowledgeStore.test.ts > ServerKnowledgeStore > Reset Operations > should not affect other budgets when resetting by budget ID 1ms
930
- ✓  unit  src/server/__tests__/serverKnowledgeStore.test.ts > ServerKnowledgeStore > Reset Operations > should handle empty store gracefully 2ms
931
- ✓  unit  src/server/__tests__/serverKnowledgeStore.test.ts > ServerKnowledgeStore > Edge Cases > should handle very long cache keys 0ms
932
- ✓  unit  src/server/__tests__/serverKnowledgeStore.test.ts > ServerKnowledgeStore > Edge Cases > should handle special characters in cache keys 0ms
933
- ✓  unit  src/server/__tests__/serverKnowledgeStore.test.ts > ServerKnowledgeStore > Edge Cases > should handle rapid updates to same key 0ms
934
- ✓  unit  src/server/__tests__/serverKnowledgeStore.test.ts > ServerKnowledgeStore > Edge Cases > should maintain isolation between different store instances 0ms
935
- ✓  unit  src/tools/reconciliation/__tests__/adapter.causes.test.ts > buildReconciliationPayload discrepancy causes mapping > maps legacy causes to MoneyValue entries with CAD currency 74ms
936
- ✓  unit  src/tools/reconciliation/__tests__/adapter.test.ts > buildReconciliationPayload > returns human narrative and structured payload with MoneyValue fields 52ms
937
- ✓  unit  src/tools/reconciliation/__tests__/adapter.test.ts > buildReconciliationPayload > includes execution data when provided 5ms
938
- ✓  unit  src/server/__tests__/resources.test.ts > resources module > ResourceManager > constructor > should initialize with dependencies 4ms
939
- ✓  unit  src/server/__tests__/resources.test.ts > resources module > ResourceManager > listResources > should return list of available resources 3ms
940
- ✓  unit  src/server/__tests__/resources.test.ts > resources module > ResourceManager > listResources > should return consistent resource list 1ms
941
- ✓  unit  src/server/__tests__/resources.test.ts > resources module > ResourceManager > readResource > ynab://budgets > should fetch and format budgets data 5ms
942
- ✓  unit  src/server/__tests__/resources.test.ts > resources module > ResourceManager > readResource > ynab://budgets > should handle YNAB API errors 4ms
943
- ✓  unit  src/server/__tests__/resources.test.ts > resources module > ResourceManager > readResource > ynab://user > should fetch and format user data 2ms
944
- ✓  unit  src/server/__tests__/resources.test.ts > resources module > ResourceManager > readResource > ynab://user > should handle YNAB API errors 2ms
945
- ✓  unit  src/server/__tests__/resources.test.ts > resources module > ResourceManager > readResource > unknown resources > should throw error for unknown resource URIs 1ms
946
- ✓  unit  src/server/__tests__/resources.test.ts > resources module > ResourceManager > readResource > unknown resources > should throw error for invalid URIs 1ms
947
- ✓  unit  src/server/__tests__/resources.test.ts > resources module > ResourceManager > readResource > unknown resources > should throw error for empty URI 1ms
948
- ✓  unit  src/server/__tests__/resources.test.ts > resources module > ResourceManager > dependency injection > should use injected YNAB API 1ms
949
- ✓  unit  src/server/__tests__/resources.test.ts > resources module > ResourceManager > dependency injection > should use injected response formatter 1ms
950
- ✓  unit  src/server/__tests__/resources.test.ts > resources module > ResourceManager > edge cases > should handle empty budgets list 1ms
951
- ✓  unit  src/server/__tests__/resources.test.ts > resources module > ResourceManager > edge cases > should handle user without extended properties 3ms
952
- ✓  unit  src/server/__tests__/budgetResolver.test.ts > BudgetResolver > resolveBudgetId > with valid provided budget ID > should return provided UUID v4 budget ID 4ms
953
- ✓  unit  src/server/__tests__/budgetResolver.test.ts > BudgetResolver > resolveBudgetId > with valid provided budget ID > should return error for "default" keyword when no default budget set 2ms
954
- ✓  unit  src/server/__tests__/budgetResolver.test.ts > BudgetResolver > resolveBudgetId > with valid provided budget ID > should return default budget ID when "default" keyword provided 4ms
955
- ✓  unit  src/server/__tests__/budgetResolver.test.ts > BudgetResolver > resolveBudgetId > with valid provided budget ID > should return error for "last-used" keyword (not supported) 1ms
956
- ✓  unit  src/server/__tests__/budgetResolver.test.ts > BudgetResolver > resolveBudgetId > with valid provided budget ID > should prioritize provided ID over default ID 0ms
957
- ✓  unit  src/server/__tests__/budgetResolver.test.ts > BudgetResolver > resolveBudgetId > with valid provided budget ID > should trim whitespace from provided ID 0ms
958
- ✓  unit  src/server/__tests__/budgetResolver.test.ts > BudgetResolver > resolveBudgetId > with invalid provided budget ID > should return error for invalid UUID format 1ms
959
- ✓  unit  src/server/__tests__/budgetResolver.test.ts > BudgetResolver > resolveBudgetId > with invalid provided budget ID > should return error for malformed UUID 1ms
960
- ✓  unit  src/server/__tests__/budgetResolver.test.ts > BudgetResolver > resolveBudgetId > with invalid provided budget ID > should return error for empty string 1ms
961
- ✓  unit  src/server/__tests__/budgetResolver.test.ts > BudgetResolver > resolveBudgetId > with invalid provided budget ID > should return error for whitespace-only string 1ms
962
- ✓  unit  src/server/__tests__/budgetResolver.test.ts > BudgetResolver > resolveBudgetId > with default budget ID fallback > should return valid default UUID when no provided ID 0ms
963
- ✓  unit  src/server/__tests__/budgetResolver.test.ts > BudgetResolver > resolveBudgetId > with default budget ID fallback > should return error for "default" keyword as default budget ID 1ms
964
- ✓  unit  src/server/__tests__/budgetResolver.test.ts > BudgetResolver > resolveBudgetId > with default budget ID fallback > should return error when default ID is invalid 1ms
965
- ✓  unit  src/server/__tests__/budgetResolver.test.ts > BudgetResolver > resolveBudgetId > with missing budget ID > should return error when no provided ID and no default 1ms
966
- ✓  unit  src/server/__tests__/budgetResolver.test.ts > BudgetResolver > resolveBudgetId > with missing budget ID > should return error when provided ID is undefined and no default 0ms
967
- ✓  unit  src/server/__tests__/budgetResolver.test.ts > BudgetResolver > validateBudgetId > with valid budget IDs > should return valid UUID v4 format 0ms
968
- ✓  unit  src/server/__tests__/budgetResolver.test.ts > BudgetResolver > validateBudgetId > with valid budget IDs > should return error for "default" keyword (keywords not allowed in validation) 1ms
969
- ✓  unit  src/server/__tests__/budgetResolver.test.ts > BudgetResolver > validateBudgetId > with valid budget IDs > should return error for "last-used" keyword (keywords not allowed in validation) 0ms
970
- ✓  unit  src/server/__tests__/budgetResolver.test.ts > BudgetResolver > validateBudgetId > with valid budget IDs > should trim whitespace and return valid ID 0ms
971
- ✓  unit  src/server/__tests__/budgetResolver.test.ts > BudgetResolver > validateBudgetId > with valid budget IDs > should handle mixed case UUID correctly 0ms
972
- ✓  unit  src/server/__tests__/budgetResolver.test.ts > BudgetResolver > validateBudgetId > with invalid budget IDs > should return error for invalid UUID format 17ms
973
- ✓  unit  src/server/__tests__/budgetResolver.test.ts > BudgetResolver > validateBudgetId > with invalid budget IDs > should return error for malformed UUID 1ms
974
- ✓  unit  src/server/__tests__/budgetResolver.test.ts > BudgetResolver > validateBudgetId > with invalid budget IDs > should return error for empty string 1ms
975
- ✓  unit  src/server/__tests__/budgetResolver.test.ts > BudgetResolver > validateBudgetId > with invalid budget IDs > should return error for whitespace-only string 0ms
976
- ✓  unit  src/server/__tests__/budgetResolver.test.ts > BudgetResolver > validateBudgetId > with invalid budget IDs > should return error for non-string input 0ms
977
- ✓  unit  src/server/__tests__/budgetResolver.test.ts > BudgetResolver > validateBudgetId > with invalid budget IDs > should return error for invalid keyword format 0ms
978
- ✓  unit  src/server/__tests__/budgetResolver.test.ts > BudgetResolver > validateBudgetId > edge cases > should handle very long strings 1ms
979
- ✓  unit  src/server/__tests__/budgetResolver.test.ts > BudgetResolver > validateBudgetId > edge cases > should handle special characters 0ms
980
- ✓  unit  src/server/__tests__/budgetResolver.test.ts > BudgetResolver > validateBudgetId > edge cases > should handle unicode characters 1ms
981
- ✓  unit  src/server/__tests__/budgetResolver.test.ts > BudgetResolver > convenience throw functions > resolveBudgetIdOrThrow > should return valid budget ID when successful 0ms
982
- ✓  unit  src/server/__tests__/budgetResolver.test.ts > BudgetResolver > convenience throw functions > resolveBudgetIdOrThrow > should throw error when resolution fails 2ms
983
- ✓  unit  src/server/__tests__/budgetResolver.test.ts > BudgetResolver > convenience throw functions > resolveBudgetIdOrThrow > should throw error when no budget provided and no default 1ms
984
- ✓  unit  src/server/__tests__/budgetResolver.test.ts > BudgetResolver > convenience throw functions > validateBudgetIdOrThrow > should return valid budget ID when successful 0ms
985
- ✓  unit  src/server/__tests__/budgetResolver.test.ts > BudgetResolver > convenience throw functions > validateBudgetIdOrThrow > should throw error when validation fails 0ms
986
- ✓  unit  src/server/__tests__/budgetResolver.test.ts > BudgetResolver > convenience throw functions > validateBudgetIdOrThrow > should throw error for empty string 0ms
987
- ✓  unit  src/server/__tests__/budgetResolver.test.ts > BudgetResolver > error creation functions > createMissingBudgetError > should create standardized missing budget error 0ms
988
- ✓  unit  src/server/__tests__/budgetResolver.test.ts > BudgetResolver > error creation functions > createInvalidBudgetError > should create standardized invalid budget error with details 1ms
989
- ✓  unit  src/server/__tests__/budgetResolver.test.ts > BudgetResolver > convenience functions > resolveBudgetId function > should work the same as BudgetResolver.resolveBudgetId 1ms
990
- ✓  unit  src/server/__tests__/budgetResolver.test.ts > BudgetResolver > convenience functions > validateBudgetId function > should work the same as BudgetResolver.validateBudgetId 0ms
991
- ✓  unit  src/server/__tests__/budgetResolver.test.ts > BudgetResolver > convenience functions > createMissingBudgetError function > should work the same as BudgetResolver.createMissingBudgetError 1ms
992
- ✓  unit  src/server/__tests__/budgetResolver.test.ts > BudgetResolver > convenience functions > createInvalidBudgetError function > should work the same as BudgetResolver.createInvalidBudgetError 1ms
993
- ✓  unit  src/server/__tests__/budgetResolver.test.ts > BudgetResolver > error response structure > should create consistent error response shape for missing budget 2ms
994
- ✓  unit  src/server/__tests__/budgetResolver.test.ts > BudgetResolver > error response structure > should create consistent error response shape for invalid budget 1ms
995
- ✓  unit  src/server/__tests__/budgetResolver.test.ts > BudgetResolver > error response structure > should include actionable suggestions in error messages 1ms
996
- ✓  unit  src/server/__tests__/budgetResolver.test.ts > BudgetResolver > integration with ErrorHandler > should use ErrorHandler.createValidationError for consistent formatting 1ms
997
- ✓  unit  src/tools/__tests__/compareTransactions.test.ts > compareTransactions > CompareTransactionsSchema > should validate valid parameters 8ms
998
- ✓  unit  src/tools/__tests__/compareTransactions.test.ts > compareTransactions > CompareTransactionsSchema > should require budget_id and account_id 2ms
999
- ✓  unit  src/tools/__tests__/compareTransactions.test.ts > compareTransactions > CompareTransactionsSchema > should require either csv_file_path or csv_data 1ms
1000
- ✓  unit  src/tools/__tests__/compareTransactions.test.ts > compareTransactions > CompareTransactionsSchema > should apply default values 1ms
1001
- ✓  unit  src/tools/__tests__/compareTransactions.test.ts > compareTransactions > handleCompareTransactions > should compare CSV data with YNAB transactions 18ms
1002
- ✓  unit  src/tools/__tests__/compareTransactions.test.ts > compareTransactions > handleCompareTransactions > should handle CSV file path 5ms
1003
- ✓  unit  src/tools/__tests__/compareTransactions.test.ts > compareTransactions > handleCompareTransactions > should handle custom CSV format 6ms
1004
- ✓  unit  src/tools/__tests__/compareTransactions.test.ts > compareTransactions > handleCompareTransactions > should handle CSV without headers using column indices 4ms
1005
- ✓  unit  src/tools/__tests__/compareTransactions.test.ts > compareTransactions > handleCompareTransactions > should handle MMM dd, yyyy date format (bank statement format) 30ms
1006
- ✓  unit  src/tools/__tests__/compareTransactions.test.ts > compareTransactions > handleCompareTransactions > should maintain backward compatibility with modular structure 8ms
1007
- ✓  unit  src/tools/__tests__/compareTransactions.test.ts > compareTransactions > handleCompareTransactions > should handle auto-detection correctly through modular structure 11ms
1008
- ✓  unit  src/tools/schemas/outputs/__tests__/discrepancyDirection.test.ts > ReconcileAccountOutputSchema - discrepancy_direction validation > balanced direction (|amount| < 0.01) > should accept direction "balanced" when amount is 0 17ms
1009
- ✓  unit  src/tools/schemas/outputs/__tests__/discrepancyDirection.test.ts > ReconcileAccountOutputSchema - discrepancy_direction validation > balanced direction (|amount| < 0.01) > should accept direction "balanced" when amount is 0.001 1ms
1010
- ✓  unit  src/tools/schemas/outputs/__tests__/discrepancyDirection.test.ts > ReconcileAccountOutputSchema - discrepancy_direction validation > balanced direction (|amount| < 0.01) > should accept direction "balanced" when amount is -0.009 1ms
1011
- ✓  unit  src/tools/schemas/outputs/__tests__/discrepancyDirection.test.ts > ReconcileAccountOutputSchema - discrepancy_direction validation > balanced direction (|amount| < 0.01) > should reject direction "ynab_higher" when amount is 0 3ms
1012
- ✓  unit  src/tools/schemas/outputs/__tests__/discrepancyDirection.test.ts > ReconcileAccountOutputSchema - discrepancy_direction validation > balanced direction (|amount| < 0.01) > should reject direction "bank_higher" when amount is 0.005 1ms
1013
- ✓  unit  src/tools/schemas/outputs/__tests__/discrepancyDirection.test.ts > ReconcileAccountOutputSchema - discrepancy_direction validation > ynab_higher direction (amount >= 0.01) > should accept direction "ynab_higher" when amount is 25.50 4ms
1014
- ✓  unit  src/tools/schemas/outputs/__tests__/discrepancyDirection.test.ts > ReconcileAccountOutputSchema - discrepancy_direction validation > ynab_higher direction (amount >= 0.01) > should accept direction "ynab_higher" when amount is 0.02 (just above threshold) 1ms
1015
- ✓  unit  src/tools/schemas/outputs/__tests__/discrepancyDirection.test.ts > ReconcileAccountOutputSchema - discrepancy_direction validation > ynab_higher direction (amount >= 0.01) > should reject direction "balanced" when amount is 100 2ms
1016
- ✓  unit  src/tools/schemas/outputs/__tests__/discrepancyDirection.test.ts > ReconcileAccountOutputSchema - discrepancy_direction validation > ynab_higher direction (amount >= 0.01) > should reject direction "bank_higher" when amount is 50 2ms
1017
- ✓  unit  src/tools/schemas/outputs/__tests__/discrepancyDirection.test.ts > ReconcileAccountOutputSchema - discrepancy_direction validation > bank_higher direction (amount <= -0.01) > should accept direction "bank_higher" when amount is -25.50 1ms
1018
- ✓  unit  src/tools/schemas/outputs/__tests__/discrepancyDirection.test.ts > ReconcileAccountOutputSchema - discrepancy_direction validation > bank_higher direction (amount <= -0.01) > should accept direction "bank_higher" when amount is -0.02 (just below threshold) 0ms
1019
- ✓  unit  src/tools/schemas/outputs/__tests__/discrepancyDirection.test.ts > ReconcileAccountOutputSchema - discrepancy_direction validation > bank_higher direction (amount <= -0.01) > should reject direction "balanced" when amount is -100 1ms
1020
- ✓  unit  src/tools/schemas/outputs/__tests__/discrepancyDirection.test.ts > ReconcileAccountOutputSchema - discrepancy_direction validation > bank_higher direction (amount <= -0.01) > should reject direction "ynab_higher" when amount is -50 1ms
1021
- ✓  unit  src/tools/schemas/outputs/__tests__/discrepancyDirection.test.ts > ReconcileAccountOutputSchema - discrepancy_direction validation > edge cases > should accept exactly 0.01 as requiring "ynab_higher" 0ms
1022
- ✓  unit  src/tools/schemas/outputs/__tests__/discrepancyDirection.test.ts > ReconcileAccountOutputSchema - discrepancy_direction validation > edge cases > should accept exactly -0.01 as requiring "bank_higher" 0ms
1023
- ✓  unit  src/tools/schemas/outputs/__tests__/discrepancyDirection.test.ts > ReconcileAccountOutputSchema - discrepancy_direction validation > edge cases > should reject "balanced" for exactly 0.01 0ms
1024
- ✓  unit  src/tools/schemas/outputs/__tests__/discrepancyDirection.test.ts > ReconcileAccountOutputSchema - discrepancy_direction validation > edge cases > should reject "balanced" for exactly -0.01 0ms
1025
- ✓  unit  src/tools/schemas/outputs/__tests__/discrepancyDirection.test.ts > ReconcileAccountOutputSchema - discrepancy_direction validation > human-only output (no validation) > should accept human-only output without structured data 1ms
1026
- ✓  unit  src/tools/schemas/outputs/__tests__/discrepancyDirection.test.ts > ReconcileAccountOutputSchema - discrepancy_direction validation > MoneyValueSchema - non-finite value validation > should reject NaN amount 1ms
1027
- ✓  unit  src/tools/schemas/outputs/__tests__/discrepancyDirection.test.ts > ReconcileAccountOutputSchema - discrepancy_direction validation > MoneyValueSchema - non-finite value validation > should reject positive Infinity amount 0ms
1028
- ✓  unit  src/tools/schemas/outputs/__tests__/discrepancyDirection.test.ts > ReconcileAccountOutputSchema - discrepancy_direction validation > MoneyValueSchema - non-finite value validation > should reject negative Infinity amount 2ms
1029
- ✓  unit  src/tools/schemas/outputs/__tests__/discrepancyDirection.test.ts > ReconcileAccountOutputSchema - discrepancy_direction validation > MoneyValueSchema - non-finite value validation > should accept finite positive amounts 0ms
1030
- ✓  unit  src/tools/schemas/outputs/__tests__/discrepancyDirection.test.ts > ReconcileAccountOutputSchema - discrepancy_direction validation > MoneyValueSchema - non-finite value validation > should accept finite negative amounts 0ms
1031
- ✓  unit  src/tools/schemas/outputs/__tests__/discrepancyDirection.test.ts > ReconcileAccountOutputSchema - discrepancy_direction validation > MoneyValueSchema - non-finite value validation > should accept zero 0ms
1032
- ✓  unit  src/tools/reconciliation/__tests__/matcher.test.ts > matcher > findBestMatch > high confidence matches (≥90%) > should return high confidence for exact match 11ms
1033
- ✓  unit  src/tools/reconciliation/__tests__/matcher.test.ts > matcher > findBestMatch > high confidence matches (≥90%) > should return high confidence for normalized payee match 2ms
1034
- ✓  unit  src/tools/reconciliation/__tests__/matcher.test.ts > matcher > findBestMatch > high confidence matches (≥90%) > should handle date within tolerance 1ms
1035
- ✓  unit  src/tools/reconciliation/__tests__/matcher.test.ts > matcher > findBestMatch > medium confidence matches (60-89%) > should return high confidence for fuzzy payee match 2ms
1036
- ✓  unit  src/tools/reconciliation/__tests__/matcher.test.ts > matcher > findBestMatch > medium confidence matches (60-89%) > should provide multiple candidates for medium confidence 17ms
1037
- ✓  unit  src/tools/reconciliation/__tests__/matcher.test.ts > matcher > findBestMatch > low/no confidence matches > should return no match when amount differs 1ms
1038
- ✓  unit  src/tools/reconciliation/__tests__/matcher.test.ts > matcher > findBestMatch > low/no confidence matches > should not match opposite-signed transactions 1ms
1039
- ✓  unit  src/tools/reconciliation/__tests__/matcher.test.ts > matcher > findBestMatch > prioritization > should prioritize uncleared transactions over cleared 1ms
1040
- ✓  unit  src/tools/reconciliation/__tests__/matcher.test.ts > matcher > findBestMatch > prioritization > should use date proximity as tiebreaker 2ms
1041
- ✓  unit  src/tools/reconciliation/__tests__/matcher.test.ts > matcher > findBestMatch > amount tolerance > should match within amount tolerance 2ms
1042
- ✓  unit  src/tools/reconciliation/__tests__/matcher.test.ts > matcher > findBestMatch > amount tolerance > should not match outside amount tolerance 0ms
1043
- ✓  unit  src/tools/reconciliation/__tests__/matcher.test.ts > matcher > findBestMatch > used IDs > should skip already-used YNAB transaction IDs 0ms
1044
- ✓  unit  src/tools/reconciliation/__tests__/matcher.test.ts > matcher > findMatches > should match multiple bank transactions 30ms
1045
- ✓  unit  src/tools/reconciliation/__tests__/matcher.test.ts > matcher > findMatches > should prevent duplicate matching of YNAB transactions 3ms
1046
- ✓  unit  src/tools/reconciliation/__tests__/matcher.test.ts > matcher > findMatches > should handle mix of matched and unmatched transactions 1ms
1047
- ✓  unit  src/tools/reconciliation/__tests__/matcher.test.ts > matcher > findMatches > should use custom configuration 1ms
1048
- ✓  unit  src/tools/reconciliation/__tests__/matcher.test.ts > matcher > edge cases > should handle empty YNAB transactions list 1ms
1049
- ✓  unit  src/tools/reconciliation/__tests__/matcher.test.ts > matcher > edge cases > should handle null payee names 0ms
1050
- ✓  unit  src/tools/reconciliation/__tests__/matcher.test.ts > matcher > edge cases > should handle very small amounts 1ms
1051
- ✓  unit  src/tools/reconciliation/__tests__/matcher.test.ts > matcher > edge cases > should handle large amounts 0ms
1052
- ✓  unit  src/tools/__tests__/compareTransactions/parser.test.ts > parser > parseDate > should parse MM/DD/YYYY format 8ms
1053
- ✓  unit  src/tools/__tests__/compareTransactions/parser.test.ts > parser > parseDate > should parse YYYY-MM-DD format 1ms
1054
- ✓  unit  src/tools/__tests__/compareTransactions/parser.test.ts > parser > parseDate > should parse MMM dd, yyyy format 2ms
1055
- ✓  unit  src/tools/__tests__/compareTransactions/parser.test.ts > parser > parseDate > should handle single digit dates 1ms
1056
- ✓  unit  src/tools/__tests__/compareTransactions/parser.test.ts > parser > parseDate > should throw error for invalid date 2ms
1057
- ✓  unit  src/tools/__tests__/compareTransactions/parser.test.ts > parser > parseDate > should fallback to native Date parsing for unrecognized formats 1ms
1058
- ✓  unit  src/tools/__tests__/compareTransactions/parser.test.ts > parser > parseDate > should handle whitespace in dates 0ms
1059
- ✓  unit  src/tools/__tests__/compareTransactions/parser.test.ts > parser > amountToMilliunits > should convert positive amounts 0ms
1060
- ✓  unit  src/tools/__tests__/compareTransactions/parser.test.ts > parser > amountToMilliunits > should convert negative amounts 1ms
1061
- ✓  unit  src/tools/__tests__/compareTransactions/parser.test.ts > parser > amountToMilliunits > should handle parentheses for negative amounts 0ms
1062
- ✓  unit  src/tools/__tests__/compareTransactions/parser.test.ts > parser > amountToMilliunits > should handle currency symbols 0ms
1063
- ✓  unit  src/tools/__tests__/compareTransactions/parser.test.ts > parser > amountToMilliunits > should handle commas in amounts 0ms
1064
- ✓  unit  src/tools/__tests__/compareTransactions/parser.test.ts > parser > amountToMilliunits > should handle positive sign 0ms
1065
- ✓  unit  src/tools/__tests__/compareTransactions/parser.test.ts > parser > amountToMilliunits > should handle zero amounts 0ms
1066
- ✓  unit  src/tools/__tests__/compareTransactions/parser.test.ts > parser > amountToMilliunits > should handle amounts with spaces 0ms
1067
- ✓  unit  src/tools/__tests__/compareTransactions/parser.test.ts > parser > amountToMilliunits > should handle very large amounts 0ms
1068
- ✓  unit  src/tools/__tests__/compareTransactions/parser.test.ts > parser > detectDateFormat > should detect MM/DD/YYYY format 0ms
1069
- ✓  unit  src/tools/__tests__/compareTransactions/parser.test.ts > parser > detectDateFormat > should detect YYYY-MM-DD format 0ms
1070
- ✓  unit  src/tools/__tests__/compareTransactions/parser.test.ts > parser > detectDateFormat > should detect MM-DD-YYYY format 0ms
1071
- ✓  unit  src/tools/__tests__/compareTransactions/parser.test.ts > parser > detectDateFormat > should detect MMM dd, yyyy format 0ms
1072
- ✓  unit  src/tools/__tests__/compareTransactions/parser.test.ts > parser > detectDateFormat > should default to MM/DD/YYYY for undefined input 0ms
1073
- ✓  unit  src/tools/__tests__/compareTransactions/parser.test.ts > parser > detectDateFormat > should default to MM/DD/YYYY for unrecognized format 0ms
1074
- ✓  unit  src/tools/__tests__/compareTransactions/parser.test.ts > parser > autoDetectCSVFormat > should detect header format with standard columns 12ms
1075
- ✓  unit  src/tools/__tests__/compareTransactions/parser.test.ts > parser > autoDetectCSVFormat > should detect no-header format 3ms
1076
- ✓  unit  src/tools/__tests__/compareTransactions/parser.test.ts > parser > autoDetectCSVFormat > should detect debit/credit columns 10ms
1077
- ✓  unit  src/tools/__tests__/compareTransactions/parser.test.ts > parser > autoDetectCSVFormat > should throw error for empty CSV 2ms
1078
- ✓  unit  src/tools/__tests__/compareTransactions/parser.test.ts > parser > autoDetectCSVFormat > should throw error for CSV with empty first line 0ms
1079
- ✓  unit  src/tools/__tests__/compareTransactions/parser.test.ts > parser > autoDetectCSVFormat > should detect date format from data rows 9ms
1080
- ✓  unit  src/tools/__tests__/compareTransactions/parser.test.ts > parser > autoDetectCSVFormat > should derive column names from non-standard headers - Transaction Date 2ms
1081
- ✓  unit  src/tools/__tests__/compareTransactions/parser.test.ts > parser > autoDetectCSVFormat > should derive column names from non-standard headers - Post Date and Desc 1ms
1082
- ✓  unit  src/tools/__tests__/compareTransactions/parser.test.ts > parser > autoDetectCSVFormat > should derive column names from non-standard headers - Payee column 1ms
1083
- ✓  unit  src/tools/__tests__/compareTransactions/parser.test.ts > parser > autoDetectCSVFormat > should detect debit/credit columns with non-standard headers 2ms
1084
- ✓  unit  src/tools/__tests__/compareTransactions/parser.test.ts > parser > autoDetectCSVFormat > should fallback to original headers when patterns do not match 1ms
1085
- ✓  unit  src/tools/__tests__/compareTransactions/parser.test.ts > parser > autoDetectCSVFormat > should handle case-insensitive header matching 2ms
1086
- ✓  unit  src/tools/__tests__/compareTransactions/parser.test.ts > parser > autoDetectCSVFormat > should detect semicolon delimiter 2ms
1087
- ✓  unit  src/tools/__tests__/compareTransactions/parser.test.ts > parser > autoDetectCSVFormat > should detect tab delimiter 1ms
1088
- ✓  unit  src/tools/__tests__/compareTransactions/parser.test.ts > parser > autoDetectCSVFormat > should detect pipe delimiter 2ms
1089
- ✓  unit  src/tools/__tests__/compareTransactions/parser.test.ts > parser > autoDetectCSVFormat > should detect semicolon delimiter without headers 2ms
1090
- ✓  unit  src/tools/__tests__/compareTransactions/parser.test.ts > parser > autoDetectCSVFormat > should detect tab delimiter without headers 1ms
1091
- ✓  unit  src/tools/__tests__/compareTransactions/parser.test.ts > parser > autoDetectCSVFormat > should detect semicolon delimiter with debit/credit columns 2ms
1092
- ✓  unit  src/tools/__tests__/compareTransactions/parser.test.ts > parser > autoDetectCSVFormat > should detect semicolon delimiter when quoted fields contain delimiter 5ms
1093
- ✓  unit  src/tools/__tests__/compareTransactions/parser.test.ts > parser > autoDetectCSVFormat > should detect comma delimiter when quoted fields contain commas 3ms
1094
- ✓  unit  src/tools/__tests__/compareTransactions/parser.test.ts > parser > autoDetectCSVFormat > should handle complex quoted fields with multiple delimiter types 7ms
1095
- ✓  unit  src/tools/__tests__/compareTransactions/parser.test.ts > parser > autoDetectCSVFormat > should detect tab delimiter with debit/credit columns 2ms
1096
- ✓  unit  src/tools/__tests__/compareTransactions/parser.test.ts > parser > parseBankCSV > should parse CSV with headers 18ms
1097
- ✓  unit  src/tools/__tests__/compareTransactions/parser.test.ts > parser > parseBankCSV > should parse CSV without headers 4ms
1098
- ✓  unit  src/tools/__tests__/compareTransactions/parser.test.ts > parser > parseBankCSV > should handle debit/credit columns with headers 3ms
1099
- ✓  unit  src/tools/__tests__/compareTransactions/parser.test.ts > parser > parseBankCSV > should handle debit/credit columns without headers 1ms
1100
- ✓  unit  src/tools/__tests__/compareTransactions/parser.test.ts > parser > parseBankCSV > should skip rows with missing data 1ms
1101
- ✓  unit  src/tools/__tests__/compareTransactions/parser.test.ts > parser > parseBankCSV > should handle quoted dates with commas (MMM dd, yyyy format) 2ms
1102
- ✓  unit  src/tools/__tests__/compareTransactions/parser.test.ts > parser > parseBankCSV > should parse quoted fields with commas in descriptions 1ms
1103
- ✓  unit  src/tools/__tests__/compareTransactions/parser.test.ts > parser > parseBankCSV > should throw error when no amount column configuration 1ms
1104
- ✓  unit  src/tools/__tests__/compareTransactions/parser.test.ts > parser > parseBankCSV > should handle invalid column indices gracefully 1ms
1105
- ✓  unit  src/tools/__tests__/compareTransactions/parser.test.ts > parser > parseBankCSV > should parse semicolon-delimited CSV with headers 1ms
1106
- ✓  unit  src/tools/__tests__/compareTransactions/parser.test.ts > parser > parseBankCSV > should parse tab-delimited CSV with headers 2ms
1107
- ✓  unit  src/tools/__tests__/compareTransactions/parser.test.ts > parser > parseBankCSV > should parse semicolon-delimited CSV without headers 1ms
1108
- ✓  unit  src/tools/__tests__/compareTransactions/parser.test.ts > parser > parseBankCSV > should parse tab-delimited CSV without headers 2ms
1109
- ✓  unit  src/tools/__tests__/compareTransactions/parser.test.ts > parser > parseBankCSV > should handle semicolon-delimited debit/credit columns with headers 2ms
1110
- ✓  unit  src/tools/__tests__/compareTransactions/parser.test.ts > parser > parseBankCSV > should handle tab-delimited debit/credit columns with headers 1ms
1111
- ✓  unit  src/tools/__tests__/compareTransactions/parser.test.ts > parser > parseBankCSV > should parse semicolon-delimited CSV with quoted fields containing delimiter 1ms
1112
- ✓  unit  src/tools/__tests__/compareTransactions/parser.test.ts > parser > extractDateRangeFromCSV > should extract min and max dates from CSV transactions 1ms
1113
- ✓  unit  src/tools/__tests__/compareTransactions/parser.test.ts > parser > extractDateRangeFromCSV > should handle single transaction 1ms
1114
- ✓  unit  src/tools/__tests__/compareTransactions/parser.test.ts > parser > readCSVFile > should read file successfully 3ms
1115
- ✓  unit  src/tools/__tests__/compareTransactions/parser.test.ts > parser > readCSVFile > should throw error when file reading fails 1ms
1116
- ✓  unit  src/tools/__tests__/compareTransactions/parser.test.ts > parser > readCSVFile > should handle unknown errors 1ms
1117
- ✓  unit  src/tools/__tests__/monthTools.test.ts > Month Tools > handleGetMonth > should bypass cache in test environment 7ms
1118
- ↓  unit  src/tools/__tests__/monthTools.test.ts > Month Tools > handleGetMonth > should use cache when NODE_ENV is not test - obsolete test, caching now handled by DeltaFetcher
1119
- ✓  unit  src/tools/__tests__/monthTools.test.ts > Month Tools > handleGetMonth > should return formatted month data on success 4ms
1120
- ✓  unit  src/tools/__tests__/monthTools.test.ts > Month Tools > handleGetMonth > should handle 401 authentication errors 2ms
1121
- ✓  unit  src/tools/__tests__/monthTools.test.ts > Month Tools > handleGetMonth > should handle 403 forbidden errors 1ms
1122
- ✓  unit  src/tools/__tests__/monthTools.test.ts > Month Tools > handleGetMonth > should handle 404 not found errors 1ms
1123
- ✓  unit  src/tools/__tests__/monthTools.test.ts > Month Tools > handleGetMonth > should handle 429 rate limit errors 1ms
1124
- ✓  unit  src/tools/__tests__/monthTools.test.ts > Month Tools > handleGetMonth > should handle 500 server errors 1ms
1125
- ✓  unit  src/tools/__tests__/monthTools.test.ts > Month Tools > handleGetMonth > should handle generic errors 2ms
1126
- ✓  unit  src/tools/__tests__/monthTools.test.ts > Month Tools > handleListMonths > should include cache metadata from delta fetcher results 3ms
1127
- ↓  unit  src/tools/__tests__/monthTools.test.ts > Month Tools > handleListMonths > should use cache when NODE_ENV is not test - obsolete test, caching now handled by DeltaFetcher
1128
- ✓  unit  src/tools/__tests__/monthTools.test.ts > Month Tools > handleListMonths > should return formatted months list on success 3ms
1129
- ✓  unit  src/tools/__tests__/monthTools.test.ts > Month Tools > handleListMonths > should handle authentication errors 2ms
1130
- ✓  unit  src/tools/__tests__/monthTools.test.ts > Month Tools > handleListMonths > should handle not found errors 1ms
1131
- ✓  unit  src/tools/__tests__/monthTools.test.ts > Month Tools > handleListMonths > should handle generic errors 2ms
1132
- ✓  unit  src/tools/__tests__/monthTools.test.ts > Month Tools > GetMonthSchema > should validate valid parameters 3ms
1133
- ✓  unit  src/tools/__tests__/monthTools.test.ts > Month Tools > GetMonthSchema > should reject empty budget_id 3ms
1134
- ✓  unit  src/tools/__tests__/monthTools.test.ts > Month Tools > GetMonthSchema > should reject missing budget_id 1ms
1135
- ✓  unit  src/tools/__tests__/monthTools.test.ts > Month Tools > GetMonthSchema > should reject invalid month format 1ms
1136
- ✓  unit  src/tools/__tests__/monthTools.test.ts > Month Tools > GetMonthSchema > should reject missing month 1ms
1137
- ✓  unit  src/tools/__tests__/monthTools.test.ts > Month Tools > GetMonthSchema > should reject non-ISO date format 1ms
1138
- ✓  unit  src/tools/__tests__/monthTools.test.ts > Month Tools > ListMonthsSchema > should validate valid budget_id 1ms
1139
- ✓  unit  src/tools/__tests__/monthTools.test.ts > Month Tools > ListMonthsSchema > should reject empty budget_id 1ms
1140
- ✓  unit  src/tools/__tests__/monthTools.test.ts > Month Tools > ListMonthsSchema > should reject missing budget_id 1ms
1141
- ✓  unit  src/tools/__tests__/monthTools.test.ts > Month Tools > ListMonthsSchema > should reject non-string budget_id 1ms
1142
- ✓  unit  src/tools/schemas/outputs/__tests__/dateValidation.test.ts > Date Validation in comparisonOutputs > ISODateStringSchema > should accept valid dates 11ms
1143
- ✓  unit  src/tools/schemas/outputs/__tests__/dateValidation.test.ts > Date Validation in comparisonOutputs > ISODateStringSchema > should reject invalid months 2ms
1144
- ✓  unit  src/tools/schemas/outputs/__tests__/dateValidation.test.ts > Date Validation in comparisonOutputs > ISODateStringSchema > should reject invalid days 3ms
1145
- ✓  unit  src/tools/schemas/outputs/__tests__/dateValidation.test.ts > Date Validation in comparisonOutputs > ISODateStringSchema > should reject non-leap year February 29 1ms
1146
- ✓  unit  src/tools/schemas/outputs/__tests__/dateValidation.test.ts > Date Validation in comparisonOutputs > ISODateStringSchema > should reject invalid format 2ms
1147
- ✓  unit  src/tools/schemas/outputs/__tests__/dateValidation.test.ts > Date Validation in comparisonOutputs > BankTransactionComparisonSchema > should accept valid bank transaction with valid date 3ms
1148
- ✓  unit  src/tools/schemas/outputs/__tests__/dateValidation.test.ts > Date Validation in comparisonOutputs > BankTransactionComparisonSchema > should reject bank transaction with invalid date 1ms
1149
- ✓  unit  src/tools/schemas/outputs/__tests__/dateValidation.test.ts > Date Validation in comparisonOutputs > DateRangeSchema > should accept valid date range 1ms
1150
- ✓  unit  src/tools/schemas/outputs/__tests__/dateValidation.test.ts > Date Validation in comparisonOutputs > DateRangeSchema > should accept date range where start equals end 1ms
1151
- ✓  unit  src/tools/schemas/outputs/__tests__/dateValidation.test.ts > Date Validation in comparisonOutputs > DateRangeSchema > should reject date range with invalid start date 1ms
1152
- ✓  unit  src/tools/schemas/outputs/__tests__/dateValidation.test.ts > Date Validation in comparisonOutputs > DateRangeSchema > should reject date range with invalid end date 1ms
1153
- ✓  unit  src/tools/schemas/outputs/__tests__/dateValidation.test.ts > Date Validation in comparisonOutputs > DateRangeSchema > should reject date range where start is after end 1ms
1154
- ✓  unit  src/tools/schemas/outputs/__tests__/dateValidation.test.ts > Date Validation in comparisonOutputs > DateRangeSchema > should reject date range where start is after end (same month) 0ms
1155
- ✓  unit  src/tools/schemas/outputs/__tests__/dateValidation.test.ts > Date Validation in comparisonOutputs > DateRangeSchema > should reject date range where start is after end (consecutive days) 1ms
1156
- ✓  unit  src/tools/__tests__/compareTransactions/matcher.test.ts > matcher > calculateMatchScore > should give perfect score for exact matches 9ms
1157
- ✓  unit  src/tools/__tests__/compareTransactions/matcher.test.ts > matcher > calculateMatchScore > should score date differences correctly 1ms
1158
- ✓  unit  src/tools/__tests__/compareTransactions/matcher.test.ts > matcher > calculateMatchScore > should score amount differences correctly 1ms
1159
- ✓  unit  src/tools/__tests__/compareTransactions/matcher.test.ts > matcher > calculateMatchScore > should not match when differences exceed tolerance 0ms
1160
- ✓  unit  src/tools/__tests__/compareTransactions/matcher.test.ts > matcher > calculateMatchScore > should handle memo similarity 1ms
1161
- ✓  unit  src/tools/__tests__/compareTransactions/matcher.test.ts > matcher > calculateMatchScore > should handle zero amounts 2ms
1162
- ✓  unit  src/tools/__tests__/compareTransactions/matcher.test.ts > matcher > calculateMatchScore > should handle empty descriptions gracefully 1ms
1163
- ✓  unit  src/tools/__tests__/compareTransactions/matcher.test.ts > matcher > groupTransactionsByAmount > should group transactions by amount 2ms
1164
- ✓  unit  src/tools/__tests__/compareTransactions/matcher.test.ts > matcher > groupTransactionsByAmount > should handle mixed transaction types 1ms
1165
- ✓  unit  src/tools/__tests__/compareTransactions/matcher.test.ts > matcher > groupTransactionsByAmount > should handle empty transaction list 0ms
1166
- ✓  unit  src/tools/__tests__/compareTransactions/matcher.test.ts > matcher > matchDuplicateAmounts > should match duplicates chronologically 1ms
1167
- ✓  unit  src/tools/__tests__/compareTransactions/matcher.test.ts > matcher > matchDuplicateAmounts > should give chronology bonus for close dates 1ms
1168
- ✓  unit  src/tools/__tests__/compareTransactions/matcher.test.ts > matcher > matchDuplicateAmounts > should handle partial matches (more bank than YNAB) 1ms
1169
- ✓  unit  src/tools/__tests__/compareTransactions/matcher.test.ts > matcher > matchDuplicateAmounts > should not reuse matched transactions 1ms
1170
- ✓  unit  src/tools/__tests__/compareTransactions/matcher.test.ts > matcher > matchDuplicateAmounts > should respect minimum score threshold 0ms
1171
- ✓  unit  src/tools/__tests__/compareTransactions/matcher.test.ts > matcher > findMatches > should find simple one-to-one matches 2ms
1172
- ✓  unit  src/tools/__tests__/compareTransactions/matcher.test.ts > matcher > findMatches > should handle unmatched transactions 2ms
1173
- ✓  unit  src/tools/__tests__/compareTransactions/matcher.test.ts > matcher > findMatches > should handle duplicate amounts with special logic 1ms
1174
- ✓  unit  src/tools/__tests__/compareTransactions/matcher.test.ts > matcher > findMatches > should respect minimum score threshold 1ms
1175
- ✓  unit  src/tools/__tests__/compareTransactions/matcher.test.ts > matcher > findMatches > should not reuse transactions 1ms
1176
- ✓  unit  src/tools/__tests__/compareTransactions/matcher.test.ts > matcher > findMatches > should handle empty transaction lists 1ms
1177
- ✓  unit  src/tools/__tests__/compareTransactions/matcher.test.ts > matcher > findMatches > should handle large datasets efficiently 10ms
1178
- ✓  unit  src/tools/__tests__/compareTransactions/matcher.test.ts > matcher > findMatches > should handle negative amounts correctly 1ms
1179
- ✓  unit  src/tools/__tests__/compareTransactions/matcher.test.ts > matcher > findMatches > should demonstrate parity mode (legacy behavior) vs enhanced mode with chronology bonus 1ms
1180
- ✓  unit  src/tools/__tests__/compareTransactions/matcher.test.ts > matcher > findMatches > should preserve legacy behavior when chronology bonus is disabled 1ms
1181
- ✓  unit  src/tools/__tests__/compareTransactions/matcher.test.ts > matcher > findMatches > should apply chronology bonus when enabled for duplicate amounts 1ms
1182
- ✓  unit  src/tools/__tests__/compareTransactions/formatter.test.ts > formatter > findSuggestedPayee > should find exact payee name match 5ms
1183
- ✓  unit  src/tools/__tests__/compareTransactions/formatter.test.ts > formatter > findSuggestedPayee > should find partial payee name match 1ms
1184
- ✓  unit  src/tools/__tests__/compareTransactions/formatter.test.ts > formatter > findSuggestedPayee > should be case insensitive 1ms
1185
- ✓  unit  src/tools/__tests__/compareTransactions/formatter.test.ts > formatter > findSuggestedPayee > should suggest cleaned description when no payee matches 1ms
1186
- ✓  unit  src/tools/__tests__/compareTransactions/formatter.test.ts > formatter > findSuggestedPayee > should handle empty description 2ms
1187
- ✓  unit  src/tools/__tests__/compareTransactions/formatter.test.ts > formatter > findSuggestedPayee > should remove numbers and consolidate whitespace 1ms
1188
- ✓  unit  src/tools/__tests__/compareTransactions/formatter.test.ts > formatter > findSuggestedPayee > should handle description with only numbers 1ms
1189
- ✓  unit  src/tools/__tests__/compareTransactions/formatter.test.ts > formatter > findSuggestedPayee > should find first matching payee when multiple matches 1ms
1190
- ✓  unit  src/tools/__tests__/compareTransactions/formatter.test.ts > formatter > buildSummary > should build complete summary 2ms
1191
- ✓  unit  src/tools/__tests__/compareTransactions/formatter.test.ts > formatter > buildSummary > should handle empty collections 1ms
1192
- ✓  unit  src/tools/__tests__/compareTransactions/formatter.test.ts > formatter > formatMatches > should format matches correctly 5ms
1193
- ✓  unit  src/tools/__tests__/compareTransactions/formatter.test.ts > formatter > formatMatches > should handle negative amounts 1ms
1194
- ✓  unit  src/tools/__tests__/compareTransactions/formatter.test.ts > formatter > formatMatches > should handle null payee names 0ms
1195
- ✓  unit  src/tools/__tests__/compareTransactions/formatter.test.ts > formatter > formatMatches > should handle large amounts 0ms
1196
- ✓  unit  src/tools/__tests__/compareTransactions/formatter.test.ts > formatter > formatMatches > should handle zero amounts 1ms
1197
- ✓  unit  src/tools/__tests__/compareTransactions/formatter.test.ts > formatter > formatMatches > should handle empty matches array 0ms
1198
- ✓  unit  src/tools/__tests__/compareTransactions/formatter.test.ts > formatter > formatUnmatchedBank > should format unmatched bank transactions with payee suggestions 1ms
1199
- ✓  unit  src/tools/__tests__/compareTransactions/formatter.test.ts > formatter > formatUnmatchedBank > should handle negative amounts 1ms
1200
- ✓  unit  src/tools/__tests__/compareTransactions/formatter.test.ts > formatter > formatUnmatchedBank > should handle empty transactions array 0ms
1201
- ✓  unit  src/tools/__tests__/compareTransactions/formatter.test.ts > formatter > formatUnmatchedYNAB > should format unmatched YNAB transactions 1ms
1202
- ✓  unit  src/tools/__tests__/compareTransactions/formatter.test.ts > formatter > formatUnmatchedYNAB > should handle negative amounts 0ms
1203
- ✓  unit  src/tools/__tests__/compareTransactions/formatter.test.ts > formatter > formatUnmatchedYNAB > should handle empty transactions array 1ms
1204
- ✓  unit  src/tools/__tests__/compareTransactions/formatter.test.ts > formatter > buildComparisonResult > should build complete comparison result 7ms
1205
- ✓  unit  src/tools/__tests__/compareTransactions/formatter.test.ts > formatter > buildComparisonResult > should handle empty results 1ms
1206
- ✓  unit  src/tools/__tests__/compareTransactions/formatter.test.ts > formatter > buildComparisonResult > should call responseFormatter.format with correct structure 10ms
1207
- ✓  unit  src/tools/__tests__/compareTransactions/formatter.test.ts > formatter > buildComparisonResult > should return CallToolResult with correct format 1ms
1208
- ✓  unit  src/tools/reconciliation/__tests__/analyzer.test.ts > analyzer > analyzeReconciliation > should perform full analysis and return structured results 32ms
1209
- ✓  unit  src/tools/reconciliation/__tests__/analyzer.test.ts > analyzer > analyzeReconciliation > should categorize high-confidence matches as auto-matches 3ms
1210
- ✓  unit  src/tools/reconciliation/__tests__/analyzer.test.ts > analyzer > analyzeReconciliation > should categorize medium-confidence matches as suggested 11ms
1211
- ✓  unit  src/tools/reconciliation/__tests__/analyzer.test.ts > analyzer > analyzeReconciliation > should identify unmatched bank transactions 3ms
1212
- ✓  unit  src/tools/reconciliation/__tests__/analyzer.test.ts > analyzer > analyzeReconciliation > should identify unmatched YNAB transactions 2ms
1213
- ✓  unit  src/tools/reconciliation/__tests__/analyzer.test.ts > analyzer > analyzeReconciliation > should calculate balance information correctly 2ms
1214
- ✓  unit  src/tools/reconciliation/__tests__/analyzer.test.ts > analyzer > analyzeReconciliation > should generate appropriate summary 2ms
1215
- ✓  unit  src/tools/__tests__/payeeTools.test.ts > Payee Tools > handleListPayees > should include cache metadata from delta fetcher results 7ms
1216
- ↓  unit  src/tools/__tests__/payeeTools.test.ts > Payee Tools > handleListPayees > should use cache when NODE_ENV is not test - obsolete test, caching now handled by DeltaFetcher
1217
- ✓  unit  src/tools/__tests__/payeeTools.test.ts > Payee Tools > handleListPayees > should return formatted payee list on success 3ms
1218
- ✓  unit  src/tools/__tests__/payeeTools.test.ts > Payee Tools > handleListPayees > should handle authentication errors 2ms
1219
- ✓  unit  src/tools/__tests__/payeeTools.test.ts > Payee Tools > handleListPayees > should handle forbidden errors 1ms
1220
- ✓  unit  src/tools/__tests__/payeeTools.test.ts > Payee Tools > handleListPayees > should handle not found errors 1ms
1221
- ✓  unit  src/tools/__tests__/payeeTools.test.ts > Payee Tools > handleListPayees > should handle rate limit errors 1ms
1222
- ✓  unit  src/tools/__tests__/payeeTools.test.ts > Payee Tools > handleListPayees > should handle server errors 1ms
1223
- ✓  unit  src/tools/__tests__/payeeTools.test.ts > Payee Tools > handleListPayees > should handle generic errors 2ms
1224
- ↓  unit  src/tools/__tests__/payeeTools.test.ts > Payee Tools > handleGetPayee > should use cache when NODE_ENV is not test - obsolete test, caching now handled by DeltaFetcher
1225
- ✓  unit  src/tools/__tests__/payeeTools.test.ts > Payee Tools > handleGetPayee > should return detailed payee information on success 2ms
1226
- ✓  unit  src/tools/__tests__/payeeTools.test.ts > Payee Tools > handleGetPayee > should return transfer payee information on success 1ms
1227
- ✓  unit  src/tools/__tests__/payeeTools.test.ts > Payee Tools > handleGetPayee > should handle 404 not found errors 1ms
1228
- ✓  unit  src/tools/__tests__/payeeTools.test.ts > Payee Tools > handleGetPayee > should handle authentication errors 1ms
1229
- ✓  unit  src/tools/__tests__/payeeTools.test.ts > Payee Tools > ListPayeesSchema > should validate valid budget_id 3ms
1230
- ✓  unit  src/tools/__tests__/payeeTools.test.ts > Payee Tools > ListPayeesSchema > should reject empty budget_id 2ms
1231
- ✓  unit  src/tools/__tests__/payeeTools.test.ts > Payee Tools > ListPayeesSchema > should reject missing budget_id 1ms
1232
- ✓  unit  src/tools/__tests__/payeeTools.test.ts > Payee Tools > ListPayeesSchema > should reject non-string budget_id 1ms
1233
- ✓  unit  src/tools/__tests__/payeeTools.test.ts > Payee Tools > GetPayeeSchema > should validate valid parameters 1ms
1234
- ✓  unit  src/tools/__tests__/payeeTools.test.ts > Payee Tools > GetPayeeSchema > should reject empty budget_id 1ms
1235
- ✓  unit  src/tools/__tests__/payeeTools.test.ts > Payee Tools > GetPayeeSchema > should reject empty payee_id 1ms
1236
- ✓  unit  src/tools/__tests__/payeeTools.test.ts > Payee Tools > GetPayeeSchema > should reject missing budget_id 1ms
1237
- ✓  unit  src/tools/__tests__/payeeTools.test.ts > Payee Tools > GetPayeeSchema > should reject missing payee_id 1ms
1238
- ✓  unit  src/tools/__tests__/payeeTools.test.ts > Payee Tools > GetPayeeSchema > should reject non-string parameters 1ms
1239
- ↓  unit  src/__tests__/performance.test.ts > Reconciliation Performance - Bulk vs Sequential > processes 20 transactions in bulk mode in under 8 seconds
1240
- ↓  unit  src/__tests__/performance.test.ts > Reconciliation Performance - Bulk vs Sequential > pure sequential mode (single transaction) takes longer than 20 seconds
1241
- ↓  unit  src/__tests__/performance.test.ts > Reconciliation Performance - Bulk vs Sequential > sequential fallback takes longer than 20 seconds for 20 transactions
1242
- ↓  unit  src/__tests__/performance.test.ts > Reconciliation Performance - Bulk vs Sequential > achieves at least a 3x speedup over pure sequential mode
1243
- ↓  unit  src/__tests__/performance.test.ts > Reconciliation Performance - Bulk vs Sequential > handles 150-transaction chunking without significant overhead
1244
- ↓  unit  src/__tests__/performance.test.ts > Reconciliation Performance - Bulk vs Sequential > stays within 10MB of heap growth for 100 bulk transactions
1245
- ✓  unit  src/tools/schemas/outputs/__tests__/transactionOutputs.test.ts > TransactionSchema > should validate complete transaction with all fields 8ms
1246
- ✓  unit  src/tools/schemas/outputs/__tests__/transactionOutputs.test.ts > TransactionSchema > should validate minimal transaction with only required fields 1ms
1247
- ✓  unit  src/tools/schemas/outputs/__tests__/transactionOutputs.test.ts > TransactionSchema > should validate transaction with cleared status values 1ms
1248
- ✓  unit  src/tools/schemas/outputs/__tests__/transactionOutputs.test.ts > TransactionSchema > should validate split transaction with subtransactions 1ms
1249
- ✓  unit  src/tools/schemas/outputs/__tests__/transactionOutputs.test.ts > TransactionSchema > should validate transfer transaction 1ms
1250
- ✓  unit  src/tools/schemas/outputs/__tests__/transactionOutputs.test.ts > TransactionSchema > should fail validation when missing required id field 2ms
1251
- ✓  unit  src/tools/schemas/outputs/__tests__/transactionOutputs.test.ts > TransactionSchema > should fail validation when missing required date field 1ms
1252
- ✓  unit  src/tools/schemas/outputs/__tests__/transactionOutputs.test.ts > TransactionSchema > should fail validation when amount is not a number 1ms
1253
- ✓  unit  src/tools/schemas/outputs/__tests__/transactionOutputs.test.ts > TransactionSchema > should fail validation when approved is not a boolean 1ms
1254
- ✓  unit  src/tools/schemas/outputs/__tests__/transactionOutputs.test.ts > TransactionPreviewSchema > should validate preview transaction with all fields 2ms
1255
- ✓  unit  src/tools/schemas/outputs/__tests__/transactionOutputs.test.ts > TransactionPreviewSchema > should validate minimal preview transaction 0ms
1256
- ✓  unit  src/tools/schemas/outputs/__tests__/transactionOutputs.test.ts > TransactionPreviewSchema > should fail validation when missing required id field 0ms
1257
- ✓  unit  src/tools/schemas/outputs/__tests__/transactionOutputs.test.ts > ListTransactionsOutputSchema - Normal Mode > should validate normal mode output with multiple transactions 6ms
1258
- ✓  unit  src/tools/schemas/outputs/__tests__/transactionOutputs.test.ts > ListTransactionsOutputSchema - Normal Mode > should validate normal mode output with empty transactions array 1ms
1259
- ✓  unit  src/tools/schemas/outputs/__tests__/transactionOutputs.test.ts > ListTransactionsOutputSchema - Preview Mode > should validate preview mode output for large result sets 2ms
1260
- ✓  unit  src/tools/schemas/outputs/__tests__/transactionOutputs.test.ts > ListTransactionsOutputSchema - Preview Mode > should validate preview mode output with minimal preview transactions 1ms
1261
- ✓  unit  src/tools/schemas/outputs/__tests__/transactionOutputs.test.ts > ListTransactionsOutputSchema - Preview Mode > should fail validation when preview mode missing required fields 2ms
1262
- ✓  unit  src/tools/schemas/outputs/__tests__/transactionOutputs.test.ts > GetTransactionOutputSchema > should validate output with complete transaction and cache metadata 3ms
1263
- ✓  unit  src/tools/schemas/outputs/__tests__/transactionOutputs.test.ts > GetTransactionOutputSchema > should validate output with minimal transaction 1ms
1264
- ✓  unit  src/tools/schemas/outputs/__tests__/transactionOutputs.test.ts > GetTransactionOutputSchema > should fail validation when transaction is not an object 0ms
1265
- ✓  unit  src/tools/schemas/outputs/__tests__/transactionOutputs.test.ts > GetTransactionOutputSchema > should fail validation when transaction missing required fields 33ms
1266
- ✓  unit  src/tools/schemas/outputs/__tests__/transactionOutputs.test.ts > GetTransactionOutputSchema > should fail validation when missing required transaction field 0ms
1267
- ✓  unit  src/tools/reconciliation/__tests__/scenarios/repeatAmount.scenario.test.ts > scenario: repeat amount collisions > prioritizes repeat-amount insight when multiple bank rows share totals 36ms
1268
- ✓  unit  src/tools/schemas/outputs/__tests__/accountOutputs.test.ts > AccountSchema > should validate complete account with all fields 8ms
1269
- ✓  unit  src/tools/schemas/outputs/__tests__/accountOutputs.test.ts > AccountSchema > should validate minimal account with only required fields 1ms
1270
- ✓  unit  src/tools/schemas/outputs/__tests__/accountOutputs.test.ts > AccountSchema > should validate closed account 1ms
1271
- ✓  unit  src/tools/schemas/outputs/__tests__/accountOutputs.test.ts > AccountSchema > should validate off-budget tracking account 1ms
1272
- ✓  unit  src/tools/schemas/outputs/__tests__/accountOutputs.test.ts > AccountSchema > should validate account with various account types 2ms
1273
- ✓  unit  src/tools/schemas/outputs/__tests__/accountOutputs.test.ts > AccountSchema > should fail validation when missing required id field 2ms
1274
- ✓  unit  src/tools/schemas/outputs/__tests__/accountOutputs.test.ts > AccountSchema > should fail validation when missing required name field 1ms
1275
- ✓  unit  src/tools/schemas/outputs/__tests__/accountOutputs.test.ts > AccountSchema > should fail validation when balance is not a number 0ms
1276
- ✓  unit  src/tools/schemas/outputs/__tests__/accountOutputs.test.ts > AccountSchema > should fail validation when on_budget is not a boolean 1ms
1277
- ✓  unit  src/tools/schemas/outputs/__tests__/accountOutputs.test.ts > ListAccountsOutputSchema > should validate output with multiple accounts and cache metadata 6ms
1278
- ✓  unit  src/tools/schemas/outputs/__tests__/accountOutputs.test.ts > ListAccountsOutputSchema > should validate output with single account 1ms
1279
- ✓  unit  src/tools/schemas/outputs/__tests__/accountOutputs.test.ts > ListAccountsOutputSchema > should validate output with empty accounts array 1ms
1280
- ✓  unit  src/tools/schemas/outputs/__tests__/accountOutputs.test.ts > ListAccountsOutputSchema > should fail validation when accounts is not an array 1ms
1281
- ✓  unit  src/tools/schemas/outputs/__tests__/accountOutputs.test.ts > ListAccountsOutputSchema > should fail validation when missing required total_count field 1ms
1282
- ✓  unit  src/tools/schemas/outputs/__tests__/accountOutputs.test.ts > ListAccountsOutputSchema > should fail validation when total_count is not an integer 1ms
1283
- ✓  unit  src/tools/schemas/outputs/__tests__/accountOutputs.test.ts > GetAccountOutputSchema > should validate output with complete account and cache metadata 3ms
1284
- ✓  unit  src/tools/schemas/outputs/__tests__/accountOutputs.test.ts > GetAccountOutputSchema > should validate output with minimal account 1ms
1285
- ✓  unit  src/tools/schemas/outputs/__tests__/accountOutputs.test.ts > GetAccountOutputSchema > should fail validation when account is not an object 0ms
1286
- ✓  unit  src/tools/schemas/outputs/__tests__/accountOutputs.test.ts > GetAccountOutputSchema > should fail validation when account is missing required fields 1ms
1287
- ✓  unit  src/tools/schemas/outputs/__tests__/accountOutputs.test.ts > GetAccountOutputSchema > should fail validation when missing required account field 0ms
1288
- ✓  unit  src/server/__tests__/deltaCache.swr.test.ts > DeltaCache stale-while-revalidate > should pass staleWhileRevalidate to cache entry when set 19ms
1289
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Response Time Performance > should respond to budget listing within acceptable time
1290
- Rate limit check for token_5f854540: 0/200 requests, remaining: 200, limited: false
1291
- ✓  unit  src/server/__tests__/deltaCache.swr.test.ts > DeltaCache stale-while-revalidate > should not set staleWhileRevalidate when omitted 4ms
1292
- ✓  unit  src/server/__tests__/deltaCache.swr.test.ts > DeltaCache stale-while-revalidate > should pass staleWhileRevalidate when delta is disabled 3ms
1293
- ✓  unit  src/server/__tests__/deltaCache.swr.test.ts > DeltaCache stale-while-revalidate > should include staleWhileRevalidate in entry after delta merge 3ms
1294
-
1295
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Response Time Performance > should respond to budget listing within acceptable time
1296
- Recorded request for token_5f854540: 1/200 requests
1297
-
1298
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Response Time Performance > should respond to budget listing within acceptable time
1299
- Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
1300
- [INFO] ynab:clear_cache | SUCCESS | 4ms | rate_limit_remaining:199
1301
-
1302
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Response Time Performance > should respond to budget listing within acceptable time
1303
- Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
1304
-
1305
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Response Time Performance > should respond to budget listing within acceptable time
1306
- Recorded request for token_5f854540: 2/200 requests
1307
-
1308
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Response Time Performance > should respond to budget listing within acceptable time
1309
- Rate limit check for token_5f854540: 2/200 requests, remaining: 198, limited: false
1310
- [INFO] ynab:list_budgets | SUCCESS | 5ms | rate_limit_remaining:198
1311
-
1312
- ✓  unit  src/tools/schemas/outputs/__tests__/monthOutputs.test.ts > MonthCategorySchema > should validate complete month category with all fields including goals 8ms
1313
- ✓  unit  src/tools/schemas/outputs/__tests__/monthOutputs.test.ts > MonthCategorySchema > should validate minimal month category with only required fields 1ms
1314
- ✓  unit  src/tools/schemas/outputs/__tests__/monthOutputs.test.ts > MonthCategorySchema > should fail validation when missing required fields 2ms
1315
- ✓  unit  src/tools/schemas/outputs/__tests__/monthOutputs.test.ts > MonthDetailSchema > should validate complete month detail with all fields including categories 4ms
1316
- ✓  unit  src/tools/schemas/outputs/__tests__/monthOutputs.test.ts > MonthDetailSchema > should validate minimal month detail with only required fields 1ms
1317
- ✓  unit  src/tools/schemas/outputs/__tests__/monthOutputs.test.ts > MonthDetailSchema > should validate month detail with empty categories array 1ms
1318
- ✓  unit  src/tools/schemas/outputs/__tests__/monthOutputs.test.ts > MonthDetailSchema > should validate month with proper date format YYYY-MM-01 1ms
1319
- ✓  unit  src/tools/schemas/outputs/__tests__/monthOutputs.test.ts > MonthDetailSchema > should fail validation when missing required month field 0ms
1320
- ✓  unit  src/tools/schemas/outputs/__tests__/monthOutputs.test.ts > MonthDetailSchema > should fail validation when income is not a number 1ms
1321
- ✓  unit  src/tools/schemas/outputs/__tests__/monthOutputs.test.ts > MonthSummarySchema > should validate complete month summary with all fields 1ms
1322
- ✓  unit  src/tools/schemas/outputs/__tests__/monthOutputs.test.ts > MonthSummarySchema > should validate minimal month summary with only required fields 1ms
1323
- ✓  unit  src/tools/schemas/outputs/__tests__/monthOutputs.test.ts > MonthSummarySchema > should validate month summary with null age_of_money 0ms
1324
- ✓  unit  src/tools/schemas/outputs/__tests__/monthOutputs.test.ts > MonthSummarySchema > should fail validation when missing required fields 1ms
1325
- ✓  unit  src/tools/schemas/outputs/__tests__/monthOutputs.test.ts > GetMonthOutputSchema > should validate output with complete month detail and cache metadata 2ms
1326
- ✓  unit  src/tools/schemas/outputs/__tests__/monthOutputs.test.ts > GetMonthOutputSchema > should validate output with minimal month detail 0ms
1327
- ✓  unit  src/tools/schemas/outputs/__tests__/monthOutputs.test.ts > GetMonthOutputSchema > should fail validation when month is not an object 0ms
1328
- ✓  unit  src/tools/schemas/outputs/__tests__/monthOutputs.test.ts > GetMonthOutputSchema > should fail validation when missing required month field 0ms
1329
- ✓  unit  src/tools/schemas/outputs/__tests__/monthOutputs.test.ts > ListMonthsOutputSchema > should validate output with multiple month summaries 1ms
1330
- ✓  unit  src/tools/schemas/outputs/__tests__/monthOutputs.test.ts > ListMonthsOutputSchema > should validate output with single month summary 1ms
1331
- ✓  unit  src/tools/schemas/outputs/__tests__/monthOutputs.test.ts > ListMonthsOutputSchema > should validate output with empty months array 0ms
1332
- ✓  unit  src/tools/schemas/outputs/__tests__/monthOutputs.test.ts > ListMonthsOutputSchema > should fail validation when months is not an array 0ms
1333
- ✓  unit  src/tools/schemas/outputs/__tests__/monthOutputs.test.ts > ListMonthsOutputSchema > should fail validation when months array contains invalid month 1ms
1334
- ✓  unit  src/tools/schemas/outputs/__tests__/monthOutputs.test.ts > ListMonthsOutputSchema > should fail validation when missing required months field 0ms
1335
- ✓  unit  src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Response Time Performance > should respond to budget listing within acceptable time 364ms
1336
- ✓  unit  src/tools/schemas/outputs/__tests__/categoryOutputs.test.ts > CategorySchema > should validate complete category with all fields including goals 8ms
1337
- ✓  unit  src/tools/schemas/outputs/__tests__/categoryOutputs.test.ts > CategorySchema > should validate minimal category with only required fields 2ms
1338
- ✓  unit  src/tools/schemas/outputs/__tests__/categoryOutputs.test.ts > CategorySchema > should validate hidden category 2ms
1339
- ✓  unit  src/tools/schemas/outputs/__tests__/categoryOutputs.test.ts > CategorySchema > should validate deleted category 1ms
1340
- ✓  unit  src/tools/schemas/outputs/__tests__/categoryOutputs.test.ts > CategorySchema > should validate category with various goal types 1ms
1341
- ✓  unit  src/tools/schemas/outputs/__tests__/categoryOutputs.test.ts > CategorySchema > should fail validation when missing required id field 2ms
1342
- ✓  unit  src/tools/schemas/outputs/__tests__/categoryOutputs.test.ts > CategorySchema > should fail validation when missing required name field 1ms
1343
- ✓  unit  src/tools/schemas/outputs/__tests__/categoryOutputs.test.ts > CategorySchema > should fail validation when budgeted is not a number 1ms
1344
- ✓  unit  src/tools/schemas/outputs/__tests__/categoryOutputs.test.ts > CategorySchema > should fail validation when hidden is not a boolean 1ms
1345
- ✓  unit  src/tools/schemas/outputs/__tests__/categoryOutputs.test.ts > CategoryGroupSchema > should validate complete category group with all fields 2ms
1346
- ✓  unit  src/tools/schemas/outputs/__tests__/categoryOutputs.test.ts > CategoryGroupSchema > should validate hidden category group 0ms
1347
- ✓  unit  src/tools/schemas/outputs/__tests__/categoryOutputs.test.ts > CategoryGroupSchema > should fail validation when missing required id field 0ms
1348
- ✓  unit  src/tools/schemas/outputs/__tests__/categoryOutputs.test.ts > CategoryGroupSchema > should fail validation when missing required name field 1ms
1349
- ✓  unit  src/tools/schemas/outputs/__tests__/categoryOutputs.test.ts > ListCategoriesOutputSchema > should validate output with categories and category groups 4ms
1350
- ✓  unit  src/tools/schemas/outputs/__tests__/categoryOutputs.test.ts > ListCategoriesOutputSchema > should validate output with empty arrays 1ms
1351
- ✓  unit  src/tools/schemas/outputs/__tests__/categoryOutputs.test.ts > ListCategoriesOutputSchema > should fail validation when categories is not an array 0ms
1352
- ✓  unit  src/tools/schemas/outputs/__tests__/categoryOutputs.test.ts > ListCategoriesOutputSchema > should fail validation when missing required categories field 0ms
1353
- ✓  unit  src/tools/schemas/outputs/__tests__/categoryOutputs.test.ts > ListCategoriesOutputSchema > should fail validation when missing required category_groups field 1ms
1354
- ✓  unit  src/tools/schemas/outputs/__tests__/categoryOutputs.test.ts > GetCategoryOutputSchema > should validate output with complete category and cache metadata 3ms
1355
- ✓  unit  src/tools/schemas/outputs/__tests__/categoryOutputs.test.ts > GetCategoryOutputSchema > should validate output with minimal category 1ms
1356
- ✓  unit  src/tools/schemas/outputs/__tests__/categoryOutputs.test.ts > GetCategoryOutputSchema > should fail validation when category is not an object 1ms
1357
- ✓  unit  src/tools/schemas/outputs/__tests__/categoryOutputs.test.ts > GetCategoryOutputSchema > should fail validation when category missing required fields 1ms
1358
- ✓  unit  src/tools/schemas/outputs/__tests__/categoryOutputs.test.ts > GetCategoryOutputSchema > should fail validation when missing required category field 0ms
1359
- ✓  unit  src/server/__tests__/deltaCache.merge.test.ts > mergeFlatEntities > should merge new entities into snapshot 5ms
1360
- ✓  unit  src/server/__tests__/deltaCache.merge.test.ts > mergeFlatEntities > should update existing entities with latest data 4ms
1361
- ✓  unit  src/server/__tests__/deltaCache.merge.test.ts > mergeFlatEntities > should delete entities when delta marks them deleted 1ms
1362
- ✓  unit  src/server/__tests__/deltaCache.merge.test.ts > mergeFlatEntities > should preserve deleted entities when preserveDeleted enabled 1ms
1363
- ✓  unit  src/server/__tests__/deltaCache.merge.test.ts > mergeFlatEntities > should handle empty snapshot gracefully 1ms
1364
- ✓  unit  src/server/__tests__/deltaCache.merge.test.ts > mergeFlatEntities > should handle empty delta by returning snapshot 0ms
1365
- ✓  unit  src/server/__tests__/deltaCache.merge.test.ts > mergeFlatEntities > should handle both arrays empty 2ms
1366
- ✓  unit  src/server/__tests__/deltaCache.merge.test.ts > mergeFlatEntities > should process multiple operations in single delta batch 1ms
1367
- ✓  unit  src/server/__tests__/deltaCache.merge.test.ts > mergeFlatEntities > should maintain insertion order for unchanged entities 1ms
1368
- ✓  unit  src/server/__tests__/deltaCache.merge.test.ts > mergeFlatEntities > should keep additional fields intact 1ms
1369
- ✓  unit  src/server/__tests__/deltaCache.merge.test.ts > mergeCategories > should merge new category groups into snapshot 1ms
1370
- ✓  unit  src/server/__tests__/deltaCache.merge.test.ts > mergeCategories > should update existing group metadata 1ms
1371
- ✓  unit  src/server/__tests__/deltaCache.merge.test.ts > mergeCategories > should delete groups flagged as deleted 0ms
1372
- ✓  unit  src/server/__tests__/deltaCache.merge.test.ts > mergeCategories > should preserve deleted groups when preserveDeleted is true 0ms
1373
- ✓  unit  src/server/__tests__/deltaCache.merge.test.ts > mergeCategories > should merge new categories within existing group 1ms
1374
- ✓  unit  src/server/__tests__/deltaCache.merge.test.ts > mergeCategories > should update existing categories during merge 0ms
1375
- ✓  unit  src/server/__tests__/deltaCache.merge.test.ts > mergeCategories > should delete categories marked as deleted 1ms
1376
- ✓  unit  src/server/__tests__/deltaCache.merge.test.ts > mergeCategories > should preserve deleted categories when preserveDeleted is true 0ms
1377
- ✓  unit  src/server/__tests__/deltaCache.merge.test.ts > mergeCategories > should handle groups with empty category lists 0ms
1378
- ✓  unit  src/server/__tests__/deltaCache.merge.test.ts > mergeCategories > should handle metadata-only updates (no categories provided) 1ms
1379
- ✓  unit  src/server/__tests__/deltaCache.merge.test.ts > mergeCategories > should apply nested updates to metadata and categories simultaneously 1ms
1380
- ✓  unit  src/server/__tests__/deltaCache.merge.test.ts > mergeCategories > should maintain category order after merges 33ms
1381
- ✓  unit  src/server/__tests__/deltaCache.merge.test.ts > mergeCategories > should handle multiple groups with multiple category updates 1ms
1382
- ✓  unit  src/server/__tests__/deltaCache.merge.test.ts > mergeCategories > should keep nested structures immutable 1ms
1383
- ✓  unit  src/server/__tests__/deltaCache.merge.test.ts > mergeTransactions > should merge new transactions into snapshot 1ms
1384
- ✓  unit  src/server/__tests__/deltaCache.merge.test.ts > mergeTransactions > should update existing transactions 0ms
1385
- ✓  unit  src/server/__tests__/deltaCache.merge.test.ts > mergeTransactions > should delete transactions marked as deleted 0ms
1386
- ✓  unit  src/server/__tests__/deltaCache.merge.test.ts > mergeTransactions > should preserve deleted transactions when preserveDeleted is true 0ms
1387
- ✓  unit  src/server/__tests__/deltaCache.merge.test.ts > mergeTransactions > should merge new subtransactions into existing transaction 1ms
1388
- ✓  unit  src/server/__tests__/deltaCache.merge.test.ts > mergeTransactions > should update existing subtransactions 0ms
1389
- ✓  unit  src/server/__tests__/deltaCache.merge.test.ts > mergeTransactions > should delete subtransactions when flagged deleted 3ms
1390
- ✓  unit  src/server/__tests__/deltaCache.merge.test.ts > mergeTransactions > should preserve deleted subtransactions when preserveDeleted is true 1ms
1391
- ✓  unit  src/server/__tests__/deltaCache.merge.test.ts > mergeTransactions > should handle transactions without subtransactions arrays 3ms
1392
- ✓  unit  src/server/__tests__/deltaCache.merge.test.ts > mergeTransactions > should handle delta updates without subtransactions list 1ms
1393
- ✓  unit  src/server/__tests__/deltaCache.merge.test.ts > mergeTransactions > should apply nested operations to transaction and subtransactions 1ms
1394
- ✓  unit  src/server/__tests__/deltaCache.merge.test.ts > mergeTransactions > should maintain subtransaction order 0ms
1395
- ✓  unit  src/server/__tests__/deltaCache.merge.test.ts > mergeTransactions > should handle multiple transactions with distinct updates 1ms
1396
- ✓  unit  src/server/__tests__/deltaCache.merge.test.ts > mergeTransactions > should avoid mutating input arrays 0ms
1397
- ✓  unit  src/server/__tests__/deltaCache.merge.test.ts > Merge Edge Cases > should handle duplicate IDs in delta with last write winning 0ms
1398
- ✓  unit  src/server/__tests__/deltaCache.merge.test.ts > Merge Edge Cases > should handle null and undefined optional fields 0ms
1399
- ✓  unit  src/server/__tests__/deltaCache.merge.test.ts > Merge Edge Cases > should efficiently handle large snapshots 1ms
1400
- ✓  unit  src/server/__tests__/deltaCache.merge.test.ts > Merge Edge Cases > should efficiently handle large delta payloads 1ms
1401
- ✓  unit  src/server/__tests__/deltaCache.merge.test.ts > Merge Edge Cases > should handle deeply nested category structures 1ms
1402
- ✓  unit  src/server/__tests__/deltaCache.merge.test.ts > Merge Edge Cases > should handle transactions with many subtransactions 0ms
1403
- ✓  unit  src/server/__tests__/deltaCache.merge.test.ts > Merge Edge Cases > should not mutate snapshot or delta arrays 0ms
1404
- ✓  unit  src/server/__tests__/deltaCache.merge.test.ts > Merge Edge Cases > should handle special characters in IDs and names 0ms
1405
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Response Time Performance > should handle large transaction lists efficiently
1406
- Rate limit check for token_5f854540: 0/200 requests, remaining: 200, limited: false
1407
-
1408
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Response Time Performance > should handle large transaction lists efficiently
1409
- Recorded request for token_5f854540: 1/200 requests
1410
-
1411
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Response Time Performance > should handle large transaction lists efficiently
1412
- Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
1413
- [INFO] ynab:clear_cache | SUCCESS | 3ms | rate_limit_remaining:199
1414
-
1415
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Response Time Performance > should handle large transaction lists efficiently
1416
- Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
1417
-
1418
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Response Time Performance > should handle large transaction lists efficiently
1419
- Recorded request for token_5f854540: 2/200 requests
1420
-
1421
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Response Time Performance > should handle large transaction lists efficiently
1422
- Rate limit check for token_5f854540: 2/200 requests, remaining: 198, limited: false
1423
- [INFO] ynab:list_transactions | SUCCESS | 5ms | rate_limit_remaining:198
1424
-
1425
- ✓  unit  src/tools/__tests__/budgetTools.test.ts > Budget Tools > handleListBudgets > should include cache metadata from delta fetcher results 6ms
1426
- ✓  unit  src/tools/__tests__/budgetTools.test.ts > Budget Tools > handleListBudgets > should return formatted budget list on success 3ms
1427
- ✓  unit  src/tools/__tests__/budgetTools.test.ts > Budget Tools > handleListBudgets > should handle errors reported by the delta fetcher 2ms
1428
- ✓  unit  src/tools/__tests__/budgetTools.test.ts > Budget Tools > handleGetBudget > should not use cache (as per design - individual budgets change less frequently) 2ms
1429
- ✓  unit  src/tools/__tests__/budgetTools.test.ts > Budget Tools > handleGetBudget > should return detailed budget information on success 2ms
1430
- ✓  unit  src/tools/__tests__/budgetTools.test.ts > Budget Tools > handleGetBudget > should return zero counts for empty collections and exclude arrays 2ms
1431
- ✓  unit  src/tools/__tests__/budgetTools.test.ts > Budget Tools > handleGetBudget > should return correct counts for multiple items and exclude arrays 2ms
1432
- ✓  unit  src/tools/__tests__/budgetTools.test.ts > Budget Tools > handleGetBudget > should handle 404 not found errors 1ms
1433
- ✓  unit  src/tools/__tests__/budgetTools.test.ts > Budget Tools > handleGetBudget > should handle authentication errors 1ms
1434
- ✓  unit  src/tools/__tests__/budgetTools.test.ts > Budget Tools > GetBudgetSchema > should validate valid budget_id 3ms
1435
- ✓  unit  src/tools/__tests__/budgetTools.test.ts > Budget Tools > GetBudgetSchema > should reject empty budget_id 3ms
1436
- ✓  unit  src/tools/__tests__/budgetTools.test.ts > Budget Tools > GetBudgetSchema > should reject missing budget_id 1ms
1437
- ✓  unit  src/tools/__tests__/budgetTools.test.ts > Budget Tools > GetBudgetSchema > should reject non-string budget_id 1ms
1438
- ✓  unit  src/tools/__tests__/deltaFetcher.test.ts > DeltaFetcher > fetchAccounts wires delta cache with proper key and merge strategy 12ms
1439
- ✓  unit  src/tools/__tests__/deltaFetcher.test.ts > DeltaFetcher > fetchCategories uses mergeCategories and TTL 2ms
1440
- ✓  unit  src/tools/__tests__/deltaFetcher.test.ts > DeltaFetcher > fetchTransactions includes filters in key and uses mergeTransactions 2ms
1441
- ✓  unit  src/tools/__tests__/deltaFetcher.test.ts > DeltaFetcher > fetchTransactionsByAccount encodes account in key 2ms
1442
- ✓  unit  src/tools/__tests__/deltaFetcher.test.ts > DeltaFetcher > fetchScheduledTransactions wires cache key and merge strategy 2ms
1443
- ✓  unit  src/tools/__tests__/deltaFetcher.test.ts > DeltaFetcher > fetchPayees delegates to mergeFlatEntities 2ms
1444
- ✓  unit  src/tools/__tests__/deltaFetcher.test.ts > DeltaFetcher > fetchMonths uses mergeMonths and month TTL 1ms
1445
- ✓  unit  src/tools/__tests__/deltaFetcher.test.ts > DeltaFetcher > fetchBudgets always forces full refresh 3ms
1446
- ✓  unit  src/tools/__tests__/deltaFetcher.test.ts > DeltaFetcher > fetchAccountsFull bypasses cache and filters deleted accounts 2ms
1447
- ✓  unit  src/tools/__tests__/deltaFetcher.test.ts > DeltaFetcher > fetchTransactionsByAccountFull bypasses delta cache 1ms
1448
- ✓  unit  src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Response Time Performance > should handle large transaction lists efficiently 323ms
1449
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Response Time Performance > should handle concurrent requests efficiently
1450
- Rate limit check for token_5f854540: 0/200 requests, remaining: 200, limited: false
1451
-
1452
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Response Time Performance > should handle concurrent requests efficiently
1453
- Recorded request for token_5f854540: 1/200 requests
1454
-
1455
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Response Time Performance > should handle concurrent requests efficiently
1456
- Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
1457
- [INFO] ynab:clear_cache | SUCCESS | 0ms | rate_limit_remaining:199
1458
-
1459
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Response Time Performance > should handle concurrent requests efficiently
1460
- Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
1461
- Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
1462
- Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
1463
- Recorded request for token_5f854540: 2/200 requests
1464
- Recorded request for token_5f854540: 3/200 requests
1465
- Recorded request for token_5f854540: 4/200 requests
1466
-
1467
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Response Time Performance > should handle concurrent requests efficiently
1468
- Rate limit check for token_5f854540: 4/200 requests, remaining: 196, limited: false
1469
- [INFO] ynab:get_user | SUCCESS | 3ms | rate_limit_remaining:196
1470
-
1471
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Response Time Performance > should handle concurrent requests efficiently
1472
- Rate limit check for token_5f854540: 4/200 requests, remaining: 196, limited: false
1473
- [INFO] ynab:list_budgets | SUCCESS | 6ms | rate_limit_remaining:196
1474
- Rate limit check for token_5f854540: 4/200 requests, remaining: 196, limited: false
1475
- [INFO] ynab:list_budgets | SUCCESS | 5ms | rate_limit_remaining:196
1476
-
1477
- ✓  unit  src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Response Time Performance > should handle concurrent requests efficiently 314ms
1478
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Memory Usage Performance > should handle memory efficiently with large datasets
1479
- Rate limit check for token_5f854540: 0/200 requests, remaining: 200, limited: false
1480
-
1481
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Memory Usage Performance > should handle memory efficiently with large datasets
1482
- Recorded request for token_5f854540: 1/200 requests
1483
-
1484
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Memory Usage Performance > should handle memory efficiently with large datasets
1485
- Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
1486
- [INFO] ynab:clear_cache | SUCCESS | 1ms | rate_limit_remaining:199
1487
-
1488
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Memory Usage Performance > should handle memory efficiently with large datasets
1489
- Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
1490
-
1491
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Memory Usage Performance > should handle memory efficiently with large datasets
1492
- Recorded request for token_5f854540: 2/200 requests
1493
-
1494
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Memory Usage Performance > should handle memory efficiently with large datasets
1495
- Rate limit check for token_5f854540: 2/200 requests, remaining: 198, limited: false
1496
- [INFO] ynab:list_categories | SUCCESS | 68ms | rate_limit_remaining:198
1497
-
1498
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Memory Usage Performance > should handle memory efficiently with large datasets
1499
- Rate limit check for token_5f854540: 2/200 requests, remaining: 198, limited: false
1500
-
1501
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Memory Usage Performance > should handle memory efficiently with large datasets
1502
- Recorded request for token_5f854540: 3/200 requests
1503
-
1504
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Memory Usage Performance > should handle memory efficiently with large datasets
1505
- Rate limit check for token_5f854540: 3/200 requests, remaining: 197, limited: false
1506
- [INFO] ynab:list_categories | SUCCESS | 43ms | rate_limit_remaining:197
1507
-
1508
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Memory Usage Performance > should handle memory efficiently with large datasets
1509
- Rate limit check for token_5f854540: 3/200 requests, remaining: 197, limited: false
1510
-
1511
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Memory Usage Performance > should handle memory efficiently with large datasets
1512
- Recorded request for token_5f854540: 4/200 requests
1513
-
1514
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Memory Usage Performance > should handle memory efficiently with large datasets
1515
- Rate limit check for token_5f854540: 4/200 requests, remaining: 196, limited: false
1516
- [INFO] ynab:list_categories | SUCCESS | 49ms | rate_limit_remaining:196
1517
-
1518
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Memory Usage Performance > should handle memory efficiently with large datasets
1519
- Rate limit check for token_5f854540: 4/200 requests, remaining: 196, limited: false
1520
-
1521
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Memory Usage Performance > should handle memory efficiently with large datasets
1522
- Recorded request for token_5f854540: 5/200 requests
1523
-
1524
- ✓  unit  src/tools/schemas/outputs/__tests__/reconciliationOutputs.test.ts > reconciliationOutputs > ExecutionActionRecordSchema > create_transaction type > should validate successful transaction creation with full response 23ms
1525
- ✓  unit  src/tools/schemas/outputs/__tests__/reconciliationOutputs.test.ts > reconciliationOutputs > ExecutionActionRecordSchema > create_transaction type > should validate successful transaction creation with null transaction 1ms
1526
- ✓  unit  src/tools/schemas/outputs/__tests__/reconciliationOutputs.test.ts > reconciliationOutputs > ExecutionActionRecordSchema > create_transaction type > should accept additional YNAB API fields via passthrough 2ms
1527
- ✓  unit  src/tools/schemas/outputs/__tests__/reconciliationOutputs.test.ts > reconciliationOutputs > ExecutionActionRecordSchema > create_transaction_failed type > should validate failed transaction creation with payload 2ms
1528
- ✓  unit  src/tools/schemas/outputs/__tests__/reconciliationOutputs.test.ts > reconciliationOutputs > ExecutionActionRecordSchema > create_transaction_failed type > should reject when transaction is null for failed creation 2ms
1529
- ✓  unit  src/tools/schemas/outputs/__tests__/reconciliationOutputs.test.ts > reconciliationOutputs > ExecutionActionRecordSchema > create_transaction_duplicate type > should validate duplicate detection with transaction ID 1ms
1530
- ✓  unit  src/tools/schemas/outputs/__tests__/reconciliationOutputs.test.ts > reconciliationOutputs > ExecutionActionRecordSchema > create_transaction_duplicate type > should validate duplicate detection with null transaction ID 1ms
1531
- ✓  unit  src/tools/schemas/outputs/__tests__/reconciliationOutputs.test.ts > reconciliationOutputs > ExecutionActionRecordSchema > create_transaction_duplicate type > should require duplicate field to be true 1ms
1532
- ✓  unit  src/tools/schemas/outputs/__tests__/reconciliationOutputs.test.ts > reconciliationOutputs > ExecutionActionRecordSchema > create_transaction_duplicate type > should require bulk_chunk_index for duplicates 1ms
1533
- ✓  unit  src/tools/schemas/outputs/__tests__/reconciliationOutputs.test.ts > reconciliationOutputs > ExecutionActionRecordSchema > update_transaction type > should validate update with full created transaction (real execution) 1ms
1534
- ✓  unit  src/tools/schemas/outputs/__tests__/reconciliationOutputs.test.ts > reconciliationOutputs > ExecutionActionRecordSchema > update_transaction type > should validate update with partial payload (dry run) 1ms
1535
- ✓  unit  src/tools/schemas/outputs/__tests__/reconciliationOutputs.test.ts > reconciliationOutputs > ExecutionActionRecordSchema > update_transaction type > should validate update with null transaction 0ms
1536
- ✓  unit  src/tools/schemas/outputs/__tests__/reconciliationOutputs.test.ts > reconciliationOutputs > ExecutionActionRecordSchema > balance_checkpoint type > should validate balance checkpoint 1ms
1537
- ✓  unit  src/tools/schemas/outputs/__tests__/reconciliationOutputs.test.ts > reconciliationOutputs > ExecutionActionRecordSchema > balance_checkpoint type > should require transaction to be null for balance checkpoint 0ms
1538
- ✓  unit  src/tools/schemas/outputs/__tests__/reconciliationOutputs.test.ts > reconciliationOutputs > ExecutionActionRecordSchema > bulk_create_fallback type > should validate bulk create fallback 1ms
1539
- ✓  unit  src/tools/schemas/outputs/__tests__/reconciliationOutputs.test.ts > reconciliationOutputs > ExecutionActionRecordSchema > bulk_create_fallback type > should require bulk_chunk_index for fallback 0ms
1540
- ✓  unit  src/tools/schemas/outputs/__tests__/reconciliationOutputs.test.ts > reconciliationOutputs > ExecutionActionRecordSchema > discriminated union behavior > should reject unknown action types 0ms
1541
- ✓  unit  src/tools/schemas/outputs/__tests__/reconciliationOutputs.test.ts > reconciliationOutputs > ExecutionActionRecordSchema > discriminated union behavior > should provide clear error messages for type mismatches 1ms
1542
- ✓  unit  src/tools/schemas/outputs/__tests__/reconciliationOutputs.test.ts > reconciliationOutputs > Helper schemas > CreatedTransactionSchema > should validate minimal created transaction 0ms
1543
- ✓  unit  src/tools/schemas/outputs/__tests__/reconciliationOutputs.test.ts > reconciliationOutputs > Helper schemas > CreatedTransactionSchema > should allow passthrough fields 0ms
1544
- ✓  unit  src/tools/schemas/outputs/__tests__/reconciliationOutputs.test.ts > reconciliationOutputs > Helper schemas > TransactionCreationPayloadSchema > should validate minimal creation payload 0ms
1545
- ✓  unit  src/tools/schemas/outputs/__tests__/reconciliationOutputs.test.ts > reconciliationOutputs > Helper schemas > TransactionCreationPayloadSchema > should validate full creation payload 0ms
1546
- ✓  unit  src/tools/schemas/outputs/__tests__/reconciliationOutputs.test.ts > reconciliationOutputs > Helper schemas > TransactionUpdatePayloadSchema > should validate update with all fields 0ms
1547
- ✓  unit  src/tools/schemas/outputs/__tests__/reconciliationOutputs.test.ts > reconciliationOutputs > Helper schemas > TransactionUpdatePayloadSchema > should validate update with only transaction_id 0ms
1548
- ✓  unit  src/tools/schemas/outputs/__tests__/reconciliationOutputs.test.ts > reconciliationOutputs > Helper schemas > DuplicateDetectionPayloadSchema > should validate with both fields 0ms
1549
- ✓  unit  src/tools/schemas/outputs/__tests__/reconciliationOutputs.test.ts > reconciliationOutputs > Helper schemas > DuplicateDetectionPayloadSchema > should validate with null transaction_id 0ms
1550
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Memory Usage Performance > should handle memory efficiently with large datasets
1551
- Rate limit check for token_5f854540: 5/200 requests, remaining: 195, limited: false
1552
- [INFO] ynab:list_categories | SUCCESS | 15ms | rate_limit_remaining:195
1553
-
1554
- ✓  unit  src/tools/schemas/outputs/__tests__/budgetOutputs.test.ts > BudgetSummarySchema > should validate complete budget with all fields 10ms
1555
- ✓  unit  src/tools/schemas/outputs/__tests__/budgetOutputs.test.ts > BudgetSummarySchema > should validate minimal budget with only required fields 2ms
1556
- ✓  unit  src/tools/schemas/outputs/__tests__/budgetOutputs.test.ts > BudgetSummarySchema > should validate budget with date_format but no currency_format 1ms
1557
- ✓  unit  src/tools/schemas/outputs/__tests__/budgetOutputs.test.ts > BudgetSummarySchema > should fail validation when missing required id field 2ms
1558
- ✓  unit  src/tools/schemas/outputs/__tests__/budgetOutputs.test.ts > BudgetSummarySchema > should fail validation when missing required name field 1ms
1559
- ✓  unit  src/tools/schemas/outputs/__tests__/budgetOutputs.test.ts > BudgetSummarySchema > should fail validation when id is not a string 1ms
1560
- ✓  unit  src/tools/schemas/outputs/__tests__/budgetOutputs.test.ts > BudgetSummarySchema > should fail validation when name is not a string 0ms
1561
- ✓  unit  src/tools/schemas/outputs/__tests__/budgetOutputs.test.ts > BudgetSummarySchema > should fail validation when date_format is missing required format field 1ms
1562
- ✓  unit  src/tools/schemas/outputs/__tests__/budgetOutputs.test.ts > BudgetSummarySchema > should fail validation when currency_format has invalid types 1ms
1563
- ✓  unit  src/tools/schemas/outputs/__tests__/budgetOutputs.test.ts > ListBudgetsOutputSchema > should validate output with multiple budgets and cache metadata 4ms
1564
- ✓  unit  src/tools/schemas/outputs/__tests__/budgetOutputs.test.ts > ListBudgetsOutputSchema > should validate output with single budget 1ms
1565
- ✓  unit  src/tools/schemas/outputs/__tests__/budgetOutputs.test.ts > ListBudgetsOutputSchema > should validate output with empty budgets array 1ms
1566
- ✓  unit  src/tools/schemas/outputs/__tests__/budgetOutputs.test.ts > ListBudgetsOutputSchema > should validate output with complete budget including formats 1ms
1567
- ✓  unit  src/tools/schemas/outputs/__tests__/budgetOutputs.test.ts > ListBudgetsOutputSchema > should fail validation when budgets is not an array 0ms
1568
- ✓  unit  src/tools/schemas/outputs/__tests__/budgetOutputs.test.ts > ListBudgetsOutputSchema > should fail validation when budgets array contains invalid budget 1ms
1569
- ✓  unit  src/tools/schemas/outputs/__tests__/budgetOutputs.test.ts > ListBudgetsOutputSchema > should fail validation when missing required budgets field 0ms
1570
- ✓  unit  src/tools/schemas/outputs/__tests__/budgetOutputs.test.ts > ListBudgetsOutputSchema > should fail validation when cached is not a boolean 0ms
1571
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Memory Usage Performance > should handle memory efficiently with large datasets
1572
- Rate limit check for token_5f854540: 5/200 requests, remaining: 195, limited: false
1573
-
1574
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Memory Usage Performance > should handle memory efficiently with large datasets
1575
- Recorded request for token_5f854540: 6/200 requests
1576
-
1577
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Memory Usage Performance > should handle memory efficiently with large datasets
1578
- Rate limit check for token_5f854540: 6/200 requests, remaining: 194, limited: false
1579
- [INFO] ynab:list_categories | SUCCESS | 17ms | rate_limit_remaining:194
1580
-
1581
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Memory Usage Performance > should handle memory efficiently with large datasets
1582
- Rate limit check for token_5f854540: 6/200 requests, remaining: 194, limited: false
1583
-
1584
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Memory Usage Performance > should handle memory efficiently with large datasets
1585
- Recorded request for token_5f854540: 7/200 requests
1586
-
1587
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Memory Usage Performance > should handle memory efficiently with large datasets
1588
- Rate limit check for token_5f854540: 7/200 requests, remaining: 193, limited: false
1589
- [INFO] ynab:list_categories | SUCCESS | 22ms | rate_limit_remaining:193
1590
-
1591
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Memory Usage Performance > should handle memory efficiently with large datasets
1592
- Rate limit check for token_5f854540: 7/200 requests, remaining: 193, limited: false
1593
-
1594
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Memory Usage Performance > should handle memory efficiently with large datasets
1595
- Recorded request for token_5f854540: 8/200 requests
1596
-
1597
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Memory Usage Performance > should handle memory efficiently with large datasets
1598
- Rate limit check for token_5f854540: 8/200 requests, remaining: 192, limited: false
1599
- [INFO] ynab:list_categories | SUCCESS | 16ms | rate_limit_remaining:192
1600
-
1601
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Memory Usage Performance > should handle memory efficiently with large datasets
1602
- Rate limit check for token_5f854540: 8/200 requests, remaining: 192, limited: false
1603
-
1604
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Memory Usage Performance > should handle memory efficiently with large datasets
1605
- Recorded request for token_5f854540: 9/200 requests
1606
-
1607
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Memory Usage Performance > should handle memory efficiently with large datasets
1608
- Rate limit check for token_5f854540: 9/200 requests, remaining: 191, limited: false
1609
- [INFO] ynab:list_categories | SUCCESS | 18ms | rate_limit_remaining:191
1610
-
1611
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Memory Usage Performance > should handle memory efficiently with large datasets
1612
- Rate limit check for token_5f854540: 9/200 requests, remaining: 191, limited: false
1613
- ✓  unit  src/tools/__tests__/utilityTools.test.ts > Utility Tools > handleGetUser > should return user information successfully 6ms
1614
-
1615
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Memory Usage Performance > should handle memory efficiently with large datasets
1616
- Recorded request for token_5f854540: 10/200 requests
1617
-
1618
- ✓  unit  src/tools/__tests__/utilityTools.test.ts > Utility Tools > handleGetUser > should handle 401 authentication errors 2ms
1619
- ✓  unit  src/tools/__tests__/utilityTools.test.ts > Utility Tools > handleGetUser > should handle 403 authorization errors 1ms
1620
- ✓  unit  src/tools/__tests__/utilityTools.test.ts > Utility Tools > handleGetUser > should handle 429 rate limiting errors 0ms
1621
- ✓  unit  src/tools/__tests__/utilityTools.test.ts > Utility Tools > handleGetUser > should handle 500 server errors 1ms
1622
- ✓  unit  src/tools/__tests__/utilityTools.test.ts > Utility Tools > handleGetUser > should handle generic errors 2ms
1623
- ✓  unit  src/tools/__tests__/utilityTools.test.ts > Utility Tools > handleConvertAmount > should convert dollars to milliunits correctly 1ms
1624
- ✓  unit  src/tools/__tests__/utilityTools.test.ts > Utility Tools > handleConvertAmount > should convert milliunits to dollars correctly 1ms
1625
- ✓  unit  src/tools/__tests__/utilityTools.test.ts > Utility Tools > handleConvertAmount > should handle zero amounts 1ms
1626
- ✓  unit  src/tools/__tests__/utilityTools.test.ts > Utility Tools > handleConvertAmount > should handle negative amounts 1ms
1627
- ✓  unit  src/tools/__tests__/utilityTools.test.ts > Utility Tools > handleConvertAmount > should handle floating-point precision correctly 0ms
1628
- ✓  unit  src/tools/__tests__/utilityTools.test.ts > Utility Tools > handleConvertAmount > should handle large amounts 0ms
1629
- ✓  unit  src/tools/__tests__/utilityTools.test.ts > Utility Tools > handleConvertAmount > should round to nearest milliunit when converting from dollars 0ms
1630
- ✓  unit  src/tools/__tests__/utilityTools.test.ts > Utility Tools > ConvertAmountSchema validation > should validate correct parameters 4ms
1631
- ✓  unit  src/tools/__tests__/utilityTools.test.ts > Utility Tools > ConvertAmountSchema validation > should reject non-finite numbers 2ms
1632
- ✓  unit  src/tools/__tests__/utilityTools.test.ts > Utility Tools > ConvertAmountSchema validation > should reject NaN values 0ms
1633
- ✓  unit  src/tools/__tests__/utilityTools.test.ts > Utility Tools > ConvertAmountSchema validation > should reject missing amount parameter 0ms
1634
- ✓  unit  src/tools/__tests__/utilityTools.test.ts > Utility Tools > ConvertAmountSchema validation > should reject missing to_milliunits parameter 1ms
1635
- ✓  unit  src/tools/__tests__/utilityTools.test.ts > Utility Tools > ConvertAmountSchema validation > should reject non-boolean to_milliunits parameter 0ms
1636
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Memory Usage Performance > should handle memory efficiently with large datasets
1637
- Rate limit check for token_5f854540: 10/200 requests, remaining: 190, limited: false
1638
- [INFO] ynab:list_categories | SUCCESS | 15ms | rate_limit_remaining:190
1639
-
1640
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Memory Usage Performance > should handle memory efficiently with large datasets
1641
- Rate limit check for token_5f854540: 10/200 requests, remaining: 190, limited: false
1642
-
1643
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Memory Usage Performance > should handle memory efficiently with large datasets
1644
- Recorded request for token_5f854540: 11/200 requests
1645
-
1646
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Memory Usage Performance > should handle memory efficiently with large datasets
1647
- Rate limit check for token_5f854540: 11/200 requests, remaining: 189, limited: false
1648
- [INFO] ynab:list_categories | SUCCESS | 17ms | rate_limit_remaining:189
1649
-
1650
- ✓  unit  src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Memory Usage Performance > should handle memory efficiently with large datasets 649ms
1651
- ✓  unit  src/tools/schemas/outputs/__tests__/utilityOutputs.test.ts > SetOutputFormatOutputSchema > should validate output with success, message, and options 8ms
1652
- ✓  unit  src/tools/schemas/outputs/__tests__/utilityOutputs.test.ts > SetOutputFormatOutputSchema > should validate output with only defaultMinify option 1ms
1653
- ✓  unit  src/tools/schemas/outputs/__tests__/utilityOutputs.test.ts > SetOutputFormatOutputSchema > should validate output with only prettySpaces option 0ms
1654
- ✓  unit  src/tools/schemas/outputs/__tests__/utilityOutputs.test.ts > SetOutputFormatOutputSchema > should validate output with empty options 0ms
1655
- ✓  unit  src/tools/schemas/outputs/__tests__/utilityOutputs.test.ts > SetOutputFormatOutputSchema > should fail validation when missing required success field 1ms
1656
- ✓  unit  src/tools/schemas/outputs/__tests__/utilityOutputs.test.ts > SetOutputFormatOutputSchema > should fail validation when missing required message field 1ms
1657
- ✓  unit  src/tools/schemas/outputs/__tests__/utilityOutputs.test.ts > SetOutputFormatOutputSchema > should fail validation when missing required options field 1ms
1658
- ✓  unit  src/tools/schemas/outputs/__tests__/utilityOutputs.test.ts > EnvironmentInfoSchema > should validate environment info with null token_preview 2ms
1659
- ✓  unit  src/tools/schemas/outputs/__tests__/utilityOutputs.test.ts > EnvironmentInfoSchema > should validate environment info with string token_preview 1ms
1660
- ✓  unit  src/tools/schemas/outputs/__tests__/utilityOutputs.test.ts > CacheInfoSchema > should validate cache info with null lastCleanup 2ms
1661
- ✓  unit  src/tools/schemas/outputs/__tests__/utilityOutputs.test.ts > CacheInfoSchema > should validate cache info with string lastCleanup 0ms
1662
- ✓  unit  src/tools/schemas/outputs/__tests__/utilityOutputs.test.ts > CacheInfoSchema > should validate cache info without optional performance metrics 0ms
1663
- ✓  unit  src/tools/schemas/outputs/__tests__/utilityOutputs.test.ts > DeltaInfoSchema > should validate delta info with numeric delta_hit_rate 2ms
1664
- ✓  unit  src/tools/schemas/outputs/__tests__/utilityOutputs.test.ts > DeltaInfoSchema > should fail validation when delta_hit_rate is a string 1ms
1665
- ✓  unit  src/tools/schemas/outputs/__tests__/utilityOutputs.test.ts > DiagnosticInfoOutputSchema > should validate complete diagnostic output with all null cases 3ms
1666
- ✓  unit  src/tools/schemas/outputs/__tests__/utilityOutputs.test.ts > DiagnosticInfoOutputSchema > should validate minimal diagnostic output with only timestamp 0ms
1667
- ✓  unit  src/tools/schemas/outputs/__tests__/utilityOutputs.test.ts > DiagnosticInfoOutputSchema > should validate diagnostic output with some optional sections 0ms
1668
- ✓  unit  src/tools/schemas/outputs/__tests__/transactionMutationSchemas.test.ts > Transaction Mutation Schema Type Safety > TransactionDryRunPreviewSchema > should accept valid transaction preview 9ms
1669
- ✓  unit  src/tools/schemas/outputs/__tests__/transactionMutationSchemas.test.ts > Transaction Mutation Schema Type Safety > TransactionDryRunPreviewSchema > should accept minimal transaction preview with required fields only 1ms
1670
- ✓  unit  src/tools/schemas/outputs/__tests__/transactionMutationSchemas.test.ts > Transaction Mutation Schema Type Safety > TransactionDryRunPreviewSchema > should reject invalid date format 2ms
1671
- ✓  unit  src/tools/schemas/outputs/__tests__/transactionMutationSchemas.test.ts > Transaction Mutation Schema Type Safety > TransactionDryRunPreviewSchema > should reject invalid cleared status 1ms
1672
- ✓  unit  src/tools/schemas/outputs/__tests__/transactionMutationSchemas.test.ts > Transaction Mutation Schema Type Safety > TransactionDryRunPreviewSchema > should reject transaction with server-generated fields 2ms
1673
- ✓  unit  src/tools/schemas/outputs/__tests__/transactionMutationSchemas.test.ts > Transaction Mutation Schema Type Safety > SubtransactionPreviewSchema > should accept valid subtransaction preview 2ms
1674
- ✓  unit  src/tools/schemas/outputs/__tests__/transactionMutationSchemas.test.ts > Transaction Mutation Schema Type Safety > SubtransactionPreviewSchema > should accept minimal subtransaction with amount only 1ms
1675
- ✓  unit  src/tools/schemas/outputs/__tests__/transactionMutationSchemas.test.ts > Transaction Mutation Schema Type Safety > SubtransactionPreviewSchema > should not include server-generated fields 1ms
1676
- ✓  unit  src/tools/schemas/outputs/__tests__/transactionMutationSchemas.test.ts > Transaction Mutation Schema Type Safety > CreateReceiptSplitTransactionOutputSchema - Dry Run Branch > should accept valid dry-run response with strongly-typed preview 4ms
1677
- ✓  unit  src/tools/schemas/outputs/__tests__/transactionMutationSchemas.test.ts > Transaction Mutation Schema Type Safety > CreateReceiptSplitTransactionOutputSchema - Dry Run Branch > should reject dry-run response with loose unknown types 2ms
1678
- ✓  unit  src/tools/schemas/outputs/__tests__/transactionMutationSchemas.test.ts > Transaction Mutation Schema Type Safety > CreateReceiptSplitTransactionOutputSchema - Dry Run Branch > should reject subtransactions with server-generated id fields 1ms
1679
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Error Handling Performance > should handle errors quickly without blocking
1680
- Rate limit check for token_5f854540: 0/200 requests, remaining: 200, limited: false
1681
-
1682
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Error Handling Performance > should handle errors quickly without blocking
1683
- Recorded request for token_5f854540: 1/200 requests
1684
-
1685
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Error Handling Performance > should handle errors quickly without blocking
1686
- Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
1687
- [INFO] ynab:clear_cache | SUCCESS | 1ms | rate_limit_remaining:199
1688
-
1689
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Error Handling Performance > should handle errors quickly without blocking
1690
- Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
1691
- Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
1692
- Recorded request for token_5f854540: 2/200 requests
1693
- Recorded request for token_5f854540: 3/200 requests
1694
-
1695
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Error Handling Performance > should handle errors quickly without blocking
1696
- Rate limit check for token_5f854540: 3/200 requests, remaining: 197, limited: false
1697
- [INFO] ynab:list_budgets | SUCCESS | 4ms | rate_limit_remaining:197
1698
- Rate limit check for token_5f854540: 3/200 requests, remaining: 197, limited: false
1699
- [INFO] ynab:list_budgets | SUCCESS | 4ms | rate_limit_remaining:197
1700
-
1701
- ✓  unit  src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Error Handling Performance > should handle errors quickly without blocking 304ms
1702
- ✓  unit  src/tools/reconciliation/__tests__/payeeNormalizer.test.ts > payeeNormalizer > normalizePayee > should convert to lowercase 32ms
1703
- ✓  unit  src/tools/reconciliation/__tests__/payeeNormalizer.test.ts > payeeNormalizer > normalizePayee > should remove all spaces 1ms
1704
- ✓  unit  src/tools/reconciliation/__tests__/payeeNormalizer.test.ts > payeeNormalizer > normalizePayee > should remove special characters 4ms
1705
- ✓  unit  src/tools/reconciliation/__tests__/payeeNormalizer.test.ts > payeeNormalizer > normalizePayee > should keep only alphanumeric characters 1ms
1706
- ✓  unit  src/tools/reconciliation/__tests__/payeeNormalizer.test.ts > payeeNormalizer > normalizePayee > should handle null and undefined 19ms
1707
- ✓  unit  src/tools/reconciliation/__tests__/payeeNormalizer.test.ts > payeeNormalizer > normalizePayee > should handle empty string 2ms
1708
- ✓  unit  src/tools/reconciliation/__tests__/payeeNormalizer.test.ts > payeeNormalizer > normalizePayee > should handle real-world examples 4ms
1709
- ✓  unit  src/tools/reconciliation/__tests__/payeeNormalizer.test.ts > payeeNormalizer > normalizedMatch > should match identical normalized strings 1ms
1710
- ✓  unit  src/tools/reconciliation/__tests__/payeeNormalizer.test.ts > payeeNormalizer > normalizedMatch > should match despite different special characters 1ms
1711
- ✓  unit  src/tools/reconciliation/__tests__/payeeNormalizer.test.ts > payeeNormalizer > normalizedMatch > should not match different strings 0ms
1712
- ✓  unit  src/tools/reconciliation/__tests__/payeeNormalizer.test.ts > payeeNormalizer > normalizedMatch > should handle null and undefined 0ms
1713
- ✓  unit  src/tools/reconciliation/__tests__/payeeNormalizer.test.ts > payeeNormalizer > normalizedMatch > should match empty strings 0ms
1714
- ✓  unit  src/tools/reconciliation/__tests__/payeeNormalizer.test.ts > payeeNormalizer > normalizedMatch > should match real-world examples 1ms
1715
- ✓  unit  src/tools/reconciliation/__tests__/payeeNormalizer.test.ts > payeeNormalizer > fuzzyMatch > should return 100 for identical strings 0ms
1716
- ✓  unit  src/tools/reconciliation/__tests__/payeeNormalizer.test.ts > payeeNormalizer > fuzzyMatch > should return high score for similar strings 2ms
1717
- ✓  unit  src/tools/reconciliation/__tests__/payeeNormalizer.test.ts > payeeNormalizer > fuzzyMatch > should return lower score for different strings 0ms
1718
- ✓  unit  src/tools/reconciliation/__tests__/payeeNormalizer.test.ts > payeeNormalizer > fuzzyMatch > should return 0 for completely different strings 0ms
1719
- ✓  unit  src/tools/reconciliation/__tests__/payeeNormalizer.test.ts > payeeNormalizer > fuzzyMatch > should handle null and undefined 0ms
1720
- ✓  unit  src/tools/reconciliation/__tests__/payeeNormalizer.test.ts > payeeNormalizer > fuzzyMatch > should calculate Levenshtein distance correctly 0ms
1721
- ✓  unit  src/tools/reconciliation/__tests__/payeeNormalizer.test.ts > payeeNormalizer > fuzzyMatch > should handle real-world payee variations 0ms
1722
- ✓  unit  src/tools/reconciliation/__tests__/payeeNormalizer.test.ts > payeeNormalizer > tokenBasedSimilarity > should return 100 for identical tokens 1ms
1723
- ✓  unit  src/tools/reconciliation/__tests__/payeeNormalizer.test.ts > payeeNormalizer > tokenBasedSimilarity > should return score for same tokens in different order 0ms
1724
- ✓  unit  src/tools/reconciliation/__tests__/payeeNormalizer.test.ts > payeeNormalizer > tokenBasedSimilarity > should return partial score for partial overlap 0ms
1725
- ✓  unit  src/tools/reconciliation/__tests__/payeeNormalizer.test.ts > payeeNormalizer > tokenBasedSimilarity > should return 0 for no overlap 0ms
1726
- ✓  unit  src/tools/reconciliation/__tests__/payeeNormalizer.test.ts > payeeNormalizer > tokenBasedSimilarity > should handle null and undefined 0ms
1727
- ✓  unit  src/tools/reconciliation/__tests__/payeeNormalizer.test.ts > payeeNormalizer > tokenBasedSimilarity > should split on alpha/numeric boundaries 0ms
1728
- ✓  unit  src/tools/reconciliation/__tests__/payeeNormalizer.test.ts > payeeNormalizer > tokenBasedSimilarity > should handle real-world examples 1ms
1729
- ✓  unit  src/tools/reconciliation/__tests__/payeeNormalizer.test.ts > payeeNormalizer > payeeSimilarity > should return 100 for exact normalized match 0ms
1730
- ✓  unit  src/tools/reconciliation/__tests__/payeeNormalizer.test.ts > payeeNormalizer > payeeSimilarity > should return best score from fuzzy or token matching 0ms
1731
- ✓  unit  src/tools/reconciliation/__tests__/payeeNormalizer.test.ts > payeeNormalizer > payeeSimilarity > should handle typos with fuzzy matching 0ms
1732
- ✓  unit  src/tools/reconciliation/__tests__/payeeNormalizer.test.ts > payeeNormalizer > payeeSimilarity > should return 0 for completely different payees 0ms
1733
- ✓  unit  src/tools/reconciliation/__tests__/payeeNormalizer.test.ts > payeeNormalizer > payeeSimilarity > should handle null and undefined 0ms
1734
- ✓  unit  src/tools/reconciliation/__tests__/payeeNormalizer.test.ts > payeeNormalizer > payeeSimilarity > real-world examples from design spec > should match Shell variations 0ms
1735
- ✓  unit  src/tools/reconciliation/__tests__/payeeNormalizer.test.ts > payeeNormalizer > payeeSimilarity > real-world examples from design spec > should match Amazon variations 0ms
1736
- ✓  unit  src/tools/reconciliation/__tests__/payeeNormalizer.test.ts > payeeNormalizer > payeeSimilarity > real-world examples from design spec > should match Netflix variations 0ms
1737
- ✓  unit  src/tools/reconciliation/__tests__/payeeNormalizer.test.ts > payeeNormalizer > payeeContains > should return true when payee contains substring 1ms
1738
- ✓  unit  src/tools/reconciliation/__tests__/payeeNormalizer.test.ts > payeeNormalizer > payeeContains > should be case insensitive 0ms
1739
- ✓  unit  src/tools/reconciliation/__tests__/payeeNormalizer.test.ts > payeeNormalizer > payeeContains > should ignore special characters 0ms
1740
- ✓  unit  src/tools/reconciliation/__tests__/payeeNormalizer.test.ts > payeeNormalizer > payeeContains > should return false when substring not found 0ms
1741
- ✓  unit  src/tools/reconciliation/__tests__/payeeNormalizer.test.ts > payeeNormalizer > payeeContains > should handle null and undefined 0ms
1742
- ✓  unit  src/tools/reconciliation/__tests__/payeeNormalizer.test.ts > payeeNormalizer > payeeContains > should match partial words 1ms
1743
- ✓  unit  src/tools/reconciliation/__tests__/payeeNormalizer.test.ts > payeeNormalizer > edge cases > should handle very long payee names 9ms
1744
- ✓  unit  src/tools/reconciliation/__tests__/payeeNormalizer.test.ts > payeeNormalizer > edge cases > should handle Unicode characters 1ms
1745
- ✓  unit  src/tools/reconciliation/__tests__/payeeNormalizer.test.ts > payeeNormalizer > edge cases > should handle numbers only 0ms
1746
- ✓  unit  src/tools/reconciliation/__tests__/payeeNormalizer.test.ts > payeeNormalizer > edge cases > should handle mixed case with numbers 0ms
1747
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Error Handling Performance > should recover from rate limiting gracefully
1748
- Rate limit check for token_5f854540: 0/200 requests, remaining: 200, limited: false
1749
-
1750
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Error Handling Performance > should recover from rate limiting gracefully
1751
- Recorded request for token_5f854540: 1/200 requests
1752
-
1753
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Error Handling Performance > should recover from rate limiting gracefully
1754
- Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
1755
- [INFO] ynab:clear_cache | SUCCESS | 1ms | rate_limit_remaining:199
1756
-
1757
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Error Handling Performance > should recover from rate limiting gracefully
1758
- Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
1759
-
1760
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Error Handling Performance > should recover from rate limiting gracefully
1761
- Recorded request for token_5f854540: 2/200 requests
1762
-
1763
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Error Handling Performance > should recover from rate limiting gracefully
1764
- Rate limit check for token_5f854540: 2/200 requests, remaining: 198, limited: false
1765
- [INFO] ynab:list_budgets | SUCCESS | 2ms | rate_limit_remaining:198
1766
-
1767
- ✓  unit  src/tools/schemas/outputs/__tests__/payeeOutputs.test.ts > PayeeSchema > should validate complete payee with all fields 7ms
1768
- ✓  unit  src/tools/schemas/outputs/__tests__/payeeOutputs.test.ts > PayeeSchema > should validate transfer payee with transfer_account_id 1ms
1769
- ✓  unit  src/tools/schemas/outputs/__tests__/payeeOutputs.test.ts > PayeeSchema > should validate minimal payee with only required fields 0ms
1770
- ✓  unit  src/tools/schemas/outputs/__tests__/payeeOutputs.test.ts > PayeeSchema > should validate deleted payee 1ms
1771
- ✓  unit  src/tools/schemas/outputs/__tests__/payeeOutputs.test.ts > PayeeSchema > should fail validation when missing required id field 1ms
1772
- ✓  unit  src/tools/schemas/outputs/__tests__/payeeOutputs.test.ts > PayeeSchema > should fail validation when missing required name field 1ms
1773
- ✓  unit  src/tools/schemas/outputs/__tests__/payeeOutputs.test.ts > PayeeSchema > should fail validation when missing required deleted field 0ms
1774
- ✓  unit  src/tools/schemas/outputs/__tests__/payeeOutputs.test.ts > PayeeSchema > should fail validation when deleted is not a boolean 0ms
1775
- ✓  unit  src/tools/schemas/outputs/__tests__/payeeOutputs.test.ts > ListPayeesOutputSchema > should validate output with multiple payees including transfers 5ms
1776
- ✓  unit  src/tools/schemas/outputs/__tests__/payeeOutputs.test.ts > ListPayeesOutputSchema > should validate output with single payee 1ms
1777
- ✓  unit  src/tools/schemas/outputs/__tests__/payeeOutputs.test.ts > ListPayeesOutputSchema > should validate output with empty payees array 1ms
1778
- ✓  unit  src/tools/schemas/outputs/__tests__/payeeOutputs.test.ts > ListPayeesOutputSchema > should validate output with deleted payees 0ms
1779
- ✓  unit  src/tools/schemas/outputs/__tests__/payeeOutputs.test.ts > ListPayeesOutputSchema > should fail validation when payees is not an array 1ms
1780
- ✓  unit  src/tools/schemas/outputs/__tests__/payeeOutputs.test.ts > ListPayeesOutputSchema > should fail validation when missing required payees field 0ms
1781
- ✓  unit  src/tools/schemas/outputs/__tests__/payeeOutputs.test.ts > ListPayeesOutputSchema > should fail validation when missing required total_count field 0ms
1782
- ✓  unit  src/tools/schemas/outputs/__tests__/payeeOutputs.test.ts > ListPayeesOutputSchema > should fail validation when total_count is not an integer 0ms
1783
- ✓  unit  src/tools/schemas/outputs/__tests__/payeeOutputs.test.ts > GetPayeeOutputSchema > should validate output with complete payee and cache metadata 2ms
1784
- ✓  unit  src/tools/schemas/outputs/__tests__/payeeOutputs.test.ts > GetPayeeOutputSchema > should validate output with transfer payee 0ms
1785
- ✓  unit  src/tools/schemas/outputs/__tests__/payeeOutputs.test.ts > GetPayeeOutputSchema > should validate output with deleted payee 0ms
1786
- ✓  unit  src/tools/schemas/outputs/__tests__/payeeOutputs.test.ts > GetPayeeOutputSchema > should fail validation when payee is not an object 1ms
1787
- ✓  unit  src/tools/schemas/outputs/__tests__/payeeOutputs.test.ts > GetPayeeOutputSchema > should fail validation when payee missing required fields 0ms
1788
- ✓  unit  src/tools/schemas/outputs/__tests__/payeeOutputs.test.ts > GetPayeeOutputSchema > should fail validation when missing required payee field 0ms
1789
- ✓  unit  src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Error Handling Performance > should recover from rate limiting gracefully 263ms
1790
- ✓  unit  src/tools/reconciliation/__tests__/scenarios/extremes.scenario.test.ts > scenario: zero, negative, and large statements > handles zero and negative statement balances with mixed unmatched items 27ms
1791
- ✓  unit  src/tools/__tests__/deltaSupport.test.ts > deltaSupport runtime validation > resolveDeltaFetcherArgs > should accept valid 2-argument form (ynabAPI, params) 4ms
1792
- ✓  unit  src/tools/__tests__/deltaSupport.test.ts > deltaSupport runtime validation > resolveDeltaFetcherArgs > should accept valid 3-argument form (ynabAPI, deltaFetcher, params) 1ms
1793
- ✓  unit  src/tools/__tests__/deltaSupport.test.ts > deltaSupport runtime validation > resolveDeltaFetcherArgs > should reject 2-argument form with DeltaFetcher instead of params 2ms
1794
- ✓  unit  src/tools/__tests__/deltaSupport.test.ts > deltaSupport runtime validation > resolveDeltaFetcherArgs > should reject 3-argument form with wrong types 1ms
1795
- ✓  unit  src/tools/__tests__/deltaSupport.test.ts > deltaSupport runtime validation > resolveDeltaFetcherArgs > should reject non-object params 1ms
1796
- ✓  unit  src/tools/__tests__/deltaSupport.test.ts > deltaSupport runtime validation > resolveDeltaWriteArgs > should accept valid 1-argument form (params) 1ms
1797
- ✓  unit  src/tools/__tests__/deltaSupport.test.ts > deltaSupport runtime validation > resolveDeltaWriteArgs > should accept valid 3-argument form (deltaCache, knowledgeStore, params) 0ms
1798
- ✓  unit  src/tools/__tests__/deltaSupport.test.ts > deltaSupport runtime validation > resolveDeltaWriteArgs > should reject 1-argument form with DeltaCache instead of params 1ms
1799
- ✓  unit  src/tools/__tests__/deltaSupport.test.ts > deltaSupport runtime validation > resolveDeltaWriteArgs > should reject 2-argument form (ambiguous) 1ms
1800
- ✓  unit  src/tools/__tests__/deltaSupport.test.ts > deltaSupport runtime validation > resolveDeltaWriteArgs > should reject 3-argument form with wrong types 1ms
1801
- ✓  unit  src/tools/__tests__/deltaSupport.test.ts > deltaSupport runtime validation > resolveDeltaWriteArgs > should reject non-object params 1ms
1802
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Validation Performance > should validate input parameters quickly
1803
- Rate limit check for token_5f854540: 0/200 requests, remaining: 200, limited: false
1804
-
1805
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Validation Performance > should validate input parameters quickly
1806
- Recorded request for token_5f854540: 1/200 requests
1807
-
1808
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Validation Performance > should validate input parameters quickly
1809
- Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
1810
- [INFO] ynab:clear_cache | SUCCESS | 1ms | rate_limit_remaining:199
1811
-
1812
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Validation Performance > should validate input parameters quickly
1813
- Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
1814
- Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
1815
- [ERROR] ynab:get_budget | FAILED | 1ms | rate_limit_remaining:199 | error:"Validation failed: Validation error: Budget ID is required at "budget_id""
1816
- Recorded request for token_5f854540: 2/200 requests
1817
-
1818
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Validation Performance > should validate input parameters quickly
1819
- Rate limit check for token_5f854540: 2/200 requests, remaining: 198, limited: false
1820
- [INFO] ynab:convert_amount | SUCCESS | 3ms | rate_limit_remaining:198
1821
-
1822
- ✓  unit  src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Validation Performance > should validate input parameters quickly 274ms
1823
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
1824
- Rate limit check for token_5f854540: 0/200 requests, remaining: 200, limited: false
1825
-
1826
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
1827
- Recorded request for token_5f854540: 1/200 requests
1828
-
1829
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
1830
- Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
1831
- [INFO] ynab:clear_cache | SUCCESS | 1ms | rate_limit_remaining:199
1832
-
1833
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
1834
- Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
1835
-
1836
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
1837
- Recorded request for token_5f854540: 2/200 requests
1838
-
1839
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
1840
- Rate limit check for token_5f854540: 2/200 requests, remaining: 198, limited: false
1841
- [INFO] ynab:get_user | SUCCESS | 1ms | rate_limit_remaining:198
1842
-
1843
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
1844
- Rate limit check for token_5f854540: 2/200 requests, remaining: 198, limited: false
1845
-
1846
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
1847
- Recorded request for token_5f854540: 3/200 requests
1848
-
1849
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
1850
- Rate limit check for token_5f854540: 3/200 requests, remaining: 197, limited: false
1851
- [INFO] ynab:get_user | SUCCESS | 1ms | rate_limit_remaining:197
1852
-
1853
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
1854
- Rate limit check for token_5f854540: 3/200 requests, remaining: 197, limited: false
1855
-
1856
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
1857
- Recorded request for token_5f854540: 4/200 requests
1858
-
1859
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
1860
- Rate limit check for token_5f854540: 4/200 requests, remaining: 196, limited: false
1861
- [INFO] ynab:get_user | SUCCESS | 0ms | rate_limit_remaining:196
1862
-
1863
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
1864
- Rate limit check for token_5f854540: 4/200 requests, remaining: 196, limited: false
1865
-
1866
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
1867
- Recorded request for token_5f854540: 5/200 requests
1868
-
1869
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
1870
- Rate limit check for token_5f854540: 5/200 requests, remaining: 195, limited: false
1871
- [INFO] ynab:get_user | SUCCESS | 1ms | rate_limit_remaining:195
1872
-
1873
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
1874
- Rate limit check for token_5f854540: 5/200 requests, remaining: 195, limited: false
1875
-
1876
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
1877
- Recorded request for token_5f854540: 6/200 requests
1878
-
1879
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
1880
- Rate limit check for token_5f854540: 6/200 requests, remaining: 194, limited: false
1881
- [INFO] ynab:get_user | SUCCESS | 0ms | rate_limit_remaining:194
1882
-
1883
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
1884
- Rate limit check for token_5f854540: 6/200 requests, remaining: 194, limited: false
1885
-
1886
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
1887
- Recorded request for token_5f854540: 7/200 requests
1888
-
1889
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
1890
- Rate limit check for token_5f854540: 7/200 requests, remaining: 193, limited: false
1891
- [INFO] ynab:get_user | SUCCESS | 1ms | rate_limit_remaining:193
1892
-
1893
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
1894
- Rate limit check for token_5f854540: 7/200 requests, remaining: 193, limited: false
1895
-
1896
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
1897
- Recorded request for token_5f854540: 8/200 requests
1898
-
1899
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
1900
- Rate limit check for token_5f854540: 8/200 requests, remaining: 192, limited: false
1901
- [INFO] ynab:get_user | SUCCESS | 0ms | rate_limit_remaining:192
1902
-
1903
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
1904
- Rate limit check for token_5f854540: 8/200 requests, remaining: 192, limited: false
1905
-
1906
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
1907
- Recorded request for token_5f854540: 9/200 requests
1908
-
1909
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
1910
- Rate limit check for token_5f854540: 9/200 requests, remaining: 191, limited: false
1911
- [INFO] ynab:get_user | SUCCESS | 1ms | rate_limit_remaining:191
1912
-
1913
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
1914
- Rate limit check for token_5f854540: 9/200 requests, remaining: 191, limited: false
1915
-
1916
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
1917
- Recorded request for token_5f854540: 10/200 requests
1918
-
1919
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
1920
- Rate limit check for token_5f854540: 10/200 requests, remaining: 190, limited: false
1921
- [INFO] ynab:get_user | SUCCESS | 0ms | rate_limit_remaining:190
1922
-
1923
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
1924
- Rate limit check for token_5f854540: 10/200 requests, remaining: 190, limited: false
1925
-
1926
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
1927
- Recorded request for token_5f854540: 11/200 requests
1928
-
1929
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
1930
- Rate limit check for token_5f854540: 11/200 requests, remaining: 189, limited: false
1931
- [INFO] ynab:get_user | SUCCESS | 1ms | rate_limit_remaining:189
1932
-
1933
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
1934
- Rate limit check for token_5f854540: 11/200 requests, remaining: 189, limited: false
1935
-
1936
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
1937
- Recorded request for token_5f854540: 12/200 requests
1938
-
1939
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
1940
- Rate limit check for token_5f854540: 12/200 requests, remaining: 188, limited: false
1941
- [INFO] ynab:get_user | SUCCESS | 0ms | rate_limit_remaining:188
1942
-
1943
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
1944
- Rate limit check for token_5f854540: 12/200 requests, remaining: 188, limited: false
1945
-
1946
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
1947
- Recorded request for token_5f854540: 13/200 requests
1948
-
1949
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
1950
- Rate limit check for token_5f854540: 13/200 requests, remaining: 187, limited: false
1951
- [INFO] ynab:get_user | SUCCESS | 1ms | rate_limit_remaining:187
1952
-
1953
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
1954
- Rate limit check for token_5f854540: 13/200 requests, remaining: 187, limited: false
1955
-
1956
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
1957
- Recorded request for token_5f854540: 14/200 requests
1958
-
1959
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
1960
- Rate limit check for token_5f854540: 14/200 requests, remaining: 186, limited: false
1961
- [INFO] ynab:get_user | SUCCESS | 0ms | rate_limit_remaining:186
1962
-
1963
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
1964
- Rate limit check for token_5f854540: 14/200 requests, remaining: 186, limited: false
1965
-
1966
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
1967
- Recorded request for token_5f854540: 15/200 requests
1968
-
1969
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
1970
- Rate limit check for token_5f854540: 15/200 requests, remaining: 185, limited: false
1971
- [INFO] ynab:get_user | SUCCESS | 0ms | rate_limit_remaining:185
1972
-
1973
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
1974
- Rate limit check for token_5f854540: 15/200 requests, remaining: 185, limited: false
1975
-
1976
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
1977
- Recorded request for token_5f854540: 16/200 requests
1978
-
1979
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
1980
- Rate limit check for token_5f854540: 16/200 requests, remaining: 184, limited: false
1981
- [INFO] ynab:get_user | SUCCESS | 1ms | rate_limit_remaining:184
1982
-
1983
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
1984
- Rate limit check for token_5f854540: 16/200 requests, remaining: 184, limited: false
1985
-
1986
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
1987
- Recorded request for token_5f854540: 17/200 requests
1988
-
1989
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
1990
- Rate limit check for token_5f854540: 17/200 requests, remaining: 183, limited: false
1991
- [INFO] ynab:get_user | SUCCESS | 0ms | rate_limit_remaining:183
1992
-
1993
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
1994
- Rate limit check for token_5f854540: 17/200 requests, remaining: 183, limited: false
1995
-
1996
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
1997
- Recorded request for token_5f854540: 18/200 requests
1998
-
1999
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2000
- Rate limit check for token_5f854540: 18/200 requests, remaining: 182, limited: false
2001
- [INFO] ynab:get_user | SUCCESS | 1ms | rate_limit_remaining:182
2002
-
2003
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2004
- Rate limit check for token_5f854540: 18/200 requests, remaining: 182, limited: false
2005
-
2006
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2007
- Recorded request for token_5f854540: 19/200 requests
2008
-
2009
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2010
- Rate limit check for token_5f854540: 19/200 requests, remaining: 181, limited: false
2011
- [INFO] ynab:get_user | SUCCESS | 0ms | rate_limit_remaining:181
2012
-
2013
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2014
- Rate limit check for token_5f854540: 19/200 requests, remaining: 181, limited: false
2015
-
2016
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2017
- Recorded request for token_5f854540: 20/200 requests
2018
-
2019
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2020
- Rate limit check for token_5f854540: 20/200 requests, remaining: 180, limited: false
2021
- [INFO] ynab:get_user | SUCCESS | 1ms | rate_limit_remaining:180
2022
-
2023
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2024
- Rate limit check for token_5f854540: 20/200 requests, remaining: 180, limited: false
2025
-
2026
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2027
- Recorded request for token_5f854540: 21/200 requests
2028
-
2029
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2030
- Rate limit check for token_5f854540: 21/200 requests, remaining: 179, limited: false
2031
- [INFO] ynab:get_user | SUCCESS | 0ms | rate_limit_remaining:179
2032
-
2033
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2034
- Rate limit check for token_5f854540: 21/200 requests, remaining: 179, limited: false
2035
-
2036
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2037
- Recorded request for token_5f854540: 22/200 requests
2038
-
2039
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2040
- Rate limit check for token_5f854540: 22/200 requests, remaining: 178, limited: false
2041
- [INFO] ynab:get_user | SUCCESS | 0ms | rate_limit_remaining:178
2042
-
2043
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2044
- Rate limit check for token_5f854540: 22/200 requests, remaining: 178, limited: false
2045
-
2046
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2047
- Recorded request for token_5f854540: 23/200 requests
2048
-
2049
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2050
- Rate limit check for token_5f854540: 23/200 requests, remaining: 177, limited: false
2051
- [INFO] ynab:get_user | SUCCESS | 0ms | rate_limit_remaining:177
2052
-
2053
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2054
- Rate limit check for token_5f854540: 23/200 requests, remaining: 177, limited: false
2055
-
2056
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2057
- Recorded request for token_5f854540: 24/200 requests
2058
-
2059
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2060
- Rate limit check for token_5f854540: 24/200 requests, remaining: 176, limited: false
2061
- [INFO] ynab:get_user | SUCCESS | 0ms | rate_limit_remaining:176
2062
-
2063
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2064
- Rate limit check for token_5f854540: 24/200 requests, remaining: 176, limited: false
2065
-
2066
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2067
- Recorded request for token_5f854540: 25/200 requests
2068
-
2069
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2070
- Rate limit check for token_5f854540: 25/200 requests, remaining: 175, limited: false
2071
- [INFO] ynab:get_user | SUCCESS | 1ms | rate_limit_remaining:175
2072
-
2073
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2074
- Rate limit check for token_5f854540: 25/200 requests, remaining: 175, limited: false
2075
-
2076
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2077
- Recorded request for token_5f854540: 26/200 requests
2078
-
2079
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2080
- Rate limit check for token_5f854540: 26/200 requests, remaining: 174, limited: false
2081
- [INFO] ynab:get_user | SUCCESS | 0ms | rate_limit_remaining:174
2082
-
2083
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2084
- Rate limit check for token_5f854540: 26/200 requests, remaining: 174, limited: false
2085
-
2086
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2087
- Recorded request for token_5f854540: 27/200 requests
2088
-
2089
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2090
- Rate limit check for token_5f854540: 27/200 requests, remaining: 173, limited: false
2091
- [INFO] ynab:get_user | SUCCESS | 1ms | rate_limit_remaining:173
2092
-
2093
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2094
- Rate limit check for token_5f854540: 27/200 requests, remaining: 173, limited: false
2095
-
2096
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2097
- Recorded request for token_5f854540: 28/200 requests
2098
-
2099
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2100
- Rate limit check for token_5f854540: 28/200 requests, remaining: 172, limited: false
2101
- [INFO] ynab:get_user | SUCCESS | 0ms | rate_limit_remaining:172
2102
-
2103
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2104
- Rate limit check for token_5f854540: 28/200 requests, remaining: 172, limited: false
2105
-
2106
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2107
- Recorded request for token_5f854540: 29/200 requests
2108
-
2109
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2110
- Rate limit check for token_5f854540: 29/200 requests, remaining: 171, limited: false
2111
- [INFO] ynab:get_user | SUCCESS | 0ms | rate_limit_remaining:171
2112
-
2113
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2114
- Rate limit check for token_5f854540: 29/200 requests, remaining: 171, limited: false
2115
-
2116
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2117
- Recorded request for token_5f854540: 30/200 requests
2118
-
2119
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2120
- Rate limit check for token_5f854540: 30/200 requests, remaining: 170, limited: false
2121
- [INFO] ynab:get_user | SUCCESS | 0ms | rate_limit_remaining:170
2122
-
2123
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2124
- Rate limit check for token_5f854540: 30/200 requests, remaining: 170, limited: false
2125
-
2126
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2127
- Recorded request for token_5f854540: 31/200 requests
2128
-
2129
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2130
- Rate limit check for token_5f854540: 31/200 requests, remaining: 169, limited: false
2131
- [INFO] ynab:get_user | SUCCESS | 0ms | rate_limit_remaining:169
2132
-
2133
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2134
- Rate limit check for token_5f854540: 31/200 requests, remaining: 169, limited: false
2135
-
2136
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2137
- Recorded request for token_5f854540: 32/200 requests
2138
-
2139
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2140
- Rate limit check for token_5f854540: 32/200 requests, remaining: 168, limited: false
2141
- [INFO] ynab:get_user | SUCCESS | 0ms | rate_limit_remaining:168
2142
-
2143
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2144
- Rate limit check for token_5f854540: 32/200 requests, remaining: 168, limited: false
2145
-
2146
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2147
- Recorded request for token_5f854540: 33/200 requests
2148
-
2149
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2150
- Rate limit check for token_5f854540: 33/200 requests, remaining: 167, limited: false
2151
- [INFO] ynab:get_user | SUCCESS | 0ms | rate_limit_remaining:167
2152
-
2153
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2154
- Rate limit check for token_5f854540: 33/200 requests, remaining: 167, limited: false
2155
-
2156
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2157
- Recorded request for token_5f854540: 34/200 requests
2158
-
2159
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2160
- Rate limit check for token_5f854540: 34/200 requests, remaining: 166, limited: false
2161
- [INFO] ynab:get_user | SUCCESS | 0ms | rate_limit_remaining:166
2162
-
2163
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2164
- Rate limit check for token_5f854540: 34/200 requests, remaining: 166, limited: false
2165
-
2166
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2167
- Recorded request for token_5f854540: 35/200 requests
2168
-
2169
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2170
- Rate limit check for token_5f854540: 35/200 requests, remaining: 165, limited: false
2171
- [INFO] ynab:get_user | SUCCESS | 0ms | rate_limit_remaining:165
2172
-
2173
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2174
- Rate limit check for token_5f854540: 35/200 requests, remaining: 165, limited: false
2175
-
2176
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2177
- Recorded request for token_5f854540: 36/200 requests
2178
-
2179
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2180
- Rate limit check for token_5f854540: 36/200 requests, remaining: 164, limited: false
2181
- [INFO] ynab:get_user | SUCCESS | 1ms | rate_limit_remaining:164
2182
-
2183
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2184
- Rate limit check for token_5f854540: 36/200 requests, remaining: 164, limited: false
2185
-
2186
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2187
- Recorded request for token_5f854540: 37/200 requests
2188
-
2189
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2190
- Rate limit check for token_5f854540: 37/200 requests, remaining: 163, limited: false
2191
- [INFO] ynab:get_user | SUCCESS | 0ms | rate_limit_remaining:163
2192
-
2193
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2194
- Rate limit check for token_5f854540: 37/200 requests, remaining: 163, limited: false
2195
-
2196
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2197
- Recorded request for token_5f854540: 38/200 requests
2198
-
2199
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2200
- Rate limit check for token_5f854540: 38/200 requests, remaining: 162, limited: false
2201
- [INFO] ynab:get_user | SUCCESS | 0ms | rate_limit_remaining:162
2202
-
2203
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2204
- Rate limit check for token_5f854540: 38/200 requests, remaining: 162, limited: false
2205
-
2206
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2207
- Recorded request for token_5f854540: 39/200 requests
2208
-
2209
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2210
- Rate limit check for token_5f854540: 39/200 requests, remaining: 161, limited: false
2211
- [INFO] ynab:get_user | SUCCESS | 1ms | rate_limit_remaining:161
2212
-
2213
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2214
- Rate limit check for token_5f854540: 39/200 requests, remaining: 161, limited: false
2215
-
2216
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2217
- Recorded request for token_5f854540: 40/200 requests
2218
-
2219
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2220
- Rate limit check for token_5f854540: 40/200 requests, remaining: 160, limited: false
2221
- [INFO] ynab:get_user | SUCCESS | 0ms | rate_limit_remaining:160
2222
-
2223
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2224
- Rate limit check for token_5f854540: 40/200 requests, remaining: 160, limited: false
2225
-
2226
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2227
- Recorded request for token_5f854540: 41/200 requests
2228
-
2229
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2230
- Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
2231
- [INFO] ynab:get_user | SUCCESS | 1ms | rate_limit_remaining:159
2232
-
2233
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2234
- Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
2235
-
2236
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2237
- Recorded request for token_5f854540: 42/200 requests
2238
-
2239
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2240
- Rate limit check for token_5f854540: 42/200 requests, remaining: 158, limited: false
2241
- [INFO] ynab:get_user | SUCCESS | 0ms | rate_limit_remaining:158
2242
-
2243
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2244
- Rate limit check for token_5f854540: 42/200 requests, remaining: 158, limited: false
2245
-
2246
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2247
- Recorded request for token_5f854540: 43/200 requests
2248
-
2249
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2250
- Rate limit check for token_5f854540: 43/200 requests, remaining: 157, limited: false
2251
- [INFO] ynab:get_user | SUCCESS | 0ms | rate_limit_remaining:157
2252
-
2253
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2254
- Rate limit check for token_5f854540: 43/200 requests, remaining: 157, limited: false
2255
-
2256
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2257
- Recorded request for token_5f854540: 44/200 requests
2258
-
2259
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2260
- Rate limit check for token_5f854540: 44/200 requests, remaining: 156, limited: false
2261
- [INFO] ynab:get_user | SUCCESS | 0ms | rate_limit_remaining:156
2262
-
2263
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2264
- Rate limit check for token_5f854540: 44/200 requests, remaining: 156, limited: false
2265
-
2266
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2267
- Recorded request for token_5f854540: 45/200 requests
2268
-
2269
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2270
- Rate limit check for token_5f854540: 45/200 requests, remaining: 155, limited: false
2271
- [INFO] ynab:get_user | SUCCESS | 0ms | rate_limit_remaining:155
2272
-
2273
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2274
- Rate limit check for token_5f854540: 45/200 requests, remaining: 155, limited: false
2275
-
2276
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2277
- Recorded request for token_5f854540: 46/200 requests
2278
-
2279
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2280
- Rate limit check for token_5f854540: 46/200 requests, remaining: 154, limited: false
2281
- [INFO] ynab:get_user | SUCCESS | 1ms | rate_limit_remaining:154
2282
-
2283
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2284
- Rate limit check for token_5f854540: 46/200 requests, remaining: 154, limited: false
2285
-
2286
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2287
- Recorded request for token_5f854540: 47/200 requests
2288
-
2289
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2290
- Rate limit check for token_5f854540: 47/200 requests, remaining: 153, limited: false
2291
- [INFO] ynab:get_user | SUCCESS | 1ms | rate_limit_remaining:153
2292
-
2293
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2294
- Rate limit check for token_5f854540: 47/200 requests, remaining: 153, limited: false
2295
-
2296
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2297
- Recorded request for token_5f854540: 48/200 requests
2298
-
2299
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2300
- Rate limit check for token_5f854540: 48/200 requests, remaining: 152, limited: false
2301
- [INFO] ynab:get_user | SUCCESS | 0ms | rate_limit_remaining:152
2302
-
2303
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2304
- Rate limit check for token_5f854540: 48/200 requests, remaining: 152, limited: false
2305
-
2306
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2307
- Recorded request for token_5f854540: 49/200 requests
2308
-
2309
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2310
- Rate limit check for token_5f854540: 49/200 requests, remaining: 151, limited: false
2311
- [INFO] ynab:get_user | SUCCESS | 1ms | rate_limit_remaining:151
2312
-
2313
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2314
- Rate limit check for token_5f854540: 49/200 requests, remaining: 151, limited: false
2315
-
2316
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2317
- Recorded request for token_5f854540: 50/200 requests
2318
-
2319
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2320
- Rate limit check for token_5f854540: 50/200 requests, remaining: 150, limited: false
2321
- [INFO] ynab:get_user | SUCCESS | 0ms | rate_limit_remaining:150
2322
-
2323
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2324
- Rate limit check for token_5f854540: 50/200 requests, remaining: 150, limited: false
2325
-
2326
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2327
- Recorded request for token_5f854540: 51/200 requests
2328
-
2329
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests
2330
- Rate limit check for token_5f854540: 51/200 requests, remaining: 149, limited: false
2331
- [INFO] ynab:get_user | SUCCESS | 0ms | rate_limit_remaining:149
2332
-
2333
- ✓  unit  src/tools/reconciliation/__tests__/reportFormatter.test.ts > reportFormatter > formatHumanReadableReport > should format a basic report with header and sections 8ms
2334
- ✓  unit  src/tools/reconciliation/__tests__/reportFormatter.test.ts > reportFormatter > formatHumanReadableReport > should show statement date range 1ms
2335
- ✓  unit  src/tools/reconciliation/__tests__/reportFormatter.test.ts > reportFormatter > formatHumanReadableReport > should show balanced status when no discrepancy 1ms
2336
- ✓  unit  src/tools/reconciliation/__tests__/reportFormatter.test.ts > reportFormatter > formatHumanReadableReport > should show discrepancy with correct direction when YNAB higher 1ms
2337
- ✓  unit  src/tools/reconciliation/__tests__/reportFormatter.test.ts > reportFormatter > formatHumanReadableReport > should show discrepancy with correct direction when bank higher 1ms
2338
- ✓  unit  src/tools/reconciliation/__tests__/reportFormatter.test.ts > reportFormatter > formatHumanReadableReport > should show transaction analysis counts 1ms
2339
- ✓  unit  src/tools/reconciliation/__tests__/reportFormatter.test.ts > reportFormatter > formatHumanReadableReport > should list unmatched bank transactions 2ms
2340
- ✓  unit  src/tools/reconciliation/__tests__/reportFormatter.test.ts > reportFormatter > formatHumanReadableReport > should truncate long unmatched lists 1ms
2341
- ✓  unit  src/tools/reconciliation/__tests__/reportFormatter.test.ts > reportFormatter > formatHumanReadableReport > should show suggested matches 1ms
2342
- ✓  unit  src/tools/reconciliation/__tests__/reportFormatter.test.ts > reportFormatter > formatHumanReadableReport > should include insights section when insights present 1ms
2343
- ✓  unit  src/tools/reconciliation/__tests__/reportFormatter.test.ts > reportFormatter > formatHumanReadableReport > should use correct severity icons 0ms
2344
- ✓  unit  src/tools/reconciliation/__tests__/reportFormatter.test.ts > reportFormatter > formatHumanReadableReport > should truncate insights list 1ms
2345
- ✓  unit  src/tools/reconciliation/__tests__/reportFormatter.test.ts > reportFormatter > formatHumanReadableReport > should include execution section when execution provided 1ms
2346
- ✓  unit  src/tools/reconciliation/__tests__/reportFormatter.test.ts > reportFormatter > formatHumanReadableReport > should show dry run notice when dry run enabled 3ms
2347
- ✓  unit  src/tools/reconciliation/__tests__/reportFormatter.test.ts > reportFormatter > formatHumanReadableReport > should show execution recommendations 0ms
2348
- ✓  unit  src/tools/reconciliation/__tests__/reportFormatter.test.ts > reportFormatter > formatHumanReadableReport > should show next steps when no execution 0ms
2349
- ✓  unit  src/tools/reconciliation/__tests__/reportFormatter.test.ts > reportFormatter > formatHumanReadableReport > should handle empty next steps gracefully 0ms
2350
- ✓  unit  src/tools/reconciliation/__tests__/reportFormatter.test.ts > reportFormatter > formatHumanReadableReport > should use default account name when not provided 0ms
2351
- ✓  unit  src/tools/reconciliation/__tests__/reportFormatter.test.ts > reportFormatter > formatBalanceInfo > should format balance info correctly 1ms
2352
- ✓  unit  src/tools/reconciliation/__tests__/reportFormatter.test.ts > reportFormatter > formatTransactionList > should format bank transactions 1ms
2353
- ✓  unit  src/tools/reconciliation/__tests__/reportFormatter.test.ts > reportFormatter > formatTransactionList > should format YNAB transactions 1ms
2354
- ✓  unit  src/tools/reconciliation/__tests__/reportFormatter.test.ts > reportFormatter > formatTransactionList > should truncate long lists 1ms
2355
- ✓  unit  src/tools/reconciliation/__tests__/reportFormatter.test.ts > reportFormatter > formatTransactionList > should handle empty list 1ms
2356
- ✓  unit  src/tools/reconciliation/__tests__/reportFormatter.test.ts > reportFormatter > edge cases > should handle negative amounts correctly 19ms
2357
- ✓  unit  src/tools/reconciliation/__tests__/reportFormatter.test.ts > reportFormatter > edge cases > should handle positive amounts correctly 0ms
2358
- ✓  unit  src/tools/reconciliation/__tests__/reportFormatter.test.ts > reportFormatter > edge cases > should handle long payee names gracefully 0ms
2359
- ✓  unit  src/tools/reconciliation/__tests__/reportFormatter.test.ts > reportFormatter > edge cases > should handle zero discrepancy 0ms
2360
- ✓  unit  src/tools/reconciliation/__tests__/reportFormatter.test.ts > reportFormatter > edge cases > should format insight evidence when available 0ms
2361
- ✓  unit  src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should handle rapid sequential requests 307ms
2362
- ✓  unit  src/types/__tests__/index.test.ts > Error Classes > AuthenticationError > should create error with correct name and message 4ms
2363
- ✓  unit  src/types/__tests__/index.test.ts > Error Classes > AuthenticationError > should be throwable and catchable 2ms
2364
- ✓  unit  src/types/__tests__/index.test.ts > Error Classes > ConfigurationError > should create error with correct name and message 1ms
2365
- ✓  unit  src/types/__tests__/index.test.ts > Error Classes > ConfigurationError > should be throwable and catchable 1ms
2366
- ✓  unit  src/tools/__tests__/compareTransactions.window.test.ts > compareTransactions statement window filtering > inWindow function > excludes transactions outside statement window 4ms
2367
- ✓  unit  src/tools/__tests__/compareTransactions.window.test.ts > compareTransactions statement window filtering > inWindow function > handles partial window bounds 5ms
2368
- ✓  unit  src/tools/__tests__/compareTransactions.window.test.ts > compareTransactions statement window filtering > inWindow function > filters candidates before matching logic 2ms
2369
- ✓  unit  src/tools/__tests__/compareTransactions.window.test.ts > compareTransactions statement window filtering > statement window clamping > clamps bank and YNAB candidates to statement window 1ms
2370
- ✓  unit  src/tools/__tests__/compareTransactions.window.test.ts > compareTransactions statement window filtering > statement window clamping > matches use filtered transactions not original counts 1ms
2371
- ✓  unit  src/tools/__tests__/compareTransactions.window.test.ts > compareTransactions statement window filtering > integration with modular compareTransactions > should apply window filtering in the main handler 0ms
2372
- ✓  unit  src/tools/__tests__/compareTransactions.window.test.ts > compareTransactions statement window filtering > integration with modular compareTransactions > should filter transactions before matching in modular structure 1ms
2373
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should maintain performance under mixed workload
2374
- Rate limit check for token_5f854540: 0/200 requests, remaining: 200, limited: false
2375
-
2376
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should maintain performance under mixed workload
2377
- Recorded request for token_5f854540: 1/200 requests
2378
-
2379
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should maintain performance under mixed workload
2380
- Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
2381
- [INFO] ynab:clear_cache | SUCCESS | 1ms | rate_limit_remaining:199
2382
-
2383
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should maintain performance under mixed workload
2384
- Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
2385
- Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
2386
- Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
2387
- Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
2388
- Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
2389
- Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
2390
- Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
2391
- Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
2392
- Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
2393
- Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
2394
- Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
2395
- Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
2396
- Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
2397
- Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
2398
- Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
2399
- Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
2400
- Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
2401
- Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
2402
- Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
2403
- Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
2404
- Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
2405
- Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
2406
- Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
2407
- Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
2408
- Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
2409
- Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
2410
- Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
2411
- Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
2412
- Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
2413
- Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
2414
- Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
2415
- Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
2416
- Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
2417
- Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
2418
- Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
2419
- Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
2420
- Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
2421
- Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
2422
- Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
2423
- Rate limit check for token_5f854540: 1/200 requests, remaining: 199, limited: false
2424
- Recorded request for token_5f854540: 2/200 requests
2425
- Recorded request for token_5f854540: 3/200 requests
2426
- Recorded request for token_5f854540: 4/200 requests
2427
- Recorded request for token_5f854540: 5/200 requests
2428
- Recorded request for token_5f854540: 6/200 requests
2429
- Recorded request for token_5f854540: 7/200 requests
2430
- Recorded request for token_5f854540: 8/200 requests
2431
- Recorded request for token_5f854540: 9/200 requests
2432
- Recorded request for token_5f854540: 10/200 requests
2433
- Recorded request for token_5f854540: 11/200 requests
2434
- Recorded request for token_5f854540: 12/200 requests
2435
- Recorded request for token_5f854540: 13/200 requests
2436
- Recorded request for token_5f854540: 14/200 requests
2437
- Recorded request for token_5f854540: 15/200 requests
2438
- Recorded request for token_5f854540: 16/200 requests
2439
- Recorded request for token_5f854540: 17/200 requests
2440
- Recorded request for token_5f854540: 18/200 requests
2441
- Recorded request for token_5f854540: 19/200 requests
2442
- Recorded request for token_5f854540: 20/200 requests
2443
- Recorded request for token_5f854540: 21/200 requests
2444
- Recorded request for token_5f854540: 22/200 requests
2445
- Recorded request for token_5f854540: 23/200 requests
2446
- Recorded request for token_5f854540: 24/200 requests
2447
- Recorded request for token_5f854540: 25/200 requests
2448
- Recorded request for token_5f854540: 26/200 requests
2449
- Recorded request for token_5f854540: 27/200 requests
2450
- Recorded request for token_5f854540: 28/200 requests
2451
- Recorded request for token_5f854540: 29/200 requests
2452
- Recorded request for token_5f854540: 30/200 requests
2453
- Recorded request for token_5f854540: 31/200 requests
2454
- Recorded request for token_5f854540: 32/200 requests
2455
- Recorded request for token_5f854540: 33/200 requests
2456
- Recorded request for token_5f854540: 34/200 requests
2457
- Recorded request for token_5f854540: 35/200 requests
2458
- Recorded request for token_5f854540: 36/200 requests
2459
- Recorded request for token_5f854540: 37/200 requests
2460
- Recorded request for token_5f854540: 38/200 requests
2461
- Recorded request for token_5f854540: 39/200 requests
2462
- Recorded request for token_5f854540: 40/200 requests
2463
- Recorded request for token_5f854540: 41/200 requests
2464
-
2465
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should maintain performance under mixed workload
2466
- Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
2467
- [INFO] ynab:convert_amount | SUCCESS | 11ms | rate_limit_remaining:159
2468
- Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
2469
- [INFO] ynab:convert_amount | SUCCESS | 10ms | rate_limit_remaining:159
2470
- Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
2471
- [INFO] ynab:convert_amount | SUCCESS | 10ms | rate_limit_remaining:159
2472
- Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
2473
- [INFO] ynab:convert_amount | SUCCESS | 10ms | rate_limit_remaining:159
2474
- Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
2475
- [INFO] ynab:convert_amount | SUCCESS | 10ms | rate_limit_remaining:159
2476
- Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
2477
- [INFO] ynab:convert_amount | SUCCESS | 10ms | rate_limit_remaining:159
2478
- Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
2479
- [INFO] ynab:convert_amount | SUCCESS | 10ms | rate_limit_remaining:159
2480
- Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
2481
- [INFO] ynab:convert_amount | SUCCESS | 10ms | rate_limit_remaining:159
2482
- Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
2483
- [INFO] ynab:convert_amount | SUCCESS | 9ms | rate_limit_remaining:159
2484
- Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
2485
- [INFO] ynab:convert_amount | SUCCESS | 9ms | rate_limit_remaining:159
2486
- Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
2487
- [INFO] ynab:convert_amount | SUCCESS | 9ms | rate_limit_remaining:159
2488
- Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
2489
- [INFO] ynab:convert_amount | SUCCESS | 9ms | rate_limit_remaining:159
2490
- Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
2491
- [INFO] ynab:convert_amount | SUCCESS | 9ms | rate_limit_remaining:159
2492
- Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
2493
- [INFO] ynab:convert_amount | SUCCESS | 8ms | rate_limit_remaining:159
2494
- Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
2495
- [INFO] ynab:convert_amount | SUCCESS | 8ms | rate_limit_remaining:159
2496
- Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
2497
- [INFO] ynab:convert_amount | SUCCESS | 8ms | rate_limit_remaining:159
2498
- Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
2499
- [INFO] ynab:convert_amount | SUCCESS | 8ms | rate_limit_remaining:159
2500
- Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
2501
- [INFO] ynab:convert_amount | SUCCESS | 8ms | rate_limit_remaining:159
2502
- Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
2503
- [INFO] ynab:convert_amount | SUCCESS | 8ms | rate_limit_remaining:159
2504
- Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
2505
- [INFO] ynab:convert_amount | SUCCESS | 7ms | rate_limit_remaining:159
2506
-
2507
- stderr | src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should maintain performance under mixed workload
2508
- Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
2509
- [INFO] ynab:list_budgets | SUCCESS | 14ms | rate_limit_remaining:159
2510
- Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
2511
- [INFO] ynab:list_budgets | SUCCESS | 14ms | rate_limit_remaining:159
2512
- Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
2513
- [INFO] ynab:list_budgets | SUCCESS | 13ms | rate_limit_remaining:159
2514
- Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
2515
- [INFO] ynab:list_budgets | SUCCESS | 13ms | rate_limit_remaining:159
2516
- Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
2517
- [INFO] ynab:list_budgets | SUCCESS | 13ms | rate_limit_remaining:159
2518
- Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
2519
- [INFO] ynab:list_budgets | SUCCESS | 12ms | rate_limit_remaining:159
2520
- Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
2521
- [INFO] ynab:list_budgets | SUCCESS | 12ms | rate_limit_remaining:159
2522
- Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
2523
- [INFO] ynab:list_budgets | SUCCESS | 12ms | rate_limit_remaining:159
2524
- Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
2525
- [INFO] ynab:list_budgets | SUCCESS | 13ms | rate_limit_remaining:159
2526
- Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
2527
- [INFO] ynab:list_budgets | SUCCESS | 12ms | rate_limit_remaining:159
2528
- Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
2529
- [INFO] ynab:list_budgets | SUCCESS | 12ms | rate_limit_remaining:159
2530
- Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
2531
- [INFO] ynab:list_budgets | SUCCESS | 12ms | rate_limit_remaining:159
2532
- Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
2533
- [INFO] ynab:list_budgets | SUCCESS | 12ms | rate_limit_remaining:159
2534
- Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
2535
- [INFO] ynab:list_budgets | SUCCESS | 12ms | rate_limit_remaining:159
2536
- Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
2537
- [INFO] ynab:list_budgets | SUCCESS | 11ms | rate_limit_remaining:159
2538
- Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
2539
- [INFO] ynab:list_budgets | SUCCESS | 11ms | rate_limit_remaining:159
2540
- Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
2541
- [INFO] ynab:list_budgets | SUCCESS | 11ms | rate_limit_remaining:159
2542
- Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
2543
- [INFO] ynab:list_budgets | SUCCESS | 11ms | rate_limit_remaining:159
2544
- Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
2545
- [INFO] ynab:list_budgets | SUCCESS | 11ms | rate_limit_remaining:159
2546
- Rate limit check for token_5f854540: 41/200 requests, remaining: 159, limited: false
2547
- [INFO] ynab:list_budgets | SUCCESS | 11ms | rate_limit_remaining:159
2548
-
2549
- ✓  unit  src/__tests__/performance.test.ts > YNAB MCP Server - Performance Tests > Stress Testing > should maintain performance under mixed workload 289ms
2550
- ✓  unit  src/tools/reconciliation/__tests__/scenarios/adapterCurrency.scenario.test.ts > scenario: non-USD formatting in adapter payload > emits CAD currency values and csv_format metadata when provided 12ms
2551
- ✓  unit  src/tools/reconciliation/__tests__/schemaUrl.test.ts > buildReconciliationPayload schema reference > points to the master branch schema file on raw.githubusercontent.com 6ms
2552
- ↓  unit  src/__tests__/delta.performance.test.ts > Delta performance characteristics > reuses cache and avoids repeated full refreshes
2553
- ✓  unit  src/utils/__tests__/dateUtils.test.ts > dateUtils > formatYNABMonth > should format date as YYYY-MM-01 7ms
2554
- ✓  unit  src/utils/__tests__/dateUtils.test.ts > dateUtils > formatYNABMonth > should handle December correctly 1ms
2555
- ✓  unit  src/utils/__tests__/dateUtils.test.ts > dateUtils > formatISODate > should format date as YYYY-MM-DD 14ms
2556
- ✓  unit  src/utils/__tests__/dateUtils.test.ts > dateUtils > getCurrentMonth > should return current month in YYYY-MM-01 format 1ms
2557
- ✓  unit  src/utils/__tests__/dateUtils.test.ts > dateUtils > getToday > should return today in YYYY-MM-DD format 1ms
2558
- ✓  unit  src/utils/__tests__/dateUtils.test.ts > dateUtils > getHistoricalMonths > should generate correct number of historical months 3ms
2559
- ✓  unit  src/utils/__tests__/dateUtils.test.ts > dateUtils > getHistoricalMonths > should handle year boundary correctly 1ms
2560
- ✓  unit  src/utils/__tests__/dateUtils.test.ts > dateUtils > getHistoricalMonths > should use current date when no base date provided 1ms
2561
- ✓  unit  src/utils/__tests__/dateUtils.test.ts > dateUtils > getHistoricalMonths > should generate 6 months correctly (bug test case) 3ms
2562
- ✓  unit  src/utils/__tests__/dateUtils.test.ts > dateUtils > subtractMonths > should subtract months correctly 1ms
2563
- ✓  unit  src/utils/__tests__/dateUtils.test.ts > dateUtils > subtractMonths > should handle year boundary 0ms
2564
- ✓  unit  src/utils/__tests__/dateUtils.test.ts > dateUtils > isValidISODate > should validate correct ISO dates 3ms
2565
- ✓  unit  src/utils/__tests__/dateUtils.test.ts > dateUtils > isValidISODate > should reject invalid formats 0ms
2566
- ✓  unit  src/utils/__tests__/dateUtils.test.ts > dateUtils > isValidISODate > should reject invalid dates with correct format 1ms
2567
- ✓  unit  src/utils/__tests__/dateUtils.test.ts > dateUtils > isValidYNABMonth > should validate correct YNAB month format 1ms
2568
- ✓  unit  src/utils/__tests__/dateUtils.test.ts > dateUtils > isValidYNABMonth > should reject invalid formats 0ms
2569
- ✓  unit  src/utils/__tests__/dateUtils.test.ts > dateUtils > isValidYNABMonth > should reject invalid months with correct format 0ms
2570
- ✓  unit  src/utils/__tests__/dateUtils.test.ts > dateUtils > yearMonthToYNABMonth > should convert YYYY-MM to YYYY-MM-01 0ms
2571
- ✓  unit  src/utils/__tests__/dateUtils.test.ts > dateUtils > yearMonthToYNABMonth > should throw error for invalid format 2ms
2572
- ✓  unit  src/tools/__tests__/exportTransactions.test.ts > exportTransactions > ExportTransactionsSchema > should default minimal to true when not provided 5ms
2573
- ✓  unit  src/tools/__tests__/exportTransactions.test.ts > exportTransactions > ExportTransactionsSchema > should preserve minimal: false when explicitly set 1ms
2574
- ✓  unit  src/tools/__tests__/exportTransactions.test.ts > exportTransactions > ExportTransactionsSchema > should preserve minimal: true when explicitly set 1ms
2575
- ✓  unit  src/tools/__tests__/exportTransactions.test.ts > exportTransactions > handleExportTransactions > should export minimal fields by default 7ms
2576
- ✓  unit  src/tools/__tests__/exportTransactions.test.ts > exportTransactions > handleExportTransactions > should export all fields when minimal is false 1ms
2577
- ✓  unit  src/tools/__tests__/exportTransactions.test.ts > exportTransactions > handleExportTransactions > should include "minimal" in filename by default 1ms
2578
- ✓  unit  src/tools/__tests__/exportTransactions.test.ts > exportTransactions > handleExportTransactions > should not include "minimal" in filename when minimal is false 1ms
2579
-
2580
-  Test Files  59 passed | 1 skipped (60)
2581
-  Tests  1332 passed | 14 skipped (1346)
2582
-  Start at  20:41:10
2583
-  Duration  11.56s (transform 4.74s, setup 0ms, collect 41.55s, tests 7.42s, environment 33ms, prepare 19.53s)
2584
-
2585
-
2586
- 📊 Test results written to test-results/
2587
- - summary.json (overview)
2588
- - *-tests.json (1 project file(s))
2589
- - passed-tests-summary.json
2590
- - index.html (interactive report)
2591
-
2592
- 💡 test-results.json contains a pointer to the detailed results
2593
-  HTML  Report is generated
2594
-  You can run npx vite preview --outDir test-results to see the test results.
2595
-
2596
- > @dizzlkheinz/ynab-mcpb@0.13.4 test:integration:core
2597
- > vitest run --project integration:core
2598
-
2599
-
2600
-  RUN  v3.2.4 C:/Users/ksutk/projects/ynab-mcpb
2601
-
2602
- stderr | src/server/__tests__/security.integration.test.ts > Security Integration > end-to-end security flow > should sanitize sensitive data in logs
2603
- [INFO] ynab:create_transaction:creating transaction | SUCCESS | 0ms | rate_limit_remaining:2
2604
-
2605
- stderr | src/server/__tests__/security.integration.test.ts > Security Integration > end-to-end security flow > should handle multiple users with independent rate limits
2606
- [INFO] ynab:test:test | SUCCESS | 1ms | rate_limit_remaining:2
2607
-
2608
- stderr | src/server/__tests__/security.integration.test.ts > Security Integration > end-to-end security flow > should handle multiple users with independent rate limits
2609
- [INFO] ynab:test:test | SUCCESS | 0ms | rate_limit_remaining:1
2610
-
2611
- stderr | src/server/__tests__/security.integration.test.ts > Security Integration > end-to-end security flow > should handle multiple users with independent rate limits
2612
- [INFO] ynab:test:test | SUCCESS | 0ms | rate_limit_remaining:0
2613
- [WARN] Rate limit exceeded for ynab:test
2614
-
2615
- stderr | src/server/__tests__/security.integration.test.ts > Security Integration > end-to-end security flow > should handle multiple users with independent rate limits
2616
- [ERROR] ynab:test:test | FAILED | 1ms | rate_limit_remaining:0 | error:"Rate limit exceeded. Please wait before making additional requests."
2617
- [WARN] Rate limit exceeded for ynab:test
2618
-
2619
- stderr | src/server/__tests__/security.integration.test.ts > Security Integration > end-to-end security flow > should handle multiple users with independent rate limits
2620
- [INFO] ynab:test:test | SUCCESS | 0ms | rate_limit_remaining:2
2621
-
2622
- stderr | src/server/__tests__/security.integration.test.ts > Security Integration > end-to-end security flow > should provide comprehensive security statistics
2623
- [INFO] ynab:test:test | SUCCESS | 0ms | rate_limit_remaining:2
2624
-
2625
- stderr | src/server/__tests__/security.integration.test.ts > Security Integration > end-to-end security flow > should provide comprehensive security statistics
2626
- [INFO] ynab:test:test | SUCCESS | 0ms | rate_limit_remaining:1
2627
-
2628
- stderr | src/server/__tests__/security.integration.test.ts > Security Integration > end-to-end security flow > should provide comprehensive security statistics
2629
- [ERROR] ynab:test:test | FAILED | 0ms | rate_limit_remaining:0 | error:"Test error"
2630
- [WARN] Rate limit exceeded for ynab:test
2631
-
2632
- stderr | src/server/__tests__/security.integration.test.ts > Security Integration > performance under load > should handle rapid requests efficiently
2633
- [INFO] ynab:performance_test:performance test | SUCCESS | 0ms | rate_limit_remaining:0
2634
- [WARN] Rate limit exceeded for ynab:performance_test
2635
- [INFO] ynab:performance_test:performance test | SUCCESS | 0ms | rate_limit_remaining:0
2636
- [WARN] Rate limit exceeded for ynab:performance_test
2637
- [INFO] ynab:performance_test:performance test | SUCCESS | 0ms | rate_limit_remaining:0
2638
- [WARN] Rate limit exceeded for ynab:performance_test
2639
-
2640
- ✓  integration:core  src/server/__tests__/security.integration.test.ts > Security Integration > end-to-end security flow > should handle a complete successful request flow 24ms
2641
- ✓  integration:core  src/server/__tests__/security.integration.test.ts > Security Integration > end-to-end security flow > should handle validation failures with proper logging 7ms
2642
- ✓  integration:core  src/server/__tests__/security.integration.test.ts > Security Integration > end-to-end security flow > should handle rate limiting with proper responses and logging 6ms
2643
- ✓  integration:core  src/server/__tests__/security.integration.test.ts > Security Integration > end-to-end security flow > should sanitize sensitive data in logs 6ms
2644
- ✓  integration:core  src/server/__tests__/security.integration.test.ts > Security Integration > end-to-end security flow > should handle multiple users with independent rate limits 8ms
2645
- ✓  integration:core  src/server/__tests__/security.integration.test.ts > Security Integration > end-to-end security flow > should provide comprehensive security statistics 13ms
2646
- ✓  integration:core  src/server/__tests__/security.integration.test.ts > Security Integration > performance under load > should handle rapid requests efficiently 2ms
2647
- stderr | src/server/__tests__/security.integration.test.ts > Security Integration > cleanup and maintenance > should maintain log size limits
2648
- [INFO] tool1:op1 | SUCCESS
2649
- [INFO] tool2:op2 | SUCCESS
2650
- [INFO] tool3:op3 | SUCCESS
2651
-
2652
- ✓  integration:core  src/server/__tests__/security.integration.test.ts > Security Integration > cleanup and maintenance > should clean up expired rate limit entries 71ms
2653
- ✓  integration:core  src/server/__tests__/security.integration.test.ts > Security Integration > cleanup and maintenance > should maintain log size limits 2ms
2654
- ✓  integration:core  src/server/__tests__/errorHandler.integration.test.ts > Error Handler Integration Tests > 401 Unauthorized Errors > should handle 401 errors in budget tools 10ms
2655
- ✓  integration:core  src/server/__tests__/errorHandler.integration.test.ts > Error Handler Integration Tests > 401 Unauthorized Errors > should handle 401 errors in account tools 4ms
2656
- ✓  integration:core  src/server/__tests__/errorHandler.integration.test.ts > Error Handler Integration Tests > 401 Unauthorized Errors > should handle 401 errors in transaction tools 2ms
2657
- ✓  integration:core  src/server/__tests__/errorHandler.integration.test.ts > Error Handler Integration Tests > 403 Forbidden Errors > should handle 403 errors in category tools 2ms
2658
- ✓  integration:core  src/server/__tests__/errorHandler.integration.test.ts > Error Handler Integration Tests > 403 Forbidden Errors > should handle 403 errors in payee tools 2ms
2659
- ✓  integration:core  src/server/__tests__/errorHandler.integration.test.ts > Error Handler Integration Tests > 404 Not Found Errors > should handle 404 errors in month tools 2ms
2660
- ✓  integration:core  src/server/__tests__/errorHandler.integration.test.ts > Error Handler Integration Tests > 429 Rate Limit Errors > should handle 429 errors in utility tools 1ms
2661
- ✓  integration:core  src/server/__tests__/errorHandler.integration.test.ts > Error Handler Integration Tests > 500 Internal Server Errors > should handle 500 errors consistently across tools 1ms
2662
- ✓  integration:core  src/server/__tests__/errorHandler.integration.test.ts > Error Handler Integration Tests > Network and Connection Errors > should handle network timeout errors 3ms
2663
- ✓  integration:core  src/server/__tests__/errorHandler.integration.test.ts > Error Handler Integration Tests > Network and Connection Errors > should handle connection refused errors 2ms
2664
- ✓  integration:core  src/server/__tests__/errorHandler.integration.test.ts > Error Handler Integration Tests > Error Response Structure > should maintain consistent error response structure across all tools 8ms
2665
- ✓  integration:core  src/server/__tests__/errorHandler.integration.test.ts > Error Handler Integration Tests > Sensitive Data Sanitization > should sanitize sensitive data in error messages across all tools 3ms
2666
- ✓  integration:core  src/server/__tests__/errorHandler.integration.test.ts > Error Handler Integration Tests > ErrorHandler with real ResponseFormatter > should format errors using real responseFormatter 2ms
2667
- ✓  integration:core  src/server/__tests__/errorHandler.integration.test.ts > Error Handler Integration Tests > ErrorHandler with real ResponseFormatter > should work with ValidationError 1ms
2668
- ✓  integration:core  src/server/__tests__/errorHandler.integration.test.ts > Error Handler Integration Tests > Minify override integration > should respect responseFormatter minify settings 1ms
2669
- ✓  integration:core  src/server/__tests__/errorHandler.integration.test.ts > Error Handler Integration Tests > Minify override integration > should handle pretty formatting 2ms
2670
- ✓  integration:core  src/server/__tests__/errorHandler.integration.test.ts > Error Handler Integration Tests > Static vs instance consistency > should produce identical results for static and instance calls 2ms
2671
- ✓  integration:core  src/server/__tests__/errorHandler.integration.test.ts > Error Handler Integration Tests > Static vs instance consistency > should produce identical results for createValidationError 1ms
2672
- ✓  integration:core  src/server/__tests__/errorHandler.integration.test.ts > Error Handler Integration Tests > Circular dependency resolution > should not have circular dependency issues 1ms
2673
- ✓  integration:core  src/server/__tests__/errorHandler.integration.test.ts > Error Handler Integration Tests > Circular dependency resolution > should work with different formatter implementations 1ms
2674
- ✓  integration:core  src/server/__tests__/errorHandler.integration.test.ts > Error Handler Integration Tests > ErrorHandler factory > should create different instances with different formatters 1ms
2675
- ✓  integration:core  src/server/__tests__/errorHandler.integration.test.ts > Error Handler Integration Tests > ErrorHandler factory > should maintain instance isolation 2ms
2676
- ✓  integration:core  src/tools/reconciliation/__tests__/recommendationEngine.integration.test.ts > Recommendation Engine Integration > with account_id and budget_id provided > should generate recommendations for unmatched bank transactions 57ms
2677
- ✓  integration:core  src/tools/reconciliation/__tests__/recommendationEngine.integration.test.ts > Recommendation Engine Integration > with account_id and budget_id provided > should handle the EvoCarShare scenario correctly 12ms
2678
- ✓  integration:core  src/tools/reconciliation/__tests__/recommendationEngine.integration.test.ts > Recommendation Engine Integration > with account_id and budget_id provided > should generate update_cleared recommendations for unmatched uncleared YNAB transactions 4ms
2679
- ×  integration:core  src/tools/reconciliation/__tests__/recommendationEngine.integration.test.ts > Recommendation Engine Integration > with account_id and budget_id provided > should generate review_duplicate for suggested matches 13ms
2680
-  → expected false to be true // Object.is equality
2681
- ✓  integration:core  src/tools/reconciliation/__tests__/recommendationEngine.integration.test.ts > Recommendation Engine Integration > without account_id and budget_id (backward compatibility) > should NOT generate recommendations when IDs are missing 4ms
2682
- ✓  integration:core  src/tools/reconciliation/__tests__/recommendationEngine.integration.test.ts > Recommendation Engine Integration > without account_id and budget_id (backward compatibility) > should still perform analysis correctly without recommendations 3ms
2683
- ✓  integration:core  src/tools/reconciliation/__tests__/recommendationEngine.integration.test.ts > Recommendation Engine Integration > complex scenarios > should generate multiple recommendations for multiple unmatched transactions 5ms
2684
- ✓  integration:core  src/tools/reconciliation/__tests__/recommendationEngine.integration.test.ts > Recommendation Engine Integration > complex scenarios > should handle repeat amounts with recommendations 4ms
2685
- ✓  integration:core  src/tools/reconciliation/__tests__/recommendationEngine.integration.test.ts > Recommendation Engine Integration > complex scenarios > should generate mixed recommendation types for complex scenario 9ms
2686
- ✓  integration:core  src/tools/reconciliation/__tests__/recommendationEngine.integration.test.ts > Recommendation Engine Integration > complex scenarios > should prioritize recommendations by priority and confidence 3ms
2687
- ✓  integration:core  src/tools/reconciliation/__tests__/recommendationEngine.integration.test.ts > Recommendation Engine Integration > complex scenarios > should handle large discrepancies with appropriate recommendations 4ms
2688
- ✓  integration:core  src/tools/reconciliation/__tests__/recommendationEngine.integration.test.ts > Recommendation Engine Integration > recommendation field validation > should include all required metadata fields 6ms
2689
- ✓  integration:core  src/tools/reconciliation/__tests__/recommendationEngine.integration.test.ts > Recommendation Engine Integration > recommendation field validation > should generate valid create_transaction parameters 2ms
2690
- ×  integration:core  src/__tests__/tools/reconciliation/csvParser.integration.test.ts > CSV Parser Integration Tests > TD Bank CSV > should parse TD CSV correctly 84ms
2691
-  → expected [ …(2) ] to have a length of +0 but got 2
2692
- ✓  integration:core  src/__tests__/tools/reconciliation/csvParser.integration.test.ts > CSV Parser Integration Tests > RBC Debit/Credit CSV > should parse RBC CSV with debit/credit columns 5ms
2693
- ✓  integration:core  src/__tests__/tools/reconciliation/csvParser.integration.test.ts > CSV Parser Integration Tests > Ambiguous Debit/Credit Warning > should warn when both debit and credit have values 2ms
2694
- ✓  integration:core  src/__tests__/tools/reconciliation/csvParser.integration.test.ts > CSV Parser Integration Tests > European Number Format > should handle European number format 449ms
2695
- ×  integration:core  src/__tests__/tools/reconciliation/csvParser.integration.test.ts > Matcher Integration Tests > should achieve high confidence matches with exact integer comparison 2ms
2696
-  → Cannot read properties of undefined (reading 'confidence')
2697
- ✓  integration:core  src/__tests__/tools/reconciliation/csvParser.integration.test.ts > Matcher Integration Tests > should use exact integer comparison (no float precision issues) 5ms
2698
- ✓  integration:core  src/__tests__/tools/reconciliation/real-world.integration.test.ts > Real World CSV Validation (Simulated) > Wealthsimple > should parse Wealthsimple export correctly 16ms
2699
- ✓  integration:core  src/__tests__/tools/reconciliation/real-world.integration.test.ts > Real World CSV Validation (Simulated) > TD Canada Trust > should parse TD export correctly using preset 2ms
2700
- ↓  integration:core  src/tools/__tests__/accountTools.delta.integration.test.ts > Delta-backed account tool handlers > serves cached account results on the second invocation
2701
- ↓  integration:core  src/tools/__tests__/accountTools.delta.integration.test.ts > Delta-backed account tool handlers > reports delta usage for list_transactions after a change
2702
- ↓  integration:core  src/tools/__tests__/accountTools.integration.test.ts > Account Tools Integration > should successfully list accounts from real API
2703
- ↓  integration:core  src/tools/__tests__/accountTools.integration.test.ts > Account Tools Integration > should successfully get account details from real API
2704
- ↓  integration:core  src/tools/__tests__/accountTools.integration.test.ts > Account Tools Integration > should handle invalid budget ID gracefully
2705
- ↓  integration:core  src/tools/__tests__/accountTools.integration.test.ts > Account Tools Integration > should handle invalid account ID gracefully
2706
- ↓  integration:core  src/tools/__tests__/categoryTools.delta.integration.test.ts > Delta-backed category tool handler > serves cached category results on the second invocation
2707
- ↓  integration:core  src/tools/__tests__/categoryTools.integration.test.ts > Category Tools Integration > handleListCategories > should successfully list categories from real API
2708
- ↓  integration:core  src/tools/__tests__/categoryTools.integration.test.ts > Category Tools Integration > handleListCategories > should handle invalid budget ID gracefully
2709
- ↓  integration:core  src/tools/__tests__/categoryTools.integration.test.ts > Category Tools Integration > handleGetCategory > should successfully get category details from real API
2710
- ↓  integration:core  src/tools/__tests__/categoryTools.integration.test.ts > Category Tools Integration > handleGetCategory > should handle invalid category ID gracefully
2711
- ↓  integration:core  src/tools/__tests__/categoryTools.integration.test.ts > Category Tools Integration > handleUpdateCategory > should successfully update category budget from real API
2712
- ↓  integration:core  src/tools/__tests__/categoryTools.integration.test.ts > Category Tools Integration > handleUpdateCategory > should handle invalid category ID gracefully
2713
- ↓  integration:core  src/tools/__tests__/categoryTools.integration.test.ts > Category Tools Integration > handleUpdateCategory > should handle negative budgeted amounts
2714
- ↓  integration:core  src/tools/__tests__/deltaFetcher.scheduled.integration.test.ts > Delta fetcher scheduled transactions integration > caches scheduled transactions on repeated fetches
2715
- ↓  integration:core  src/tools/__tests__/monthTools.delta.integration.test.ts > Delta-backed month tool handler > serves cached month summaries on the second invocation
2716
- ↓  integration:core  src/tools/__tests__/monthTools.integration.test.ts > Month Tools Integration > handleListMonths > should successfully list months from real API
2717
- ↓  integration:core  src/tools/__tests__/monthTools.integration.test.ts > Month Tools Integration > handleListMonths > should handle invalid budget ID gracefully
2718
- ↓  integration:core  src/tools/__tests__/monthTools.integration.test.ts > Month Tools Integration > handleGetMonth > should successfully get month details from real API
2719
- ↓  integration:core  src/tools/__tests__/monthTools.integration.test.ts > Month Tools Integration > handleGetMonth > should handle invalid budget ID gracefully
2720
- ↓  integration:core  src/tools/__tests__/monthTools.integration.test.ts > Month Tools Integration > handleGetMonth > should handle invalid month format gracefully
2721
- ↓  integration:core  src/tools/__tests__/payeeTools.delta.integration.test.ts > Delta-backed payee tool handler > serves cached payee results on the second invocation
2722
- ↓  integration:core  src/tools/__tests__/payeeTools.integration.test.ts > Payee Tools Integration > handleListPayees > should successfully list payees from real API
2723
- ↓  integration:core  src/tools/__tests__/payeeTools.integration.test.ts > Payee Tools Integration > handleListPayees > should handle invalid budget ID gracefully
2724
- ↓  integration:core  src/tools/__tests__/payeeTools.integration.test.ts > Payee Tools Integration > handleGetPayee > should successfully get payee details from real API
2725
- ↓  integration:core  src/tools/__tests__/payeeTools.integration.test.ts > Payee Tools Integration > handleGetPayee > should handle invalid payee ID gracefully
2726
- ↓  integration:core  src/tools/__tests__/payeeTools.integration.test.ts > Payee Tools Integration > handleGetPayee > should handle invalid budget ID gracefully
2727
- ↓  integration:core  src/tools/__tests__/transactionTools.integration.test.ts > Transaction Tools Integration > should successfully list transactions from real API
2728
- ↓  integration:core  src/tools/__tests__/transactionTools.integration.test.ts > Transaction Tools Integration > should successfully list transactions with account filter
2729
- ↓  integration:core  src/tools/__tests__/transactionTools.integration.test.ts > Transaction Tools Integration > should successfully list transactions with date filter
2730
- ↓  integration:core  src/tools/__tests__/transactionTools.integration.test.ts > Transaction Tools Integration > should get transaction details if transactions exist
2731
- ↓  integration:core  src/tools/__tests__/transactionTools.integration.test.ts > Transaction Tools Integration > should handle invalid budget ID gracefully
2732
- ↓  integration:core  src/tools/__tests__/transactionTools.integration.test.ts > Transaction Tools Integration > should handle invalid transaction ID gracefully
2733
- ↓  integration:core  src/tools/__tests__/transactionTools.integration.test.ts > Transaction Tools Integration > handleCreateTransactions - Integration > should create two transactions via the bulk handler
2734
- ↓  integration:core  src/tools/__tests__/transactionTools.integration.test.ts > Transaction Tools Integration > handleCreateTransactions - Integration > should detect duplicates when reusing import IDs
2735
- ↓  integration:core  src/tools/__tests__/transactionTools.integration.test.ts > Transaction Tools Integration > handleCreateTransactions - Integration > should invalidate caches so new transactions appear in list results
2736
- ↓  integration:core  src/tools/__tests__/transactionTools.integration.test.ts > Transaction Tools Integration > handleCreateTransactions - Integration > should create transactions across multiple accounts within one batch
2737
- ↓  integration:core  src/tools/__tests__/transactionTools.integration.test.ts > Transaction Tools Integration > handleCreateTransactions - Integration > should handle large batches and report response mode
2738
- ↓  integration:core  src/tools/__tests__/transactionTools.integration.test.ts > Transaction Tools Integration > handleCreateTransactions - Integration > should support dry run mode without creating transactions
2739
- ↓  integration:core  src/tools/__tests__/transactionTools.integration.test.ts > Transaction Tools Integration > handleCreateTransactions - Integration > should confirm dry run does not persist data
2740
- ↓  integration:core  src/tools/__tests__/transactionTools.integration.test.ts > Transaction Tools Integration > handleCreateTransactions - Integration > should handle invalid budget IDs gracefully during bulk create
2741
- ↓  integration:core  src/tools/__tests__/transactionTools.integration.test.ts > Transaction Tools Integration > handleCreateTransactions - Integration > should handle invalid account IDs during bulk create
2742
- ↓  integration:core  src/tools/__tests__/transactionTools.integration.test.ts > Transaction Tools Integration > handleCreateTransactions - Integration > documents rate limiting behavior for bulk requests
2743
- ·  integration:core  src/tools/__tests__/transactionTools.integration.test.ts > Transaction Tools Integration > Bulk Update Transactions Integration > should successfully update multiple transactions with provided metadata
2744
- ·  integration:core  src/tools/__tests__/transactionTools.integration.test.ts > Transaction Tools Integration > Bulk Update Transactions Integration > should successfully update transactions without metadata (using cache/API)
2745
- ·  integration:core  src/tools/__tests__/transactionTools.integration.test.ts > Transaction Tools Integration > Bulk Update Transactions Integration > should provide before/after preview in dry_run mode
2746
- ·  integration:core  src/tools/__tests__/transactionTools.integration.test.ts > Transaction Tools Integration > Bulk Update Transactions Integration > should handle partial failures gracefully
2747
- stderr | src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Complete Budget Management Integration > should handle complete budget listing and retrieval workflow
2748
- Rate limit check for token_7f8358f9: 0/200 requests, remaining: 200, limited: false
2749
-
2750
- stderr | src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Complete Budget Management Integration > should handle complete budget listing and retrieval workflow
2751
- Recorded request for token_7f8358f9: 1/200 requests
2752
-
2753
- stderr | src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Complete Budget Management Integration > should handle complete budget listing and retrieval workflow
2754
- Rate limit check for token_7f8358f9: 1/200 requests, remaining: 199, limited: false
2755
- [INFO] ynab:list_budgets | SUCCESS | 9ms | rate_limit_remaining:199
2756
-
2757
- stderr | src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Complete Budget Management Integration > should handle complete budget listing and retrieval workflow
2758
- Rate limit check for token_7f8358f9: 1/200 requests, remaining: 199, limited: false
2759
-
2760
- stderr | src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Complete Budget Management Integration > should handle complete budget listing and retrieval workflow
2761
- Recorded request for token_7f8358f9: 2/200 requests
2762
-
2763
- stderr | src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Complete Budget Management Integration > should handle complete budget listing and retrieval workflow
2764
- Rate limit check for token_7f8358f9: 2/200 requests, remaining: 198, limited: false
2765
- [INFO] ynab:get_budget | SUCCESS | 3ms | rate_limit_remaining:198
2766
-
2767
- stderr | src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Complete Budget Management Integration > should handle budget retrieval errors gracefully
2768
- Rate limit check for token_7f8358f9: 2/200 requests, remaining: 198, limited: false
2769
-
2770
- stderr | src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Complete Budget Management Integration > should handle budget retrieval errors gracefully
2771
- Recorded request for token_7f8358f9: 3/200 requests
2772
-
2773
- stderr | src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Complete Budget Management Integration > should handle budget retrieval errors gracefully
2774
- Rate limit check for token_7f8358f9: 3/200 requests, remaining: 197, limited: false
2775
- [INFO] ynab:get_budget | SUCCESS | 4ms | rate_limit_remaining:197
2776
-
2777
- stderr | src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Complete Account Management Integration > should handle complete account workflow
2778
- Rate limit check for token_7f8358f9: 3/200 requests, remaining: 197, limited: false
2779
-
2780
- stderr | src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Complete Account Management Integration > should handle complete account workflow
2781
- Recorded request for token_7f8358f9: 4/200 requests
2782
-
2783
- stderr | src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Complete Account Management Integration > should handle complete account workflow
2784
- Rate limit check for token_7f8358f9: 4/200 requests, remaining: 196, limited: false
2785
- [INFO] ynab:list_accounts | SUCCESS | 4ms | rate_limit_remaining:196
2786
-
2787
- stderr | src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Complete Account Management Integration > should handle complete account workflow
2788
- Rate limit check for token_7f8358f9: 4/200 requests, remaining: 196, limited: false
2789
-
2790
- stderr | src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Complete Account Management Integration > should handle complete account workflow
2791
- Recorded request for token_7f8358f9: 5/200 requests
2792
-
2793
- stderr | src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Complete Account Management Integration > should handle complete account workflow
2794
- Rate limit check for token_7f8358f9: 5/200 requests, remaining: 195, limited: false
2795
- [INFO] ynab:get_account | SUCCESS | 3ms | rate_limit_remaining:195
2796
-
2797
- stderr | src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Complete Account Management Integration > should handle complete account workflow
2798
- Rate limit check for token_7f8358f9: 5/200 requests, remaining: 195, limited: false
2799
-
2800
- stderr | src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Complete Account Management Integration > should handle complete account workflow
2801
- Recorded request for token_7f8358f9: 6/200 requests
2802
-
2803
- stderr | src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Complete Account Management Integration > should handle complete account workflow
2804
- Rate limit check for token_7f8358f9: 6/200 requests, remaining: 194, limited: false
2805
- [INFO] ynab:create_account | SUCCESS | 2ms | rate_limit_remaining:194
2806
-
2807
- stderr | src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Complete Transaction Management Integration > should handle transaction filtering
2808
- Rate limit check for token_7f8358f9: 6/200 requests, remaining: 194, limited: false
2809
-
2810
- stderr | src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Complete Transaction Management Integration > should handle transaction filtering
2811
- Recorded request for token_7f8358f9: 7/200 requests
2812
-
2813
- stderr | src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Complete Transaction Management Integration > should handle transaction filtering
2814
- Rate limit check for token_7f8358f9: 7/200 requests, remaining: 193, limited: false
2815
- [INFO] ynab:list_transactions | SUCCESS | 3ms | rate_limit_remaining:193
2816
-
2817
- stderr | src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Complete Transaction Management Integration > should handle transaction filtering
2818
- Rate limit check for token_7f8358f9: 7/200 requests, remaining: 193, limited: false
2819
-
2820
- stderr | src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Complete Transaction Management Integration > should handle transaction filtering
2821
- Recorded request for token_7f8358f9: 8/200 requests
2822
-
2823
- stderr | src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Complete Transaction Management Integration > should handle transaction filtering
2824
- Rate limit check for token_7f8358f9: 8/200 requests, remaining: 192, limited: false
2825
- [INFO] ynab:list_transactions | SUCCESS | 1ms | rate_limit_remaining:192
2826
-
2827
- stderr | src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Complete Transaction Management Integration > should handle transaction filtering
2828
- Rate limit check for token_7f8358f9: 8/200 requests, remaining: 192, limited: false
2829
-
2830
- stderr | src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Complete Transaction Management Integration > should handle transaction filtering
2831
- Recorded request for token_7f8358f9: 9/200 requests
2832
-
2833
- stderr | src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Complete Transaction Management Integration > should handle transaction filtering
2834
- Rate limit check for token_7f8358f9: 9/200 requests, remaining: 191, limited: false
2835
- [INFO] ynab:list_transactions | SUCCESS | 1ms | rate_limit_remaining:191
2836
-
2837
- ✓  integration:core  src/__tests__/comprehensive.integration.test.ts > YNAB utils mock > converts milliunits using SDK rounding rules 5ms
2838
- ✓  integration:core  src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Complete Budget Management Integration > should handle complete budget listing and retrieval workflow 44ms
2839
- ✓  integration:core  src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Complete Budget Management Integration > should handle budget retrieval errors gracefully 12ms
2840
- ✓  integration:core  src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Complete Account Management Integration > should handle complete account workflow 21ms
2841
- ↓  integration:core  src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Complete Transaction Management Integration > should handle complete transaction workflow
2842
- ✓  integration:core  src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Complete Transaction Management Integration > should handle transaction filtering 14ms
2843
- stderr | src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Complete Category Management Integration > should handle complete category workflow
2844
- Rate limit check for token_7f8358f9: 9/200 requests, remaining: 191, limited: false
2845
-
2846
- stderr | src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Complete Category Management Integration > should handle complete category workflow
2847
- Recorded request for token_7f8358f9: 10/200 requests
2848
-
2849
- stderr | src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Complete Category Management Integration > should handle complete category workflow
2850
- Rate limit check for token_7f8358f9: 10/200 requests, remaining: 190, limited: false
2851
- [INFO] ynab:list_categories | SUCCESS | 6ms | rate_limit_remaining:190
2852
-
2853
- stderr | src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Complete Category Management Integration > should handle complete category workflow
2854
- Rate limit check for token_7f8358f9: 10/200 requests, remaining: 190, limited: false
2855
-
2856
- stderr | src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Complete Category Management Integration > should handle complete category workflow
2857
- Recorded request for token_7f8358f9: 11/200 requests
2858
-
2859
- stderr | src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Complete Category Management Integration > should handle complete category workflow
2860
- Rate limit check for token_7f8358f9: 11/200 requests, remaining: 189, limited: false
2861
- [INFO] ynab:get_category | SUCCESS | 4ms | rate_limit_remaining:189
2862
-
2863
- stderr | src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Complete Category Management Integration > should handle complete category workflow
2864
- Rate limit check for token_7f8358f9: 11/200 requests, remaining: 189, limited: false
2865
-
2866
- stderr | src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Complete Category Management Integration > should handle complete category workflow
2867
- Recorded request for token_7f8358f9: 12/200 requests
2868
-
2869
- stderr | src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Complete Category Management Integration > should handle complete category workflow
2870
- Rate limit check for token_7f8358f9: 12/200 requests, remaining: 188, limited: false
2871
- [INFO] ynab:update_category | SUCCESS | 4ms | rate_limit_remaining:188
2872
-
2873
- stderr | src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Complete Utility Tools Integration > should handle user information retrieval
2874
- Rate limit check for token_7f8358f9: 12/200 requests, remaining: 188, limited: false
2875
-
2876
- stderr | src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Complete Utility Tools Integration > should handle user information retrieval
2877
- Recorded request for token_7f8358f9: 13/200 requests
2878
-
2879
- stderr | src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Complete Utility Tools Integration > should handle user information retrieval
2880
- Rate limit check for token_7f8358f9: 13/200 requests, remaining: 187, limited: false
2881
- [INFO] ynab:get_user | SUCCESS | 1ms | rate_limit_remaining:187
2882
-
2883
- stderr | src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Complete Utility Tools Integration > should handle amount conversion
2884
- Rate limit check for token_7f8358f9: 13/200 requests, remaining: 187, limited: false
2885
-
2886
- stderr | src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Complete Utility Tools Integration > should handle amount conversion
2887
- Recorded request for token_7f8358f9: 14/200 requests
2888
-
2889
- stderr | src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Complete Utility Tools Integration > should handle amount conversion
2890
- Rate limit check for token_7f8358f9: 14/200 requests, remaining: 186, limited: false
2891
- [INFO] ynab:convert_amount | SUCCESS | 2ms | rate_limit_remaining:186
2892
-
2893
- stderr | src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Complete Utility Tools Integration > should handle amount conversion
2894
- Rate limit check for token_7f8358f9: 14/200 requests, remaining: 186, limited: false
2895
-
2896
- stderr | src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Complete Utility Tools Integration > should handle amount conversion
2897
- Recorded request for token_7f8358f9: 15/200 requests
2898
-
2899
- stderr | src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Complete Utility Tools Integration > should handle amount conversion
2900
- Rate limit check for token_7f8358f9: 15/200 requests, remaining: 185, limited: false
2901
- [INFO] ynab:convert_amount | SUCCESS | 1ms | rate_limit_remaining:185
2902
-
2903
- stderr | src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Error Handling Integration > should handle various API error scenarios
2904
- Rate limit check for token_7f8358f9: 15/200 requests, remaining: 185, limited: false
2905
-
2906
- stderr | src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Error Handling Integration > should handle various API error scenarios
2907
- Recorded request for token_7f8358f9: 16/200 requests
2908
-
2909
- stderr | src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Error Handling Integration > should handle various API error scenarios
2910
- Rate limit check for token_7f8358f9: 16/200 requests, remaining: 184, limited: false
2911
- [INFO] ynab:list_budgets | SUCCESS | 1ms | rate_limit_remaining:184
2912
-
2913
- stderr | src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Error Handling Integration > should handle various API error scenarios
2914
- Rate limit check for token_7f8358f9: 16/200 requests, remaining: 184, limited: false
2915
-
2916
- stderr | src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Error Handling Integration > should handle various API error scenarios
2917
- Recorded request for token_7f8358f9: 17/200 requests
2918
-
2919
- stderr | src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Error Handling Integration > should handle various API error scenarios
2920
- Rate limit check for token_7f8358f9: 17/200 requests, remaining: 183, limited: false
2921
- [INFO] ynab:get_budget | SUCCESS | 1ms | rate_limit_remaining:183
2922
-
2923
- ✓  integration:core  src/server/__tests__/server-startup.integration.test.ts > Server Startup and Transport Integration > Server Initialization > should successfully initialize server with valid configuration 27ms
2924
- ✓  integration:core  src/server/__tests__/server-startup.integration.test.ts > Server Startup and Transport Integration > Server Initialization > should fail initialization with missing access token 11ms
2925
- ✓  integration:core  src/server/__tests__/server-startup.integration.test.ts > Server Startup and Transport Integration > Server Initialization > should fail initialization with invalid access token format 6ms
2926
- stderr | src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Error Handling Integration > should validate input parameters
2927
- Rate limit check for token_7f8358f9: 17/200 requests, remaining: 183, limited: false
2928
- [ERROR] ynab:get_budget | FAILED | 0ms | rate_limit_remaining:183 | error:"Validation failed: Validation error: Invalid input: expected string, received undefined at "budget_id""
2929
-
2930
- stderr | src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Caching Integration Tests > should invalidate cache on write operations
2931
- Rate limit check for token_7f8358f9: 17/200 requests, remaining: 183, limited: false
2932
-
2933
- stderr | src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Caching Integration Tests > should invalidate cache on write operations
2934
- Recorded request for token_7f8358f9: 18/200 requests
2935
-
2936
- stderr | src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Caching Integration Tests > should invalidate cache on write operations
2937
- Rate limit check for token_7f8358f9: 18/200 requests, remaining: 182, limited: false
2938
- [INFO] ynab:list_accounts | SUCCESS | 1ms | rate_limit_remaining:182
2939
-
2940
- stderr | src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Caching Integration Tests > should invalidate cache on write operations
2941
- Rate limit check for token_7f8358f9: 18/200 requests, remaining: 182, limited: false
2942
-
2943
- stderr | src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Caching Integration Tests > should invalidate cache on write operations
2944
- Recorded request for token_7f8358f9: 19/200 requests
2945
-
2946
- stderr | src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Caching Integration Tests > should invalidate cache on write operations
2947
- Rate limit check for token_7f8358f9: 19/200 requests, remaining: 181, limited: false
2948
- [INFO] ynab:create_account | SUCCESS | 1ms | rate_limit_remaining:181
2949
-
2950
- stderr | src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Caching Integration Tests > should invalidate cache on write operations
2951
- Rate limit check for token_7f8358f9: 19/200 requests, remaining: 181, limited: false
2952
-
2953
- stderr | src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Caching Integration Tests > should invalidate cache on write operations
2954
- Recorded request for token_7f8358f9: 20/200 requests
2955
-
2956
- stderr | src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Caching Integration Tests > should invalidate cache on write operations
2957
- Rate limit check for token_7f8358f9: 20/200 requests, remaining: 180, limited: false
2958
- [INFO] ynab:list_accounts | SUCCESS | 1ms | rate_limit_remaining:180
2959
-
2960
- stderr | src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Caching Integration Tests > should handle cache warming after setting default budget
2961
- Rate limit check for token_7f8358f9: 20/200 requests, remaining: 180, limited: false
2962
-
2963
- stderr | src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Caching Integration Tests > should handle cache warming after setting default budget
2964
- Recorded request for token_7f8358f9: 21/200 requests
2965
-
2966
- stderr | src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Caching Integration Tests > should handle cache warming after setting default budget
2967
- Rate limit check for token_7f8358f9: 21/200 requests, remaining: 179, limited: false
2968
- [INFO] ynab:set_default_budget | SUCCESS | 2ms | rate_limit_remaining:179
2969
-
2970
- ✓  integration:core  src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > Constructor and Environment Validation > should create server instance with valid access token 24ms
2971
- ✓  integration:core  src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > Constructor and Environment Validation > should throw ValidationError when YNAB_ACCESS_TOKEN is missing 9ms
2972
- ✓  integration:core  src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > Constructor and Environment Validation > should throw ValidationError when YNAB_ACCESS_TOKEN is empty string 6ms
2973
- ✓  integration:core  src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > Constructor and Environment Validation > should throw ValidationError when YNAB_ACCESS_TOKEN is only whitespace 6ms
2974
- ✓  integration:core  src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > Constructor and Environment Validation > should trim whitespace from access token 10ms
2975
- stderr | src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Caching Integration Tests > should handle cache clear operation
2976
- Rate limit check for token_7f8358f9: 21/200 requests, remaining: 179, limited: false
2977
-
2978
- stderr | src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Caching Integration Tests > should handle cache clear operation
2979
- Recorded request for token_7f8358f9: 22/200 requests
2980
-
2981
- stderr | src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Caching Integration Tests > should handle cache clear operation
2982
- Rate limit check for token_7f8358f9: 22/200 requests, remaining: 178, limited: false
2983
- [INFO] ynab:list_budgets | SUCCESS | 1ms | rate_limit_remaining:178
2984
-
2985
- stderr | src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Caching Integration Tests > should handle cache clear operation
2986
- Rate limit check for token_7f8358f9: 22/200 requests, remaining: 178, limited: false
2987
-
2988
- stderr | src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Caching Integration Tests > should handle cache clear operation
2989
- Recorded request for token_7f8358f9: 23/200 requests
2990
-
2991
- stderr | src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Caching Integration Tests > should handle cache clear operation
2992
- Rate limit check for token_7f8358f9: 23/200 requests, remaining: 177, limited: false
2993
- [INFO] ynab:clear_cache | SUCCESS | 1ms | rate_limit_remaining:177
2994
-
2995
- ✓  integration:core  src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Complete Category Management Integration > should handle complete category workflow 26ms
2996
- ✓  integration:core  src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Complete Utility Tools Integration > should handle user information retrieval 8ms
2997
- ✓  integration:core  src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Complete Utility Tools Integration > should handle amount conversion 10ms
2998
- ✓  integration:core  src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Error Handling Integration > should handle various API error scenarios 10ms
2999
- ✓  integration:core  src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Error Handling Integration > should validate input parameters 9ms
3000
- ↓  integration:core  src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Caching Integration Tests > should cache budget list requests and improve performance on subsequent calls
3001
- ✓  integration:core  src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Caching Integration Tests > should invalidate cache on write operations 12ms
3002
- ↓  integration:core  src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Caching Integration Tests > should not cache filtered transaction requests
3003
- ✓  integration:core  src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Caching Integration Tests > should handle cache warming after setting default budget 9ms
3004
- ✓  integration:core  src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Caching Integration Tests > should handle cache clear operation 14ms
3005
- ↓  integration:core  src/__tests__/comprehensive.integration.test.ts > YNAB MCP Server - Comprehensive Integration Tests > Caching Integration Tests > should respect cache TTL and return fresh data after expiration
3006
- ✓  integration:core  src/tools/__tests__/utilityTools.integration.test.ts > Utility Tools Integration Tests > handleGetUser > should retrieve user information from YNAB API 509ms
3007
- ✓  integration:core  src/tools/__tests__/budgetTools.delta.integration.test.ts > Delta-backed budget tool handler > serves cached budget summaries on the second invocation 553ms
3008
- ✓  integration:core  src/tools/__tests__/utilityTools.integration.test.ts > Utility Tools Integration Tests > handleConvertAmount > should convert various dollar amounts to milliunits 3ms
3009
- ✓  integration:core  src/tools/__tests__/utilityTools.integration.test.ts > Utility Tools Integration Tests > handleConvertAmount > should convert various milliunit amounts to dollars 6ms
3010
- ✓  integration:core  src/tools/__tests__/utilityTools.integration.test.ts > Utility Tools Integration Tests > handleConvertAmount > should handle precision edge cases 2ms
3011
- stderr | src/tools/__tests__/budgetTools.integration.test.ts > Budget Tools Integration > handleListBudgets > should successfully list budgets from real API
3012
- ✅ Successfully listed 7 budgets
3013
-
3014
- ✓  integration:core  src/tools/__tests__/budgetTools.integration.test.ts > Budget Tools Integration > handleListBudgets > should successfully list budgets from real API 558ms
3015
- ↓  integration:core  src/tools/reconciliation/__tests__/reconciliation.delta.integration.test.ts > Reconciliation delta isolation > uses full-fetch helpers and exposes audit metadata
3016
- ↓  integration:core  src/tools/reconciliation/__tests__/reconciliation.delta.integration.test.ts > Reconciliation delta isolation > can opt into delta-backed fetches when force_full_refresh is false
3017
- ✓  integration:core  src/server/__tests__/server-startup.integration.test.ts > Server Startup and Transport Integration > Server Startup Validation > should validate YNAB token during startup 459ms
3018
- ✓  integration:core  src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > Real YNAB API Integration > should successfully validate real YNAB token 469ms
3019
- stderr | src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > Real YNAB API Integration > should successfully get user information
3020
- ✅ Connected to YNAB user: 495de152-d100-4404-a9b4-d6115e038294
3021
-
3022
- ✓  integration:core  src/server/__tests__/server-startup.integration.test.ts > Server Startup and Transport Integration > Server Startup Validation > should handle invalid token gracefully during startup 127ms
3023
- ✓  integration:core  src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > Real YNAB API Integration > should successfully get user information 117ms
3024
- stderr | src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > Real YNAB API Integration > should successfully get budgets
3025
- ✅ Found 7 budget(s)
3026
- - test plan (7b47d8bb-ce4c-40c0-a9eb-c6d715af9a76)
3027
- - 8 Laguna (65b65f40-da07-4037-af17-d6559b9145af)
3028
- - going to mexico (Archived on 2025-01-24) (b371d9f6-94fd-48a1-9b19-f51ab17436f1)
3029
- - 2025 (bf00f94f-f532-4b2c-a39c-e8d9a963effd)
3030
- - 1376 W 14th (9e4e96bf-f857-4c84-9f07-1e201de1bd40)
3031
- - SRC (6d225b60-eaf5-4157-bd7a-9995b3e1b608)
3032
- - KYS (c402250b-c77e-4739-a1c4-d087d02693d5)
3033
-
3034
- ✓  integration:core  src/server/__tests__/server-startup.integration.test.ts > Server Startup and Transport Integration > Server Startup Validation > should provide detailed error messages for authentication failures 197ms
3035
- ✓  integration:core  src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > Real YNAB API Integration > should successfully get budgets 111ms
3036
- ✓  integration:core  src/server/__tests__/server-startup.integration.test.ts > Server Startup and Transport Integration > Server Startup Validation > should surface malformed token responses as AuthenticationError 12ms
3037
- ✓  integration:core  src/server/__tests__/server-startup.integration.test.ts > Server Startup and Transport Integration > Tool Registration > should register all expected YNAB tools 9ms
3038
- ✓  integration:core  src/server/__tests__/server-startup.integration.test.ts > Server Startup and Transport Integration > Tool Registration > should register budget management tools 11ms
3039
- ✓  integration:core  src/server/__tests__/server-startup.integration.test.ts > Server Startup and Transport Integration > Tool Registration > should register account management tools 10ms
3040
- ✓  integration:core  src/server/__tests__/server-startup.integration.test.ts > Server Startup and Transport Integration > Tool Registration > should register transaction management tools 9ms
3041
- ✓  integration:core  src/server/__tests__/server-startup.integration.test.ts > Server Startup and Transport Integration > Tool Registration > should register category management tools 8ms
3042
- ✓  integration:core  src/server/__tests__/server-startup.integration.test.ts > Server Startup and Transport Integration > Tool Registration > should register payee management tools 8ms
3043
- ✓  integration:core  src/server/__tests__/server-startup.integration.test.ts > Server Startup and Transport Integration > Tool Registration > should register utility tools 8ms
3044
- ✓  integration:core  src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > Real YNAB API Integration > should handle invalid token gracefully 109ms
3045
- ✓  integration:core  src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > Real YNAB API Integration > should successfully start and connect MCP server 203ms
3046
- ✓  integration:core  src/server/__tests__/server-startup.integration.test.ts > Server Startup and Transport Integration > Transport Setup > should attempt to connect with StdioServerTransport 244ms
3047
- stderr | src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > MCP Server Functionality > should execute get_user tool via the registry
3048
- Rate limit check for token_74700d80: 0/200 requests, remaining: 200, limited: false
3049
-
3050
- stderr | src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > MCP Server Functionality > should execute get_user tool via the registry
3051
- Recorded request for token_74700d80: 1/200 requests
3052
-
3053
- ✓  integration:core  src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > Real YNAB API Integration > should handle multiple rapid API calls without rate limiting issues 145ms
3054
- ✓  integration:core  src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > MCP Server Functionality > should expose registered tools via the registry 25ms
3055
- ✓  integration:core  src/server/__tests__/server-startup.integration.test.ts > Server Startup and Transport Integration > Transport Setup > should handle transport connection errors gracefully 99ms
3056
- ✓  integration:core  src/server/__tests__/server-startup.integration.test.ts > Server Startup and Transport Integration > Transport Setup > should validate token before attempting transport connection 99ms
3057
- stderr | src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > MCP Server Functionality > should execute get_user tool via the registry
3058
- Rate limit check for token_74700d80: 1/200 requests, remaining: 199, limited: false
3059
- [INFO] ynab:get_user | SUCCESS | 97ms | rate_limit_remaining:199
3060
-
3061
- stderr | src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > MCP Server Functionality > should set and retrieve default budget using tools
3062
- Rate limit check for token_74700d80: 1/200 requests, remaining: 199, limited: false
3063
-
3064
- stderr | src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > MCP Server Functionality > should set and retrieve default budget using tools
3065
- Recorded request for token_74700d80: 2/200 requests
3066
-
3067
- ✓  integration:core  src/server/__tests__/server-startup.integration.test.ts > Server Startup and Transport Integration > Error Reporting > should report configuration errors clearly 4ms
3068
- ✓  integration:core  src/server/__tests__/server-startup.integration.test.ts > Server Startup and Transport Integration > Error Reporting > should report authentication errors clearly 98ms
3069
- ✓  integration:core  src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > MCP Server Functionality > should execute get_user tool via the registry 105ms
3070
- stderr | src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > MCP Server Functionality > should set and retrieve default budget using tools
3071
- Rate limit check for token_74700d80: 2/200 requests, remaining: 198, limited: false
3072
- [INFO] ynab:list_budgets | SUCCESS | 103ms | rate_limit_remaining:198
3073
-
3074
- stderr | src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > MCP Server Functionality > should set and retrieve default budget using tools
3075
- Rate limit check for token_74700d80: 2/200 requests, remaining: 198, limited: false
3076
-
3077
- stderr | src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > MCP Server Functionality > should set and retrieve default budget using tools
3078
- Recorded request for token_74700d80: 3/200 requests
3079
-
3080
- stderr | src/server/__tests__/server-startup.integration.test.ts > Server Startup and Transport Integration > Error Reporting > should handle startup errors without exposing sensitive information
3081
- Server startup failed: Token validation failed: [object Object]
3082
-
3083
- stderr | src/server/__tests__/server-startup.integration.test.ts > Server Startup and Transport Integration > Error Reporting > should handle startup errors without exposing sensitive information
3084
- Server startup failed: Token validation failed: [object Object]
3085
-
3086
- ✓  integration:core  src/server/__tests__/server-startup.integration.test.ts > Server Startup and Transport Integration > Error Reporting > should handle startup errors without exposing sensitive information 187ms
3087
- ✓  integration:core  src/server/__tests__/server-startup.integration.test.ts > Server Startup and Transport Integration > Graceful Shutdown > should handle process signals gracefully 7ms
3088
- ✓  integration:core  src/server/__tests__/server-startup.integration.test.ts > Server Startup and Transport Integration > Graceful Shutdown > should clean up resources on shutdown 6ms
3089
- stderr | src/server/__tests__/server-startup.integration.test.ts > Server Startup and Transport Integration > Full Startup Workflow > should complete full startup sequence successfully
3090
- ✅ Server startup workflow completed successfully
3091
-
3092
- ✓  integration:core  src/server/__tests__/server-startup.integration.test.ts > Server Startup and Transport Integration > Full Startup Workflow > should complete full startup sequence successfully 191ms
3093
- stderr | src/server/__tests__/server-startup.integration.test.ts > Server Startup and Transport Integration > Full Startup Workflow > should fail fast on authentication errors
3094
- Server startup failed: Token validation failed: [object Object]
3095
-
3096
- ✓  integration:core  src/server/__tests__/server-startup.integration.test.ts > Server Startup and Transport Integration > Full Startup Workflow > should fail fast on configuration errors 5ms
3097
- ✓  integration:core  src/server/__tests__/server-startup.integration.test.ts > Server Startup and Transport Integration > Full Startup Workflow > should fail fast on authentication errors 94ms
3098
- stderr | src/tools/__tests__/budgetTools.integration.test.ts > Budget Tools Integration > handleGetBudget > should successfully get budget details from real API
3099
- ✅ Successfully retrieved budget: test plan
3100
- - 318 accounts
3101
- - 65 categories
3102
-
3103
- ✓  integration:core  src/tools/__tests__/budgetTools.integration.test.ts > Budget Tools Integration > handleGetBudget > should successfully get budget details from real API 1561ms
3104
- stderr | src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > MCP Server Functionality > should set and retrieve default budget using tools
3105
- Rate limit check for token_74700d80: 3/200 requests, remaining: 197, limited: false
3106
- [INFO] ynab:set_default_budget | SUCCESS | 676ms | rate_limit_remaining:197
3107
-
3108
- stderr | src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > MCP Server Functionality > should set and retrieve default budget using tools
3109
- Rate limit check for token_74700d80: 3/200 requests, remaining: 197, limited: false
3110
-
3111
- stderr | src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > MCP Server Functionality > should set and retrieve default budget using tools
3112
- Recorded request for token_74700d80: 4/200 requests
3113
-
3114
- stderr | src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > MCP Server Functionality > should set and retrieve default budget using tools
3115
- Rate limit check for token_74700d80: 4/200 requests, remaining: 196, limited: false
3116
- [INFO] ynab:get_default_budget | SUCCESS | 1ms | rate_limit_remaining:196
3117
-
3118
- stderr | src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > MCP Server Functionality > should provide diagnostic info with requested sections
3119
- Rate limit check for token_74700d80: 4/200 requests, remaining: 196, limited: false
3120
-
3121
- stderr | src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > MCP Server Functionality > should provide diagnostic info with requested sections
3122
- Recorded request for token_74700d80: 5/200 requests
3123
-
3124
- stderr | src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > MCP Server Functionality > should provide diagnostic info with requested sections
3125
- Rate limit check for token_74700d80: 5/200 requests, remaining: 195, limited: false
3126
- [INFO] ynab:diagnostic_info | SUCCESS | 6ms | rate_limit_remaining:195
3127
-
3128
- stderr | src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > MCP Server Functionality > should clear cache using the clear_cache tool
3129
- Rate limit check for token_74700d80: 5/200 requests, remaining: 195, limited: false
3130
-
3131
- stderr | src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > MCP Server Functionality > should clear cache using the clear_cache tool
3132
- Recorded request for token_74700d80: 6/200 requests
3133
-
3134
- stderr | src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > MCP Server Functionality > should clear cache using the clear_cache tool
3135
- Rate limit check for token_74700d80: 6/200 requests, remaining: 194, limited: false
3136
- [INFO] ynab:clear_cache | SUCCESS | 1ms | rate_limit_remaining:194
3137
-
3138
- stderr | src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > MCP Server Functionality > should include enhanced cache metrics in real diagnostic collection
3139
- Rate limit check for token_74700d80: 6/200 requests, remaining: 194, limited: false
3140
-
3141
- stderr | src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > MCP Server Functionality > should include enhanced cache metrics in real diagnostic collection
3142
- Recorded request for token_74700d80: 7/200 requests
3143
-
3144
- stderr | src/tools/__tests__/budgetTools.integration.test.ts > Budget Tools Integration > handleGetBudget > should handle invalid budget ID gracefully
3145
- ✅ Correctly handled invalid budget ID: Budget not found
3146
-
3147
- ✓  integration:core  src/tools/__tests__/budgetTools.integration.test.ts > Budget Tools Integration > handleGetBudget > should handle invalid budget ID gracefully 105ms
3148
- ✓  integration:core  src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > MCP Server Functionality > should set and retrieve default budget using tools 788ms
3149
- ✓  integration:core  src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > MCP Server Functionality > should provide diagnostic info with requested sections 12ms
3150
- ✓  integration:core  src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > MCP Server Functionality > should clear cache using the clear_cache tool 6ms
3151
- ✓  integration:core  src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > MCP Server Functionality > should track cache performance metrics during real tool execution 6ms
3152
- ✓  integration:core  src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > MCP Server Functionality > should demonstrate LRU eviction with real cache operations 6ms
3153
- ✓  integration:core  src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > MCP Server Functionality > should show cache hit rate improvement with repeated operations 5ms
3154
- ✓  integration:core  src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > MCP Server Functionality > should handle concurrent cache operations correctly 5ms
3155
- stderr | src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > MCP Server Functionality > should include enhanced cache metrics in real diagnostic collection
3156
- Rate limit check for token_74700d80: 7/200 requests, remaining: 193, limited: false
3157
- [INFO] ynab:list_budgets | SUCCESS | 126ms | rate_limit_remaining:193
3158
-
3159
- stderr | src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > MCP Server Functionality > should include enhanced cache metrics in real diagnostic collection
3160
- Rate limit check for token_74700d80: 7/200 requests, remaining: 193, limited: false
3161
-
3162
- stderr | src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > MCP Server Functionality > should include enhanced cache metrics in real diagnostic collection
3163
- Recorded request for token_74700d80: 8/200 requests
3164
-
3165
- stderr | src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > MCP Server Functionality > should include enhanced cache metrics in real diagnostic collection
3166
- Rate limit check for token_74700d80: 8/200 requests, remaining: 192, limited: false
3167
- [INFO] ynab:get_user | SUCCESS | 106ms | rate_limit_remaining:192
3168
-
3169
- stderr | src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > MCP Server Functionality > should include enhanced cache metrics in real diagnostic collection
3170
- Rate limit check for token_74700d80: 8/200 requests, remaining: 192, limited: false
3171
-
3172
- stderr | src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > MCP Server Functionality > should include enhanced cache metrics in real diagnostic collection
3173
- Recorded request for token_74700d80: 9/200 requests
3174
-
3175
- stderr | src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > MCP Server Functionality > should include enhanced cache metrics in real diagnostic collection
3176
- Rate limit check for token_74700d80: 9/200 requests, remaining: 191, limited: false
3177
- [INFO] ynab:diagnostic_info | SUCCESS | 1ms | rate_limit_remaining:191
3178
-
3179
- stderr | src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > MCP Server Functionality > should configure output formatter via set_output_format tool
3180
- Rate limit check for token_74700d80: 9/200 requests, remaining: 191, limited: false
3181
-
3182
- stderr | src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > MCP Server Functionality > should configure output formatter via set_output_format tool
3183
- Recorded request for token_74700d80: 10/200 requests
3184
-
3185
- stderr | src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > MCP Server Functionality > should configure output formatter via set_output_format tool
3186
- Rate limit check for token_74700d80: 10/200 requests, remaining: 190, limited: false
3187
- [INFO] ynab:set_output_format | SUCCESS | 1ms | rate_limit_remaining:190
3188
-
3189
- stderr | src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > MCP Server Functionality > should configure output formatter via set_output_format tool
3190
- Rate limit check for token_74700d80: 10/200 requests, remaining: 190, limited: false
3191
-
3192
- stderr | src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > MCP Server Functionality > should configure output formatter via set_output_format tool
3193
- Recorded request for token_74700d80: 11/200 requests
3194
-
3195
- stderr | src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > MCP Server Functionality > should configure output formatter via set_output_format tool
3196
- Rate limit check for token_74700d80: 11/200 requests, remaining: 189, limited: false
3197
- [INFO] ynab:set_output_format | SUCCESS | 1ms | rate_limit_remaining:189
3198
-
3199
- stderr | src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > MCP Server Functionality > should surface validation errors for invalid inputs
3200
- Rate limit check for token_74700d80: 11/200 requests, remaining: 189, limited: false
3201
- [ERROR] ynab:get_budget | FAILED | 0ms | rate_limit_remaining:189 | error:"Validation failed: Validation error: Invalid input: expected string, received undefined at "budget_id""
3202
-
3203
- stderr | src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > Modular Architecture Integration with Real API > should maintain real API functionality after modular refactoring
3204
- Rate limit check for token_74700d80: 11/200 requests, remaining: 189, limited: false
3205
-
3206
- stderr | src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > Modular Architecture Integration with Real API > should maintain real API functionality after modular refactoring
3207
- Recorded request for token_74700d80: 12/200 requests
3208
-
3209
- ✓  integration:core  src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > MCP Server Functionality > should include enhanced cache metrics in real diagnostic collection 240ms
3210
- ✓  integration:core  src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > MCP Server Functionality > should configure output formatter via set_output_format tool 7ms
3211
- ✓  integration:core  src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > MCP Server Functionality > should surface validation errors for invalid inputs 6ms
3212
- stderr | src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > Modular Architecture Integration with Real API > should maintain real API functionality after modular refactoring
3213
- Rate limit check for token_74700d80: 12/200 requests, remaining: 188, limited: false
3214
- [INFO] ynab:get_user | SUCCESS | 97ms | rate_limit_remaining:188
3215
-
3216
- stderr | src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > Modular Architecture Integration with Real API > should maintain real API functionality after modular refactoring
3217
- Rate limit check for token_74700d80: 12/200 requests, remaining: 188, limited: false
3218
-
3219
- stderr | src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > Modular Architecture Integration with Real API > should maintain real API functionality after modular refactoring
3220
- Recorded request for token_74700d80: 13/200 requests
3221
-
3222
- stderr | src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > Modular Architecture Integration with Real API > should maintain real API functionality after modular refactoring
3223
- Rate limit check for token_74700d80: 13/200 requests, remaining: 187, limited: false
3224
- [INFO] ynab:list_budgets | SUCCESS | 0ms | rate_limit_remaining:187
3225
-
3226
- stderr | src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > Modular Architecture Integration with Real API > should maintain real API functionality after modular refactoring
3227
- Rate limit check for token_74700d80: 13/200 requests, remaining: 187, limited: false
3228
-
3229
- stderr | src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > Modular Architecture Integration with Real API > should maintain real API functionality after modular refactoring
3230
- Recorded request for token_74700d80: 14/200 requests
3231
-
3232
- stderr | src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > Modular Architecture Integration with Real API > should maintain real API functionality after modular refactoring
3233
- Rate limit check for token_74700d80: 14/200 requests, remaining: 186, limited: false
3234
- [INFO] ynab:diagnostic_info | SUCCESS | 0ms | rate_limit_remaining:186
3235
-
3236
- stderr | src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > Modular Architecture Integration with Real API > should handle modular service errors gracefully in integration
3237
- Rate limit check for token_74700d80: 14/200 requests, remaining: 186, limited: false
3238
- [ERROR] ynab:get_budget | FAILED | 0ms | rate_limit_remaining:186 | error:"Validation failed: Validation error: Invalid input: expected string, received undefined at "budget_id""
3239
-
3240
- stderr | src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > Budget Resolution Integration Tests > should complete end-to-end workflow with real YNAB API after setting default budget
3241
- Rate limit check for token_74700d80: 14/200 requests, remaining: 186, limited: false
3242
-
3243
- stderr | src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > Budget Resolution Integration Tests > should complete end-to-end workflow with real YNAB API after setting default budget
3244
- Recorded request for token_74700d80: 15/200 requests
3245
-
3246
- stderr | src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > Budget Resolution Integration Tests > should complete end-to-end workflow with real YNAB API after setting default budget
3247
- Rate limit check for token_74700d80: 15/200 requests, remaining: 185, limited: false
3248
- [INFO] ynab:list_budgets | SUCCESS | 0ms | rate_limit_remaining:185
3249
-
3250
- stderr | src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > Budget Resolution Integration Tests > should complete end-to-end workflow with real YNAB API after setting default budget
3251
- Rate limit check for token_74700d80: 15/200 requests, remaining: 185, limited: false
3252
-
3253
- stderr | src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > Budget Resolution Integration Tests > should complete end-to-end workflow with real YNAB API after setting default budget
3254
- Recorded request for token_74700d80: 16/200 requests
3255
-
3256
- ✓  integration:core  src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > Modular Architecture Integration with Real API > should maintain real API functionality after modular refactoring 103ms
3257
- ✓  integration:core  src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > Modular Architecture Integration with Real API > should handle modular service errors gracefully in integration 4ms
3258
- ✓  integration:core  src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > Budget Resolution Integration Tests > should handle real YNAB API calls with budget resolution errors 4ms
3259
- ✓  integration:core  src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > Budget Resolution Integration Tests > should handle real YNAB API calls with invalid budget ID 5ms
3260
- stderr | src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > Budget Resolution Integration Tests > should complete end-to-end workflow with real YNAB API after setting default budget
3261
- Rate limit check for token_74700d80: 16/200 requests, remaining: 184, limited: false
3262
- [INFO] ynab:set_default_budget | SUCCESS | 289ms | rate_limit_remaining:184
3263
-
3264
- stderr | src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > Budget Resolution Integration Tests > should complete end-to-end workflow with real YNAB API after setting default budget
3265
- Rate limit check for token_74700d80: 16/200 requests, remaining: 184, limited: false
3266
-
3267
- stderr | src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > Budget Resolution Integration Tests > should complete end-to-end workflow with real YNAB API after setting default budget
3268
- Recorded request for token_74700d80: 17/200 requests
3269
-
3270
- stderr | src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > Budget Resolution Integration Tests > should complete end-to-end workflow with real YNAB API after setting default budget
3271
- Rate limit check for token_74700d80: 17/200 requests, remaining: 183, limited: false
3272
- [INFO] ynab:list_accounts | SUCCESS | 7ms | rate_limit_remaining:183
3273
-
3274
- stderr | src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > Budget Resolution Integration Tests > should handle real API errors properly with budget resolution
3275
- Rate limit check for token_74700d80: 17/200 requests, remaining: 183, limited: false
3276
-
3277
- stderr | src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > Budget Resolution Integration Tests > should handle real API errors properly with budget resolution
3278
- Recorded request for token_74700d80: 18/200 requests
3279
-
3280
- stderr | src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > Budget Resolution Integration Tests > should handle real API errors properly with budget resolution
3281
- Rate limit check for token_74700d80: 18/200 requests, remaining: 182, limited: false
3282
- [INFO] ynab:list_accounts | SUCCESS | 97ms | rate_limit_remaining:182
3283
-
3284
- stderr | src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > Budget Resolution Integration Tests > should handle real API errors properly with budget resolution
3285
- ⏭️ Skipping test due to YNAB API rate limit
3286
-
3287
- ✓  integration:core  src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > Budget Resolution Integration Tests > should complete end-to-end workflow with real YNAB API after setting default budget 303ms
3288
- stderr | src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > Budget Resolution Integration Tests > should maintain performance with real API calls and budget resolution
3289
- Rate limit check for token_74700d80: 18/200 requests, remaining: 182, limited: false
3290
-
3291
- stderr | src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > Budget Resolution Integration Tests > should maintain performance with real API calls and budget resolution
3292
- Recorded request for token_74700d80: 19/200 requests
3293
-
3294
- stderr | src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > Budget Resolution Integration Tests > should maintain performance with real API calls and budget resolution
3295
- Rate limit check for token_74700d80: 19/200 requests, remaining: 181, limited: false
3296
- [INFO] ynab:list_budgets | SUCCESS | 1ms | rate_limit_remaining:181
3297
-
3298
- stderr | src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > Budget Resolution Integration Tests > should maintain performance with real API calls and budget resolution
3299
- Rate limit check for token_74700d80: 19/200 requests, remaining: 181, limited: false
3300
-
3301
- stderr | src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > Budget Resolution Integration Tests > should maintain performance with real API calls and budget resolution
3302
- Recorded request for token_74700d80: 20/200 requests
3303
-
3304
- ↓  integration:core  src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > Budget Resolution Integration Tests > should handle real API errors properly with budget resolution 104ms
3305
- stderr | src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > Budget Resolution Integration Tests > should maintain performance with real API calls and budget resolution
3306
- Rate limit check for token_74700d80: 20/200 requests, remaining: 180, limited: false
3307
- [INFO] ynab:set_default_budget | SUCCESS | 338ms | rate_limit_remaining:180
3308
-
3309
- stderr | src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > Budget Resolution Integration Tests > should maintain performance with real API calls and budget resolution
3310
- Rate limit check for token_74700d80: 20/200 requests, remaining: 180, limited: false
3311
- Rate limit check for token_74700d80: 20/200 requests, remaining: 180, limited: false
3312
- Rate limit check for token_74700d80: 20/200 requests, remaining: 180, limited: false
3313
- Recorded request for token_74700d80: 21/200 requests
3314
- Recorded request for token_74700d80: 22/200 requests
3315
- Recorded request for token_74700d80: 23/200 requests
3316
-
3317
- stderr | src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > Budget Resolution Integration Tests > should maintain performance with real API calls and budget resolution
3318
- Rate limit check for token_74700d80: 23/200 requests, remaining: 177, limited: false
3319
- [INFO] ynab:list_accounts | SUCCESS | 7ms | rate_limit_remaining:177
3320
- Rate limit check for token_74700d80: 23/200 requests, remaining: 177, limited: false
3321
- [INFO] ynab:list_categories | SUCCESS | 7ms | rate_limit_remaining:177
3322
- Rate limit check for token_74700d80: 23/200 requests, remaining: 177, limited: false
3323
- [INFO] ynab:list_payees | SUCCESS | 7ms | rate_limit_remaining:177
3324
-
3325
- ✓  integration:core  src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > Budget Resolution Integration Tests > should maintain performance with real API calls and budget resolution 352ms
3326
- ✓  integration:core  src/server/__tests__/YNABMCPServer.integration.test.ts > YNABMCPServer > Budget Resolution Integration Tests > should handle security middleware with budget resolution errors 4ms
3327
- ✓  integration:core  src/tools/reconciliation/__tests__/executor.integration.test.ts > Reconciliation Executor - Bulk Create Integration > creates 10 transactions via bulk mode 3236ms
3328
- ✓  integration:core  src/tools/reconciliation/__tests__/executor.integration.test.ts > Reconciliation Executor - Bulk Create Integration > reports duplicates when import IDs already exist 1031ms
3329
- stderr | src/tools/reconciliation/__tests__/executor.integration.test.ts > Reconciliation Executor - Bulk Create Integration > processes 150 transactions across multiple chunks
3330
- ⏭️ Skipping test due to YNAB API rate limit
3331
-
3332
- stderr | src/tools/reconciliation/__tests__/executor.integration.test.ts > Reconciliation Executor - Bulk Create Integration > processes 150 transactions across multiple chunks
3333
- ⏭️ Skipping test due to YNAB API rate limit
3334
-
3335
- stderr | src/tools/reconciliation/__tests__/executor.integration.test.ts > Reconciliation Executor - Bulk Create Integration > processes 150 transactions across multiple chunks
3336
- ⏭️ Skipping test due to YNAB API rate limit
3337
-
3338
- stderr | src/tools/reconciliation/__tests__/executor.integration.test.ts > Reconciliation Executor - Bulk Create Integration > processes 150 transactions across multiple chunks
3339
- ⏭️ Skipping test due to YNAB API rate limit
3340
-
3341
- stderr | src/tools/reconciliation/__tests__/executor.integration.test.ts > Reconciliation Executor - Bulk Create Integration > processes 150 transactions across multiple chunks
3342
- ⏭️ Skipping test due to YNAB API rate limit
3343
-
3344
- stderr | src/tools/reconciliation/__tests__/executor.integration.test.ts > Reconciliation Executor - Bulk Create Integration > processes 150 transactions across multiple chunks
3345
- ⏭️ Skipping test due to YNAB API rate limit
3346
-
3347
- stderr | src/tools/reconciliation/__tests__/executor.integration.test.ts > Reconciliation Executor - Bulk Create Integration > processes 150 transactions across multiple chunks
3348
- ⏭️ Skipping test due to YNAB API rate limit
3349
-
3350
- stderr | src/tools/reconciliation/__tests__/executor.integration.test.ts > Reconciliation Executor - Bulk Create Integration > processes 150 transactions across multiple chunks
3351
- ⏭️ Skipping test due to YNAB API rate limit
3352
-
3353
- stderr | src/tools/reconciliation/__tests__/executor.integration.test.ts > Reconciliation Executor - Bulk Create Integration > processes 150 transactions across multiple chunks
3354
- ⏭️ Skipping test due to YNAB API rate limit
3355
-
3356
- stderr | src/tools/reconciliation/__tests__/executor.integration.test.ts > Reconciliation Executor - Bulk Create Integration > processes 150 transactions across multiple chunks
3357
- ⏭️ Skipping test due to YNAB API rate limit
3358
-
3359
- stderr | src/tools/reconciliation/__tests__/executor.integration.test.ts > Reconciliation Executor - Bulk Create Integration > processes 150 transactions across multiple chunks
3360
- ⏭️ Skipping test due to YNAB API rate limit
3361
-
3362
- stderr | src/tools/reconciliation/__tests__/executor.integration.test.ts > Reconciliation Executor - Bulk Create Integration > processes 150 transactions across multiple chunks
3363
- ⏭️ Skipping test due to YNAB API rate limit
3364
-
3365
- stderr | src/tools/reconciliation/__tests__/executor.integration.test.ts > Reconciliation Executor - Bulk Create Integration > processes 150 transactions across multiple chunks
3366
- ⏭️ Skipping test due to YNAB API rate limit
3367
-
3368
- stderr | src/tools/reconciliation/__tests__/executor.integration.test.ts > Reconciliation Executor - Bulk Create Integration > processes 150 transactions across multiple chunks
3369
- ⏭️ Skipping test due to YNAB API rate limit
3370
-
3371
- stderr | src/tools/reconciliation/__tests__/executor.integration.test.ts > Reconciliation Executor - Bulk Create Integration > processes 150 transactions across multiple chunks
3372
- ⏭️ Skipping test due to YNAB API rate limit
3373
-
3374
- stderr | src/tools/reconciliation/__tests__/executor.integration.test.ts > Reconciliation Executor - Bulk Create Integration > processes 150 transactions across multiple chunks
3375
- ⏭️ Skipping test due to YNAB API rate limit
3376
-
3377
- stderr | src/tools/reconciliation/__tests__/executor.integration.test.ts > Reconciliation Executor - Bulk Create Integration > processes 150 transactions across multiple chunks
3378
- ⏭️ Skipping test due to YNAB API rate limit
3379
-
3380
- stderr | src/tools/reconciliation/__tests__/executor.integration.test.ts > Reconciliation Executor - Bulk Create Integration > processes 150 transactions across multiple chunks
3381
- ⏭️ Skipping test due to YNAB API rate limit
3382
-
3383
- stderr | src/tools/reconciliation/__tests__/executor.integration.test.ts > Reconciliation Executor - Bulk Create Integration > processes 150 transactions across multiple chunks
3384
- ⏭️ Skipping test due to YNAB API rate limit
3385
-
3386
- stderr | src/tools/reconciliation/__tests__/executor.integration.test.ts > Reconciliation Executor - Bulk Create Integration > processes 150 transactions across multiple chunks
3387
- ⏭️ Skipping test due to YNAB API rate limit
3388
-
3389
- stderr | src/tools/reconciliation/__tests__/executor.integration.test.ts > Reconciliation Executor - Bulk Create Integration > processes 150 transactions across multiple chunks
3390
- ⏭️ Skipping test due to YNAB API rate limit
3391
-
3392
- stderr | src/tools/reconciliation/__tests__/executor.integration.test.ts > Reconciliation Executor - Bulk Create Integration > processes 150 transactions across multiple chunks
3393
- ⏭️ Skipping test due to YNAB API rate limit
3394
-
3395
- stderr | src/tools/reconciliation/__tests__/executor.integration.test.ts > Reconciliation Executor - Bulk Create Integration > processes 150 transactions across multiple chunks
3396
- ⏭️ Skipping test due to YNAB API rate limit
3397
-
3398
- stderr | src/tools/reconciliation/__tests__/executor.integration.test.ts > Reconciliation Executor - Bulk Create Integration > processes 150 transactions across multiple chunks
3399
- ⏭️ Skipping test due to YNAB API rate limit
3400
-
3401
- stderr | src/tools/reconciliation/__tests__/executor.integration.test.ts > Reconciliation Executor - Bulk Create Integration > processes 150 transactions across multiple chunks
3402
- ⏭️ Skipping test due to YNAB API rate limit
3403
-
3404
- stderr | src/tools/reconciliation/__tests__/executor.integration.test.ts > Reconciliation Executor - Bulk Create Integration > processes 150 transactions across multiple chunks
3405
- ⏭️ Skipping test due to YNAB API rate limit
3406
-
3407
- stderr | src/tools/reconciliation/__tests__/executor.integration.test.ts > Reconciliation Executor - Bulk Create Integration > processes 150 transactions across multiple chunks
3408
- ⏭️ Skipping test due to YNAB API rate limit
3409
-
3410
- stderr | src/tools/reconciliation/__tests__/executor.integration.test.ts > Reconciliation Executor - Bulk Create Integration > processes 20 transactions in under 8 seconds
3411
- ⏭️ Skipping test due to YNAB API rate limit
3412
-
3413
- ✓  integration:core  src/tools/reconciliation/__tests__/executor.integration.test.ts > Reconciliation Executor - Bulk Create Integration > processes 150 transactions across multiple chunks 26337ms
3414
- ✓  integration:core  src/tools/reconciliation/__tests__/executor.integration.test.ts > Reconciliation Executor - Bulk Create Integration > processes 20 transactions in under 8 seconds 202ms
3415
- ✓  integration:core  src/tools/reconciliation/__tests__/executor.integration.test.ts > Reconciliation Executor - Bulk Create Integration > propagates API errors for invalid account IDs 200ms
3416
- stderr | src/tools/reconciliation/__tests__/executor.integration.test.ts > Reconciliation Executor - Bulk Create Integration > skips work when a rate limit error is detected
3417
- ⏭️ Skipping test due to YNAB API rate limit
3418
-
3419
- ✓  integration:core  src/tools/reconciliation/__tests__/executor.integration.test.ts > Reconciliation Executor - Bulk Create Integration > skips work when a rate limit error is detected 114ms
3420
-
3421
- ⎯⎯⎯⎯⎯⎯⎯ Failed Tests 3 ⎯⎯⎯⎯⎯⎯⎯
3422
-
3423
-  FAIL   integration:core  src/tools/reconciliation/__tests__/recommendationEngine.integration.test.ts > Recommendation Engine Integration > with account_id and budget_id provided > should generate review_duplicate for suggested matches
3424
- AssertionError: expected false to be true // Object.is equality
3425
-
3426
- - Expected
3427
- + Received
3428
-
3429
- - true
3430
- + false
3431
-
3432
-  ❯ src/tools/reconciliation/__tests__/recommendationEngine.integration.test.ts:241:32
3433
- 239|  rec.action_type === 'create_transaction' || rec.action_typ…
3434
- 240|  );
3435
- 241|  expect(hasRelevantRec).toBe(true);
3436
-  |  ^
3437
- 242|  },
3438
- 243|  );
3439
-
3440
- ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/3]⎯
3441
-
3442
-  FAIL   integration:core  src/__tests__/tools/reconciliation/csvParser.integration.test.ts > CSV Parser Integration Tests > TD Bank CSV > should parse TD CSV correctly
3443
- AssertionError: expected [ …(2) ] to have a length of +0 but got 2
3444
-
3445
- - Expected
3446
- + Received
3447
-
3448
- - 0
3449
- + 2
3450
-
3451
-  ❯ src/__tests__/tools/reconciliation/csvParser.integration.test.ts:16:29
3452
-  14|  const result = parseCSV(tdCSV, { preset: 'td' });
3453
-  15| 
3454
-  16|  expect(result.errors).toHaveLength(0);
3455
-  |  ^
3456
-  17|  expect(result.transactions).toHaveLength(3);
3457
-  18|  expect(result.transactions[0].amount).toBe(-45230); // Milliunit…
3458
-
3459
- ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[2/3]⎯
3460
-
3461
-  FAIL   integration:core  src/__tests__/tools/reconciliation/csvParser.integration.test.ts > Matcher Integration Tests > should achieve high confidence matches with exact integer comparison
3462
- TypeError: Cannot read properties of undefined (reading 'confidence')
3463
-  ❯ src/__tests__/tools/reconciliation/csvParser.integration.test.ts:95:23
3464
-  93| 
3465
-  94|  // Shell: exact amount match (both -45230 milliunits)
3466
-  95|  expect(matches[0].confidence).toBe('high');
3467
-  |  ^
3468
-  96|  expect(matches[0].bestMatch?.scores.amount).toBe(100);
3469
-  97| 
3470
-
3471
- ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[3/3]⎯
3472
-
3473
-
3474
-  Test Files  2 failed | 10 passed | 11 skipped (23)
3475
-  Tests  3 failed | 131 passed | 50 skipped (188)
3476
-  Start at  20:41:23
3477
-  Duration  39.11s (transform 3.94s, setup 0ms, collect 54.42s, tests 41.96s, environment 37ms, prepare 6.62s)
3478
-
3479
-
3480
- 📊 Test results written to test-results/
3481
- - summary.json (overview)
3482
- - *-tests.json (1 project file(s))
3483
- - failed-tests.json (3 failure(s))
3484
- - passed-tests-summary.json
3485
- - index.html (interactive report)
3486
-
3487
- 💡 test-results.json contains a pointer to the detailed results
3488
-  HTML  Report is generated
3489
-  You can run npx vite preview --outDir test-results to see the test results.