@firfi/huly-mcp 0.2.0 → 0.3.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/dist/index.cjs CHANGED
@@ -172081,7 +172081,7 @@ var PostHog = class extends PostHogBackendClient {
172081
172081
  };
172082
172082
 
172083
172083
  // src/version.ts
172084
- var VERSION = true ? "0.1.62" : "0.0.0-dev";
172084
+ var VERSION = true ? "0.3.0" : "0.0.0-dev";
172085
172085
 
172086
172086
  // src/telemetry/posthog.ts
172087
172087
  var POSTHOG_API_KEY = "phc_TGfFqCGdnF0p68wuFzd5WSw1IsBvOJW0YgoMJDyZPjm";
@@ -183522,6 +183522,40 @@ var toolRegistry = buildRegistry(allTools);
183522
183522
  var TOOL_DEFINITIONS = Object.fromEntries(toolRegistry.tools);
183523
183523
 
183524
183524
  // src/mcp/server.ts
183525
+ var NPM_PACKAGE_NAME = "@firfi/huly-mcp";
183526
+ var VERSION_TOOL_NAME = "get_version";
183527
+ var versionToolDefinition = {
183528
+ name: VERSION_TOOL_NAME,
183529
+ description: "Returns the current version of this Huly MCP server and the latest version available on npm.",
183530
+ inputSchema: { type: "object", properties: {} },
183531
+ annotations: {
183532
+ title: "Get Version",
183533
+ readOnlyHint: true,
183534
+ destructiveHint: false,
183535
+ idempotentHint: true,
183536
+ openWorldHint: true
183537
+ }
183538
+ };
183539
+ var NPM_FETCH_TIMEOUT_MS = 5e3;
183540
+ var fetchLatestNpmVersion = async () => {
183541
+ try {
183542
+ const res = await fetch(`https://registry.npmjs.org/${NPM_PACKAGE_NAME}/latest`, {
183543
+ signal: AbortSignal.timeout(NPM_FETCH_TIMEOUT_MS)
183544
+ });
183545
+ if (!res.ok) return "unknown";
183546
+ const data = await res.json();
183547
+ if (typeof data === "object" && data !== null && "version" in data && typeof data.version === "string") {
183548
+ return data.version;
183549
+ }
183550
+ return "unknown";
183551
+ } catch {
183552
+ return "unknown";
183553
+ }
183554
+ };
183555
+ var handleVersionTool = async () => {
183556
+ const latest = await fetchLatestNpmVersion();
183557
+ return createSuccessResponse({ current: VERSION, latest });
183558
+ };
183525
183559
  var isObjectSchema = (schema) => "type" in schema && schema.type === "object";
183526
183560
  var McpServerError = class extends Schema_exports.TaggedError()(
183527
183561
  "McpServerError",
@@ -183578,15 +183612,18 @@ var createMcpServer = (resolveClients, telemetry, registry2) => {
183578
183612
  server.setRequestHandler(ListToolsRequestSchema, async () => {
183579
183613
  telemetry.firstListTools();
183580
183614
  return {
183581
- tools: registry2.definitions.flatMap((tool) => {
183582
- if (!isObjectSchema(tool.inputSchema)) return [];
183583
- return [{
183584
- name: tool.name,
183585
- description: tool.description,
183586
- inputSchema: tool.inputSchema,
183587
- annotations: resolveAnnotations(tool)
183588
- }];
183589
- })
183615
+ tools: [
183616
+ versionToolDefinition,
183617
+ ...registry2.definitions.flatMap((tool) => {
183618
+ if (!isObjectSchema(tool.inputSchema)) return [];
183619
+ return [{
183620
+ name: tool.name,
183621
+ description: tool.description,
183622
+ inputSchema: tool.inputSchema,
183623
+ annotations: resolveAnnotations(tool)
183624
+ }];
183625
+ })
183626
+ ]
183590
183627
  };
183591
183628
  });
183592
183629
  server.setRequestHandler(CallToolRequestSchema, async (request2) => {
@@ -183595,6 +183632,19 @@ var createMcpServer = (resolveClients, telemetry, registry2) => {
183595
183632
  const { arguments: args2, name } = request2.params;
183596
183633
  const start3 = Date.now();
183597
183634
  const inputBytes = JSON.stringify(args2 ?? {}).length;
183635
+ const computeOutputBytes = (response2) => response2.content.reduce((sum2, c) => sum2 + c.text.length, 0);
183636
+ if (name === VERSION_TOOL_NAME) {
183637
+ const versionResponse = await handleVersionTool();
183638
+ const durationMs2 = Date.now() - start3;
183639
+ telemetry.toolCalled({
183640
+ toolName: name,
183641
+ status: "success",
183642
+ durationMs: durationMs2,
183643
+ inputBytes,
183644
+ outputBytes: computeOutputBytes(versionResponse)
183645
+ });
183646
+ return toMcpResponse(versionResponse);
183647
+ }
183598
183648
  const deriveEditMode = () => {
183599
183649
  if (name !== "edit_document" || args2 === void 0) return void 0;
183600
183650
  if ("old_text" in args2) return "search_and_replace";
@@ -183602,7 +183652,6 @@ var createMcpServer = (resolveClients, telemetry, registry2) => {
183602
183652
  return "title_only";
183603
183653
  };
183604
183654
  const editMode = deriveEditMode();
183605
- const computeOutputBytes = (response2) => response2.content.reduce((sum2, c) => sum2 + c.text.length, 0);
183606
183655
  let clients;
183607
183656
  try {
183608
183657
  clients = await resolveClients();