@dizzlkheinz/ynab-mcpb 0.17.0 → 0.17.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) 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 +11 -2
  7. package/CLAUDE.md +7 -6
  8. package/dist/bundle/index.cjs +52 -52
  9. package/dist/server/YNABMCPServer.d.ts +120 -54
  10. package/dist/server/securityMiddleware.d.ts +37 -8
  11. package/dist/tools/schemas/outputs/index.d.ts +2 -2
  12. package/dist/tools/schemas/outputs/index.js +2 -2
  13. package/dist/tools/schemas/outputs/utilityOutputs.d.ts +0 -15
  14. package/dist/tools/schemas/outputs/utilityOutputs.js +0 -9
  15. package/dist/tools/utilityTools.d.ts +0 -7
  16. package/dist/tools/utilityTools.js +1 -50
  17. package/docs/maintainers/npm-publishing.md +27 -0
  18. package/docs/reference/API.md +15 -70
  19. package/docs/technical/reconciliation-system-architecture.md +2251 -2251
  20. package/package.json +5 -5
  21. package/scripts/analyze-bundle.mjs +41 -41
  22. package/scripts/generate-mcpb.ps1 +95 -95
  23. package/scripts/watch-and-restart.ps1 +49 -49
  24. package/src/__tests__/comprehensive.integration.test.ts +0 -28
  25. package/src/__tests__/performance.test.ts +4 -12
  26. package/src/__tests__/setup.ts +45 -14
  27. package/src/__tests__/workflows.e2e.test.ts +0 -44
  28. package/src/server/__tests__/YNABMCPServer.test.ts +0 -1
  29. package/src/server/__tests__/toolRegistration.test.ts +2 -2
  30. package/src/tools/__tests__/transactionTools.integration.test.ts +63 -3
  31. package/src/tools/__tests__/utilityTools.integration.test.ts +1 -85
  32. package/src/tools/__tests__/utilityTools.test.ts +1 -123
  33. package/src/tools/schemas/outputs/index.ts +0 -3
  34. package/src/tools/schemas/outputs/utilityOutputs.ts +2 -43
  35. package/src/tools/toolCategories.ts +0 -1
  36. package/src/tools/utilityTools.ts +5 -76
  37. package/vitest.config.ts +2 -1
  38. package/.chunkhound.json +0 -11
  39. package/.code/agents/0098661e-0fa3-4990-beb9-c0cbf3f123aa/status.txt +0 -1
  40. package/.code/agents/01a13ef4-3f23-4f52-b33b-3585b73cfa60/error.txt +0 -3
  41. package/.code/agents/084fd32f-e298-4728-9103-a78d7dc39613/error.txt +0 -3
  42. package/.code/agents/0fed51e1-a943-4b97-a2a8-a6f0f27c844d/status.txt +0 -1
  43. package/.code/agents/1059b6bd-5ccd-4d83-a12c-7c9d89137399/error.txt +0 -5
  44. package/.code/agents/110/exec-call_F9BDNG7JfxKkq7Vc8ESAvdft.txt +0 -1569
  45. package/.code/agents/11ebcef3-b13f-4e44-ad80-d94a866804b7/error.txt +0 -3
  46. package/.code/agents/1324/exec-call_tIpx9uV1TpARbAMZonRQm8AO.txt +0 -757
  47. package/.code/agents/1398/exec-call_CjItcWMU1G6JoPshX62QvpaR.txt +0 -2832
  48. package/.code/agents/1398/exec-call_SUVq2ivmONQ5LMCmd7ngmOqr.txt +0 -2709
  49. package/.code/agents/1398/exec-call_SdNY4NOffdcC5pRYjVXHjPCK.txt +0 -2832
  50. package/.code/agents/1398/exec-call_qblJo9et1gsFFB63TtLOiji2.txt +0 -2832
  51. package/.code/agents/1398/exec-call_zaRrzlGz7GJcNzVfkAmML7Zg.txt +0 -2709
  52. package/.code/agents/1572/exec-call_GjVFBFOWcY7lE0idc5nWlLNh.txt +0 -781
  53. package/.code/agents/171834fd-5905-42fc-bbcc-2c755145b0fc/status.txt +0 -1
  54. package/.code/agents/1724/exec-call_HvHQe0w5CCG3T7Q3ULT6MO3g.txt +0 -5217
  55. package/.code/agents/1724/exec-call_QwUNESVzfxxk78K1frh1Vahb.txt +0 -2594
  56. package/.code/agents/1724/exec-call_aJ1Xwz71XmIpD4SBxSHERzLe.txt +0 -2594
  57. package/.code/agents/1846/exec-call_1YNAVD18RjrMN7JnfkkQhUP3.txt +0 -766
  58. package/.code/agents/1846/exec-call_lh3lDzE4WJAh1lFiomiiZ73D.txt +0 -766
  59. package/.code/agents/1d7d7ab7-7473-4b69-8b97-6e914f56056a/result.txt +0 -231
  60. package/.code/agents/2038/exec-call_DYwOukaYsL8VCONWmV2rUW5u.txt +0 -766
  61. package/.code/agents/2038/exec-call_c7fOQ7UrpVcTtvdfGBRM146V.txt +0 -652
  62. package/.code/agents/2038/exec-call_ySNyq9Mm55jWE480s54r5QcA.txt +0 -766
  63. package/.code/agents/210/exec-call_0tQCsKNJ1WTuIchb8wlcFJpW.txt +0 -2590
  64. package/.code/agents/210/exec-call_8ZlY9cUc8Ft1twi4ch8UJ6IN.txt +0 -5195
  65. package/.code/agents/2188/exec-call_5HqayBxIteJtoI8oPTiLWgvJ.txt +0 -286
  66. package/.code/agents/2188/exec-call_XRbBKBq3adZe6dcppAvQtM7G.txt +0 -218
  67. package/.code/agents/2188/exec-call_ehA0SjpYtrUi6GJXmibLjp4i.txt +0 -180
  68. package/.code/agents/21902821-ecaf-4759-bb9d-222b90921af5/error.txt +0 -3
  69. package/.code/agents/2256/exec-call_AtPcRWPmFPMcmX6qOFm1fCEY.txt +0 -766
  70. package/.code/agents/232073be-aa0e-46da-b478-5b64dbf03cf5/status.txt +0 -1
  71. package/.code/agents/234ff534-2336-4771-a8d9-aa04421a63be/result.txt +0 -747
  72. package/.code/agents/2454/exec-call_aFJpupwjfZeOBm7ixI5Vc8z2.txt +0 -766
  73. package/.code/agents/2454/exec-call_wogZ4HfXTodTEXvdgXlVUBpv.txt +0 -766
  74. package/.code/agents/253e2695-dc36-4022-b436-27655e0fc6c7/status.txt +0 -1
  75. package/.code/agents/2583/exec-call_M59I4eDjpjlBIWBiSxyS0YlJ.txt +0 -2594
  76. package/.code/agents/2583/exec-call_usLRGh7OhVHtsRBL4iUwRhjq.txt +0 -2594
  77. package/.code/agents/292aa3ff-dbab-470f-97c9-e7e8fd65e0db/result.txt +0 -144
  78. package/.code/agents/2e905864-aa07-4314-bcf9-c5b32277e4ac/result.txt +0 -36
  79. package/.code/agents/3073/exec-call_Peeagc9DxGYLgE6pNdMZhqIE.txt +0 -766
  80. package/.code/agents/3073/exec-call_d2YSE3hXF08KRSoUM3qd8Z3x.txt +0 -766
  81. package/.code/agents/3134/exec-call_IgCAMGx19lWfuo8zfYIt5FFC.txt +0 -416
  82. package/.code/agents/3134/exec-call_IxvLR2Oo7kba2QTsI1gHVko8.txt +0 -2590
  83. package/.code/agents/3134/exec-call_jYvc8hksZChSiysbzKjl2ZbB.txt +0 -2590
  84. package/.code/agents/329/exec-call_4QdP3SfSO7HGPCwVcqZIth6s.txt +0 -2590
  85. package/.code/agents/335aa031-466d-4fb7-925f-3cd864e264d0/result.txt +0 -191
  86. package/.code/agents/3364/exec-call_NbhIrsM5HhyDZDmJZG5CuCYL.txt +0 -766
  87. package/.code/agents/3364/exec-call_cKtJg0NrXiwXEFwlsE3uPZRA.txt +0 -766
  88. package/.code/agents/36d98414-5cde-4d9d-9a67-a240a18c1f07/result.txt +0 -189
  89. package/.code/agents/4604e866-b7b8-44f5-992f-2f683b0a523b/status.txt +0 -1
  90. package/.code/agents/472/exec-call_4AxzEEcWwkKhpqRB3bE8Ha4L.txt +0 -790
  91. package/.code/agents/472/exec-call_CB3LPYQA8QIZRi8I6kj4J17A.txt +0 -766
  92. package/.code/agents/472/exec-call_YeoUWvaFoktay2nqVUsa9KKX.txt +0 -790
  93. package/.code/agents/472/exec-call_jPWgKVquBBXTg0T3Lks5ZfkK.txt +0 -2594
  94. package/.code/agents/472/exec-call_qBkvunpGBDEHph2jPmTwtcsb.txt +0 -1000
  95. package/.code/agents/472/exec-call_v0ffRV1p0kTckBmJPzzHAEy0.txt +0 -3489
  96. package/.code/agents/472/exec-call_xAX5FXqWIlk02d9WubHbHWh8.txt +0 -766
  97. package/.code/agents/5346/exec-call_9q0muXUuLaucwEqI51Pt7idT.txt +0 -2594
  98. package/.code/agents/5346/exec-call_B2el3B79rVkq9LhWTI2VYlz7.txt +0 -2456
  99. package/.code/agents/5346/exec-call_BfX08f02qkZI9uJD5dvCvuoj.txt +0 -2594
  100. package/.code/agents/543328d0-61d6-4fd1-a723-bb168656e2e2/error.txt +0 -18
  101. package/.code/agents/5580c02c-1383-4d18-9cbd-cc8a06e3408d/result.txt +0 -48
  102. package/.code/agents/5f8dc01c-47b3-4163-b0b3-aa31be89fcdc/status.txt +0 -1
  103. package/.code/agents/60ce1a22-5126-44b2-b977-1d5b56142a7b/status.txt +0 -1
  104. package/.code/agents/6215d9db-7fa9-4429-aeec-3835c3212291/error.txt +0 -1
  105. package/.code/agents/6743db55-30e5-4b4e-9366-a8214fc7f714/error.txt +0 -1
  106. package/.code/agents/6bf9591b-b9c9-422c-b0a5-e968c7d8422a/status.txt +0 -1
  107. package/.code/agents/7/exec-call_HltHpkDox0Zm1vGEjdksUgpE.txt +0 -1120
  108. package/.code/agents/7/exec-call_LCATrOPPAgbxW9Q1z0XaVi2E.txt +0 -2646
  109. package/.code/agents/7/exec-call_W8DeRfNG9hvbgVFvf0clBf6R.txt +0 -2646
  110. package/.code/agents/7/exec-call_eww3GfdEiJZx61sJEQ9wNmt3.txt +0 -1271
  111. package/.code/agents/70/exec-call_owUtDMYiVgqDf8vsz1i32PFf.txt +0 -1570
  112. package/.code/agents/8/exec-call_UtrjAcLbhYLatxR4O97fZgnm.txt +0 -2590
  113. package/.code/agents/82490bc9-f34e-4b1b-8a8e-bccc2e6254f5/error.txt +0 -3
  114. package/.code/agents/841/exec-call_7nTNhSBCNjTDUIJv7py6CepO.txt +0 -3299
  115. package/.code/agents/841/exec-call_TLI0yUdUijuUAvI4o3DXEvHO.txt +0 -3299
  116. package/.code/agents/9/exec-call_XaABQT1hIlRpnKZ2uyBMWsTC.txt +0 -1882
  117. package/.code/agents/941/exec-call_GuGHRx7NNXWIDAnxUG2NEWPa.txt +0 -2594
  118. package/.code/agents/94a0ddf3-a304-4ec3-913e-3cceef509948/error.txt +0 -1
  119. package/.code/agents/95d9fbab-19a2-48af-83f9-c792566a347f/error.txt +0 -1
  120. package/.code/agents/b0098cb8-cb32-4ada-9bc4-37c587518896/result.txt +0 -170
  121. package/.code/agents/b4fe59a4-81df-42e2-a112-0153e504faca/error.txt +0 -1
  122. package/.code/agents/bf4ce152-f623-49d7-aa52-c18631625c3c/error.txt +0 -3
  123. package/.code/agents/d7d1db75-d7eb-468e-adea-4ef4d916d187/status.txt +0 -1
  124. package/.code/agents/e2baa9c8-bac3-49e3-a39d-024333e6a990/status.txt +0 -1
  125. package/.code/agents/e2c752b7-711d-423a-af57-f53c809deb84/result.txt +0 -160
  126. package/.code/agents/e350b8c3-8483-408c-b2bb-94515f492a11/error.txt +0 -3
  127. package/.code/agents/e63f9919-719f-4ad0-bccf-01b1a596e1e9/status.txt +0 -1
  128. package/.code/agents/e6601719-c31f-4a0e-8c71-d70787d0ab71/status.txt +0 -1
  129. package/.code/agents/e71695a8-3044-478d-8f12-ed13d02884c7/status.txt +0 -1
  130. package/.code/agents/f250b7ed-5bd5-4036-aa8c-ce63caee7d61/result.txt +0 -20
  131. package/.code/agents/f95b7464-3e25-4897-b153-c8dfd63fd605/error.txt +0 -5
  132. package/.code/agents/fa3c5ddf-cdf7-47a2-930a-b806c6363689/status.txt +0 -1
  133. package/AGENTS.md +0 -1
  134. package/NUL +0 -0
  135. package/package.json.tmp +0 -105
  136. package/temp-recon.ts +0 -126
  137. package/test-exports/ynab_account_e9ddc2a6_minimal_1items_2025-11-19_09-04-53.json +0 -23
  138. package/test-exports/ynab_account_e9ddc2a6_minimal_1items_2025-11-19_10-37-42.json +0 -23
  139. package/test-exports/ynab_account_e9ddc2a6_minimal_4items_2025-11-19_09-02-09.json +0 -44
  140. package/test-exports/ynab_account_e9ddc2a6_minimal_6items_2025-11-19_10-37-52.json +0 -58
  141. package/test-exports/ynab_since_2025-10-16_account_53298e13_238items_2025-11-28_13-46-20.json +0 -3662
  142. package/test-exports/ynab_since_2025-11-01_account_4c18e9f0_minimal_14items_2025-11-16_10-07-10.json +0 -115
