@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.
- package/.env.example +33 -33
- package/.github/workflows/ci-tests.yml +45 -45
- package/.github/workflows/claude-code-review.yml +57 -57
- package/.github/workflows/claude.yml +50 -50
- package/.github/workflows/full-integration.yml +22 -22
- package/.github/workflows/publish.yml +12 -3
- package/.github/workflows/release.yml +2 -2
- package/CHANGELOG.md +10 -1
- package/CLAUDE.md +16 -12
- package/README.md +6 -1
- package/dist/bundle/index.cjs +49 -49
- package/dist/server/YNABMCPServer.d.ts +125 -54
- package/dist/server/YNABMCPServer.js +42 -11
- package/dist/server/cacheManager.js +6 -5
- package/dist/server/completions.d.ts +25 -0
- package/dist/server/completions.js +160 -0
- package/dist/server/config.d.ts +2 -2
- package/dist/server/errorHandler.js +1 -0
- package/dist/server/rateLimiter.js +3 -1
- package/dist/server/resources.d.ts +1 -0
- package/dist/server/resources.js +33 -16
- package/dist/server/securityMiddleware.d.ts +38 -8
- package/dist/server/securityMiddleware.js +1 -0
- package/dist/server/toolRegistry.d.ts +9 -0
- package/dist/server/toolRegistry.js +11 -0
- package/dist/tools/adapters.d.ts +3 -1
- package/dist/tools/adapters.js +1 -0
- package/dist/tools/reconciliation/executor.d.ts +2 -0
- package/dist/tools/reconciliation/executor.js +26 -1
- package/dist/tools/reconciliation/index.d.ts +3 -2
- package/dist/tools/reconciliation/index.js +4 -3
- package/dist/tools/schemas/outputs/index.d.ts +2 -2
- package/dist/tools/schemas/outputs/index.js +2 -2
- package/dist/tools/schemas/outputs/utilityOutputs.d.ts +0 -15
- package/dist/tools/schemas/outputs/utilityOutputs.js +0 -9
- package/dist/tools/utilityTools.d.ts +0 -7
- package/dist/tools/utilityTools.js +1 -50
- package/docs/maintainers/npm-publishing.md +27 -0
- package/docs/reference/API.md +83 -97
- package/docs/technical/reconciliation-system-architecture.md +2251 -2251
- package/package.json +6 -6
- package/scripts/analyze-bundle.mjs +41 -41
- package/scripts/generate-mcpb.ps1 +95 -95
- package/scripts/watch-and-restart.ps1 +49 -49
- package/src/__tests__/comprehensive.integration.test.ts +4 -32
- package/src/__tests__/performance.test.ts +5 -14
- package/src/__tests__/setup.ts +45 -14
- package/src/__tests__/smoke.e2e.test.ts +70 -0
- package/src/__tests__/testUtils.ts +2 -113
- package/src/server/YNABMCPServer.ts +64 -10
- package/src/server/__tests__/YNABMCPServer.test.ts +0 -1
- package/src/server/__tests__/completions.integration.test.ts +117 -0
- package/src/server/__tests__/completions.test.ts +319 -0
- package/src/server/__tests__/resources.template.test.ts +3 -3
- package/src/server/__tests__/resources.test.ts +3 -3
- package/src/server/__tests__/toolRegistration.test.ts +3 -3
- package/src/server/cacheManager.ts +7 -6
- package/src/server/completions.ts +279 -0
- package/src/server/errorHandler.ts +1 -0
- package/src/server/rateLimiter.ts +4 -1
- package/src/server/resources.ts +49 -13
- package/src/server/securityMiddleware.ts +1 -0
- package/src/server/toolRegistry.ts +42 -0
- package/src/tools/__tests__/transactionTools.integration.test.ts +63 -3
- package/src/tools/__tests__/utilityTools.integration.test.ts +1 -85
- package/src/tools/__tests__/utilityTools.test.ts +1 -123
- package/src/tools/adapters.ts +22 -1
- package/src/tools/reconciliation/__tests__/executor.progress.test.ts +462 -0
- package/src/tools/reconciliation/executor.ts +55 -1
- package/src/tools/reconciliation/index.ts +7 -3
- package/src/tools/schemas/outputs/index.ts +0 -3
- package/src/tools/schemas/outputs/utilityOutputs.ts +2 -43
- package/src/tools/toolCategories.ts +0 -1
- package/src/tools/utilityTools.ts +5 -76
- package/vitest.config.ts +4 -1
- package/.chunkhound.json +0 -11
- package/.code/agents/0098661e-0fa3-4990-beb9-c0cbf3f123aa/status.txt +0 -1
- package/.code/agents/01a13ef4-3f23-4f52-b33b-3585b73cfa60/error.txt +0 -3
- package/.code/agents/084fd32f-e298-4728-9103-a78d7dc39613/error.txt +0 -3
- package/.code/agents/0fed51e1-a943-4b97-a2a8-a6f0f27c844d/status.txt +0 -1
- package/.code/agents/1059b6bd-5ccd-4d83-a12c-7c9d89137399/error.txt +0 -5
- package/.code/agents/110/exec-call_F9BDNG7JfxKkq7Vc8ESAvdft.txt +0 -1569
- package/.code/agents/11ebcef3-b13f-4e44-ad80-d94a866804b7/error.txt +0 -3
- package/.code/agents/1324/exec-call_tIpx9uV1TpARbAMZonRQm8AO.txt +0 -757
- package/.code/agents/1398/exec-call_CjItcWMU1G6JoPshX62QvpaR.txt +0 -2832
- package/.code/agents/1398/exec-call_SUVq2ivmONQ5LMCmd7ngmOqr.txt +0 -2709
- package/.code/agents/1398/exec-call_SdNY4NOffdcC5pRYjVXHjPCK.txt +0 -2832
- package/.code/agents/1398/exec-call_qblJo9et1gsFFB63TtLOiji2.txt +0 -2832
- package/.code/agents/1398/exec-call_zaRrzlGz7GJcNzVfkAmML7Zg.txt +0 -2709
- package/.code/agents/1572/exec-call_GjVFBFOWcY7lE0idc5nWlLNh.txt +0 -781
- package/.code/agents/171834fd-5905-42fc-bbcc-2c755145b0fc/status.txt +0 -1
- package/.code/agents/1724/exec-call_HvHQe0w5CCG3T7Q3ULT6MO3g.txt +0 -5217
- package/.code/agents/1724/exec-call_QwUNESVzfxxk78K1frh1Vahb.txt +0 -2594
- package/.code/agents/1724/exec-call_aJ1Xwz71XmIpD4SBxSHERzLe.txt +0 -2594
- package/.code/agents/1846/exec-call_1YNAVD18RjrMN7JnfkkQhUP3.txt +0 -766
- package/.code/agents/1846/exec-call_lh3lDzE4WJAh1lFiomiiZ73D.txt +0 -766
- package/.code/agents/1d7d7ab7-7473-4b69-8b97-6e914f56056a/result.txt +0 -231
- package/.code/agents/2038/exec-call_DYwOukaYsL8VCONWmV2rUW5u.txt +0 -766
- package/.code/agents/2038/exec-call_c7fOQ7UrpVcTtvdfGBRM146V.txt +0 -652
- package/.code/agents/2038/exec-call_ySNyq9Mm55jWE480s54r5QcA.txt +0 -766
- package/.code/agents/210/exec-call_0tQCsKNJ1WTuIchb8wlcFJpW.txt +0 -2590
- package/.code/agents/210/exec-call_8ZlY9cUc8Ft1twi4ch8UJ6IN.txt +0 -5195
- package/.code/agents/2188/exec-call_5HqayBxIteJtoI8oPTiLWgvJ.txt +0 -286
- package/.code/agents/2188/exec-call_XRbBKBq3adZe6dcppAvQtM7G.txt +0 -218
- package/.code/agents/2188/exec-call_ehA0SjpYtrUi6GJXmibLjp4i.txt +0 -180
- package/.code/agents/21902821-ecaf-4759-bb9d-222b90921af5/error.txt +0 -3
- package/.code/agents/2256/exec-call_AtPcRWPmFPMcmX6qOFm1fCEY.txt +0 -766
- package/.code/agents/232073be-aa0e-46da-b478-5b64dbf03cf5/status.txt +0 -1
- package/.code/agents/234ff534-2336-4771-a8d9-aa04421a63be/result.txt +0 -747
- package/.code/agents/2454/exec-call_aFJpupwjfZeOBm7ixI5Vc8z2.txt +0 -766
- package/.code/agents/2454/exec-call_wogZ4HfXTodTEXvdgXlVUBpv.txt +0 -766
- package/.code/agents/253e2695-dc36-4022-b436-27655e0fc6c7/status.txt +0 -1
- package/.code/agents/2583/exec-call_M59I4eDjpjlBIWBiSxyS0YlJ.txt +0 -2594
- package/.code/agents/2583/exec-call_usLRGh7OhVHtsRBL4iUwRhjq.txt +0 -2594
- package/.code/agents/292aa3ff-dbab-470f-97c9-e7e8fd65e0db/result.txt +0 -144
- package/.code/agents/2e905864-aa07-4314-bcf9-c5b32277e4ac/result.txt +0 -36
- package/.code/agents/3073/exec-call_Peeagc9DxGYLgE6pNdMZhqIE.txt +0 -766
- package/.code/agents/3073/exec-call_d2YSE3hXF08KRSoUM3qd8Z3x.txt +0 -766
- package/.code/agents/3134/exec-call_IgCAMGx19lWfuo8zfYIt5FFC.txt +0 -416
- package/.code/agents/3134/exec-call_IxvLR2Oo7kba2QTsI1gHVko8.txt +0 -2590
- package/.code/agents/3134/exec-call_jYvc8hksZChSiysbzKjl2ZbB.txt +0 -2590
- package/.code/agents/329/exec-call_4QdP3SfSO7HGPCwVcqZIth6s.txt +0 -2590
- package/.code/agents/335aa031-466d-4fb7-925f-3cd864e264d0/result.txt +0 -191
- package/.code/agents/3364/exec-call_NbhIrsM5HhyDZDmJZG5CuCYL.txt +0 -766
- package/.code/agents/3364/exec-call_cKtJg0NrXiwXEFwlsE3uPZRA.txt +0 -766
- package/.code/agents/36d98414-5cde-4d9d-9a67-a240a18c1f07/result.txt +0 -189
- package/.code/agents/4604e866-b7b8-44f5-992f-2f683b0a523b/status.txt +0 -1
- package/.code/agents/472/exec-call_4AxzEEcWwkKhpqRB3bE8Ha4L.txt +0 -790
- package/.code/agents/472/exec-call_CB3LPYQA8QIZRi8I6kj4J17A.txt +0 -766
- package/.code/agents/472/exec-call_YeoUWvaFoktay2nqVUsa9KKX.txt +0 -790
- package/.code/agents/472/exec-call_jPWgKVquBBXTg0T3Lks5ZfkK.txt +0 -2594
- package/.code/agents/472/exec-call_qBkvunpGBDEHph2jPmTwtcsb.txt +0 -1000
- package/.code/agents/472/exec-call_v0ffRV1p0kTckBmJPzzHAEy0.txt +0 -3489
- package/.code/agents/472/exec-call_xAX5FXqWIlk02d9WubHbHWh8.txt +0 -766
- package/.code/agents/5346/exec-call_9q0muXUuLaucwEqI51Pt7idT.txt +0 -2594
- package/.code/agents/5346/exec-call_B2el3B79rVkq9LhWTI2VYlz7.txt +0 -2456
- package/.code/agents/5346/exec-call_BfX08f02qkZI9uJD5dvCvuoj.txt +0 -2594
- package/.code/agents/543328d0-61d6-4fd1-a723-bb168656e2e2/error.txt +0 -18
- package/.code/agents/5580c02c-1383-4d18-9cbd-cc8a06e3408d/result.txt +0 -48
- package/.code/agents/5f8dc01c-47b3-4163-b0b3-aa31be89fcdc/status.txt +0 -1
- package/.code/agents/60ce1a22-5126-44b2-b977-1d5b56142a7b/status.txt +0 -1
- package/.code/agents/6215d9db-7fa9-4429-aeec-3835c3212291/error.txt +0 -1
- package/.code/agents/6743db55-30e5-4b4e-9366-a8214fc7f714/error.txt +0 -1
- package/.code/agents/6bf9591b-b9c9-422c-b0a5-e968c7d8422a/status.txt +0 -1
- package/.code/agents/7/exec-call_HltHpkDox0Zm1vGEjdksUgpE.txt +0 -1120
- package/.code/agents/7/exec-call_LCATrOPPAgbxW9Q1z0XaVi2E.txt +0 -2646
- package/.code/agents/7/exec-call_W8DeRfNG9hvbgVFvf0clBf6R.txt +0 -2646
- package/.code/agents/7/exec-call_eww3GfdEiJZx61sJEQ9wNmt3.txt +0 -1271
- package/.code/agents/70/exec-call_owUtDMYiVgqDf8vsz1i32PFf.txt +0 -1570
- package/.code/agents/8/exec-call_UtrjAcLbhYLatxR4O97fZgnm.txt +0 -2590
- package/.code/agents/82490bc9-f34e-4b1b-8a8e-bccc2e6254f5/error.txt +0 -3
- package/.code/agents/841/exec-call_7nTNhSBCNjTDUIJv7py6CepO.txt +0 -3299
- package/.code/agents/841/exec-call_TLI0yUdUijuUAvI4o3DXEvHO.txt +0 -3299
- package/.code/agents/9/exec-call_XaABQT1hIlRpnKZ2uyBMWsTC.txt +0 -1882
- package/.code/agents/941/exec-call_GuGHRx7NNXWIDAnxUG2NEWPa.txt +0 -2594
- package/.code/agents/94a0ddf3-a304-4ec3-913e-3cceef509948/error.txt +0 -1
- package/.code/agents/95d9fbab-19a2-48af-83f9-c792566a347f/error.txt +0 -1
- package/.code/agents/b0098cb8-cb32-4ada-9bc4-37c587518896/result.txt +0 -170
- package/.code/agents/b4fe59a4-81df-42e2-a112-0153e504faca/error.txt +0 -1
- package/.code/agents/bf4ce152-f623-49d7-aa52-c18631625c3c/error.txt +0 -3
- package/.code/agents/d7d1db75-d7eb-468e-adea-4ef4d916d187/status.txt +0 -1
- package/.code/agents/e2baa9c8-bac3-49e3-a39d-024333e6a990/status.txt +0 -1
- package/.code/agents/e2c752b7-711d-423a-af57-f53c809deb84/result.txt +0 -160
- package/.code/agents/e350b8c3-8483-408c-b2bb-94515f492a11/error.txt +0 -3
- package/.code/agents/e63f9919-719f-4ad0-bccf-01b1a596e1e9/status.txt +0 -1
- package/.code/agents/e6601719-c31f-4a0e-8c71-d70787d0ab71/status.txt +0 -1
- package/.code/agents/e71695a8-3044-478d-8f12-ed13d02884c7/status.txt +0 -1
- package/.code/agents/f250b7ed-5bd5-4036-aa8c-ce63caee7d61/result.txt +0 -20
- package/.code/agents/f95b7464-3e25-4897-b153-c8dfd63fd605/error.txt +0 -5
- package/.code/agents/fa3c5ddf-cdf7-47a2-930a-b806c6363689/status.txt +0 -1
- package/AGENTS.md +0 -1
- package/NUL +0 -0
- package/package.json.tmp +0 -105
- package/src/__tests__/delta.performance.test.ts +0 -80
- package/src/__tests__/workflows.e2e.test.ts +0 -1702
- package/temp-recon.ts +0 -126
- package/test-exports/ynab_account_e9ddc2a6_minimal_1items_2025-11-19_09-04-53.json +0 -23
- package/test-exports/ynab_account_e9ddc2a6_minimal_1items_2025-11-19_10-37-42.json +0 -23
- package/test-exports/ynab_account_e9ddc2a6_minimal_4items_2025-11-19_09-02-09.json +0 -44
- package/test-exports/ynab_account_e9ddc2a6_minimal_6items_2025-11-19_10-37-52.json +0 -58
- package/test-exports/ynab_since_2025-10-16_account_53298e13_238items_2025-11-28_13-46-20.json +0 -3662
- 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
|