@firfi/huly-mcp 0.18.0 → 0.18.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.
Files changed (2) hide show
  1. package/dist/index.cjs +58 -12
  2. package/package.json +1 -1
package/dist/index.cjs CHANGED
@@ -77235,7 +77235,7 @@ var require_client5 = __commonJS({
77235
77235
  module2.exports = __toCommonJS2(client_exports);
77236
77236
  var import_core54 = require_lib4();
77237
77237
  var import_collaborator_client2 = require_lib7();
77238
- var import_text4 = require_lib9();
77238
+ var import_text5 = require_lib9();
77239
77239
  var import_text_markdown3 = require_lib17();
77240
77240
  function createMarkupOperations(url4, workspace, token, config3) {
77241
77241
  return new MarkupOperationsImpl(url4, workspace, token, config3);
@@ -77260,12 +77260,12 @@ var require_client5 = __commonJS({
77260
77260
  async fetchMarkup(objectClass, objectId, objectAttr, doc, format7) {
77261
77261
  const collabId = (0, import_core54.makeCollabId)(objectClass, objectId, objectAttr);
77262
77262
  const markup = await this.collaborator.getMarkup(collabId, doc);
77263
- const json3 = (0, import_text4.markupToJSON)(markup);
77263
+ const json3 = (0, import_text5.markupToJSON)(markup);
77264
77264
  switch (format7) {
77265
77265
  case "markup":
77266
77266
  return markup;
77267
77267
  case "html":
77268
- return (0, import_text4.jsonToHTML)(json3);
77268
+ return (0, import_text5.jsonToHTML)(json3);
77269
77269
  case "markdown":
77270
77270
  return (0, import_text_markdown3.markupToMarkdown)(json3, { refUrl: this.refUrl, imageUrl: this.imageUrl });
77271
77271
  default:
@@ -77279,10 +77279,10 @@ var require_client5 = __commonJS({
77279
77279
  markup = value3;
77280
77280
  break;
77281
77281
  case "html":
77282
- markup = (0, import_text4.jsonToMarkup)((0, import_text4.htmlToJSON)(value3));
77282
+ markup = (0, import_text5.jsonToMarkup)((0, import_text5.htmlToJSON)(value3));
77283
77283
  break;
77284
77284
  case "markdown":
77285
- markup = (0, import_text4.jsonToMarkup)((0, import_text_markdown3.markdownToMarkup)(value3, { refUrl: this.refUrl, imageUrl: this.imageUrl }));
77285
+ markup = (0, import_text5.jsonToMarkup)((0, import_text_markdown3.markdownToMarkup)(value3, { refUrl: this.refUrl, imageUrl: this.imageUrl }));
77286
77286
  break;
77287
77287
  default:
77288
77288
  throw new Error("Unknown content format");
@@ -152868,14 +152868,51 @@ var HulyDomainError = Schema_exports.Union(
152868
152868
  // src/huly/operations/markup.ts
152869
152869
  var import_text = __toESM(require_lib9(), 1);
152870
152870
  var import_text_markdown = __toESM(require_lib17(), 1);
152871
+
152872
+ // src/huly/operations/inline-comment-mark.ts
152873
+ var INLINE_COMMENT_MARK_TYPE = "inline-comment";
152874
+ var isInlineCommentMark = (mark) => mark.type === INLINE_COMMENT_MARK_TYPE;
152875
+ var isMarkdownSerializableMark = (mark) => !isInlineCommentMark(mark);
152876
+
152877
+ // src/huly/operations/markup.ts
152871
152878
  var jsonAsMarkup = import_text.jsonToMarkup;
152872
152879
  var testMarkupUrlConfig = {
152873
152880
  refUrl: UrlString.make("https://test.invalid/browse?workspace=test"),
152874
152881
  imageUrl: UrlString.make("https://test.invalid/files?workspace=test&file=")
152875
152882
  };
152883
+ var removeMarkdownUnsupportedMarks = (marks) => {
152884
+ if (marks === void 0) {
152885
+ return { marks: void 0, changed: false };
152886
+ }
152887
+ const filtered = marks.filter(isMarkdownSerializableMark);
152888
+ return { marks: filtered, changed: filtered.length !== marks.length };
152889
+ };
152890
+ var sanitizeContentForMarkdown = (content) => {
152891
+ if (content === void 0) {
152892
+ return { content: void 0, changed: false };
152893
+ }
152894
+ const sanitized = content.map(sanitizeNodeForMarkdown);
152895
+ return {
152896
+ content: sanitized,
152897
+ changed: sanitized.some((node, index) => node !== content[index])
152898
+ };
152899
+ };
152900
+ var sanitizeNodeForMarkdown = (node) => {
152901
+ const content = sanitizeContentForMarkdown(node.content);
152902
+ const marks = removeMarkdownUnsupportedMarks(node.marks);
152903
+ if (!content.changed && !marks.changed) {
152904
+ return node;
152905
+ }
152906
+ return {
152907
+ ...node,
152908
+ ...content.content === void 0 ? {} : { content: content.content },
152909
+ ...marks.marks === void 0 ? {} : { marks: marks.marks }
152910
+ };
152911
+ };
152912
+ var markupNodeToMarkdownString = (node, urls, serialize2 = import_text_markdown.markupToMarkdown) => serialize2(sanitizeNodeForMarkdown(node), urls);
152876
152913
  var markupToMarkdownString = (markup, urls) => {
152877
152914
  const json3 = (0, import_text.markupToJSON)(markup);
152878
- return (0, import_text_markdown.markupToMarkdown)(json3, urls);
152915
+ return markupNodeToMarkdownString(json3, urls);
152879
152916
  };
152880
152917
  var markdownToMarkupString = (markdown, urls) => {
152881
152918
  const json3 = (0, import_text_markdown.markdownToMarkup)(markdown, urls);
@@ -152994,7 +153031,7 @@ function fromInternalMarkup(markup, format7, opts, sdk) {
152994
153031
  case "html":
152995
153032
  return sdk.jsonToHTML(sdk.markupToJSON(markup));
152996
153033
  case "markdown":
152997
- return sdk.markupToMarkdown(sdk.markupToJSON(markup), opts);
153034
+ return markupNodeToMarkdownString(sdk.markupToJSON(markup), opts, sdk.markupToMarkdown);
152998
153035
  default:
152999
153036
  absurd(format7);
153000
153037
  throw new Error(`Invalid format: ${format7}`);
@@ -167971,7 +168008,7 @@ var parseDeleteTestResultParams = Schema_exports.decodeUnknown(DeleteTestResultP
167971
168008
  var parseRunTestPlanParams = Schema_exports.decodeUnknown(RunTestPlanParamsSchema);
167972
168009
 
167973
168010
  // src/version.ts
167974
- var VERSION = true ? "0.18.0" : "0.0.0-dev";
168011
+ var VERSION = true ? "0.18.1" : "0.0.0-dev";
167975
168012
 
167976
168013
  // src/mcp/error-mapping.ts
167977
168014
  var McpErrorCode = {
@@ -168604,12 +168641,21 @@ var countOccurrences = (text, search) => {
168604
168641
 
168605
168642
  // src/huly/operations/documents-inline-comments.ts
168606
168643
  var import_core11 = __toESM(require_lib4(), 1);
168644
+ var import_text4 = __toESM(require_lib9(), 1);
168645
+
168646
+ // src/huly/operations/markup-traversal.ts
168607
168647
  var import_text3 = __toESM(require_lib9(), 1);
168608
- var INLINE_COMMENT_MARK_TYPE = "inline-comment";
168648
+ var traverseAllMarks = (root, visit) => {
168649
+ (0, import_text3.traverseAllMarks)(root, (node, mark) => {
168650
+ visit(node, mark);
168651
+ });
168652
+ };
168653
+
168654
+ // src/huly/operations/documents-inline-comments.ts
168609
168655
  var extractInlineComments = (root) => {
168610
168656
  const threadMap = /* @__PURE__ */ new Map();
168611
- (0, import_text3.traverseAllMarks)(root, (textNode, mark) => {
168612
- if (String(mark.type) !== INLINE_COMMENT_MARK_TYPE) return;
168657
+ traverseAllMarks(root, (textNode, mark) => {
168658
+ if (!isInlineCommentMark(mark)) return;
168613
168659
  const threadId = mark.attrs?.thread;
168614
168660
  if (typeof threadId !== "string" || threadId === "") return;
168615
168661
  const text = textNode.text ?? "";
@@ -168639,7 +168685,7 @@ var listInlineComments = (params) => Effect_exports.gen(function* () {
168639
168685
  doc.content,
168640
168686
  "markup"
168641
168687
  );
168642
- const root = (0, import_text3.markupToJSON)(rawMarkup);
168688
+ const root = (0, import_text4.markupToJSON)(rawMarkup);
168643
168689
  const extracted = extractInlineComments(root);
168644
168690
  if (extracted.length === 0) {
168645
168691
  return { comments: [], total: 0 };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@firfi/huly-mcp",
3
- "version": "0.18.0",
3
+ "version": "0.18.1",
4
4
  "description": "MCP server for Huly integration",
5
5
  "mcpName": "io.github.dearlordylord/huly-mcp",
6
6
  "type": "module",