@thalovant/mcp-server 0.4.0 → 0.5.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 +11 -0
- package/README.md +15 -2
- package/dist/index.js +2 -0
- package/dist/inventory-output.d.ts +12 -0
- package/dist/inventory-output.js +12 -0
- package/package.json +2 -2
- package/server.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.5.0 — 2026-09-13
|
|
4
|
+
|
|
5
|
+
- Use Node SDK 0.7.0 inventory models and Python-compatible question detection.
|
|
6
|
+
- Add an inventory `presentation` view with derived skill titles, explicit phrase-language order, and unknown catalog metadata preserved.
|
|
7
|
+
- Gate PRs and publication on the shared SDK acceptance contract and check for drift every six hours.
|
|
8
|
+
|
|
9
|
+
## 0.4.1 — 2026-09-12
|
|
10
|
+
|
|
11
|
+
- Use Node SDK 0.6.1 with thalovant-languages 0.2.1 listing data, matching Python 0.6.8 across 270 languages.
|
|
12
|
+
- Verify Spanish questions and complete French phrases through the encrypted runtime inventory tool.
|
|
13
|
+
|
|
3
14
|
## 0.4.0 — 2026-09-12
|
|
4
15
|
|
|
5
16
|
- Add locale-aware sentence inventory examples with SDK 0.6.0, canonical slot defaults and unique rendered limits.
|
package/README.md
CHANGED
|
@@ -393,6 +393,14 @@ adds at most 1500ms. A silent listing can use engine manifests; disable this wit
|
|
|
393
393
|
per-principal policy. `thalovant_get_operation` reads an operation ID returned by
|
|
394
394
|
provisioning without replaying the write.
|
|
395
395
|
|
|
396
|
+
The additive `presentation` object contains the shared SDK inventory shape:
|
|
397
|
+
`cache_version`, `hub_id`, `hub_name`, `source`, `generated_at`, `skills`, `notes`,
|
|
398
|
+
and `languages_present`. Skill titles are derived from IDs. Runtime discovery
|
|
399
|
+
cannot prove catalog locales or hub display metadata, so those fields remain
|
|
400
|
+
unknown (empty lists/strings), with explanatory notes. Intent language order is
|
|
401
|
+
explicit and survives JSON key sorting. Each tool call retains its own identity
|
|
402
|
+
lease; the server does not persist inventory or share a session across callers.
|
|
403
|
+
|
|
396
404
|
## Request hints, embedded audio, and configuration merging
|
|
397
405
|
|
|
398
406
|
`thalovant_ask` accepts `sttLang`, an ordered `pipeline`, and `location`
|
|
@@ -464,7 +472,7 @@ Runtime calls sharing the same hub client identity run sequentially within one
|
|
|
464
472
|
MCP process. Use a distinct client identity for each independently running MCP
|
|
465
473
|
server so the hub can keep their sessions separate.
|
|
466
474
|
|
|
467
|
-
Version 0.
|
|
475
|
+
Version 0.5.0 requires `@thalovant/sdk` `^0.7.0` (0.7.0 through versions below 0.8.0). This release enforces
|
|
468
476
|
secure effective MQTT URLs and carries a single connection deadline through
|
|
469
477
|
MQTT setup and HTTP failure cleanup. Runtime tools support
|
|
470
478
|
HiveMind v3 Noise over WSS, HTTPS and MQTT over TLS. `thalovant_healthcheck`
|
|
@@ -560,7 +568,7 @@ Read history with `thalovant_list_hub_skill_history` (`hubId`, optional `limit`)
|
|
|
560
568
|
|
|
561
569
|
|
|
562
570
|
Inventory `sentence: true` implies speakable rendering and capitalizes/punctuates
|
|
563
|
-
examples using bundled thalovant-languages 0.
|
|
571
|
+
examples using bundled thalovant-languages 0.2.1 rules. Regional locale matching
|
|
564
572
|
follows OVOS distances; explicit `slots` override locale sample values. Complete
|
|
565
573
|
phrases rank first, and `exampleLimit` counts unique nonempty rendered results.
|
|
566
574
|
Raw intent definitions remain in the response; unknown locales retain bare text.
|
|
@@ -568,3 +576,8 @@ Raw intent definitions remain in the response; unknown locales retain bare text.
|
|
|
568
576
|
The CLI handles SIGTERM and SIGINT in stdio and HTTP modes, including when it
|
|
569
577
|
runs as the container's PID 1. It closes sessions and HTTP connections before a
|
|
570
578
|
successful exit, with a ten-second failure deadline for stalled cleanup.
|
|
579
|
+
|
|
580
|
+
Version 0.5.0 uses Node SDK 0.7.0 with Python 0.7.2-compatible inventory
|
|
581
|
+
and question detection, including Unicode question marks and omitted-language patterns. With `sentence: true`, Spanish questions receive their question
|
|
582
|
+
mark and complete French phrases keep their final period. Undescribed
|
|
583
|
+
languages remain bare.
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import { inventoryPresentation } from "./inventory-output.js";
|
|
2
3
|
import { runtimeReplyContent } from "./reply-output.js";
|
|
3
4
|
import { throwIfRuntimeCancelled, withRuntimeLease } from "./runtime-lease.js";
|
|
4
5
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
@@ -1361,6 +1362,7 @@ export function createServer() {
|
|
|
1361
1362
|
const inventory = await client.intents(languages, { describe, fallback, timeoutMs: clampTimeout(timeoutMs) });
|
|
1362
1363
|
return jsonContent(redactSecrets({
|
|
1363
1364
|
...inventory.asObject(),
|
|
1365
|
+
presentation: inventoryPresentation(inventory),
|
|
1364
1366
|
examples: inventory.intents.map(intent => ({ id: intent.id,
|
|
1365
1367
|
languages: Object.fromEntries(inventory.languages.map(lang => [lang, intent.examples(lang, exampleLimit, { speakable, sentence, slots })])),
|
|
1366
1368
|
})),
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { HubIntentInventory } from "@thalovant/sdk";
|
|
2
|
+
/** Add a display view without claiming catalogue metadata from runtime phrases. */
|
|
3
|
+
export declare function inventoryPresentation(runtime: HubIntentInventory, generatedAt?: string): {
|
|
4
|
+
languages_present: string[];
|
|
5
|
+
cache_version: number;
|
|
6
|
+
hub_id: string;
|
|
7
|
+
hub_name: string;
|
|
8
|
+
source: string;
|
|
9
|
+
generated_at: string;
|
|
10
|
+
notes: string[];
|
|
11
|
+
skills: import("@thalovant/sdk").InventorySkillData[];
|
|
12
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Inventory, Intent, Skill, friendlyTitle, languagesPresent } from "@thalovant/sdk";
|
|
2
|
+
/** Add a display view without claiming catalogue metadata from runtime phrases. */
|
|
3
|
+
export function inventoryPresentation(runtime, generatedAt = new Date().toISOString()) {
|
|
4
|
+
const notes = [
|
|
5
|
+
"Skill titles are derived from IDs; catalogue locales and hub metadata are unknown.",
|
|
6
|
+
`Runtime discovery source: ${runtime.source}.`,
|
|
7
|
+
...runtime.denied.map(query => `Query refused or unanswered: ${query}.`),
|
|
8
|
+
...(!runtime.fallbacksKnown ? ["Fallback skill support is unknown."] : []),
|
|
9
|
+
];
|
|
10
|
+
const inventory = new Inventory("", "", "hub", generatedAt, runtime.skills.map(skill => new Skill(skill.skillId, friendlyTitle(skill.skillId), [], skill.intents.map(intent => new Intent(intent.id, intent.name, intent.skillId, intent.engine, intent.phrases, intent.languages)))), notes);
|
|
11
|
+
return { ...inventory.asObject(), languages_present: languagesPresent(inventory) };
|
|
12
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@thalovant/mcp-server",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "Stdio and Streamable HTTP MCP server for Thalovant control-plane and hub runtime APIs.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
},
|
|
65
65
|
"dependencies": {
|
|
66
66
|
"@modelcontextprotocol/sdk": "^1.30.0",
|
|
67
|
-
"@thalovant/sdk": "^0.
|
|
67
|
+
"@thalovant/sdk": "^0.7.0",
|
|
68
68
|
"jose": "^6.2.8",
|
|
69
69
|
"zod": "^3.25.76"
|
|
70
70
|
},
|
package/server.json
CHANGED
|
@@ -7,19 +7,19 @@
|
|
|
7
7
|
"url": "https://github.com/thalovant/thalovant-mcp",
|
|
8
8
|
"source": "github"
|
|
9
9
|
},
|
|
10
|
-
"version": "0.
|
|
10
|
+
"version": "0.5.0",
|
|
11
11
|
"packages": [
|
|
12
12
|
{
|
|
13
13
|
"registryType": "npm",
|
|
14
14
|
"identifier": "@thalovant/mcp-server",
|
|
15
|
-
"version": "0.
|
|
15
|
+
"version": "0.5.0",
|
|
16
16
|
"transport": {
|
|
17
17
|
"type": "stdio"
|
|
18
18
|
}
|
|
19
19
|
},
|
|
20
20
|
{
|
|
21
21
|
"registryType": "oci",
|
|
22
|
-
"identifier": "ghcr.io/thalovant/thalovant-mcp:0.
|
|
22
|
+
"identifier": "ghcr.io/thalovant/thalovant-mcp:0.5.0",
|
|
23
23
|
"transport": {
|
|
24
24
|
"type": "streamable-http",
|
|
25
25
|
"url": "http://127.0.0.1:3000/mcp"
|