@@ -1,231 +0,0 @@
1
- Based on my analysis of the ynab-mcpb repository, here's a concise, actionable implementation plan for the next iteration:
2
-
3
- ---
4
-
5
- # YNAB MCP Server - Next Iteration Implementation Plan
6
-
7
- ## Context Analysis
8
-
9
- **Current State:**
10
- - Version: 0.13.4 (pre-1.0 API)
11
- - TypeScript: ✅ No type errors
12
- - Unit Tests: ✅ 1334 passed (59 files)
13
- - Recent Focus: CI/CD reliability, caching fixes, reconciliation improvements
14
- - Planning Documents: 3 detailed plans ready for execution
15
-
16
- **Untracked File:** `temp-recon.ts` - Integration test script for reconciliation executor
17
-
18
- ---
19
-
20
- ## High-Impact Plan (Bite-Sized Tasks)
21
-
22
- ### Phase 1: Clean Up Workspace (5 min)
23
-
24
- **Goal:** Remove temporary files from working directory
25
-
26
- **Task 1.1: Remove temporary reconciliation test file**
27
- - Files: `temp-recon.ts` (root directory)
28
- - Command: `git rm temp-recon.ts` or move to `src/__tests__/scratch/`
29
- - Verify: `git status` shows clean working directory
30
- - Rationale: File appears to be development scratch work, duplicates existing integration tests
31
-
32
- ---
33
-
34
- ### Phase 2: Implement Pending Plans (60-90 min total)
35
-
36
- #### Option A: Reloadable Config & Token Validation (30-45 min)
37
- **Priority:** High - Improves testability and error messages
38
- **Plan:** `docs/plans/2025-11-20-reloadable-config-token-validation.md`
39
- **Impact:** Better CI reliability, clearer auth failures
40
-
41
- **Tasks:**
42
- 1. Reloadable config loader (10 min)
43
- - Edit: `src/server/config.ts`
44
- - Test: `src/server/__tests__/config.test.ts`
45
- - Verify: `npm run test:unit -- src/server/__tests__/config.test.ts`
46
-
47
- 2. Inject config into YNABMCPServer (10 min)
48
- - Edit: `src/server/YNABMCPServer.ts`
49
- - Test: `src/server/__tests__/YNABMCPServer.test.ts`
50
- - Verify: `npm run test:unit -- src/server/__tests__/YNABMCPServer.test.ts`
51
-
52
- 3. Token validation resilience (10 min)
53
- - Edit: `src/server/YNABMCPServer.ts`
54
- - Test: `src/server/__tests__/server-startup.integration.test.ts`
55
- - Verify: `npm run test:integration:core`
56
-
57
- 4. Test alignment & portability (5 min)
58
- - Edit: `scripts/run-throttled-integration-tests.js`
59
- - Verify: `node scripts/run-throttled-integration-tests.js --help`
60
-
61
- 5. Full verification (10 min)
62
- - Run: `npm test && npm run type-check`
63
- - Format: `npm run format`
64
- - Build: `npm run build`
65
-
66
- #### Option B: Reconciliation Error Handling (20-30 min)
67
- **Priority:** High - Fixes silent failures in reconciliation
68
- **Plan:** `docs/plans/2025-11-21-reconciliation-error-handling.md`
69
- **Impact:** Proper error propagation, better debugging
70
-
71
- **Tasks:**
72
- 1. Normalize YNAB API errors (10 min)
73
- - Edit: `src/tools/reconciliation/executor.ts`
74
- - Add error parsing utilities
75
- - Verify: `npm run type-check`
76
-
77
- 2. Propagate fatal errors (5 min)
78
- - Edit: `src/tools/reconciliation/executor.ts`
79
- - Update catch blocks for bulk/sequential creation
80
- - Verify: Code review for logic correctness
81
-
82
- 3. Add test coverage (10 min)
83
- - Edit: `src/tools/reconciliation/__tests__/executor.test.ts`
84
- - Add 429/404 error propagation tests
85
- - Verify: `npm run test:unit -- src/tools/reconciliation/__tests__/executor.test.ts`
86
-
87
- 4. Integration verification (5 min)
88
- - Run: `npm run test:integration:reconciliation` (if token available)
89
- - Verify: Error messages are actionable
90
-
91
- #### Option C: Transaction Cached Property Fix (Already Complete?)
92
- **Plan:** `docs/plans/2025-11-21-fix-transaction-cached-property.md`
93
- **Status:** CHANGELOG shows this was fixed in 0.13.1
94
- **Action:** Verify plan is obsolete, archive or delete planning document
95
-
96
- ---
97
-
98
- ### Phase 3: Documentation & Code Quality (15-20 min)
99
-
100
- **Task 3.1: Update CHANGELOG for unreleased changes**
101
- - Edit: `CHANGELOG.md`
102
- - Add entries under `## [Unreleased]` section
103
- - Format: Keep a Changelog format
104
- - Verify: `npm run format:check`
105
-
106
- **Task 3.2: Archive completed planning documents**
107
- - Move: `docs/plans/2025-11-21-fix-transaction-cached-property.md` → `docs/plans/archive/` (if complete)
108
- - Update: Add completion notes or delete if obsolete
109
- - Verify: `ls docs/plans` shows only active plans
110
-
111
- **Task 3.3: Update CLAUDE.md if needed**
112
- - Review: Recent architectural changes
113
- - Edit: `CLAUDE.md` if new patterns emerged
114
- - Verify: Accuracy of build commands, test commands
115
-
116
- **Task 3.4: Clean up temp-recon.ts usage**
117
- - Decision: Move to tests or delete
118
- - Option A: Move to `src/__tests__/manual/temp-recon.ts`
119
- - Option B: Delete if duplicates existing tests
120
- - Verify: `git status` clean
121
-
122
- ---
123
-
124
- ### Phase 4: Proactive Improvements (20-30 min)
125
-
126
- **Task 4.1: Add schema validation tests for new YNAB API fields**
127
- - Files: `src/tools/schemas/outputs/__tests__/*.test.ts`
128
- - Goal: Ensure schemas handle all YNAB API response variations
129
- - Add: Edge case tests for nullable/optional fields
130
- - Verify: `npm run test:unit -- src/tools/schemas/outputs/__tests__/`
131
-
132
- **Task 4.2: Improve tool annotation coverage**
133
- - Files: Check all 30 tools in `src/tools/`
134
- - Review: Tool registration in `src/server/YNABMCPServer.ts`
135
- - Verify: All tools have proper `ToolAnnotationPresets` applied
136
- - Test: `npm run test:unit`
137
-
138
- **Task 4.3: Add missing JSDoc comments**
139
- - Files: `src/tools/*.ts`, `src/server/*.ts`
140
- - Focus: Public API functions lacking documentation
141
- - Format: TypeScript JSDoc with `@param`, `@returns`, `@throws`
142
- - Verify: `npm run type-check`
143
-
144
- ---
145
-
146
- ### Phase 5: Testing & Verification (10-15 min)
147
-
148
- **Task 5.1: Run full test suite**
149
- ```bash
150
- npm test # Unit tests (fast)
151
- npm run type-check # TypeScript validation
152
- npm run lint # ESLint + Prettier check
153
- ```
154
-
155
- **Task 5.2: Build verification**
156
- ```bash
157
- npm run build # Production build with verification
158
- npm run verify-build # Post-build checks
159
- ```
160
-
161
- **Task 5.3: Integration tests (optional, requires YNAB_ACCESS_TOKEN)**
162
- ```bash
163
- npm run test:integration:core # Core integration suite
164
- ```
165
-
166
- ---
167
-
168
- ## Recommended Execution Order
169
-
170
- ### Quick Wins (30 min):
171
- 1. Clean up workspace (remove `temp-recon.ts`)
172
- 2. Implement reconciliation error handling (Option B)
173
- 3. Update CHANGELOG
174
- 4. Run verification suite
175
-
176
- ### Comprehensive (90 min):
177
- 1. Clean up workspace
178
- 2. Implement reloadable config (Option A)
179
- 3. Implement reconciliation error handling (Option B)
180
- 4. Update documentation
181
- 5. Add proactive improvements
182
- 6. Full test & build verification
183
-
184
- ---
185
-
186
- ## File Paths Quick Reference
187
-
188
- ### Source Files
189
- - **Server Core:** `src/server/YNABMCPServer.ts`, `src/server/config.ts`
190
- - **Tool Handlers:** `src/tools/*.ts` (accountTools, transactionTools, reconciliation/, etc.)
191
- - **Reconciliation:** `src/tools/reconciliation/executor.ts`, `analyzer.ts`, `matcher.ts`
192
- - **Utilities:** `src/utils/money.ts`, `src/utils/dateUtils.ts`, `src/utils/amountUtils.ts`
193
- - **Types:** `src/types/index.ts`
194
- - **Entry Point:** `src/index.ts`
195
-
196
- ### Test Files
197
- - **Unit Tests:** `src/**/__tests__/*.test.ts`
198
- - **Integration Tests:** `src/**/__tests__/*.integration.test.ts`
199
- - **E2E Tests:** `src/**/__tests__/*.e2e.test.ts`
200
-
201
- ### Documentation
202
- - **User Docs:** `docs/getting-started/`, `docs/guides/`, `docs/reference/`
203
- - **Planning:** `docs/plans/*.md`
204
- - **Root:** `README.md`, `CLAUDE.md`, `CHANGELOG.md`
205
-
206
- ### Scripts
207
- - **Build:** `scripts/verify-build.js`, `scripts/run-generate-mcpb.js`
208
- - **Testing:** `scripts/run-throttled-integration-tests.js`
209
- - **CI:** `.github/workflows/*.yml`
210
-
211
- ---
212
-
213
- ## Success Criteria
214
-
215
- - ✅ No TypeScript errors (`npm run type-check`)
216
- - ✅ All unit tests pass (`npm test`)
217
- - ✅ Code formatted (`npm run format:check`)
218
- - ✅ Clean working directory (`git status`)
219
- - ✅ Production build succeeds (`npm run build`)
220
- - ✅ CHANGELOG updated with changes
221
- - ✅ Documentation reflects current state
222
-
223
- ---
224
-
225
- ## Notes
226
-
227
- - **No breaking changes** - Maintain API compatibility for 0.x series
228
- - **Test-driven** - Write tests before implementation where possible
229
- - **Incremental commits** - Commit after each task completion
230
- - **Convention:** Use conventional commit format (feat:, fix:, chore:, docs:)
231
- - **Environment:** Requires Node 18+, npm, YNAB_ACCESS_TOKEN for integration tests