claude-threads 1.15.0 → 1.15.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.
- package/CHANGELOG.md +5 -0
- package/dist/mcp/mcp-server.js +8 -4
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [1.15.1] - 2026-05-05
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
- **Numeric tool args no longer fail at the MCP boundary when the runtime sends them as strings.** Surfaced live during dogfooding of v1.15.0: calling `search_messages` with `max_results: 5` returned `Invalid input: expected number, received string` from the MCP framework, because the Claude MCP runtime sometimes serializes integer tool arguments as JSON strings before they reach the server, and the receiving `z.number().int()` schema rejected them at parse time. Switched the four affected fields to `z.coerce.number().int()` — `read_post.max_messages`, `list_thread.max_messages`, `read_channel_history.max_messages`, `search_messages.max_results` — so either form parses. Downstream `clamp*` helpers already defend against non-finite / non-positive values, so coercion can't widen the contract beyond the documented caps; non-integer strings like `"1.5"` still fail because `.int()` runs after coercion. Schemas exported so a contract test can verify the coercion without spinning up the full MCP transport. (#375)
|
|
14
|
+
|
|
10
15
|
## [1.15.0] - 2026-05-05
|
|
11
16
|
|
|
12
17
|
### Added
|
package/dist/mcp/mcp-server.js
CHANGED
|
@@ -57416,7 +57416,7 @@ var sendFileInputSchema = {
|
|
|
57416
57416
|
var readPostInputSchema = {
|
|
57417
57417
|
url: exports_external.string().describe("Permalink URL to a post on the chat platform the bot is connected to. Must be on the same host as the bot."),
|
|
57418
57418
|
include_thread: exports_external.boolean().optional().describe("When true, also fetch surrounding messages in the same thread (oldest first). Defaults to false."),
|
|
57419
|
-
max_messages: exports_external.number().int().optional().describe(`Maximum thread messages to return when include_thread is true. Defaults to ${DEFAULT_THREAD_LIMIT}, capped at ${MAX_THREAD_LIMIT}.`)
|
|
57419
|
+
max_messages: exports_external.coerce.number().int().optional().describe(`Maximum thread messages to return when include_thread is true. Defaults to ${DEFAULT_THREAD_LIMIT}, capped at ${MAX_THREAD_LIMIT}.`)
|
|
57420
57420
|
};
|
|
57421
57421
|
var reactToPostInputSchema = {
|
|
57422
57422
|
url: exports_external.string().describe("Permalink URL to a post the bot can already see (its own channel, or a public channel on the same instance)."),
|
|
@@ -57428,15 +57428,15 @@ var updateOwnPostInputSchema = {
|
|
|
57428
57428
|
};
|
|
57429
57429
|
var listThreadInputSchema = {
|
|
57430
57430
|
url: exports_external.string().optional().describe("Permalink to any post in the target thread. If omitted, the current session thread is read."),
|
|
57431
|
-
max_messages: exports_external.number().int().optional().describe(`Maximum messages to return (oldest first). Defaults to ${DEFAULT_THREAD_LIMIT}, capped at ${MAX_THREAD_LIMIT}.`)
|
|
57431
|
+
max_messages: exports_external.coerce.number().int().optional().describe(`Maximum messages to return (oldest first). Defaults to ${DEFAULT_THREAD_LIMIT}, capped at ${MAX_THREAD_LIMIT}.`)
|
|
57432
57432
|
};
|
|
57433
57433
|
var readChannelHistoryInputSchema = {
|
|
57434
57434
|
channel_id: exports_external.string().describe("Channel identifier. Mattermost: the 26-char channel id. Slack: the channel id (C…/G…). " + "Must be the bot's own channel or a public channel on the same instance."),
|
|
57435
|
-
max_messages: exports_external.number().int().optional().describe("Maximum messages to return (oldest first). Defaults to 20, capped at 100.")
|
|
57435
|
+
max_messages: exports_external.coerce.number().int().optional().describe("Maximum messages to return (oldest first). Defaults to 20, capped at 100.")
|
|
57436
57436
|
};
|
|
57437
57437
|
var searchMessagesInputSchema = {
|
|
57438
57438
|
query: exports_external.string().describe("Search query (platform-specific syntax). Mattermost supports phrase quoting and from:user filters."),
|
|
57439
|
-
max_results: exports_external.number().int().optional().describe("Maximum results to return. Defaults to 10, capped at 25.")
|
|
57439
|
+
max_results: exports_external.coerce.number().int().optional().describe("Maximum results to return. Defaults to 10, capped at 25.")
|
|
57440
57440
|
};
|
|
57441
57441
|
var sendDmInputSchema = {
|
|
57442
57442
|
recipient: exports_external.string().describe("Recipient identifier. Mattermost: a username (with or without leading @). " + "Slack: a user ID (e.g. 'U0123ABC' or '<@U0123ABC>'). The recipient must be a " + "current member of the bot's channel."),
|
|
@@ -58191,6 +58191,10 @@ main().catch((err) => {
|
|
|
58191
58191
|
process.exit(1);
|
|
58192
58192
|
});
|
|
58193
58193
|
export {
|
|
58194
|
+
searchMessagesInputSchema,
|
|
58195
|
+
readPostInputSchema,
|
|
58196
|
+
readChannelHistoryInputSchema,
|
|
58197
|
+
listThreadInputSchema,
|
|
58194
58198
|
handleUpdateOwnPostWith,
|
|
58195
58199
|
handleSendFileWith,
|
|
58196
58200
|
handleSendDmWith,
|