@kirjapro/mcp-server 0.5.7 → 0.5.8
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/CHANGELOG.md +50 -2
- package/dist/index.js +12115 -2091
- package/package.json +9 -8
- package/tool-fingerprints.json +53 -53
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,53 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.5.8] - 2026-05-18
|
|
4
|
+
|
|
5
|
+
Three coordinated dep-migration waves (W1, W3, W4b) of the pre-launch
|
|
6
|
+
version-migration campaign. No runtime behavior changes for MCP consumers;
|
|
7
|
+
tool input schemas gain explicit `z.record(string, unknown)` form (Zod 4
|
|
8
|
+
requirement) which shifts JSON-schema hashes — fingerprint baseline updated.
|
|
9
|
+
|
|
10
|
+
### Changed
|
|
11
|
+
|
|
12
|
+
- **Dependencies (W1)** — `@modelcontextprotocol/sdk` 1.12 → 1.29,
|
|
13
|
+
`@supabase/supabase-js` 2.49 → 2.105, `tsx` 4.19 → 4.22.
|
|
14
|
+
- **Dependencies (W3)** — `esbuild` 0.25 → 0.28, `typescript` 5.7 → 6.0,
|
|
15
|
+
`vitest` 3.0 → 4.1. Added `@types/node` ^22.18.0 as direct devDep
|
|
16
|
+
(was transitive — TS 6 dropped that auto-discovery).
|
|
17
|
+
- **Dependencies (W4b)** — `zod` 3.24 → 4.4.
|
|
18
|
+
|
|
19
|
+
### Fixed
|
|
20
|
+
|
|
21
|
+
- **(W1) supabase-js v2.100+ `RejectExcessProperties` rejects `Record<string, unknown>`**
|
|
22
|
+
at `.update()` / `.insert()` call sites — the new generic wrapper
|
|
23
|
+
resolves to `{ [x: string]: never }` for any source carrying an open
|
|
24
|
+
index signature. Re-typed `updates` / `updateFields` in four tool files
|
|
25
|
+
as `Database['public']['Tables']['<table>']['Update']`:
|
|
26
|
+
`customers.ts`, `invoices.ts`, `offers.ts`, `recurring-invoices.ts`.
|
|
27
|
+
Skill: `supabase-js-update-rejectexcessproperties`.
|
|
28
|
+
- **(W1) `customers.ts` latent NOT-NULL bug** — `updates.name = sanitizeText(...)`
|
|
29
|
+
would attempt to set `name = null` (and trip the column's NOT NULL
|
|
30
|
+
CHECK at the DB) when the sanitizer collapsed whitespace-only input.
|
|
31
|
+
Now coalesces `?? undefined` so the field is skipped instead.
|
|
32
|
+
- **(W1) `offers.ts` dynamic-key write** refactored from a `timestampMap[newStatus]`
|
|
33
|
+
lookup into an explicit `switch` on the discriminator — typed Update
|
|
34
|
+
rejects open-string indexing.
|
|
35
|
+
- **(W1) `recurring-invoices.ts` `template_data` assignment** — cast as `Json`
|
|
36
|
+
at the assignment site; `Record<string, unknown>` is not a subtype of
|
|
37
|
+
the recursive `Json` type.
|
|
38
|
+
- **(W3) `tsconfig.json` — added `"types": ["node"]`.** TS 6 with
|
|
39
|
+
`moduleResolution: "bundler"` stopped auto-including `@types/node` from
|
|
40
|
+
transitive deps. Without explicit declaration, 21 TS2591 errors hit
|
|
41
|
+
(`process`, `Buffer`, `node:crypto`, `.unref` on `setTimeout` return).
|
|
42
|
+
Skill: `ts6-bundler-resolution-types-node-explicit`.
|
|
43
|
+
- **(W4b) Zod 4 `z.record` API requires explicit key schema.** Migrated
|
|
44
|
+
11 sites from `z.record(z.unknown())` → `z.record(z.string(), z.unknown())`
|
|
45
|
+
across `schemas.ts` and six tool files. Tool fingerprints regenerated
|
|
46
|
+
via `npm run fingerprints:update` — the rug-pull guard correctly caught
|
|
47
|
+
the JSON-schema-shape shift even though it's semantically equivalent.
|
|
48
|
+
|
|
49
|
+
## [0.5.7] - 2026-05-09
|
|
50
|
+
|
|
3
51
|
## [0.5.7] - 2026-05-09
|
|
4
52
|
|
|
5
53
|
Pre-launch trim and supply-chain hardening. Two coordinated changes shape
|
|
@@ -108,7 +156,7 @@ legacy rows continue to work without backfill.
|
|
|
108
156
|
ages past `CLAIM_STALE_MS`; on exhaustion returns an explicit `retry_later`
|
|
109
157
|
error instead of racing into a duplicate write.
|
|
110
158
|
- **Idempotency body-hash check** (T3-6, migration
|
|
111
|
-
`
|
|
159
|
+
`20260420192510_mcp_idempotency_body_hash.sql`) — each claim stores
|
|
112
160
|
`sha256(canonical JSON of params ∖ idempotencyKey)`. On cache hit the server
|
|
113
161
|
recomputes and compares; mismatch returns `IDEMPOTENCY_BODY_MISMATCH`
|
|
114
162
|
instead of silently replaying the wrong cached response. Nullable column,
|
|
@@ -144,7 +192,7 @@ legacy rows continue to work without backfill.
|
|
|
144
192
|
|
|
145
193
|
Published artefact requires:
|
|
146
194
|
|
|
147
|
-
1. Apply migration `
|
|
195
|
+
1. Apply migration `20260420192510_mcp_idempotency_body_hash.sql` to the
|
|
148
196
|
Supabase project (adds nullable `body_sha256`). Missing column will NOT
|
|
149
197
|
break the server — the INSERT still succeeds with PostgREST schema-cache
|
|
150
198
|
tolerance — but the mismatch check will be inert until migrated.
|