@withpica/mcp-sdk 3.23.1 → 3.25.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/CHANGELOG.md +75 -0
- package/dist/index.d.ts +695 -68
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +604 -127
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -11,6 +11,81 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
11
11
|
|
|
12
12
|
## [Unreleased]
|
|
13
13
|
|
|
14
|
+
## [3.25.0] - 2026-10-14
|
|
15
|
+
|
|
16
|
+
> **Publish order:** `asideFromReport` is imported as a value by
|
|
17
|
+
> `@withpica/mcp-utils`'s billing gate. Publish this package (3.25.0) BEFORE
|
|
18
|
+
> the mcp-utils release that uses it, and raise mcp-utils' range to `^3.25.0`
|
|
19
|
+
> in that release; an mcp-utils on an older SDK fails at load.
|
|
20
|
+
|
|
21
|
+
### Added
|
|
22
|
+
|
|
23
|
+
- `asideFromReport(fn)`: run requests that still name the current client
|
|
24
|
+
catalogue, but leave them off the call's report (a check PICA makes for
|
|
25
|
+
itself, such as the billing gate reading whether the catalogue is paid for).
|
|
26
|
+
- `pica.handovers`: `create` and `send` for catalogues an organisation prepares for a client
|
|
27
|
+
(`POST /admin/handovers`, `POST /admin/handovers/{id}/send`), with `HandoverCreatedRecord` and
|
|
28
|
+
`HandoverRecord`.
|
|
29
|
+
- `runInCatalogue(id, fn)` → `{ value, report }` and `CatalogueCallReport` (ADR-333 D7): what the app
|
|
30
|
+
did with one call's requests in a client catalogue — how many it answered for that catalogue, and
|
|
31
|
+
each request it refused with `RELATIONSHIP_REFUSED` (path and `reason_code`, from the one
|
|
32
|
+
refusal shape: `error.code`, `error.details.reason_code`). The MCP server uses it so a tool that fails its parts soft
|
|
33
|
+
cannot answer "success" with every part refused. `withCatalogue` is unchanged for callers.
|
|
34
|
+
- `withCatalogue(id, fn)`, `currentCatalogue()`, `CATALOGUE_HEADER`, `CATALOGUE_RESOLVED_HEADER` and
|
|
35
|
+
`CatalogueNotHonouredError` (ADR-333 D7). Every request made inside `withCatalogue` sends
|
|
36
|
+
`x-pica-catalogue: <id>`. A successful answer without a matching `x-pica-catalogue-resolved`
|
|
37
|
+
echo throws `CatalogueNotHonouredError` instead of reporting success, so a route that ignores
|
|
38
|
+
the header can never pass for having acted for the client. The catalogue is held per call
|
|
39
|
+
(AsyncLocalStorage), so concurrent calls on one shared client never mix catalogues.
|
|
40
|
+
- `relationships` (ADR-333): `list`, `get`, `invite`, `answer`, `revoke`, `stepDown`, `events`,
|
|
41
|
+
`activity` and `acceptInvite` over `/admin/relationships/**`, with typed records
|
|
42
|
+
(`RelationshipRecord`, `RelationshipListPage`, `RelationshipEventRecord`,
|
|
43
|
+
`RelationshipStepRecord`, `ClaimableInviteRecord`). Every step sends `expected_version`.
|
|
44
|
+
- `portfolio` (ADR-333): `list` and `briefing` over `/admin/portfolio`, with
|
|
45
|
+
`PortfolioClientRecord` and `PortfolioSection` (a section is checked, out of scope, unavailable
|
|
46
|
+
or failed, never a bare 0).
|
|
47
|
+
- `duplicates.markDifferent(entityType, ids)` and `duplicates.unmarkDifferent(entityType, ids)`
|
|
48
|
+
for recordings and releases (`POST` / `DELETE /admin/catalog/duplicates/exclusions`).
|
|
49
|
+
|
|
50
|
+
## [3.24.0] - 2026-10-09
|
|
51
|
+
|
|
52
|
+
### Added
|
|
53
|
+
|
|
54
|
+
- `works.getThemes`, `works.setThemes`, `works.proposeThemes`, `works.reviewThemes` and
|
|
55
|
+
`directory.untaggedThemes` for a song's directory topics.
|
|
56
|
+
|
|
57
|
+
### Changed — needs a MINOR bump at release
|
|
58
|
+
|
|
59
|
+
- ⚠️ **`PaginatedResult.total` is now `number | null`** (type change). An
|
|
60
|
+
explicit `pagination.total: null` from the server means "unknown" — a
|
|
61
|
+
platform-wide registry the route will not count, or a filter applied
|
|
62
|
+
after the read — and is passed through as `null` instead of being turned
|
|
63
|
+
into the page length. Code that does arithmetic on `total` must handle
|
|
64
|
+
`null`.
|
|
65
|
+
- `requestPaginated`'s fallback `has_more` (when the server sends none) is
|
|
66
|
+
now `offset + page < total`; it ignored the offset, so every last page of
|
|
67
|
+
a multi-page result reported more (row-cap T3).
|
|
68
|
+
|
|
69
|
+
### Added
|
|
70
|
+
|
|
71
|
+
- **`syncFit` resource**: `query({ work_id?, screen_project_id?,
|
|
72
|
+
song_facts?, limit?, offset? })` (GET `/admin/sync-fit`), with the
|
|
73
|
+
`SyncFitPage`, `SyncFitRow`, `SyncFitProduction`, `SyncFitSongFacts` and
|
|
74
|
+
`SyncFitMeasured` types.
|
|
75
|
+
- `works.getThemes`, `works.setThemes`, `works.proposeThemes`, `works.reviewThemes` and
|
|
76
|
+
`directory.untaggedThemes` for a song's directory topics.
|
|
77
|
+
- Page methods that return `{ data, total, hasMore }` — the real total —
|
|
78
|
+
alongside the existing `list()` calls, whose return types are unchanged:
|
|
79
|
+
`agreements.listPage`, `bookings.listPage`, `licensing.listEnquiriesPage`,
|
|
80
|
+
`partyClaims.listPage`, `releases.listPage`, `sessions.listPage`,
|
|
81
|
+
`collaborators.listInvitesPage` / `listIncomingPage`,
|
|
82
|
+
`publishers.listPage` and `labels.listPage` (total `null`: platform-wide
|
|
83
|
+
rows are not counted; `labels.listPage` also takes `ids` for a lookup by
|
|
84
|
+
id). `custody.list` takes `offset`.
|
|
85
|
+
- `works.getAgreements(workId)` — the agreements linked to one work.
|
|
86
|
+
- `enrichment.previewBulkRejectProposals(input)` — what a bulk reject
|
|
87
|
+
would reject, resolved by the same server-side resolver, writing nothing.
|
|
88
|
+
|
|
14
89
|
## [3.23.1] - 2026-10-07
|
|
15
90
|
|
|
16
91
|
### Fixed
|