@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,189 +0,0 @@
1
- Now I have a complete picture. Let me compile the comprehensive catalogue report.
2
-
3
- ---
4
-
5
- ## MCP Tool Registration Catalogue Report
6
-
7
- ### Summary Statistics
8
-
9
- | Metric | Count |
10
- |--------|-------|
11
- | **Total Tools** | 30 |
12
- | **Domain Groups** | 8 |
13
- | **Adapter Types** | 5 |
14
- | **Inline Input Schemas** | 5 |
15
- | **External Input Schemas** | 22 |
16
- | **Output Schemas (typed)** | 17 |
17
- | **Output Schemas (loose)** | 13 |
18
-
19
- ---
20
-
21
- ### Tools by Domain Group
22
-
23
- #### 1. Budget Tools (3 tools)
24
-
25
- | Tool | Adapter | Input Schema | Output Schema | Schema Location |
26
- |------|---------|--------------|---------------|-----------------|
27
- | `list_budgets` | `adaptWithDelta` | `emptyObjectSchema` | `ListBudgetsOutputSchema` | **Inline** (server) |
28
- | `get_budget` | `adapt` | `GetBudgetSchema` | `GetBudgetOutputSchema` | budgetTools.ts |
29
- | `set_default_budget` | inline handler | `setDefaultBudgetSchema` | `SetDefaultBudgetOutputSchema` | **Inline** (server) |
30
-
31
- #### 2. Account Tools (3 tools)
32
-
33
- | Tool | Adapter | Input Schema | Output Schema | Schema Location |
34
- |------|---------|--------------|---------------|-----------------|
35
- | `list_accounts` | `adaptWithDelta` | `ListAccountsSchema` | `ListAccountsOutputSchema` | accountTools.ts |
36
- | `get_account` | `adapt` | `GetAccountSchema` | `GetAccountOutputSchema` | accountTools.ts |
37
- | `create_account` | `adaptWrite` | `CreateAccountSchema` | `LooseObjectSchema` | accountTools.ts |
38
-
39
- #### 3. Transaction Tools (9 tools)
40
-
41
- | Tool | Adapter | Input Schema | Output Schema | Schema Location |
42
- |------|---------|--------------|---------------|-----------------|
43
- | `list_transactions` | `adaptWithDelta` | `ListTransactionsSchema` | `LooseObjectSchema` | transactionTools.ts |
44
- | `get_transaction` | `adapt` | `GetTransactionSchema` | `GetTransactionOutputSchema` | transactionTools.ts |
45
- | `create_transaction` | `adaptWrite` | `CreateTransactionSchema` | `LooseObjectSchema` | transactionTools.ts |
46
- | `create_transactions` | `adaptWrite` | `CreateTransactionsSchema` | `LooseObjectSchema` | transactionTools.ts |
47
- | `create_receipt_split_transaction` | `adaptWrite` | `CreateReceiptSplitTransactionSchema` | `LooseObjectSchema` | transactionTools.ts |
48
- | `update_transaction` | `adaptWrite` | `UpdateTransactionSchema` | `LooseObjectSchema` | transactionTools.ts |
49
- | `update_transactions` | `adaptWrite` | `UpdateTransactionsSchema` | `LooseObjectSchema` | transactionTools.ts |
50
- | `delete_transaction` | `adaptWrite` | `DeleteTransactionSchema` | `LooseObjectSchema` | transactionTools.ts |
51
- | `export_transactions` | `adapt` | `ExportTransactionsSchema` | `ExportTransactionsOutputSchema` | exportTransactions.ts |
52
-
53
- #### 4. Category Tools (3 tools)
54
-
55
- | Tool | Adapter | Input Schema | Output Schema | Schema Location |
56
- |------|---------|--------------|---------------|-----------------|
57
- | `list_categories` | `adaptWithDelta` | `ListCategoriesSchema` | `ListCategoriesOutputSchema` | categoryTools.ts |
58
- | `get_category` | `adapt` | `GetCategorySchema` | `GetCategoryOutputSchema` | categoryTools.ts |
59
- | `update_category` | `adaptWrite` | `UpdateCategorySchema` | `LooseObjectSchema` | categoryTools.ts |
60
-
61
- #### 5. Payee Tools (2 tools)
62
-
63
- | Tool | Adapter | Input Schema | Output Schema | Schema Location |
64
- |------|---------|--------------|---------------|-----------------|
65
- | `list_payees` | `adaptWithDelta` | `ListPayeesSchema` | `ListPayeesOutputSchema` | payeeTools.ts |
66
- | `get_payee` | `adapt` | `GetPayeeSchema` | `GetPayeeOutputSchema` | payeeTools.ts |
67
-
68
- #### 6. Month Tools (2 tools)
69
-
70
- | Tool | Adapter | Input Schema | Output Schema | Schema Location |
71
- |------|---------|--------------|---------------|-----------------|
72
- | `list_months` | `adaptWithDelta` | `ListMonthsSchema` | `ListMonthsOutputSchema` | monthTools.ts |
73
- | `get_month` | `adapt` | `GetMonthSchema` | `GetMonthOutputSchema` | monthTools.ts |
74
-
75
- #### 7. Utility Tools (6 tools)
76
-
77
- | Tool | Adapter | Input Schema | Output Schema | Schema Location |
78
- |------|---------|--------------|---------------|-----------------|
79
- | `get_default_budget` | inline handler | `emptyObjectSchema` | `GetDefaultBudgetOutputSchema` | **Inline** (server) |
80
- | `get_user` | `adaptNoInput` | `emptyObjectSchema` | `GetUserOutputSchema` | **Inline** (server) |
81
- | `convert_amount` | inline handler | `ConvertAmountSchema` | `ConvertAmountOutputSchema` | utilityTools.ts |
82
- | `diagnostic_info` | inline handler | `diagnosticInfoSchema` | `DiagnosticInfoOutputSchema` | **Inline** (server) |
83
- | `clear_cache` | inline handler | `emptyObjectSchema` | `ClearCacheOutputSchema` | **Inline** (server) |
84
- | `set_output_format` | inline handler | `setOutputFormatSchema` | `SetOutputFormatOutputSchema` | **Inline** (server) |
85
-
86
- #### 8. Advanced Tools (2 tools)
87
-
88
- | Tool | Adapter | Input Schema | Output Schema | Schema Location |
89
- |------|---------|--------------|---------------|-----------------|
90
- | `compare_transactions` | `adapt` | `CompareTransactionsSchema` | `CompareTransactionsOutputSchema` | compareTransactions/index.ts |
91
- | `reconcile_account` | `adaptWithDelta` | `ReconcileAccountSchema` | `LooseObjectSchema` | reconciliation/index.ts |
92
-
93
- ---
94
-
95
- ### Adapter Type Summary
96
-
97
- | Adapter Type | Purpose | Tool Count | Tools |
98
- |--------------|---------|------------|-------|
99
- | **`adapt`** | Standard read ops | 8 | get_budget, get_account, get_transaction, get_category, get_payee, get_month, export_transactions, compare_transactions |
100
- | **`adaptWithDelta`** | Read ops with delta caching | 8 | list_budgets, list_accounts, list_transactions, list_categories, list_payees, list_months, reconcile_account |
101
- | **`adaptWrite`** | Write ops with cache invalidation | 8 | create_account, create_transaction, create_transactions, create_receipt_split_transaction, update_transaction, update_transactions, update_category, delete_transaction |
102
- | **`adaptNoInput`** | Read ops without input params | 1 | get_user |
103
- | **inline handler** | Server-owned local ops | 5 | set_default_budget, get_default_budget, diagnostic_info, clear_cache, set_output_format |
104
-
105
- ---
106
-
107
- ### Schema Migration Analysis
108
-
109
- #### Inline Schemas in YNABMCPServer.ts (5 schemas)
110
-
111
- | Schema | Current Location | Migration Recommendation |
112
- |--------|------------------|--------------------------|
113
- | `emptyObjectSchema` | Line 446 | **MOVE** → `src/tools/schemas/shared/commonInputs.ts` - Reused by 4 tools |
114
- | `setDefaultBudgetSchema` | Line 447 | **MOVE** → `src/tools/schemas/inputs/budgetInputs.ts` |
115
- | `diagnosticInfoSchema` | Lines 448-457 | **KEEP INLINE** - Server-specific config, tightly coupled to DiagnosticManager |
116
- | `setOutputFormatSchema` | Lines 458-463 | **KEEP INLINE** - Server-specific config, tightly coupled to responseFormatter |
117
- | `LooseObjectSchema` | Line 465 | **MOVE** → `src/tools/schemas/shared/commonOutputs.ts` - Already exists at that location, just import it |
118
-
119
- #### Schemas That Must Stay Inline (Server-Owned)
120
-
121
- These schemas are tightly coupled to server internals and should remain in YNABMCPServer.ts:
122
-
123
- 1. **`diagnosticInfoSchema`** - Controls DiagnosticManager options (memory, cache, delta flags)
124
- 2. **`setOutputFormatSchema`** - Controls responseFormatter configuration
125
-
126
- #### Schemas Recommended for Migration
127
-
128
- | Schema | Target Location | Rationale |
129
- |--------|-----------------|-----------|
130
- | `emptyObjectSchema` | `schemas/shared/commonInputs.ts` | Reusable pattern for no-input tools (list_budgets, get_default_budget, clear_cache, get_user) |
131
- | `setDefaultBudgetSchema` | `schemas/inputs/budgetInputs.ts` | Domain-specific, belongs with budget schemas |
132
- | `LooseObjectSchema` | Import from `schemas/shared/commonOutputs.ts` | Already exists; just needs import instead of inline definition |
133
-
134
- ---
135
-
136
- ### Current Schema Module Structure
137
-
138
- ```
139
- src/tools/schemas/
140
- ├── outputs/ # Output schemas (well-organized)
141
- │ ├── index.ts # Central export
142
- │ ├── utilityOutputs.ts
143
- │ ├── budgetOutputs.ts
144
- │ ├── accountOutputs.ts
145
- │ ├── transactionOutputs.ts
146
- │ ├── transactionMutationOutputs.ts
147
- │ ├── categoryOutputs.ts
148
- │ ├── payeeOutputs.ts
149
- │ ├── monthOutputs.ts
150
- │ ├── comparisonOutputs.ts
151
- │ ├── reconciliationOutputs.ts
152
- │ └── __tests__/ # Output schema tests
153
- └── shared/
154
- └── commonOutputs.ts # LooseObjectSchema already here
155
- ```
156
-
157
- #### Proposed Addition
158
-
159
- ```
160
- src/tools/schemas/
161
- ├── inputs/ # NEW: Input schemas (to mirror outputs)
162
- │ ├── index.ts # Central export
163
- │ ├── budgetInputs.ts # GetBudgetSchema, SetDefaultBudgetSchema
164
- │ └── commonInputs.ts # emptyObjectSchema
165
- └── shared/
166
- └── commonInputs.ts # Alternative location for emptyObjectSchema
167
- ```
168
-
169
- ---
170
-
171
- ### Key Findings
172
-
173
- 1. **Output schemas are well-organized** - All centralized in `src/tools/schemas/outputs/` with proper exports
174
- 2. **Input schemas are scattered** - Defined in individual tool files (acceptable but inconsistent with outputs)
175
- 3. **5 inline schemas in server** - 3 should migrate, 2 must stay (server-specific)
176
- 4. **LooseObjectSchema duplication** - Defined inline but already exists in commonOutputs.ts
177
- 5. **13 tools use LooseObjectSchema** - All write operations, plus list_transactions and reconcile_account
178
-
179
- ---
180
-
181
- ### Migration Priority
182
-
183
- | Priority | Schema | Effort | Impact |
184
- |----------|--------|--------|--------|
185
- | **High** | `LooseObjectSchema` | Low | Remove duplication - just change to import |
186
- | **Medium** | `emptyObjectSchema` | Low | Improve reusability across 4 tools |
187
- | **Low** | `setDefaultBudgetSchema` | Low | Consistency with domain pattern |
188
- | **None** | `diagnosticInfoSchema` | N/A | Keep inline - server-specific |
189
- | **None** | `setOutputFormatSchema` | N/A | Keep inline - server-specific |
@@ -1 +0,0 @@
1
- Agent cancelled