@burdenoff/mcp-libs 2026.1007.2 → 2026.1007.4

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.js CHANGED
@@ -1,4 +1,4 @@
1
- export { McpAuthError, McpInternalError, McpUserError, buildContext, createMcpServer, errorResult, jsonResult, mcpPromptName, mcpResourceUri, mcpToolName, registerTool, textResult } from './chunk-BSNL65PZ.js';
2
1
  export { startHttpServer, startStdioServer } from './chunk-JFEQYSWM.js';
2
+ export { McpAuthError, McpInternalError, McpUserError, buildContext, createMcpServer, errorResult, jsonResult, mcpPromptName, mcpResourceUri, mcpToolName, registerTool, textResult } from './chunk-BSNL65PZ.js';
3
3
  //# sourceMappingURL=index.js.map
4
4
  //# sourceMappingURL=index.js.map
@@ -52,7 +52,7 @@ Hint: ${hint}` : message;
52
52
 
53
53
  // src/modules/conversations/operations.ts
54
54
  var LIST_CONVERSATIONS = `
55
- query ListConversations($filter: ConversationFilterInput, $first: Int, $after: String) {
55
+ query ListConversations($filter: ConversationFilter, $first: Int, $after: String) {
56
56
  conversations(filter: $filter, first: $first, after: $after) {
57
57
  edges { node { id title type description createdAt updatedAt unreadCount } }
58
58
  pageInfo { hasNextPage endCursor }
@@ -62,7 +62,7 @@ var LIST_CONVERSATIONS = `
62
62
  var GET_CONVERSATION = `
63
63
  query GetConversation($id: ID!) {
64
64
  conversation(id: $id) {
65
- id title type description avatarUrl settings
65
+ id title type description avatar settings
66
66
  createdAt updatedAt
67
67
  }
68
68
  }
@@ -98,7 +98,7 @@ var LIST_MESSAGES = `
98
98
  messages(conversationId: $conversationId, filter: $filter, first: $first, after: $after) {
99
99
  edges {
100
100
  cursor
101
- node { id conversationId senderId content type metadata createdAt updatedAt }
101
+ node { id conversationId authorId content type metadata createdAt updatedAt }
102
102
  }
103
103
  pageInfo { hasNextPage endCursor }
104
104
  }
@@ -237,7 +237,7 @@ var GET_THREAD = `
237
237
  `;
238
238
  var GET_OR_CREATE_DIRECT_CONVERSATION = `
239
239
  mutation GetOrCreateDirectConversation($userId: ID!) {
240
- getOrCreateDirectConversation(userId: $userId) {
240
+ resolveContextConversation(userId: $userId) {
241
241
  id title type createdAt
242
242
  }
243
243
  }
@@ -467,17 +467,24 @@ function registerConversationsTools(server, ctx, track) {
467
467
  title: zod.z.string().describe("Conversation title"),
468
468
  description: zod.z.string().optional().describe("Conversation description"),
469
469
  type: ConversationTypeEnum.optional().describe("Conversation type (default: GROUP)"),
470
- participantIds: zod.z.array(zod.z.string()).optional().describe("Participant user IDs")
470
+ // BOFF-8184: `participantIds` and `workspaceId` are required by
471
+ // `CreateConversationInput!` on the live schema. They must be
472
+ // supplied by the caller; the MCP does not auto-fill workspaceId
473
+ // because the live resolver rejects with `Forbidden` when the
474
+ // request arrives without a verified workspace context.
475
+ participantIds: zod.z.array(zod.z.string()).min(1).describe("Participant user IDs (required, \u2265 1)"),
476
+ workspaceId: zod.z.string().describe("Workspace ID the conversation belongs to (required)")
471
477
  }
472
478
  },
473
- async ({ title, description, type, participantIds }) => {
479
+ async ({ title, description, type, participantIds, workspaceId }) => {
474
480
  try {
475
481
  const input = {
476
482
  title,
477
- type: type ?? "GROUP"
483
+ type: type ?? "GROUP",
484
+ participantIds,
485
+ workspaceId
478
486
  };
479
487
  if (description !== void 0) input.description = description;
480
- if (participantIds !== void 0) input.participantIds = participantIds;
481
488
  const data = await ctx.gql.workspace.request(CREATE_CONVERSATION, { input });
482
489
  return jsonResult(data.createConversation.conversation);
483
490
  } catch (error) {
@@ -545,15 +552,27 @@ function registerConversationsTools(server, ctx, track) {
545
552
  description: "Send a text message to a conversation. Optionally reply to a parent message.",
546
553
  inputSchema: {
547
554
  conversationId: zod.z.string().describe("Conversation ID"),
548
- content: zod.z.string().describe("Message content"),
555
+ // BOFF-8186: `SendMessageInput.content` is `MessageContentInput!` (an
556
+ // object), not a scalar. Accept a `content` object so callers can
557
+ // pass `{ text: "..." }`; the convenience alias `text` below
558
+ // accepts the scalar and wraps it. Object form wins if both are
559
+ // given.
560
+ content: zod.z.record(zod.z.unknown()).optional().describe('Message content as MessageContentInput object (e.g. { text: "..." })'),
561
+ text: zod.z.string().optional().describe("Convenience alias: scalar text wrapped into { text }"),
549
562
  parentMessageId: zod.z.string().optional().describe("Parent message ID (for replies)")
550
563
  }
551
564
  },
552
- async ({ conversationId, content, parentMessageId }) => {
565
+ async ({ conversationId, content, text, parentMessageId }) => {
553
566
  try {
567
+ if (content === void 0 && text === void 0) {
568
+ return errorResult(
569
+ "Provide either `content` (MessageContentInput object) or `text` (scalar convenience alias)"
570
+ );
571
+ }
572
+ const messageContent = content ?? (text !== void 0 ? { text } : {});
554
573
  const input = {
555
574
  conversationId,
556
- content,
575
+ content: messageContent,
557
576
  type: "TEXT"
558
577
  };
559
578
  if (parentMessageId !== void 0) input.parentMessageId = parentMessageId;
@@ -1116,7 +1135,7 @@ function registerThreadAndDirectTools(server, ctx, track) {
1116
1135
  async ({ userId }) => {
1117
1136
  try {
1118
1137
  const data = await ctx.gql.workspace.request(GET_OR_CREATE_DIRECT_CONVERSATION, { userId });
1119
- return jsonResult(data.getOrCreateDirectConversation);
1138
+ return jsonResult(data.resolveContextConversation);
1120
1139
  } catch (error) {
1121
1140
  ctx.logger.error("conversations_get_or_create_direct failed", { error });
1122
1141
  return errorResult(`Failed to open direct conversation: ${unwrap(error)}`);